小提琴音准练习软件设计

小提琴音准练习软件设计

ID:19159427

大小:16.94 KB

页数:6页

时间:2018-09-29

小提琴音准练习软件设计_第1页
小提琴音准练习软件设计_第2页
小提琴音准练习软件设计_第3页
小提琴音准练习软件设计_第4页
小提琴音准练习软件设计_第5页
资源描述:

《小提琴音准练习软件设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、小提琴音准练习软件设计  引言  音准是小提琴的“灵魂”和“生命”,是小提琴学习过程中最难突破的问题。小提琴与其它乐器不同,没有确定音准的键盘,也没有品位,而是根据演奏者手指按弦的位置决定。传统小提琴音准练习一般都是反复练习音阶,或通过对比钢琴声音,提高人耳的分辨能力,进而帮助练习者判断音准情况。这样的训练方式需要有专业人员实时指导,不断纠正,逐渐提高。对于普通练习者来说,无法保证随时都能够得到指导,只能自己揣摩,经常事倍功半。  音高是人耳区分声音振动频率高联盟低的一个度量。虽然音高和频率并不成正比关系,但音高与频率仍然有一一对应的

2、关系。小提琴的音高分析即估计每个音的基频。基频估计方法很多,有时域的短时自相关法[1]、短时平均幅度差法,有频域的谐波峰值法[2],还有时频域的小波分析[3],各种常用方法比较见参考文献[4]。其中,频域分析方法相对稳定,且精度高。  本文基于C#编程平台,应用Windows的低级波形音频函数实时采集音乐信号,经离散傅里叶变换后,采用带置信度的谐波峰值法初步估计基频,进而引入插值算法提高基频估计精度。  1音乐信号采集  声卡是计算机的一种多媒体设备,可以用Windows的MCI命令来控制声卡。MCI命令提供了一组与设备无关的控制命令

3、,是一种访问多媒体设备的高层方法。利用MCI命令来控制声卡录音时,程序员不能在录音过程中访问内存中的采样数据,无法应用在实时性要求比较高的场合。Windows的低级波形音频函数提供了对声卡的灵活操作,允许在采样过程中实时访问内存中的采样数据。  采集流程  使用波形音频函数控制声卡,应遵循以下步骤:①打开波形输入设备;②为波形输入设备准备缓存区;③向波形输入设备添加一个输入缓冲区;④启动波形输入设备,开始录音;⑤录音结束后,清除由waveInPrepareHeader函数准备的缓存区;⑥停止录音;⑦关闭录音设备。  使用波形音频函数实

4、时录音时,应注意以下两点:  如果只为波形输入设备准备和添加一个缓冲区,当该缓冲区被采样数据填满后,波形输入设备无缓冲区可用,采样就停止了。所以应至少为波形输入设备准备和添加两个或以上的缓冲区,以保证采样过程的连续性。  采集的数据格式包括采样频率、采样位数等内容。由于小提琴的音域从g到a4,基频从196Hz到520Hz。由采样定理可知,采样频率应大于最大基频的两倍以上。采样频率越高所记录的音质就越清晰,采集的数据量也越大,本文采用一般声卡设置好的2050Hz的采样频率。采样位数决定了采样信号幅值的精细程度,位数越高,分辨率也越高,数

5、据运算量也越大。为了保证实时分析小提琴的音准,本文采用8位的采样位数。  消息响应机制  在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么。所有的Windows应用程序都是消息驱动的,不同的消息由应用程序的不同部分来处理。MFC库将很多底层的消息都屏蔽了,使用户更加方便、简易地处理消息。调用各个低级波形音频函数将产生相应的Windows消息,包括:①MM_WIM_OPEN:表示波形输入设备开启成功,此时可以准备缓冲区,并分配给波形输入设备;②MM_WIM_DATA:表示缓冲区已满,此时应该重新分配缓冲区,

6、处理已经采集到的声音数据;③MM_WIM_CLOSE:表示波形输入设备关闭成功,应当释放缓冲区内存。  2带置信度的谐波峰值法  由于小提琴的音域范围较宽,从g到a4,各个音的频谱结构也不尽相同。高音的频谱结构中基频的幅值最大,可以直接应用谐波峰值法估计基频。而低音的频谱结构中幅值最大的可能是二次谐波,直接应用谐波峰值法将导致倍频错误。综合考虑小提琴各个音的频谱结构,本文采用带置信度的谐波峰值法估计基频。  频谱结构中,幅值最大的峰要么是基频,要么是某次谐波。最大峰对应频率的1/n就是基频,称最大峰对应频率的1/n为“候选基频”,一般

7、n不超过3。  式中L为候选基音,f-p为最大峰值频率。将某个“候选基频”视作实际基频,其各次谐波的幅值之和称为该“候选基频”作为实际基频的“置信度”。  式中B为置信度,M为谐波的个数,P表示某次谐波的幅度在所有“候选基频”中。真正基频的各次谐波多,幅值大,相应的“置信度”也大。比较各“候选基频”的“置信度”,最大者对应真正基频。  3插值算法  采用谐波峰值法估计基频,如果基频正好在某一谱线上,得到的频率就是准确的。一般情况下,信号频率可能在两条谱线之间,由峰值谱线得到的基频就不准确了,最大偏差由频率的分辨率决定,分辨率Δf=f-

8、s/N=1/T。为了提高分辨率,减少估计误差,只能延长采样时间,但在很多情况下,信号的持续时间有限,难以满足采样时长的要求。采用插值算法可以在原有的采样时间内,提高估计精度[5]。FFT变换的频谱中,信号频率f-0=k-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。