请选择 进入手机版 | 继续访问电脑版

宇诺微吧

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
联系我们
宇诺微吧
欢迎QQ或来电咨询
有事您Q我
有事您Q我
工作时间:周一至周五
AM9:00-PM18:00
电话:0633-8530598
查看: 5037|回复: 3

调音器的设计原理

[复制链接]

2

主题

2

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2017-3-1 01:08:17 | 显示全部楼层 |阅读模式
调音器的功能
调音器能够对输入的声音信号进行分析,找到输入声音的音调。在乐器调音中非常有用。

基本设计思路
调音器的原理并不复杂,对输入信号进行FFT变换,找到频谱中能量最大的频率,然后把频率转换成音调即可。
例如,若输入信号的取样频率为44100Hz,FFT的长度为1024,FFT变换之后能量最大的位置为100的话,那么输入信号的频率就是44100/1024*100=4307Hz。

频率转音调
一般把频率440Hz定为标准音A4。频率增加一倍,音阶增加一。因此880Hz为A5,而220Hz为A3。从A4到A5要经历如下12个音:
A4,A4#,B4,C5,C5#,D5,D5#,E5,F5,F5#,G5,G5#
这12个音的频率组成一个等比数列,因此可以求出每两个音之间的频率比是2^(1/12)= 1.0594630。所以A4#的频率为:440*1.0594630=466.164Hz。
为了提高调音器的精度,在每两个相邻的音之间再插入8个中间音,以A4,A4#为例,用如下形式表示:
A4, A4 +1, A4 +2, A4 +3, A4 +4, A4# -4, A4# -3,A4# -2, A4# -1,A4#
这样每个小刻度提高的频率倍数为:1.05946300^(1/9)= 1.006439。我们可以利用这个最小刻度比来计算出音调和频率的对应表。
若调音器程序能找出输入信号的频率,再通过这张表就可以查得相应的音调了。由于在每两个音调中插入了8个中间值,所以调音器可以很准确地显示出输入声音与标准音调之间的细微差别,以便于用户对乐器进行手工调整。

精度
假设调音器最低能识别A1,也就是55Hz,那么 A1 +1的频率为1.006439*55=55.354Hz。由等比数列的性质,很容易知道A1 +1和A1之间的频率差0.354Hz是最小的频率差,因此所需的频率精度就是0.354Hz/2=0.18Hz。也就是说为了分辨我们设定的音调的最小单位,频率计算程序的精度必须达到0.18Hz。

FFT的最小分辨频率可以由下面的公式求得
最小分辨频率=取样频率/FFT长度
这就是说输入信号的取样频率为44100Hz时,若要最小分辨频率为0.18Hz的话,那么所需的FFT长度是44100/0.18=245000。而收集这245000个数据需要245000/44100=5.6秒。显然FFT的运算长度和数据收集时间都是不实际的。
下面介绍两个方法来解决这个问题。

降低取样频率
为了缩短FFT的运算长度,而保持最小分辨频率的精度,只能降低取样频率。假设我们固定FFT长度为4096,为了使精度达到0.18Hz,取样频率应为4096*0.18=737Hz。即对于44100Hz的输入数据,每60个数据取一个数据的话,就可以用4096的FFT长度来实现0.18Hz的精度。但香农定理告诉我们,取样频率必须大于输入信号最高频率的两倍,才能够从取样后的信号还原为原信号。如果取样频率是737Hz,那么输入的声音信号的最高频率就不能超过369Hz。而显然调音器的输入有可能超过这个频率。
解决这个问题的办法就是根据输入信号的频率,动态地决定取样频率。0.18Hz的精度是按照最低音A1计算的。而当输入频率提高n倍时,所需的最小分辨频率也将增大n倍。例如,如果要区分A4和A4 +1的话,最小分辨频率就是0.18Hz*440/55=1.44Hz,那么设定取样频率为5898Hz即可,也就是每8个数据取一个(44100/8=5512Hz)。
为了能够动态地确定取样频率,可以先用原取样频率(44100Hz)对输入信号进行粗略地分析。这时的最小分辨频率为44100/4096=10.77Hz。粗略地找到了输入信号的频率之后,根据这个频率调低取样频率,再进行精确计算。

补零
通过动态地降低取样频率可以缩短FFT的运算长度,但不能解决数据收集时间过长的问题。虽然我们要进行4096点FFT运算,但这并不表明一定要收集4096个数据。如果只收集512个数据,其余的数据全部填0的话,那么数据收集时间就缩短为原来的1/8。而这并不会降低所得的频率的精度。(当收集的数据过少的时候,会出现误差。只要收集的数据中有足够多的信号周期,则不会出现频率误差)

处理倍音
大多数乐器所发出的声音都包含有倍音,而且有时倍音的能量可能超过基础音,尤其是频率较低的时候。
处理倍音比较麻烦,大概步骤是
先找出所有的局部最大能量的频率,即局部峰值对应的频率,这些频率很可能是倍音频率。
找出其中成倍的频率,剔除一些不相干的噪音频率。
从一系列倍频推算出基础频率。
另外在确定取样频率的时候,需要考虑倍频的存在,所以取样频率不能仅靠最大能量的频率计算,而需要考虑最大的倍音的频率。这样才不会出现取样频率过低而导致频域重叠
回复

使用道具 举报

27

主题

28

帖子

4169

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4169
QQ
发表于 2017-3-8 00:55:51 | 显示全部楼层
回复

使用道具 举报

0

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2017-10-18 19:15:34 | 显示全部楼层
水平很高啊,值得学习











站群代做、站群营销、企业站群、百度排名、论坛推广等咨询QQ:50317349
回复 支持 反对

使用道具 举报

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2017-10-18 23:17:55 | 显示全部楼层
好帖,鉴定完毕,谢谢您了











黑帽站群、站群工具、站群模式、批量站群、站群类型、论坛推广等咨询QQ:50317349
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|技术支持|Archiver|手机版|小黑屋|宇诺微吧 ( 本论坛代码来自网络如有侵权请联系我们

GMT+8, 2020-8-15 21:24 , Processed in 0.023324 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表