【新版CH554评测DIY】音频校音器之7
<div class='showpostmsg'>音频部分的设计原理和数值设定(不包括程序设计部分,仅仅是设计思路的说明)
1、音频和数据
1.1 音乐的频率范围
音乐频率范围约为20Hz---20KHz,人的声音频率范围约为300Hz---3.4KHz。但人能听到的最高频率是15KHz。
{引自知乎}音源频率范围:小提琴 200Hz~400Hz影响音色的丰满度;1~2KHz是拨弦声频带;6~10KHz是音色明亮度。中提琴 150Hz~300Hz影响音色的力度;3~6KHz影响音色表现力。大提琴 100Hz~250Hz影响音色的丰满度;3KHz是影响音色音色明亮度。贝斯提琴 50Hz~150Hz影响音色的丰满度;1~2KHz影响音色的明亮度。
长笛 250Hz~1KHz影响音色的丰满度;5~6KHz影响的音色明亮度。黑管 150Hz~600Hz影响音色的丰满度;3KHz影响音色的明亮度。双簧管 300Hz~1KHz影响音色的丰满度;5~6KHz影响音色的明亮度;1~5KHz提升使音色明亮华丽。大管 100Hz~200Hz音色丰满、深沉感强;2~5KHz影响音色的明亮度。小号 150Hz~250Hz影响音色的丰满度;5~7.5KHz是明亮清脆感频带。圆号 60Hz~600Hz提升会使音色和谐自然;强吹音色光辉,1~2KHz明显增强。长号 100Hz~240Hz提升音色的丰满度;500Hz~2KHz提升使音色变辉煌。大号 30Hz~200Hz影响音色的丰满度;100Hz~500Hz提升使音色深沉、厚实。萨克斯管bB 100Hz~300Hz是影响音色的淳厚感,提升此频段可使音色的始振特性更加细腻,增强音色的表现力。
钢琴 27.5~4.86KHz是音域频段。音色随频率增加而变的单薄;20Hz~50Hz是共振峰频率。竖琴 32.7Hz~3.136KHz是音域频率。小力度拨弹音色柔和;大力度拨弹音色丰满。萨克斯管 600Hz~2KHz影响明亮度;提升此频率可使音色华彩清透。吉它 100Hz~300Hz提升增加音色的丰满度;2~5KHz提升增强音色的表现力。低音吉它 60Hz~100Hz低音丰满;60Hz~1KHz影响音色的力度;2.5KHz是拨弦声频。电吉它 240Hz是丰满度频率;2.5KHz是明亮度频率3~4KHz拨弹乐器的性格表现的更充分。电贝司 80Hz~240Hz是丰满度频率;600Hz~1KHz影响音色的力度;2.5KHz是拨弦声频。手鼓 200Hz~240Hz共鸣声频;5KHz影响临场感。小军鼓(响弦鼓) 240Hz影响饱满度;2KHz影响力度(响度);5KHz是响弦音频(泛音区)。通通鼓 360Hz影响丰满度;8KHz为硬度频率;泛音可达10~15KHz。低音鼓 60Hz~100Hz为低音力度频率;2.5KHz是敲击声频率;8KHz是鼓皮泛音声频。地鼓(大鼓) 60Hz~150Hz是力度音频,影响音色的丰满度;5~6KHz是泛音声频。镲 250Hz强劲、坚韧、锐利;7.5~10KHz音色尖利;1.2~15KHz镲边泛音“金光四溅”。歌声(男) 150Hz~600Hz影响歌声力度,提升此频段可以使歌声共鸣感强,增强力度。歌声(女) 1.6~3.6KHz影响音色的明亮度,提升此段频率可以使音色鲜明通透。语音 800Hz是“危险”频率,过于提升会使音色发“硬”、发“楞” 沙哑声 提升64Hz~261Hz会使音色得到改善。喉音重 衰减600Hz~800Hz会使音色得到改善 鼻音重 衰减60Hz~260Hz,提升1~2.4KHz可以改善音色。齿音重 6KHz过高会产生严重齿音。咳音重 4KHz过高会产生咳音严重现象(电台频率偏离时的音色)1.2 本程序中用到的音频范围。因为很多的高音和低音其实并不能用到,而且受16k的容量限制,其实不能计算全部的频率范围。一个八度中有12个音,分别是C, #C, D, #D, E, F, #F, G, #G, A, #A, B,相邻两个音之间的距离叫一个半音,两个半音叫一个全音。在最常见的定律法——十二平均律中,中央C(钢琴最中间的C音)右边的第一个A音被定义为440 Hz,然后其它音的频率用等比数列推出,相隔半音的两个音的频率之比为。由此可以推断出中央C的频率为261 Hz,它右边的#C的频率为277 Hz,D的频率为293 Hz。按照音阶的定音有3种方法,“纯律”,“五度相生律”和“十二平均律”。现在的钢琴即是根据十二平均律来定音的,以此为主的各个音对应的频率是:参考的预定义为#define _a 262/*预定义低音音符1~7*/
#define _b 294
#define _c 330
#define _d 349
#define _e 392
#define _f 440
#define _g 494
#define a 523/*预定义中音音符1~7*/
#define b 587
#define c 659
#define d 698
#define e 784
#define f 880
#define g 988
#define a_ 1047/*预定义高音音符1~7*/
#define b_ 1175
#define c_ 1319
#define d_ 1397
#define e_ 2568
#define f_ 1760
#define g_ 1976
实际使用时,需要设定误差范围,事实上人的听力也无法完全分辨。2、采样数据和FFT计算方法
一个模拟信号,经过ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍,采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=根号a*a+b*b,相位就是Pn=atan2(b,a)。根据以上的结果,就可以计算出n点(n≠1,且n<=N/2)对应的信号的表达式为:An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。对于n=1点的信号,是直流分量,幅度即为A1/N。由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。对应于采样点,也就是一个周波内的采样点最小要2点,不过也可以清除2个点其实几乎捕捉不到任何有价值的特征,所以最多用到的就是128点。就是如果希望采样100Hz的最小频率的话,需要的采样点是128*100Hz,这么多。那么这个程序是用来演示的计算量过大应该效果不好,因为到底16MHz的主频对于性能是有限的。选择16点采样是最小可以选择的参数。本项目尽量使用CH554完成,如果不能完成计算,智能使用USB口上传数据,让上位机来完成FFT计算了具体到计算,CH554是可以完成的,因为虽然有三角函数计算,但实际上FFT是用查表法,和蝶式计算完成的。主要是移位和简单四则运算。本项目的设计也是基于这样的选择。
此内容由EEWORLD论坛网友北方原创,如需转载或用于商业用途需征得作者同意并注明出处
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> :handshake:handshake
页:
[1]