|

楼主 |
发表于 2020-3-23 22:05:12
|
显示全部楼层
生成的歌曲音调查找表是可直接复制到程序中的16进制数定义,如图所示:
为了方便观察,只录入了2个音符,原始乐谱中的两个音符的记录如图:
转换后的第一个音符的16进制数据是:0x0403030B,0x0F0032B6,录入的记录字符是6-03413。转换后的一个音符对应2个32-bit的字数据,其排列方式小端模式。字的每个位域定义如下所阐述:
如上图所示,64-bit的音调记录数据包含6个长度不一的位域,其中,0-15位是正弦表的步进值,决定了该音调的频率;16-23位是幅度表编号,决定了该音调不同的声效;24-31位是幅度乘子,决定了该音调的响度;32-55位是音调持续时间,用总采样数表示;第58-63位是音色表编号,决定该音调的音色。
56-57位重点说明如下:56位是切换方式,该位置位则使能硬切换,由上一个音调切换到当前音调时,所有的音调参数都会被更新到当前音调控制字的预设参数。若该位清零则使能软切换,切换到当前音调时,只有正弦波表地址偏移步进值和音符持续时间会被更新到当前音调控制字的预设参数。这个机制使得两个音调听起来连贯,是连音效果必须设置的关键位;57位是音符间淡出效果禁用使能位,若该位置位则当前音调的淡出效果被禁止,反之。该位也是连音处理的必备关键位。
对于普通的单个音符,输入的音符记录最后一个字符(切换方式)必须是1,转换成音符控制字后[57,56]=01,即当前音调硬切换且使能淡出效果;对于连音,第一个音符对应的音符记录最后一个字符(切换方式)必须是3,转换成音调控制字后[57,56]=11,即当前音调硬切换且除能淡出效果,使得当前音调与下一个音调能够连贯。处于中间的所有音符对应的音符记录最后一个字符(切换方式)必须是2,即当前音调软切换且除能淡出效果,使得当前音调能与前后音调连贯。最后一个音符对应的音符记录最后一个字符(切换方式)必须是0,转换成音调控制字后[57,56]=00,即当前音调软切换且使能淡出效果,使得当前音调能与上一个音调连贯且平滑结束当前的连音组合。除此之外的其它任何匹配方式将导致切换噪声!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|