音乐合成方法 【技术领域】
本发明涉及一种音乐合成方法,特别涉及一种手持式电子装置的音乐合成方法。背景技术
随着移动商务时代的来临,一向寻求短小轻薄、功能齐全,而且强调可以让使用者随时随地带着走的手持式电子装置(例如电子字典、个人数字助理、可携式计算机、移动电话、电子字典等)。个人移动商品也一直不断的在推陈出新,并且在市场上受到越来越多人的喜爱与使用,然而市场上对于个人移动商品的发展并不因此满足而停滞,反而企图能够朝向更多元化的应用领域去迈进,其中的原因是这些产品的轻薄短小的特性,性能虽不如台式计算机来得强大,但却都能满足的使用者的部分需求,例如电子字典的出现即解决翻阅字典查询的不便以及笨重的问题。
然而,这些手持式电子装置均具有轻薄短小的特性,因此产品设计时便必须牺牲运算速度及储存容量,其扩充性具有一定地难度。因此,在考虑运算速度及储存容量的情况下,很多应用程序的设计就不得不重新修正,以便在这些手持式电子装置上使用。
运算速度以及储存容量限制上述手持式电子装置的音乐音质。这是因为几乎接近乐器原音的音色表现,需要庞大的内存来储存,且在运算上也需要加以提升,况且记录各种乐器音色所需要的内存的确会相当的庞大,这就是为什么这些手持式电子装置一直无法出现动听的音乐的原因。发明内容
本发明的目的在于提供一种音乐合成方法,在手持式电子装置上不耗占内存空间、分析合成的过程较为简单。
本发明的目的是这样实现的:
本发明公开了一种音乐合成方法,包括一音乐波形数据库,系将音乐波形合成分成(一)起奏衰减、(二)延音、(三)消逝等三个阶段,合成前必须事先建立音乐波形数据库,包括储存:
各种乐器起奏衰减阶段的波形数据及其数据长度;
各种乐器的一段延音或消逝阶段的一个或数个基本周期的波形数据及其数据长度,令此数据为递归波形数据其长度为递归长度参数(Loopinglength);
各种乐器在延音阶段的振幅衰减模式参数(Looping mode)及振幅调整参数(Looping factor);
各种乐器在消逝阶段的振幅衰减模式参数(Release mode)及振幅调整参数(Release factor);
合成时,在起奏衰减阶段,只需将所储存的波形数据乘上一固定振幅即可;在延音及消逝阶段中,其音乐波形数据是由递归波形数据周期性地重复复制而得,再依据延音阶段及消逝阶段的振幅衰减模式及振幅调整参数调整振幅,此振幅为每输出一个波形数据即调整一次,将此振幅乘上输出波形,以产生各种不同衰减模式的波形,合成近乎原音的音乐。附图说明
为让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举数个较佳实施例,并配合附图,作详细说明如下:
图1A为起奏衰减及递归波形图;
图1B为起奏衰减、延音及消逝波形图,
延音:线性衰减Looping factor=0,
消逝:线性衰减Release factor=16384;
图2为起奏衰减、延音及消逝波形图
延音:指数衰减Looping factor=10,
消逝:线性衰减Release factor=2048;
图3为第三种乐器的音乐波形图;
图4为本发明的音乐合成方法流程图;
图5为本发明的音乐波形合成方法流程图;及
图6为本发明的控制合成模式流程图。附图符号说明步骤410 撷取音乐波形步骤420 依起奏及衰减、延音、消逝阶段方式分析并
决定音乐波形的衰减、延音、消逝阶段的参
数步骤430 建立音乐波形数据库步骤440 依据使用者所输入的开始弹奏信息,读取音
乐波形数据库中的起奏及衰减、延音、消逝
阶段的参数步骤450 依据起奏及衰减、延音、消逝阶段的参数合
成音乐步骤510 初始化步骤520 读入波形数据步骤530 输出波形数据步骤540 控制合成模式步骤541 合成长度是否已到数据长度步骤542 合成模式切换为延音模式步骤543 是否接收停止弹奏信息步骤544 合成模式切换为消逝模式步骤550 调整振幅步骤560 控制合成结束具体实施方式
经过分析各种音乐波形可以发现,通常音乐波形可分成音乐刚弹奏的起奏(attack)阶段、起奏后慢慢衰减的衰减(decay)阶段、琴键按住不放的延音(loop)阶段及琴键松开(release)后的消逝等阶段。其中,将起奏阶段与衰减阶段合并在一起。因此,本发明将音乐波形合成分成起奏衰减、延音、消逝等三个阶段,合成前必须事先建立音乐波形数据库,这些特征参数包括:
一、各种乐器起奏衰减阶段的波形数据及其数据长度;此阶段主要是音乐波形周期性较低的部分,此段波形数据包括了乐器的主要音色。
二、各种乐器的一段延音或消逝阶段的一个或数个基本周期的波形数据及其数据长度,令此数据为递归波形数据其长度为递归长度参数(Loopinglength);
紧接着起奏衰减阶段的波形数据后,会出现周期性较高的波形数据一直到结束,此周期即为递归长度参数,它用来在延音及消逝阶段,重复产生周期性的波形数据,它可以是乐器音高或基本周期的一倍或数倍。
三、各种乐器在延音阶段的振幅衰减模式参数(Looping mode)及振幅调整参数(Looping factor);
在延音阶段其波形数据是由递归波形数据周期性地产生,因此其振幅必须做调整,振幅的调整为每输出一个波形数据即调整一次,由振幅衰减模式参数及振幅调整参数决定。振幅衰减模式分为指数衰减、线性衰减、指数递增及线性递增;振幅调整参数决定每次的调整量,设定此二参数,以产生最接近的原始音乐波形。
四、各种乐器在消逝阶段的振幅衰减模式参数(Release mode)及振幅调整参数(Release factor)同三,在消逝阶段其波形数据也是由递归波形数据周期性地产生,因此其振幅必须做调整,振幅的调整为每输出一个波形数据即调整一次,由振幅衰减模式参数及振幅调整参数决定。振幅衰减模式分为指数衰减及线性衰减;振幅调整参数决定每次的调整量,设定此二参数,以产生最接近的原始音乐波形。
现在将各阶段的合成方法及数据库的运用分析说明如下:
一、起奏衰减阶段:其音乐波形数据是预先储存在数据库的,在合成时只需乘上一固定振幅即可。此阶段包括主要的乐器音色,是音乐波形中周期性较低的部分,无法以复制方式产生,故需储存。请参考第1A、1B图图2图3,可发现,三种不同的乐器,其起奏衰减的部分呈现较不规则波形,此点也是不同乐器音乐特色的主要部分。
二、延音阶段:在延音阶段其波形数据是由递归波形数据周期性地产生,因此其振幅必须做调整,振幅的调整为每输出一个波形数据即调整一次,由振幅衰减模式参数及振幅调整参数决定。振幅衰减模式分为指数衰减、线性衰减、指数递增及线性递增;振幅调整参数(Looping factor)决定每次的调整量,设定此二参数,以产生最接近的原始音乐波形。其变化模式及调整方法如下:
(1)指数衰减(请参考图2)
振幅参数Amp=Amp-Amp*Looping factor。
(2)线性衰减
振幅参数Amp=Amp-Looping factor。
(3)指数递增
振幅参数Amp=Amp+Amp*Looping factor。
(4)线性递增
振幅参数Amp=Amp+Looping factor。
(5)固定不变
如果Looping factor=0,则振幅参数保持定值,固定不变,请参考图1B。
于是,通过指数衰减、线性衰减、指数递增、线性递增与固定不变等几种不同的振幅参数,再乘上递归长度,即可产生各种不同乐器所发出音乐的延音阶段的振幅的变化,而合成出近乎原音的音乐。
三、消逝阶段:在消逝阶段其波形数据也是由递归波形数据周期性地产生,因此其振幅也必须做调整,同样的振幅的调整为每输出一个波形数据即调整一次,由振幅衰减模式参数及振幅调整参数决定。振幅衰减模式分为指数衰减及线性衰减;振幅调整参数(Release factor)决定每次的调整量。请参考图1B,2,3,在起奏衰减阶段或延音阶段时,若将琴键松开,或乐器停止演奏,则进入消逝阶段。合成时,在此阶段将声音慢慢变小,至预先设定的最小值(Amp<Ampmin)为止。其振幅衰减模式及调整方法如下:(1)指数衰减
振幅参数Amp=Amp-Amp*Release factor(2)线性衰减
振幅参数Amp=Amp-Release factor
所以,在消逝阶段,只要依据不同乐器是运用指数衰减或者是线性衰减的信息,即可依据其衰减参数合成消逝阶段的音乐。
通过上述分析,当可明白本发明可通过事先将各种音乐波形加以分析,并计算得出各种音乐波形的各阶段参数,即可快速地合成各种不同音乐。并且,由于只记录了起奏衰减阶段的波形数据、递归波形数据以及另外两阶段的振幅调整参数,因此,所耗占内存空间相当地小。
依据上述说明,本发明所提供的音乐合成方法,须事先分析乐器的音乐波形。依据上述的起奏衰减、延音及消逝阶段来计算不同乐器音乐的波形,以及其所对应的参数。接着,依据此一计算出来的参数,即可建立音乐波形数据库。此一数据库所记载的数据,即为上述各种参数与起奏衰减阶段的波形及递归波形数据。接下来,只要取出这些参数,即可合成各种乐器的音乐波形。具体的方法,请参考下面所述。
请参考图4,本发明的音乐合成方法,包括下列步骤:撷取音乐波形(步骤410),依起奏衰减、延音及消逝阶段方式分析并决定音乐波形的起奏衰减、延音、消逝阶段的参数(步骤420),建立音乐波形数据库(步骤430),依据使用者所输入的开始弹奏信息,读取音乐波形数据库中的起奏衰减、延音及消逝阶段的参数(步骤440),以及,依据起奏衰减、延音及消逝阶段的参数合成音乐(步骤450)。
以单一乐器为例,步骤410--430为音乐数据库的建立工作。音乐数据库的建立,即依据上述的参数获得为出发点。先撷取音乐波形(步骤410),接着,在步骤420中,再依据音乐波形分析其起奏衰减阶的波形数据及长度,延音阶段的递归波形数据及长度(Looping length)、振幅调整模式参数(Loopingmode)及振幅调整参数(Looping factor),消逝阶段的振幅调整模式参数(Release mode)及振幅调整参数(Release factor),以决定音乐波形的起奏衰减、延音及消逝阶段的参数。最后,在步骤430中,将这些参数加以记录,即成为乐器的音乐波形数据库,其中递归波形数据是紧接在起奏衰减波形数据之后。将不同乐器依相同的步骤来做分析,即可获得多种乐器的音乐波形数据库。
步骤440--450即为音乐合成阶段。在步骤440中,依据使用者所输入的开始弹奏信息,读取起奏衰减阶段的波形数据及长度、延音阶段的递归波形数据及长度、振幅调整模式参数与振幅调整参数及消逝阶段的振幅调整模式参数与振幅调整参数。接下来,在步骤450,即将这些数据与参数加以运算以合成为音乐。合成音乐的过程,则依上述的三个阶段来依序合成(随即拨放),此合成的音乐,与原先的音乐波形相当接近。
接下来,针对上述的音乐合成阶段再做更详细的说明。请参考图5,本发明的音乐合成方法流程图,其包括了下列步骤:初始化(步骤510),读入波形数据(步骤520),输出波形数据(步骤530),控制合成模式(步骤540),调整振幅(步骤550),控制合成结束(步骤560)。
首先,合成动作系当使用者输入开始弹奏信息时才开始。在步骤510中,初始化系设定初始化参数,包括设定:
a.合成模式(syn_mode),令合成模式为1(1.起奏衰减、2.延音及3.消逝)。
b.加载波形数据起始位置指针(Wave table)、数据长度(Wave length=起奏衰减波形数据长度+递归波形数据长度)及递归波形数据长度(LoopingLength)。
c.设定合成长度(n)为0。
d.加载初始振幅参数(Amp)及振幅调整参数(Looping factor,Releasefactor,loop mode,release mode)。
接着,在步骤520的读入波形数据步骤中,依据波形数据起始位置指针(Wave table),读入一笔波形数据s=Wave table[n],合成长度为n+1。若n>=Wave length(数据长度),则令n=n-Looping Length。
步骤530为输出波形数据,此步骤系将波形数据乘上振幅参数s=s*Amp。
接着,即控制合成模式(步骤540),若合成模式为“1”,则振幅参数Amp固定不变。在读入波形数据(步骤520)时,若n>=Wave length,则令模式为“2”。也就是,当n>=Wave length时,表示起奏衰减阶段(合成模式“1”)已经结束,必须进入下一个阶段,即延音阶段(合成模式”2”)。若合成模式为“1”或“2”,当接收到外部“停止弹奏”控制信号,则令模式为“3”。也就是,例如,外部使用者放开按键,而产生的停止弹奏信号。
接着,调整振幅(步骤550),依据合成模式及幅调整参数(Looping factor,Release factor,loop mode,release mode),而有所不同。如下所述:
a.当合成模式为“1”,即起奏及衰减阶段:振幅不调整。
b.当合成模式为“2”,即延音阶段:依据音乐波形数据库的参数而定,计有四种方法:
指数衰减(loop mode=1)
振幅参数Amp=Amp-Amp*Looping factor
线性衰减(loop mode=2)
振幅参数Amp=Amp-Looping factor
指数递增(loop mode=3)
振幅参数Amp=Amp+Amp*Looping factor
线性递增(loop mode=4)
振幅参数Amp=Amp+Looping factor
c.当合成模式为“3”,即消逝阶段:依据音乐波形数据库的参数而定,计有二种方法:
指数衰减(release mode=1)
振幅参数Amp=Amp-Amp*Release factor
线性衰减(release mode=2)
振幅参数Amp=Amp-Release factor
最后,控制合成结束(步骤560),当调整的振幅参数(Amp)小于某个默认值(Amp min)时,则令合成结束。
接下来,请参考图6,其说明了在步骤540时,控制合成模式的流程。当控制合成模式开始时,也就是,在步骤530输出起奏衰减阶段的波形后,必须立刻监控起奏衰减阶段(合成模式“1”)是否已经结束。于是,须先判断合成长度是否已到数据长度(步骤541)。如果是,则合成模式切换为延音模式(步骤543),也就是,合成模式“2”。反之,如果否,则表示仍在起奏衰减阶段(合成模式“1”),则回到步骤530继续输出。接下来,即判断是否接收停止弹奏信息(步骤544),如果没有,则持续保持延音模式(合成模式“2”)。如果收到,表示须进入消逝模式,因而,合成模式切换为消逝模式(步骤545),即合成模式“3”。
综上所述,不论任何一种乐器所产生的音乐,都可通过本发明所公开的方法来制作音乐波形数据库,进而合成为接近自然产生的音乐。
应用本发明的音乐波形的合成方法,只需记录一小段音乐波形(128种乐器音符:C4,平均每个乐器约占12kBytes),即可自动产生任意长度(节拍长短)的音乐波形,且已以C++程序语言撰写完成,并在PC上验证成功,其效果可媲美真实自然产生的音乐。
以上所述,仅为本发明其中的较佳实施例而已,并非用来限定本发明的实施范围;即凡是依本发明所作的等效变化与修饰,皆为本发明专利范围所涵盖。