"); //-->
单片机电子校音器
小提琴、吉他等弦乐器经常需要进行校音,通过调节弦的张力来调节弦的振动频率(即空弦音的音高)。最常用的方法是用音笛校音,调节弦的张力使音笛声和对应的空弦音混合后的声音没有抖动为止,即差拍为零,这时两个音源的频率相等,这样就调准了空弦音。这种校音的方法要求人能听出两个声音的差拍,对初学音乐的人来说掌握起来有一定的困难,能不能改变一下这种模式,用眼睛代替耳朵来进行校音呢?为此我们设计制作了单片机电子校音器,校音时不需发出标准音,空弦音由校音器的话筒输入,用单片机对音高的误差进行计算判断,并把频率的误差转换为音乐上所用的音分的误差,通过发光二极管显示误差,具有使用方便、直观、调音精度高的特点。下面以小提琴校音器为例进行介绍,只要对程序和电路稍作改动就可以成为其它乐器的校音器。
硬件电路介绍
小提琴四根琴弦音高从低到高分别为G弦、D弦、A弦和E弦。它们对应的空弦音分别为:g、d1、a1和e2,四个空弦音的频率见表1。
表1
空弦音 g d1 a1 e2
频率 196.00 293.66 440 659.26
单片机电子校音器由音频输入放大电路、选频电路、单片机电路、显示电路等部分组成。
单片机电子校音器的电路原理图见图1。
图1
话筒MIC、三极管VT1等组成音频输入放大电路,把小提琴发出的声音转化成电信号并进行放大。
IC1、C4、RP1、R5等组成选频电路,将输入的音频信号转化成矩形波信号输入给单片机,由于小提琴所发声音的谐波比较丰富,很难用通常整形的方法将其转化成和其基波频率相同的矩形波,因此这里采用锁相环音频译码集成电路LM567来解决这一问题, LM567的其5脚、6脚的外接电阻(RP1+R5)、电容C4决定了内部压控振荡器(VCO)的中心频率,中心频率。当3脚输入幅度>25mV、频率在器件带宽(0.95f0~1.05f0)内的信号时,经跟踪后f0和3脚输入信号频率一致,此时5脚输出和3脚输入信号频率一致的矩形脉冲波到AT89C2051的P3.2脚。8脚由高电平转为低电平,此信号输入到AT89C2051的P3.5脚作为LM567频率锁定的判断信号,发光二极管VD1作频率锁定指示用。因此,只要调节RP1的阻值,使LM567的内部压控振荡器(VCO)的中心频率在小提琴所调空弦音的频率附近,拉响小提琴对应的弦,把弦调到其标准音高附近,5脚就能输出相对应的矩形脉冲波。
单片机集成电路AT89C2051、石英晶体X1和电阻R7、电容C7-C9等组成单片机最小系统电路,其中R7、C7为单片机开机复位电路。
发光二极管VD2-VD10作输出指示,其中VD2-VD5同时兼作音名调节指示,使用时根据所要调的弦调节RP1使其对应音名的发光二极管的点亮,这样LM567内部压控振荡器(VCO)的中心频率在对应频率的附近了。
软件设计
由于涉及的计算比较多,程序使用C语言编写。程序由主程序、外部中断服务子程序、延时子程序等模块组成。
测量从P3.2脚输入的脉冲信号的频率有两种方法,一个是采用计数法,即测量单位时间内脉冲的个数,从而得到脉冲信号的频率,这种方法有一个明显的缺点:当频率较低时测量精度低,如果测量时间为1秒时精度只能达到1Hz,要达到0.1Hz的精度必须使测量时间为10秒,在这里显然行不通;第二个是采用测脉冲周期的方法进行测量,再由周期计算出频率。当单片机使用12MHz的石英晶体时,其测量周期的精度可达1微秒,为了进一步提高精度,对连续的10个脉冲进行计时,再计算出一个脉冲的周期,这样做可使脉冲周期的测量精度达到0.1微秒,测量所花的时间也只有几十毫秒。这里采用外部中断的方式测量脉冲周期,用定时器T0作计时器,从P3.2口输入的脉冲信号作为外部中断0的请求中断信号,外部中断采用边沿触发的方式。每过10个脉冲就把定时器T0的计数值取出,再计算出脉冲信号的频率。
单片机对从P3.2脚输入的脉冲信号分两种情况处理,按哪种情况进行处理是依据单片机P3.5脚的电平决定的。在设置所调的音名时,P3.5脚为高电平,调节RP1使LM567输出的频率在所调音名对应的频率附近,这时VD2-VD5中对应该音名的发光二极管就点亮,同时对该音名所对应的标准频率的变量赋值,用来和输入频率一起计算频率比;在校音时,如果LM567的振荡频率被小提琴空弦音的频率锁定,则LM567的8脚输出低电平使单片机P3.5脚为低电平,单片机把从P3.2脚输入的脉冲信号的频率和所调音名对应的标准频率进行计算,根据计算出的频率比把结果误差转化成音乐上常用的音分来表示,最后通过发光二极管VD2-VD10显示结果。例如,当VD7点亮时,说明小提琴所调弦的音高和标准音高的误差小于等于5音分。当VD6点亮时,说明音高误差不超过±2音分,这时就认为音高调准了。
两个频率误差和音分的关系式为:音分=1200log2频率比。表2列出程序中所用值的对应关系。
表2
音分 2 5 10 20 50
频率比 1.0012 1.0029 1.0058 1.0116 1.0293
音分 -2 -5 -10 -20 -50
频率比 0.9988 0.9971 0.9942 0.9885 0.9715
在程序调试过程中发现:如果程序中使用浮点数运算,编译后的代码多,程序效率低,因此我们把浮点数运算转化为整数运算,既减少了代码,又提高程序的效率。
安装调试和使用
IC1用LM567或NE567,IC2用AT89C2051。MIC用驻极体话筒。VD1用φ3的红色发光二极管,VD2~VD10用φ3的绿色发光二极管, RP1用22K、1W的电位器,C4用塑料薄膜电容。X1用12MHz石英晶体。电池用4节5号普通电池或充电电池。
单片机电子校音器的面板见图2。为了使用方便,调节RP1依次点亮时
图2
VD2-VD5时,在面板上标上电位器旋钮对应四个音名的位置。
给小提琴校音时,比如调节g音,先调节RP1使VD2发光,这时LM567的振荡频率在196Hz附近,拉响对应的弦,先粗调弦的张力,使发光二极管VD1发光,这时LM567的振荡频率被3脚输入信号的频率锁定,即LM567的5脚输出的脉冲信号的频率就是小提琴空弦音的频率,然后细调弦的张力,同时观察VD2-VD10的发光状态,使发光点逐渐向中心的发光二极管VD6靠拢。当拉响弦时发光二极管VD6开始点亮,则对应的弦就调好了。
这个校音器也可以用来给二胡校音,校音方法和小提琴相同,所不同的是二胡只有两根弦,内弦的空弦音为d1,外弦的空弦音为a1。 吴菲 吴汉清
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。