播放时间?还是MIDI文件有多长?

解决方案 »

  1.   

    你肯定会用一个库去播放或处理midi,而那个库应该会提供这类函数。
      

  2.   

    midi文件头里边有信息应该是播放速度计算出来的。
      

  3.   

    对 midi的时间是完全用计算的
      

  4.   

    如果不调用库,自己对midi进行解析,计算时间的算法应该是怎样的,有没有公开的代码啊
      

  5.   

    mid文件有个文件头14个字节,轨道头8个字节,还会有结尾无头的不知道什么东西就像一串A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A就结束了。
    文件头:开始4个字节都是MThd在后面是000006在后面就是轨道数目和播放速度四分音符的速度应该是毫秒。
    轨道头,前4个字节是字符后四个字节是当前轨道的长度(字节不包括头)。
    文件就像如下:
    DD DD DD DD 00 00 00 06 DD DD FF FF SS SS 
    XX XX XX XX 00 00 00 1A 00 FF 21 01 00 00 FF 03 0D 41 6C 74 65 72 6E 61 74 69 76 65 20 33 00 FF 2F 00 
    XX XX XX XX 00 00 00 00 Midi命令....
    XX XX XX XX 00 00 00 00 Midi命令....
    ...
    ...
    前天刚研究这些,目前正在学习Midi命令.谁有好的midi命令拿来让大家学习一下.
    上面是一个文件的例子第一个轨道是小白杨第10个轨道的数据1A就是26个字节的意思。
    00 00 00 1A表示当前轨道大小是26字节而不是1703936如果你用Long数据类型读出来就错了。
    midi文件中的整形数值最低位在后面很符合书面文字就是&H0000001A=26