当前位置: 查字典论文网 >> 小提琴音准练习软件设计

小提琴音准练习软件设计

格式:DOC 上传日期:2023-05-02 00:26:34
小提琴音准练习软件设计
时间:2023-05-02 00:26:34     小编:

小提琴音准练习软件设计

引言

音准是小提琴的“灵魂”和“生命”,是小提琴学习过程中最难突破的问题。小提琴与其它乐器不同,没有确定音准的键盘,也没有品位,而是根据演奏者手指按弦的位置决定。传统小提琴音准练习一般都是反复练习音阶,或通过对比钢琴声音,提高人耳的分辨能力,进而帮助练习者判断音准情况。这样的训练方式需要有专业人员实时指导,不断纠正,逐渐提高。对于普通练习者来说,无法保证随时都能够得到指导,只能自己揣摩,经常事倍功半。 本文基于C#编程平台,应用Windows的低级波形音频函数实时采集音乐信号,经离散傅里叶变换后,采用带置信度的谐波峰值法初步估计基频,进而引入插值算法提高基频估计精度。

1音乐信号采集

声卡是计算机的一种多媒体设备,可以用Windows 的MCI(Media Control Interface)命令来控制声卡。MCI命令提供了一组与设备无关的控制命令,是一种访问多媒体设备的高层方法。利用MCI命令来控制声卡录音时,程序员不能在录音过程中访问内存中的采样数据,无法应用在实时性要求比较高的场合。Windows的低级波形音频函数提供了对声卡的灵活操作,允许在采样过程中实时访问内存中的采样数据。

1.1采集流程

使用波形音频函数控制声卡,应遵循以下步骤(括号内为使用函数):①打开波形输入设备(wavEinOpen);②为波形输入设备准备缓存区(waveInPrepareHeader);③向波形输入设备添加一个输入缓冲区(waveInAddBuffer);④启动波形输入设备,开始录音(waveInStart);⑤录音结束后,清除由waveInPrepareHeader函数准备的缓存区(waveInUnprepareHeader);⑥停止录音(waveInStop);⑦关闭录音设备(waveInClose)。

使用波形音频函数实时录音时,应注意以下两点:

(1)如果只为波形输入设备准备和添加一个缓冲区,当该缓冲区被采样数据填满后,波形输入设备无缓冲区可用,采样就停止了。所以应至少为波形输入设备准备和添加两个或以上的缓冲区,以保证采样过程的连续性。 1.2消息响应机制

在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么。所有的Windows应用程序都是消息驱动的,不同的消息由应用程序的不同部分来处理。MFC库将很多底层的消息都屏蔽了,使用户更加方便、简易地处理消息。调用各个低级波形音频函数将产生相应的Windows消息,包括:①MM_WIM_OPEN:表示波形输入设备开启成功,此时可以准备缓冲区,并分配给波形输入设备;②MM_WIM_DATA:表示缓冲区已满,此时应该重新分配缓冲区,处理已经采集到的声音数据;③MM_WIM_CLOSE:表示波形输入设备关闭成功,应当释放缓冲区内存。

2带置信度的谐波峰值法

由于小提琴的音域范围较宽,从g到a4,各个音的频谱结构也不尽相同。高音的频谱结构中基频的幅值最大,可以直接应用谐波峰值法估计基频。而低音的频谱结构中幅值最大的可能是二次谐波,直接应用谐波峰值法将导致倍频错误。综合考虑小提琴各个音的频谱结构,本文采用带置信度的谐波峰值法估计基频。

频谱结构中,幅值最大的峰要么是基频,要么是某次谐波。最大峰对应频率的1/n就是基频,称最大峰对应频率的1/n为“候选基频”,一般n不超过3。

式中 L(n)为候选基音, f-p为最大峰值频率。将某个“候选基频”视作实际基频,其各次谐波的幅值之和称为该“候选基频”作为实际基频的“置信度”。

式中B(n)为置信度, M为谐波的个数, P(i)表示某次谐波的幅度在所有“候选基频”中。真正基频的各次谐波多,幅值大,相应的“置信度”也大。比较各“候选基频”的“置信度”,最大者对应真正基频。

3插值算法

采用谐波峰值法估计基频,如果基频正好在某一谱线上, 得到的频率就是准确的。一般情况下, 信号频率可能在两条谱线之间, 由峰值谱线得到的基频就不准确了,最大偏差由频率的分辨率决定,分辨率Δf=f-s/N=1/T。为了提高分辨率,减少估计误差,只能延长采样时间,但在很多情况下,信号的持续时间有限,难以满足采样时长的要求。

采用插值算法可以在原有的采样时间内,提高估计精度[5]。FFT 变换的频谱中,信号频率f-0=k-0Δf是峰值,k-0为实数。k-0左右两条谱线应该有最大和次大的幅度值,分别记为Y-l、Y-r。定义δ为k-0与左边谱线位置的相对距离,则其取值区间为[0,1],γ表示Y-l与Y-r之比,如图1所示。

对音乐信号进行频谱分析时,不可能对无限长的信号进行运算,只能取其有限的时间片段进行分析,必然导致频谱能量泄漏。为了减少频谱能量泄露,可采用不同的窗函数对信号进行拦截。由于不同窗函数的主瓣形状以及宽度都不一样,因此,插值校正公式也不同。

(1)矩形窗:

(2)Hanning窗:

(3)若使用Hamming窗,由窗谱得:

(4)对Blackman窗存在:

对于Hamming窗和Blackman窗而言,无法得到δ的直接表达式,但可以整理为δ的方程,用数值方法求解。

4软件测试

为了全面测试音准分析结果,从两个方面获得测试乐曲:一是应用cakewalk软件生成C大调音阶和亨德尔的布列舞曲两个小提琴乐曲,这样生成的乐曲,各个音符的基频稳定准确,与标准频率一致。各次谐波逐次衰减,并保证基频幅值最大,谐波峰值法即可胜任,乐曲清晰,信噪比高;二是邀请小提琴专业人员演奏G大调音阶和巴赫的小步舞曲两首乐曲,音准由演奏人员掌控。使用实际小提琴演奏,音色真实,明显存在基频丢失现象,必须采用带置信度的谐波峰值法初步估计基频。因为乐曲在普通房间录制,有环境噪声,影响插值运算的准确性。

测试结果见表1,从中可以看出由于cakewalk软件生成两首乐曲的基频更加稳定准确,平均基频偏差明显小于人员演奏出来的真实乐曲的偏差;同时可以看出,四首乐曲共538个音符,基频偏差全部在1音分之内,这对于小提琴练习者来说,具有可靠的指导意义。

全文阅读已结束,如果需要下载本文请点击

下载此文档

相关推荐 更多