一种动态调整midi和弦数的音乐合成方法

文档序号:81770阅读:562来源:国知局
专利名称:一种动态调整midi和弦数的音乐合成方法
技术领域
本发明涉及在每秒百万指令(简称MIPS)比较紧张的系统中(如移动通信终端、嵌入式个人消费产品等)实现高和弦数音乐设备数字接口(简称MIDI)的解码,特别是一种动态调整MIDI和弦数的音乐合成方法。
背景技术
由于MIDI的解码对MIPS要求极高,尤其在比较大的通信系统中,经常会面临与其他模块争抢资源的情况,从而导致MIDI播放不顺畅,发生断续、音质下降等现象。通常的硬件解码器有独立的CPU,可以保证MIDI始终处于最高优先级,并且可以通过硬件上的一些中断机制动态屏蔽部分锦上添花的音效,以维持正常的解码和播放速率。而在成本为关键考量因素的软解码系统中,我们就不得不考虑一些其他的办法,来寻找音质和解码速度上的平衡。

发明内容本发明的目的是提供一种动态调整MIDI和弦数的音乐合成方法,主要解决现有MIDI软解码系统的音质和解码速度上的平衡问题,最大限度的实现高和弦高速率的MIDI解码。
为解决上述技术问题,本发明是这样实现的一种动态调整MIDI和弦数的音乐合成方法,其特征在于在MIDI解码器、音频控制器、数据缓冲器之间构建了一套动态反馈机制,通过判断data_in与data_out之间的缓冲数据量决定是否进行PolyNumber平衡算法的动态调整,其工作过程是这样的解码器解码得到的数据按照一定的数据包大小放入数据缓冲器,同时,data_in数据指针加1,音频控制器每播放完一组数据后就会再从数据缓冲器中提取数据,每提取一包,data_out加1;当(data_in-data_out)的值小于某一阀值时,系统就会发送一个消息通知MIDI解码器启动PolyNumber平衡算法,将PolyNumber下降至安全范围内,并继续解码;待解码速度高于播放速度,即DataBuffer的增长速度大于缩减速度时,(data_in-data_out)的值会越来越大,直至大于另一较高的阀值,系统又会发送另一个消息,通知MIDI解码器将PolyNumber恢复,以进行全和弦高音质的解码。
所述的动态调整MIDI和弦数的音乐合成方法,其特征在于在进行PolyNumber的平衡计算时,根据当前各个Poly的音量由大到小进行保留的。
所述的动态调整MIDI和弦数的音乐合成方法,其特征在于设定多个PolyNumber平衡计算的阀值,根据不同的Buffer使用量进行多级别的Poly调整。
藉由上述技术方案,本发明具有的技术效果是
1、通过本发明方法,首先保证了MIDI播放的顺畅进行,同时,在进行PolyNumber的平衡计算时,我们的计算依据是根据当前各个Poly的音量由大到小进行保留的,因此,就可以最大限度地保留主旋律,保证音乐在听觉上的连贯性和完整性。
2、本发明方法可以完全由软件实现,节省了硬件上的成本;而在软件资源的需求上,由于平衡低点(LowPoint)、平衡高点(HighPoint)、额定和弦数等参数完全可以根据实际系统的情况进行客户化配置,从而使得整个方案在应用上非常灵活,适应能力极强。
图1是使用本发明方法的系统示意图。
具体实施方式本发明的主要设计依据是MIDI乐曲和弦分布的不平衡性和MIDI解码器额定和弦数的可控制性。前者是指每一首MIDI乐曲的和弦分布都是不均衡的,有时高,有时低,和弦越高,解码速度相对就越慢,但偶尔的高和弦并不会影响整体的播放速度;MIDI解码器的额定和弦数是指在MIDI解码中所能支持的最高和弦数,超过此值的和弦都将被略过,不进行解码。所谓额定和弦可控制,就是说可以根据需要设定MIDI解码器的最高和弦数。
如图1所示本发明在MIDI解码器(MIDI Decoder)、音频控制器(Voiceband)、数据缓冲器(DataBuffer)之间构建了一套动态反馈(Feedback)机制,通过判断data_in与data_out之间的缓冲数据量决定是否进行PolyNumber平衡算法的动态调整,以及如何调整。系统工作过程是这样的解码器解码得到的数据按照一定的数据包大小放入DataBuffer,同时,data_in数据指针加1。Voiceband每播放完一组数据后就会再从DataBuffer中提取数据,每提取一包,data_out加1。当(data_in-data_out)的值小于某一阀值(设为LowPoint)时,系统就会发送一个消息通知Decoder启动PolyNumber平衡算法,将PolyNumber下降至安全范围内,并继续解码。待解码速度高于播放速度,即DataBuffer的增长速度大于缩减速度时,(data_in-data_out)的值会越来越大,直至大于另一较高的阀值(设为HighPoint),系统又会发送另一个消息,通知Decoder将PolyNumber恢复,以进行全和弦高音质的解码。
通过该方法,首先保证了MIDI播放的顺畅进行,同时,在进行PolyNumber的平衡计算时,我们的计算依据是根据当前各个Poly的音量由大到小进行保留的,因此,就可以最大限度地保留主旋律,保证音乐在听觉上的连贯性和完整性。
该发明可以完全由软件实现,节省了硬件上的成本;而在软件资源的需求上,由于平衡低点(LowPoint)、平衡高点(HighPoint)、额定和弦数等参数完全可以根据实际系统的情况进行客户化配置,从而使得整个方案在应用上非常灵活,适应能力极强。
根据实际系统的资源空闲情况,本发明还可以存在多种变化。比方说,可以设定多个PolyNumber平衡计算的阀值,根据不同的Buffer使用量进行多级别的Poly调整,以实现更加平稳的过渡;或者,除了进行PolyNumber的调整外,还可以对各种音效的处理进行开关。在系统资源比较空闲时,增加一些音效,以使音乐的表现力更趋完美,而资源紧张时,则可以把这些音效有选择性地关闭,节约有限的资源进行最必要的计算,等等。
综上所述仅为本发明的较佳实施例而已,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应为本发明的技术范畴。
权利要求
1.一种动态调整MIDI和弦数的音乐合成方法,其特征在于在MIDI解码器、音频控制器、数据缓冲器之间构建了一套动态反馈机制,通过判断data_in与data_out之间的缓冲数据量决定是否进行PolyNumber平衡算法的动态调整,其工作过程是这样的解码器解码得到的数据按照一定的数据包大小放入数据缓冲器,同时,data_in数据指针加1,音频控制器每播放完一组数据后就会再从数据缓冲器中提取数据,每提取一包,data_out加1;当(data_in-data_out)的值小于某一阀值时,系统就会发送一个消息通知MIDI解码器启动PolyNumber平衡算法,将PolyNumber下降至安全范围内,并继续解码;待解码速度高于播放速度,即DataBuffer的增长速度大于缩减速度时,(data_in-data_out)的值会越来越大,直至大于另一较高的阀值,系统又会发送另一个消息,通知MIDI解码器将PolyNumber恢复,以进行全和弦高音质的解码。
2.根据权利要求
1所述的动态调整MIDI和弦数的音乐合成方法,其特征在于在进行PolyNumber的平衡计算时,根据当前各个Poly的音量由大到小进行保留的。
3.根据权利要求
1或2所述的动态调整MIDI和弦数的音乐合成方法,其特征在于设定多个PolyNumber平衡计算的阀值,根据不同的Buffer使用量进行多级别的Poly调整。
专利摘要
一种动态调整MIDI和弦数的音乐合成方法,其特征在于在MIDI解码器、音频控制器、数据缓冲器之间构建了一套动态反馈机制,通过判断data_in与data_out之间的缓冲数据量决定是否进行PolyNumber的动态调整,以及如何调整。本发明主要解决现有MIDI软解码系统的音质和解码速度上的平衡问题,最大限度的实现高和弦高速率的MIDI解码。
文档编号G10H7/00GK1991973SQ200510112245
公开日2007年7月4日 申请日期2005年12月29日
发明者王骞, 刘守华 申请人:展讯通信(上海)有限公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1