本发明是一种电子钢琴音源波形数字调制方法及其电路。 目前,电子钢琴音源电路主要采用两类方法。一是频域的方法;主要是将组成钢琴波形的各次谐波按各自的大小组合起来,作为钢琴音源波形。按组合的方法不同、又可分为几种方法。该方法的优点是可以用比较简单的电路实现,缺点是谐波所占的份量难以精确控制,频谱改变困难,难以适应钢琴频谱动态变化的场合。二是时域方法:一般是把钢琴的波形的数字信息存入存贮器中,根据按键的情况,按一定频率放出存贮器中的数码,经数/模转换器变成波形,这种数字调制方法为脉码调制型(PCM),该方法在理论上可以达到很高的精度,可以适应波形动态变化的情况,但电路复杂,价格昂格。为降低价格,出现了一些改进的方法,但都以牺牲许多波形精度为代价。
本发明的目的是提供一种既能保钢琴音源波形高的精度,又能使电路实现简便,价格便宜地数字调制方法及其电路。
本发明提出的数字调制方法是对时域方法的一种新的改进。属于增量调制方法的类型,我们称之为“双积分曲线拟合型增量调制方法”。简称为DM方法。
增量调制原理:在一个连续波形上两个时间间隔很近的点之间的增量很小,没想用一个固定的小增量Δ来近似它,当数字为1,表示增加一个Δ,数字为0,表示减少一个Δ,那么可用曲线fΔ(t)近似f(t)(f(t)设为一个波形曲线的函数),这一组0和1组成的码流表示了曲线fΔ(t),也就近似表示了f(t)(见图1)。如果将fΔ(t)积分两次可得fΔ1(t)(见图2),fΔ1(t)光滑,与f(t)的拟合程度提高。
增量调制的噪声特性:噪声被定义为原信号f(t)与模拟信号fΔ(t)的差异(见图3)。噪声可分为过载噪声和量化噪声两部分,过载噪声发生在信号斜率陡变的部分,由模拟信号fΔ(t)跟不上原信号f(t)的变化所引起的误差(图3中部分),量化噪声产生在模拟信号最大斜率大于原信号最大斜率的部分(图3中部分),它是由Δ为一固定量化台阶所造成,当Δ足够大使模拟信号最大斜率大于原信号最大斜率时,过载噪声就可消除,而量化噪声是随增量Δ值而变化,Δ大则量化噪声大,Δ小则噪声小。
双积分增量调制方式的噪声也同理,只要把以上所述中的斜率(一阶导数)变为二阶导数,Δ由数值增量变换为斜率增量即可,所以不再重述。
自适应增量调制方式:由上可见,为消除过载噪声要求Δ大,为减少量化噪声要求Δ小,如果在f(t)斜率大的部分Δ也大,在f(t)斜率小的部分Δ也小,则可在不产生过载噪声的前提下大幅度减小量化噪声(见图4)。这种Δ随信号斜率变化的增量调制方式称为自适应增量调制方式。双积分增量调制方式也同样有为消除过载噪声要求Δ大,而为减小量化噪声要求Δ小这个矛盾,解决的方法同样是采用Δ不变的自适应增量调制方式。
如何实现自适应增量调制,对双积分增量调制方式来说,首先是获得原曲线f(t)的f″(t)在某一段的平均值,然后控制Δ(斜率增量)随之改变,当f″(t)平均值大Δ也大,f″(t)平均值小Δ也减小,这样就可使模拟曲线处在既不过载,又使量化噪声较小的情况之下。
本发明是对自适应连续增量调制方法的进一步改进,但本质又有区别。它包括如下步骤:设钢琴音源波形曲线函数为f(t),取M个采样点:f(tn),记相邻两点间的波形函数为fn(t),采用简单曲线fΔn(t)拟合fn(t),n=1,2,…,M,M=28或29,由fΔn(t)(n=1,2,…,M)组成的拟合曲线记为fΔ(t);fΔ(t)的改变由fΔ″(t)的变化来表征,对fΔ″(t)用增量形式编成由0.1组成的码流,存入只读存贮器ROM中;上述码流经过解码器转换成电压波形输出。其特点如下:
组成拟合曲线fΔ(t)的分段曲线fΔn(t)是抛物线,即拟合fn(t)的曲线fΔn(t)是一种抛物线。抛物线拟合曲线的基本思想的:设f0(t)为一般曲线,t0≤t≤t1,记 f0″(t) 为f0″(t)的平均值,设fΔ(t)为一抛物线,满足初值f0(tn)=fΔ(t0), f0″(t)f△″(t),t0≤t≤t1,则可用fΔ(t)近似代替f0(t),其逼近程度,当f0(t)愈短时愈好。而抛物线fΔ(t)与一般曲线f0(t)相比,易于被电路处理。现用抛物线fΔπ(t)拟合曲线fn(t),fΔn(t)的确定方法如下:设初值f1(t0)=fΔ1(t0),且 f1″(t)f△1″(tn),t0≤t≤t1,则有终值f1(t1)=fΔ1(t1),因为f1(t1)=f2(t1),f2(t1)为f2(t)在t1时的初值,记f2(t1)=fΔ2(t1),改变fΔ2″(t)使fΔ2″(t)f2″(t) ,t1≤t≤t2,则又有终值f2(t2)fΔ2(t2),…,依次类推,记初值fn(tn-1)=fΔn(tn-1),改变fΔn″(t),使fΔn″(t)fn″(t) ,tn-1≤t≤tn,则有终值fn(tn)fΔn(tn),把它们作为下一段的初值。如此直至n=M,则得fΔn(t)n=1,2,…M。
上述fΔ″(t)的改变分为三种状态:增加、减少、不变,在编码中由如下方式实现:设增量Δ为一固定值,连续两个码为1,表示fΔ″(t)比前段增加一个Δ,再有一个1码,fΔ″(t)再增加一个Δ。连续两个码为0,表示fΔ″(t)比前一段减少一个Δ,再有一个0码,fΔ″(t)再减少一个Δ;连续两个码为0、1或1、0,表示fΔ″(t)与前一段相同,如果只是0101…变化,而无连续0码或连续1码出现,则fΔ″(t)在一段区域内保持不变。
本发明采用抛物线分段拟合钢琴音源波,有较高的精确度,一般的增量调制方式只有增加和减少两种状态,本发明中fΔ″(t)的改变采用三种状态,有利于减少量化噪声,使编码更加灵活,另外,一般的增量调制方法着眼于一点一点去跟踪原曲线f(t),它的主要信号是编码信号,它不仅要反映Δ的增加或减少,还要反映Δ本身的大小变化。而本发明着眼于一段一段去拟合原波形曲线f(t),所以只需要反映一段一段拟合线参数(即fΔ″(t)变化的Δ控制信号,因此,传递的仅是Δ控制信号,经解码器解码后即可产生fΔ(t)模拟曲线。
根据上述fΔ″(t)改变的三种状态所确定的编码原则,下面具体给出反映fΔ″(t)改变的Δ控制信号的码流的确定方法:考察原曲线f(t)在f(tn)到f(tn+m)一段,m≥1,记f″(t)在该段的平均值为 f″(t),(1)若 f″(t)fΔ″(tn),且f(tn)fΔ(tn),则fΔ″(t)保持为fΔ″(tn),tn≤t≤tn+m,编码为0101…01(共m个码),其中无连续两个0码,或两个1码;(2)若fΔ″(tn)<f△″(tn)f″(t)<fΔ″(tn)+Δ,则fΔ″(t)先保持为fΔ″(tn)一段不变,然后增加为fΔ″(tn)Δ,并保持之,fΔ″(tn)+Δ一段和fΔ″(tn)一段的比例多少,由条件 f△″(t)f″(t)确定,tn≤t≤tn+m,编码为…01011010…(共m个码),其中有两个码连续为1;(3)若f△″(tn) - △< f″ (t)<f△″(tn),则fΔ″(t)先保持为fΔ″(tn)一段,然后减少为fΔ″(tn)-Δ,并保持之,fΔ″(tn)一段和fΔ″(tn)-Δ一段的比例多少,由条件 f△″(t)f″(t)确定,tn≤t≤tn+m,编码为…010100101…(共m个码),其中有两个码连续为0;(4)若原曲线f(t)迅速增加或减少,tn≤t≤tn+m,则编码为…1111…(m个1码),或…0000…,(m个0码)。使fΔ″(t)连续增加或减少、从而使fΔ(t)迅速增加或减少,跟上f(t)的变化而不产生过载噪声。
一般钢琴音色有如下一些特点:A、波形频谱和幅度包络决定其音色;B、各键波形不相同,低音谐波丰富,高音谐波少,相邻键的波形接近;C、从发音开始到终了,频谱是变化的,相邻波的频谱接近;D、从发音开始到终了,在幅度上有一个建立、持续、衰减的过程,形成幅度包络。根据以上特点以及信息存贮器容量的条件,本发明采取了如下设定:(1)把每3个连续相邻的琴键分为一组,设每组琴键声音的波形相同,虽然钢琴每个琴键的波形是有差别的,但根据特点B,相邻键的波形相似,所以没有必要把每个键的波形都存入存贮器中。例88键的电子钢琴,把键分为29组(最后组为4个键),每组存入一种波形数码即可。(2)每个琴键声音的波形从开始到终了的时间分为32段,设每段时间的波形相同。虽然从发音开始到终了,波形是不断变化的,根据特点C可知,在较短时间范围内,波形差异是很小的。
相应于上述电子钢琴音源波形的双积分曲线拟合型增量调制方法,本发明提出了新的电路设计,音源电路的系统框图如附图5所示,它包括单片微机控制中枢1、键盘键位及力度检测电路2、脚踏板检测电路3、信号迭加电路4、音响电路5、地址控制电路6、只读存贮器(ROM)7,以及ROM7与信号迭加电路4之间的通道组8,通道组8由6-8个通道组成。每个通道的电路结构框图如附图6所示,它由读写存贮器(RAM)9、并入串出电路10、双积分曲线拟合型增量调制解码器11、放大量选择电路12、地址控制电路13、时钟电路14组成。图中双箭号表示数据总线,箭撇号表示地址线。
其中微机控制中枢1可以8031单片机为核心,它由数据总线接受检测信息、发出控制指令、控制各通道及其它电路的工作。键盘键位及力度检测电路2用来检测键盘上所按键的位置和力度,然后将这些信息送入控制中枢。脚踏板检测电路检测脚踏板的位置,然后将检测信息送控制中枢。只读存贮器(ROM)7用于存贮波形数码,即反映拟合曲线f(t)的参数(t″(t))Δ控制信号的数码流。通道组8的作用是将来自ROM7的波形数码转变成一定频率和一定幅度的电压波形。通道组中每个通道相互独立,可同时工作,它们所产生的电压波形经信号迭加器4迭加后送入音响电路5。一个通道可供一个琴键的波形转换工作,弹琴时最多10个手指同时按琴键。但一般不超过8个手指同时按键,因此通道设计8个就够了。也可设计成6个或7个。通道中读写存贮器(RAM)9的作用是将某一已按键的波形数码从只读存贮器7中调出,存入RAM9中,然后根据地址控制电路13给定的地址和时钟电路给定的时钟频率输出波形数码给并入串出电路10。并入串出电路10的作用是将从RAM9的8位并行数码变成1位串行数码送入解码器11。解码器11的功能是将一位数码流转换成电压波形。放大量选择电路12用以控制电压波形的幅度,以产生力度及包络的效应。时钟电路14的功能是产生M倍于相应键的音频的时钟频率,以控制通道在每个音波周期传送M个1位数码。地址控制电路13的功能是控制读写存贮器9传送数据的地址,并控制读写存贮器在整个发音过程中逐个读出各个波形的数码,一个波形数码重复读出若干次,然后再读下一个波形数码,又重复读出若干次,直至整个发音结束
上述通道中的解码器11电路结构如图7所示,它由1∶1的反相器K0、电子开关20、积分器16、积分器17、加减计数器15、判断电路14组成。其中
(1)积分器16由电子开关21、电子开关22、电阻R10~R116(共17个)、电容C10~C17(共8个)和放大器K1组成,电子开关21是一个十六选一的开关,选择R10~R115中某一个电阻接入积分器16,R17未接,即R17的电阻值为无穷大。电子开关22是八个二选一开关,分别连接电容C10~C17,电容C10~C17数值为二进制排列,即C10,C11=2C10,C12=4C10,…,它们可形成1~256倍C10的电容值。
(2)积分器17由电子开关23、电阻R20~R28、电容C2和放大器K2组成,电子开关23是八个二选一开关,分别连接R20~R27,R20~R27数值为二进制排列,即R20,R21=2R20,R22=4R20,…,它们在开关23的控制下可形成1-256倍于R20的阻值。
(3)判断电路24由与门电路25、非门电路26、异或非门电路27、D解发器28组成。
(4)上述电路的连接关系如下:电子开关21与反相器K0由开关20连接,开关22的控制端通过锁存器18接数据总线,开关23的控制端通过销存器19接数据总线,D触发器28的D端接并入串出电路10的输出端,CP端接时钟电路14。加减计数器15的输出端Q0、Q1、Q2、Q3接开关21的控制端,Q3端还接开关20的控制端,CP端接与门电路25的输出端,M端接并入串出电路10的输出端,输入端D0、D1、D2、D3接数据总线,用以预置计数初值。
上述反相器K0,通过电阻R01、R02、R03、产生一个与输入直流电压信号V1数值相等、符号相反的信号-V1。加减计数器15及判断电路24的作用是将来自电路10的一位串行码变成对Δ的控制码,使连续两个“0”码或连续两个“1”码,加减计数器15减1或加1,由加减计数器15控制电子开关21的位置,把一定的电阻接入积分器16,形成相应的f″(t)值。积分器16和积分器17的作用是使输入的直流电压信号V1通过两次积分变成抛物线型波形曲线fΔ(t),以拟合原音波曲线f(t)。积分器16的电容网络和积分器17的电阻网络用于控制积分系数,以便在不同的频率下保持输出波形的波幅不变。如当波形频率低时,对积分器积分电容的充电时间长,波幅必然上升,此时,通过增大积分系数,可使波幅保持不变。又如在相同波形时,如果频率下降n倍,而积分系数也增加n倍,可保持波幅不变。
上述解码器11的元件可采用如下参考数值:R01=R02=R03=100KΩ,R10=R114=120KΩ,R11=R113=180KΩ,R12=R112=240KΩ,K13=R111=300KΩ,R14=12110=360KΩ,R15=R19=420KΩ,R16=R18=480KΩ,R17=∞,R115=60KΩ,R116=240KΩ,R20=6.4MΩ,R21=3.2MΩ,R22=1.6MΩ,R23=800KΩ,R24=400KΩ,R25=200KΩ,R26=100KΩ,R27=50KΩ,R28=600KΩ,C10=6400PF,C11=3200PF,C12=1600PF,C13=800PF,C14=400PF,C15=200PF,C16=100PF,C17=50PF,C20=500PF。
整个系统的工作从按下琴键开始到发音结束的动态过程描述如下:当按下一个琴键后,键盘键位及力度检测电路2检测出键位和力度,并将信息送给控制中枢1,控制中枢1根据这些信息完成如下工作:
1、根据键位去控制只读存贮器7的地址,使该键的波形,从只读存贮器7写入一个通道的读写存贮器9中。
2、根据键位控制时钟电路14,产生M倍于该键音频的时钟频率,由于每个波形由M个数码组成,所以传送数据的频率M倍于音频频率。
3、根据键位调整解码器11的积分参数(见前述)。
4、根据力度选择放大量。预先通过测定钢琴力度与音量的关系,列出力度与音量关系的表格存入计算机存贮器中。工作时,根据力度表查得相应的放大量,再去控制放大量选择电路12,以获得与力度对应的放大量。
5、根据键位,在地址控制电路16中设定波形重复次数的参数。波形重复次数是这样获得的:设所按键的频率为200HZ,从发音到结束的为16秒,则在此期间共产生200×16=3200个波形,在前面的假设中,把发音过程分为32段,每段波形相同,这样可算得波形重复次数为3200÷32=100,由于每个键的频率和延音时间各不相同,所以每个键的波形的重复次数是不相同的。
6、微机控制中枢做完以上工作后向通道发出开始工作的指令。通道工作时,微机向解码器11传送三组数据,其中二组分别送给锁存器18和锁存器19,以控制积分系数,另一组送入加减计数器15,去控制K1的电阻网络,确定f″(t)的初值。一位数码流从并入串出电路10送入加减计数器15、异或非门电路27、D触发器28,电路27和电路28形成一个判断,当数码流中连续两个1,或连续两个0,电路27输出1,打开与门电路25,使时钟电路14的CP通过非门26、与门25送入计数器15,计数器15开始计数,是加1还是减1,由M端为1还是为0决定。当数码流连续两个为1时,M为1,计数器15作加1计数;当数码流连续两个为0时,M为Q,计数器15作减1计数。在加1计数时,控制K1的电阻网络改变为减少一个R10的值,即使fΔ″(t)增加一个Δ;在减1计数时,通过K1电阻网络,使fΔ″(t)减少一个Δ。当数码流中无连续1码或连续0码时,电路27输出0,封锁与门25,使计数器15不计数,K1的电阻网络阻值不变,即fΔ″(t)保持不变。加减计数器输出范围为0~15,其以8为中点,对应于fΔ″(t)=0;9~15对应于f″(t)>0,0~7位对应于fΔ″(t)<0。电子开关20的控制端接加减计数器的Q3端,当计数器输出大于8时,Q3为1,电子开关20接通V1产生f″(t)>0,反之产生fΔ″(t)<0,通过积分器16和积分器17的两次积分转变为抛物型拟合曲线fΔ(t)。当输入M个数码,在K2的输出端就输出一个周期完整的电压波形fΔ(t),波形的频率为时钟频率的1/M。地址控制电路13使读写存贮器9重复输出相同波形若干次后,再输出下一次波形数据,又重复若干次,如此继续,就模拟出钢琴弹奏时,按下键后波形随时间不断变化的情况。
在发音过程中,微机控制中枢根据包络数据定时控制放大量选择电路以形成波形幅度包络。脚踏板影响所有通道的声音高低,延音长短,微机控制中枢根据脚踏板检测电路的检测信息,对各通道作相应控制。
当发音过程结束,微机控制中枢控制通道退出工作状态,进入等待状态。
本发明的DM方法与PCM方法相比较有如下优越性:
1、波形数字信息量少。本音源电路共需存贮波形数字信息存贮单元为464KB。在大致相同的精度和分割精度的情况下,PCM音源需数/模转换器为12位,采样频率为44KHZ,需要6MB存贮单元,两者相差13倍。
2、价格便宜。PCM音源每个通道都需用12位以上的D/A转换器,这是价格昂贵的器件。12位数码转送及控制都需要复杂而价格昂贵的电路,还需要高性能的低通滤波器,以滤除量化噪声。相比之下,DM音源只需1位转送,D/A转换器很简单,在相同的精度时,两者成本相差5倍左右。
3、波形质量相似。以钢琴波形为标准波形,以DM方法的解码器输出波形为模拟波形,定义噪声为标准波形与模拟波形之差。则
信噪比d=20Lg(标准波形方均根值/噪声方均根值),由实验得出在4200Hz~500Hz时 d>70db,在500Hz~25Hz时,d>60db。这样的信噪比是令人满意的,一般达到了PCM的波形质量。虽然低频时信噪声比较小,但人耳在这段频率上对音色的分辨不敏感,正好弥补了此项的不足。通常,对人耳的感觉来说,低频时千分之一的信噪比,并不比高频时千分之零之三的信噪比差。另外,波形质量受制于音响电路,音响电路要做到失真度为千分之一已经相当困难。因此,过份提高波形精度,没有实际意义,它不能提高音色,反而会增加成本。