APP下载

基于近似整周期采样的钢琴调音仪设计

2014-03-27杨宇祥吴波波倪文文唐旋

西安理工大学学报 2014年3期
关键词:测频调音琴音

杨宇祥, 吴波波,倪文文,唐旋

(西安理工大学 机械与精密仪器工程学院,陕西 西安 710048)

钢琴作为乐器之王,在人们精神生活中扮演着越来越重要的角色。但是钢琴每使用4~6个月就会出现琴音不准的问题,需要定期调音[1]。钢琴调音就是调节琴弦的松紧程度,使琴音达到正常的音准[2]。传统的调音依靠调音师凭借耳朵的听力和调试经验来完成,每次调音至少需要几个小时才能完成。这种调音方法受调音师的专业水平和音乐修养的影响较大,调音准度没有确定的指标。实际上,琴音是由某个基频与高次谐波构成的、振荡时间很短的周期信号[1],而琴音的音准是根据它的基频来决定的,因此只要测出其琴音的基频值,就可以精确地知道该琴音与音准标准频率的差异[3]。钢琴调音仪的出现就是为了解决钢琴琴音基频的精准测量问题,直观显示被测琴键声波频率与标准频率之间的差异,以精确指导钢琴的调音。

目前钢琴调音仪的测频方法主要有多周期同步测频法[4]和基于快速傅立叶变换(FFT)的数字测频法[5-6],但这两种方法都存在一定的缺陷。多周期同步测频法是在测周的基础上,在信号的多个时间周期内测量信号的频率。但是由于计数脉冲和门控信号很难同步,所以一般会产生±1 Hz的误差,因此基于多周期同步测频法的钢琴调音仪一般精度不高,达不到理想的调音效果[7]。基于FFT的数字测频法应用更为广泛,但对于钢琴琴音频率检测来说,由于钢琴琴弦的振荡时间短(一般在5 s以内),提高采样率并不能提高频率分辨率,而且一般无法实现严格的整周期采样,FFT算法存在频谱泄漏和栅栏效应,严重影响了频率测量的精度[8-9]。

本文针对以上两种调音仪测频方法存在的问题,提出一种基于近似整周期采样的数字测频算法,该算法整合了过零比较法[10]和拉格朗日插值法[11-13],实现采样数据的近似整周期采样以消除FFT频谱泄露和栅栏效应带来的测量误差[14-15],最终实现琴音信号的高精度测频。设计了一种基于STM32-F407的便携式数字钢琴调音仪,可直观显示被测频率与标准频率之间的差异,以精确指导调音师对钢琴的调音工作。

1 基于近似整周期采样的数字测频原理

钢琴琴音信号的主信号是某一频率的正弦波,可以用下式表示:

u(t)=Umsin(2πft+φ)

(1)

其中,Um表示信号幅值,f表示信号的频率,φ表示信号的初相。

近似整周期采样数字测频法原理如图1所示。图1中,音频信号经模数转换器(ADC)采样后变成数字信号,经过FIR滤波后滤除杂波信号,经过零比较后得到粗略频率f′;随后根据f′调整采样率和FIR滤波器参数进行跟踪采样和跟踪滤波,得到单周期内约256点的采样值;再利用拉格朗日插值算法对采样值进行插值处理,调整为近似整周期采样的单周期固定256点数字信号;最后通过256点FFT算法得到高精度频率值f。

图1 近似整周期采样测频原理

1.1 FIR数字滤波器

钢琴琴音是具有确定频率的正弦波信号,ADC进行信号采集时会有低频及高频杂波介入,从而影响频率测量的精度和稳定性。为此,本文设计FIR数字滤波器,滤除ADC采集后f′离散钢琴琴音数据波形的杂波信号,得到其有效的主频波形信号,以保证后续过零比较测频算法的频率测量精度。FIR滤波器即有限长单位冲激响应滤波器,为数字信号处理系统中最基本的单元,具有严格的相位线性和稳定性,且适合硬件实现。

FIR数字滤波器的设计,必须确定FIR数字滤波器的滤波类型、滤波窗函数、滤波阶数、滤波器的抽头系数,这样才能得到一个确定的FIR数字滤波器。本文设计的FIR滤波器主要是为了滤除每个琴键主频附近的低频及高频杂波干扰,因此滤波器类型选为带通滤波器;选择常用的、滤波效率高的Hamming窗作为滤波窗函数;通过Matlab仿真对滤波效果的比较分析,并综合考虑CPU的运算能力等各方面因素,滤波器阶数选为32阶。

1.2 过零比较粗略测频

在进行跟踪采样及跟踪滤波前,需要确定当前所测信号的粗略频率值,本文采用过零比较测频法完成该工作。原理上只要测得两次过零点之间的点数,用采样率除以所得点数就是波形的频率。过零比较测频法原理简单,运算量小,受谐波影响很小,响应时间快。但是频率精度受量化误差和过零点扰动影响,频率存在一定的误差。

过零比较测频法原理如图2所示。设在采样频率fs下得到的采样序列为:

y=u(kTs)

其中Sample[k1]、Sample[k2]、Sample[k3]、Sample[k4]为波形的过零点,过零点波形示意如图2所示。将Sample[k1]和Sample[k4]之间的所有采样的数据点数做计数,得到一个波形周期中的数据点数N,则波形的粗略频率f′=fs/N。

图2 过零比较测频原理

1.3 跟踪采样与跟踪滤波

由过零比较法得到信号的粗略频率后f′,用f′来设定跟踪采样的采样率和跟踪FIR滤波参数。使用定时器触发ADC的方式设定跟踪采样的采样率为f1=f′×256,因此可以得到信号单周期内约256点的采样值。跟踪滤波器的滤波参数按照88个钢琴琴键的标准频率设定滤波参数,并存储到系统自带存储器中。每次滤波时按照f′值选择相应的滤波参数并完成滤波。

1.4 拉格朗日插值

由过零比较法得到的粗略频率f′仅是信号频率的粗略估计,因此实际上在跟踪采样率f1下很难得到整周期采样,即一个周期256个点采样。众所周知,非整周期采样是造成后续FFT算法产生频谱泄露的主要原因[8-9]。本文利用拉格朗日插值算法将采样值进行插值处理,调整为近似整周期采样的单周期固定256点数字信号,从而最大程度减小FFT算法中频谱泄露带来的影响。

设在跟踪采样率f1下得到的真实采样序列为u(k)=u(kT1),T1为相应的采样周期。又设信号的真实频率(待测频率)为f,如果考虑到运行256点FFT算法时不发生频率泄露,则理想的采样率应为fs=256f。设Ts为相应的采样周期,则相应的理想采样序列为:

y(k)=u(kTs)=u(kT1f1/fs)=u(k′T1)

(2)

其中k′=kf1/fs。

由于k′一般不是整数,即理想采样序列y(k)位于真实采样序列u(k)各点的中间,因此可以在u(k)相邻的两点之间进行线性插值,得到y(k)的估计值。设:

a=kf1/fs

(3)

式中,k表示采样点的序号,f1为跟踪采样率,表示向下取整。

设b是小于a的最大整数,将y(k)在u(b)和u(b+1)间进行线性插值,其线性插值公式如下[10]:

(4)

式(4)即插值后得到的新采样序列,经过FFT算法后即可得到信号频率f的高精度估计值。

1.5 插值误差分析

近似整周期采样的数字测频方法包括FIR滤波、过零比较、跟踪采样、跟踪滤波、拉格朗日插值、快速傅里叶变换等算法,其中拉格朗日插值是一种近似代替算法,存在一定误差,会造成精度的损失。

拉格朗日插值的精度由其插值余项(截断误差)R1决定,y(k)的拉格朗日插值余项为[10]:

(5)

其中,ξ∈[bTs, (b+1)Ts]。

又根据式(1)可得:

|u″(ξ)|=Um(2πf)2|sin(2πfξ+φ)|≤Um(2πf)2

(6)

因此,每个采样点的插值误差为:

(7)

对于琴音电压信号有:Um为信号的最大幅值(3.3 V),f为被测信号的频率值,fs为采样率。因为采样点数N=fs/f,代入上式有:

(8)

本系统中选取样本点数N为256,则拉格朗日插值余项(截断误差)为0.000 25,即理论上整个系统算法测量琴音信号频率精度误差为0.000 25 Hz,远远小于实际频率测量精度设计要求的0.001 Hz,理论上本文设计算法的精度满足实际测量频率精度设计要求。

2 钢琴调音仪的设计与实现

2.1 硬件系统设计

钢琴调音仪系统结构如图3所示,主要包括:话筒、二阶低通滤波电路、差分运算升压电路、Cotex-M4内核主控制器STM32-F407、TFT触控显示模块、SD卡存储模块、USB-OTG模块、串口通信模块等。

图3 硬件系统结构图

系统的工作流程为,钢琴琴音由话筒转换为微弱的有谐波干扰的电压信号,经过二阶低通滤波电路滤波,再经差分升压电路将负电压信号抬升到正电压范围,送入ADC进行数字化,然后在主控制器STM32-F407进行FIR滤波、过零比较、跟踪采样、跟踪滤波、拉格朗日插值、FFT等一系列的数字信号处理,最终得到音频信号的频率值f,并完成显示、通信、存储等功能。

2.2 ADC采样设计

钢琴琴音信号都是有一定幅值的正弦波信号,频率f的范围为27.5 Hz到4.186 kHz。为了实现单周期内256点的采样值,应相应地选择ADC的采样率为fs=f×256,即最高采样率为1.2 MHz/s,最低采样率为7.1 kHz/s。STM32-F407自带的ADC采样率最高为2.4 MHz/s,可以满足采样率的要求。

STM32自带ADC的最高位数为12位,即最大采样数据为4 095。对于双极性的琴音信号,本文设计了前端模拟调理模块中的差分运算升压电路,将钢琴琴音模拟波形整体抬升到ADC采集最大电压的一半,即把波形的零点抬升到了2 048处。

钢琴琴音信号采集时,同时伴有很多低幅值的杂波信号。为了避免ADC采集到杂波信号从而得到错误频率值,在ADC采集的时候设定了一个模拟信号触发阈值,只有当模拟输入的数值达到设定的阈值范围时才触发ADC进行数据采集,确保采集的波形信号是钢琴琴音有效波形信号,以此来保证测频数据的可靠性。

2.3 软件系统设计

软件系统流程图如图4所示。

图4 系统软件运行流程图

系统首先初始化,并进行阈值检测以判断琴音信号是否为有效波形。如果是有效波形,则采集有效波形数据,依次经过FIR滤波、过零比较得到初步粗略频率值f′,然后根据f′进行跟踪采样和跟踪滤波,得到单周期内约256点的采样值;再利用拉格朗日插值算法将采样值进行插值处理,调整为近似整周期采样的单周期固定256点数字信号,最后经过256点FFT运算,得到精确的频率值f,并在TFT液晶屏显示。同时检测上位机命令,如果有上位机命令则向上位机发送波形数据,一次运行流程结束,整个软件流程在一个大循环中重复执行。

3 测频实验

3.1 标准信号测频实验

为了验证设计的钢琴调音仪的测频精度,本文设计了针对标准频率信号的测频实验。波形发生器依次产生8个不同频率的标准正弦信号,其频率值分别对应A2、g、a1、a2、g3、f4、a4、c5等8个不同音律。产生的标准正弦信号直接替换图3中话筒的输出信号,经调音仪处理后得到频率测量值,并与输入的标准频率进行比较,以检验系统的测量精度。标准信号测频实验照片如图5所示,实验结果如表1所示。

图5 标准信号测频实验照片

表1 标准信号测频实验结果

由表1可见,对于不同频段的8个标准正弦信号,调音仪在低音频A2处测得频率相对误差为0.098%,在高音频c5处测得频率相对误差为0.021%,是随着频率增大,调音仪的测量相对误差减小。

目前市场上高端调音仪在低音频A2处测频相对误差为0.058%;在高音频c5处的测频相对误差为0.048%。由此可见,本文设计的钢琴调音仪在低音频段的测频精度略差,但在高音频段的测频精度具有较大优势。因此,本文设计的调音仪具有较高的测频精度,可以用于指导钢琴调音。

3.2 对钢琴的测频实验

本实验针对实际钢琴进行测频实验,利用话筒采集钢琴的声音信号,得到钢琴琴音的频率值。钢琴琴音测频实验如图6所示。调音仪对钢琴的A2、g、a1、a2、g3、f4、a4、c5等8个不同音律的琴键测频数据如表2所示。

图6 钢琴琴音测频实验照片

表2 钢琴琴音测频实验结果

由表2可见,测得的琴键频率实际值和钢琴对应的标准频率值之间有一定的误差,但每组三个测量数据之间的波动很小,都在0.1 Hz以内,表明本文设计的钢琴调音仪测频精度稳定,频率测量值真实可信,可以用于指导钢琴调音。实验中所测钢琴琴音频率偏离标准频率,主要原因是由于材料形变导致琴弦的张力改变,从而形成频率偏差。可以在调音仪的指导下调节琴弦张力,使琴音频率回复到标准值附近。

4 结 论

1)提出了一种基于近似整周期采样的数字测频方法,该方法整合了FIR滤波、过零比较和拉格朗日插值算法,实现采样数据的近似整周期采样,以消除FFT频谱泄露和栅栏效应带来的频率误差,最终实现琴音信号的高精度测频。

2)设计了一种基于STM32-F407的便携式数字钢琴调音仪,对标准正弦信号和钢琴琴音进行了频率测量实验。实验表明,本文设计的调音仪具有较高的测频精度和稳定性,可以用于指导钢琴调音。

参考文献:

[1] Shi Lixin, Zhang Junxing, Pang Lingbin. Piano fundamental frequency estimation algorithm based on weighted least square method[C]// Proceedings of the international forum on information technology and applications, Chendu, China, 2009.

[2] Millard M, Tizhoosh H R. Tuning pianos using reinforcement learning [J]. Applied Acoustics, 2007, 68(5): 576-593.

[3] Liu Yunfeng. Research piano frequency based on dsp and window function[C]// Proceedings of the international conference on fuzzy systems and knowledge discovery, Sichuan, China, 2012.

[4] Wang Hongyun, Yao Zhimin, Shi Lianyan, et al. The study of multi-cycle frequency measure system [C]// 2010 Second WRI Global Congress on Intelligent System, 2010.

[5] Zhang Gangbing, Liu Yu, Xu Jiajia, et al. Frequency estimation based on discrete Fourier transform and least squares[C]// Proceedings of the IEEE international conference on wireless communications & signal processing, Nanjing, China, 2009.

[6] Ren J, Kezunovic M. An improved fourier method for power system frequency estimation[C]// Proceedings of the north American power symposium, Boston, 2011.

[7] 张雪平. 单片机多周期同步法提高测频准确度 [J]. 电子测量技术, 2004, (3): 50-51.

Zhang Xueping. The frequency measurement accuracy be improved to use synchronous multicycle method with MCU[J]. Electronic Measurement Technology, 2004, (3): 50-51.

[8] Ahmad H, Salam M A, Ying L Y, et al. Harmonic components of leakage current as a diagnostic tool to study the aging of insulators[J]. Journal of Electrostatics, 2008, 66(3-4): 156-164.

[9] Li Yanfeng, Chen Kuifu. Eliminating the picket fence effect of the fast Fourier transform[J]. Computer Physics Communications, 2008, 178(7): 486-491.

[10] Djuri M B, Djuri I R. Frequency measurement of distorted signals using Fourier and zero crossing techniques[J]. Electric Power Systems Research, 2008,78(8):1407-1415.

[11] Qi Guoqing, Jia Xinle. Accuracy analysis of frequency estimation of sinusoid based on interpolated FFT[J]. Acta Electronica Sinica, 2004, 32(4):627-629.

[12] Vijay K Jain, William L Collins, David C Davis. High-accuracy analog measurements via interpolated FFT[J]. Instrumentation amd Measurement, 1979, 28(2): 113-122.

[13] Radil T, Ramos P M, Serra A C. Frequency estimation of power system signal using a new spectrum leakage correction algorithm[C]// Proceedings of the IEEE international instrumentation and measurement technology conference, Victoria, 2008.

[14] Radil T, Ramos P M, Serra A C. New spectrum leakage correction algorithm for frequency estimation of power system signals[J]. IEEE Transactions on Instrumentation and Measurement, 2009, 58(5): 1670-1679.

[15] 曹万磊. 一种提高频率测量精度的方法[J]. 自动化技术与应用, 2008, 27(10): 80-82.

Cao Wanlei. An algorithm for improving the accuracy of frequency measurement[J]. Instrumentation amd Measurement, 2008, 27(10):80-82.

猜你喜欢

测频调音琴音
STM32频率测量误差分析与比较
僧心琴音
谐振式传感器高精度频率测量技术研究*
记白马寺(新韵)
畅玩主流AV前级/放大器 体验自动调音系统
夜品高陶九品赠侄
基于LPC11c14的励磁控制器设计
调音
浅析调音台的调音技巧
瞬时测频接收机自动测试系统的设计与实现