[分享+讨论]wqx mid文件结构+奏曲时间
先来介绍一下文件结构
说明一下:这份文件结构并非我研究出来的,我只是把原文的语言简洁化,同时也修正了一个错误的地方。
[定义]
第一字节
??(1-1F) 整曲播放速度(越大速度越快)
/////////////
30 ??(01-1F) ??为 鼓器音轨8的音量
28 ??(00-13) ??为 鼓器音轨8的音色
31 ??(01-1F) ??为 鼓器音轨9的音量
29 ??(00-13) ??为 鼓器音轨9的音色
32 ??(01-1F) ??为 乐器音轨A的音量
2A ??(00-22) ??为 乐器音轨A的音色
33 ??(01-1F) ??为 乐器音轨B的音量
2B ??(00-22) ??为 乐器音轨B的音色
34 ??(01-1F) ??为 乐器音轨C的音量
2C ??(00-22) ??为 乐器音轨C的音色
35 ??(01-1F) ??为 乐器音轨D的音量
2D ??(00-22) ??为 乐器音轨D的音色
20 ??(00-04) ??为 鼓器音轨8的音高
21 ??(00-04) ??为 鼓器音轨9的音高
22 ??(00-04) ??为 乐器音轨A的音高
23 ??(00-04) ??为 乐器音轨B的音高
24 ??(00-04) ??为 乐器音轨C的音高
25 ??(00-04) ??为 乐器音轨D的音高
*音高值为4时升二音
3时升一音
2时为平音
1时降一音
0时降二音
[演奏](鼓音+乐器音+音长)
81 91 A? B? C? D? ??
81 为击打一下 鼓器音轨8 的鼓器
91 为击打一下 鼓器音轨9 的鼓器
A?(0-C) 为设定 乐器音轨A 的音阶为?
B?(0-C) 为设定 乐器音轨B 的音阶为?
C?(0-C) 为设定 乐器音轨C 的音阶为?
D?(0-C) 为设定 乐器音轨D 的音阶为?
?? 为延续音长度(范围不清,一般为2的n次方1,2,4,8)
对应的音阶

最后一字节
3F 结束音乐
\\\\\
以一段例子说明
08 30 0A 28 04 31 0D 29 07 32 05 2A 15 33 07 2B 02 22 02 23 02
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
81 A1 B3 08 A5 10 22 03 A3 08 33 02 B1 08 A0 04 - - - -3F
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
(数字对应画线部分)
01 设定整曲播放速度为08
0203 设定鼓器音轨8的音量为0A
0405 设定鼓器音轨8的音色为04
0607 设定鼓器音轨9的音量为0D
0809 设定鼓器音轨9的音色为07
1011 设定乐器音轨A的音量为05
1213 设定乐器音轨A的音色为15
1415 设定乐器音轨B的音量为07
1617 设定乐器音轨B的音色为02
1819 设定乐器音轨A的音高为平音
2021 设定乐器音轨B的音高为平音
22 击打一下 鼓器音轨8 的鼓器
2324 乐器音轨A奏出平音的do乐器音轨2奏出平音的re
25 前面的两个奏音延续08个音长
26 乐器音轨A奏出平音的mi
27 奏音延续10(16进制)个音长
2829 设定乐器音轨A的音高为高一音
3031 乐器音轨A奏出高一音的re(2上加一点),奏音延续08个音长
3233 设定乐器音轨B的音量为02
3435 乐器音轨B奏do,奏音延续08个音长
3637 乐器音轨A停止发音,延续04个音长(如果不停音或换音,将会继续奏下去)
[用在可延续音的乐器(像笛子之类的,吹着气就不断音,为可延续音的乐器;
像钢琴之类按住一个键,音只能维持一阵,为不可延续音的乐器)这里的1213中设定的15号为可延续音的乐器]
38 各式各样的音律交织在一起,形成动听的乐曲。。。。(^-^)
39 结束音乐
(说明:并没有完全破解,有少许的几处地方可能不能用这种结构解释)
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[glow=255,red,2]下面部分才是本贴的重点!!!!!!!![/glow]
以这份文件结构是可以奏出音了,但是演奏时会突然中断。。。。
[讨论]如何才能长时间奏乐!!!
我正在做一个曲谱编辑软件(lava)(70%的完成度,不公开),拿了《暗香》做测试,结果发现了这个问题。。。

现在Emax有几款乐谱编辑软件
http://www2.emsky.net/bbs/dispbbs.asp?boardID=20&ID=9576&page=3
音乐精灵
http://www2.emsky.net/bbs/dispbbs.asp?BoardID=20&ID=8235&replyID=&skin=1
http://www2.emsky.net/bbs/dispbbs.asp?BoardID=20&ID=5641&replyID=&skin=1
还有曲
http://www2.emsky.net/bbs/dispbbs.asp?BoardID=20&ID=11143&replyID=&skin=1
精忠报国
大家可以用音乐精灵做一下测试
主音音色用22
速度用2
其他随便
然后编辑的时候就打在主音打123456712345671234567(三遍21个音符)
跳出转化到21
到|和弦音乐|打开,发现奏到第三遍的re就断掉了!!!!(压缩包里有)
我做的那个软件转换得曲子到第四遍的xi就断了(压缩包里有)!!
还有那首 暗香 奏到一半就断了(压缩包里有)
同样的如果用pacmgr改一改精忠报国(压缩包里有)的第一字节改为2,也是没奏完就断掉了..
发现了一个规律就是 如果第一字节(速度) 设得越大能播放的音符就越多,但总有会断的时候!!!(可怜了 暗香 慢歌)
可是官方的曲子是例外...有一首歌(歌曲44)我把它的第一字节改为2后奇迹般的无中断的播放了3min(压缩包里有)
压缩包里还有其他的50首mid
我对此研究了很久很久....没有结果!!!(始终没办法让他不断)
不知有谁能解这个迷????????????????????????
顺便说一声,我想到分辩音色的办法了....
如果没有解决上面那个问题,我的软件也不想开发下去了....
还要跟音乐精灵的作者说一声:希望能把没有用的在文件末端的垃圾信息删掉!!!
跟murmur说:但愿你的七里香能顺利放完...
[此贴子已经被作者于2005-10-17 22:54:47编辑过]
|