主题:  哪位朋友知道MIDI的文件头结构?

zjlzh

职务:普通成员
等级:1
金币:0.0
发贴:87
#12002/11/29 12:28:16
我想了解MIDI文件的头结构,好用二进制方式打开,取出其中的信息如标题、作者、每个通道的乐器名(或编号)等等,可以不要音符信息,在网页上显示,哪位能帮我?谢谢!

编辑历史:[这消息被zjlzh编辑过(编辑时间2002-11-29 12:37:12)]


我爱你

职务:普通成员
等级:2
金币:1.0
发贴:646
#22002/12/1 11:03:04
状态位 数据位
第一字节代码
(二进制)=(十六进制)=(十进制) 第一字节代码含义 第一字节
数据含义 第二字节
数据含义
通道号 功能
10000000=80=128 Channel 1 note off 以下均为
音符代码
(0-127)
请参见
MIDI音符代码表 以下均为
力度代码
(0-127)
10000001=81=129 Channel 2 note off
10000010=82=130 Channel 3 note off
10000011=83=131 Channel 4 note off
10000100=84=132 Channel 5 note off
10000101=85=133 Channel 6 note off
10000110=86=134 Channel 7 note off
10000111=87=135 Channel 8 note off
10001000=88=136 Channel 9 note off
10001001=89=137 Channel 10 note off
10001010=8A=138 Channel 11 note off
10001011=8B=139 Channel 12 note off
10001100=8C=140 Channel 13 note off
10001101=8D=141 Channel 14 note off
10001110=8E=142 Channel 15 note off
10001111=8F=143 Channel 16 note off
10010000=90=144 Channel 1 note on
10010001=91=145 Channel 2 note on
10010010=92=146 Channel 3 note on
10010011=93=147 Channel 4 note on
10010100=94=148 Channel 5 note on
10010101=95=149 Channel 6 note on
10010110=96=150 Channel 7 note on
10010111=97=151 Channel 8 note on
10011000=98=152 Channel 9 note on
10011001=99=153 Channel 10 note on
10011010=9A=154 Channel 11 note on
10011011=9B=155 Channel 12 note on
10011100=9C=156 Channel 13 note on
10011101=9D=157 Channel 14 note on
10011110=9E=158 Channel 15 note on
10011111=9F=159 Channel 16 note on
10100000=A0=160 Channel 1 polyphonic aftertouch 触后量代码
(0-127)
10100001=A1=161 Channel 2 polyphonic aftertouch
10100010=A2=162 Channel 3 polyphonic aftertouch
10100011=A3=163 Channel 4 polyphonic aftertouch
10100100=A4=164 Channel 5 polyphonic aftertouch
10100101=A5=165 Channel 6 polyphonic aftertouch
10100110=A6=166 Channel 7 polyphonic aftertouch
10100111=A7=167 Channel 8 polyphonic aftertouch
10101000=A8=168 Channel 9 polyphonic aftertouch
10101001=A9=169 Channel 10 polyphonic aftertouch
10101010=AA=170 Channel 11 polyphonic aftertouch
10101011=AB=171 Channel 12 polyphonic aftertouch
10101100=AC=172 Channel 13 polyphonic aftertouch
10101101=AD=173 Channel 14 polyphonic aftertouch
10101110=AE=174 Channel 15 polyphonic aftertouch
10101111=AF=175 Channel 16 polyphonic aftertouch
10110000=B0=176 Channel 1 control mode change 详见
MIDI信息
使用介绍
详表
10110001=B1=177 Channel 2 control mode change
10110010=B2=178 Channel 3 control mode change
10110011=B3=179 Channel 4 control mode change
10110100=B4=180 Channel 5 control mode change
10110101=B5=181 Channel 6 control mode change
10110110=B6=182 Channel 7 control mode change
10110111=B7=183 Channel 8 control mode change
10111000=B8=184 Channel 9 control mode change
10111001=B9=185 Channel 10 control mode change
10111010=BA=186 Channel 11 control mode change
10111011=BB=187 Channel 12 control mode change
10111100=BC=188 Channel 13 control mode change
10111101=BD=189 Channel 14 control mode change
10111110=BE=190 Channel 15 control mode change
10111111=BF=191 Channel 16 control mode change
11000000=C0=192 Channel 1 program change 程序代码
(0-127) 无
11000001=C1=193 Channel 2 program change
11000010=C2=194 Channel 3 program change
11000011=C3=195 Channel 4 program change
11000100=C4=196 Channel 5 program change
11000101=C5=197 Channel 6 program change
11000110=C6=198 Channel 7 program change
11000111=C7=199 Channel 8 program change
11001000=C8=200 Channel 9 program change
11001001=C9=201 Channel 10 program change
11001010=CA=202 Channel 11 program change
11001011=CB=203 Channel 12 program change
11001100=CC=204 Channel 13 program change
11001101=CD=205 Channel 14 program change
11001110=CE=206 Channel 15 program change
11001111=CF=207 Channel 16 program change
11010000=D0=208 Channel 1 channal aftertouch 触后量代码
(0-127) 无
11010001=D1=209 Channel 2 channal aftertouch
11010010=D2=210 Channel 3 channal aftertouch
11010011=D3=211 Channel 4 channal aftertouch
11010100=D4=212 Channel 5 channal aftertouch
11010101=D5=213 Channel 6 channal aftertouch
11010110=D6=214 Channel 7 channal aftertouch
11010111=D7=215 Channel 8 channal aftertouch
11011000=D8=216 Channel 9 channal aftertouch
11011001=D9=217 Channel 10 channal aftertouch
11011010=DA=218 Channel 11 channal aftertouch
11011011=DB=219 Channel 12 channal aftertouch
11011100=DC=220 Channel 13 channal aftertouch
11011101=DD=221 Channel 14 channal aftertouch
11011110=DE=222 Channel 15 channal aftertouch
11011111=DF=223 Channel 16 channal aftertouch
11100000=E0=224 Channel 1 pitch wheel control 音调调节轮
控制数据
低位字节
(0-127) 音调调节轮
控制数据
高位字节
(0-127)
11100001=E1=225 Channel 2 pitch wheel control
11100010=E2=226 Channel 3 pitch wheel control
11100011=E3=227 Channel 4 pitch wheel control
11100100=E4=228 Channel 5 pitch wheel control
11100101=E5=229 Channel 6 pitch wheel control
11100110=E6=230 Channel 7 pitch wheel control
11100111=E7=231 Channel 8 pitch wheel control
11101000=E8=232 Channel 9 pitch wheel control
11101001=E9=233 Channel 10 pitch wheel control
11101010=EA=234 Channel 11 pitch wheel control
11101011=EB=235 Channel 12 pitch wheel control
11101100=EC=236 Channel 13 pitch wheel control
11101101=ED=237 Channel 14 pitch wheel control
11101110=EE=238 Channel 15 pitch wheel control
11101111=EF=239 Channel 16 pitch wheel control
以下信息为系统信息,无指定的通道
11110000=F0=240 system exclusive 不定,由实际情况决定  
11110001=F1=241 MIDI time code quarter frame 详见
MIDI信息详表  
11110010=F2=242 song position pointer 低位字节 高位字节
11110011=F3=243 song select(song#) (0-127)  
11110100=F4=244 undifined 保留  
11110101=F5=245 undifined 保留  
11110110=F6=246 tune request 无  
11110111=F7=247 end of sysex(EOX) 无  
11111000=F8=248 timing clock 无  
11111001=F9=249 undifined 无  
11111010=FA=250 start 无  
11111011=FB=251 continue 无  
11111100=FC=252 stop 无  
11111101=FD=253 undifined 保留  
11111110=FE=254 active sensing 无  
11111111=FF=255 system reset 无  
请您在说详细一点 非编区有人在卖书你可以去看看

编辑历史:[这消息被pyaus编辑过(编辑时间2002-12-01 11:19:07)]


zjlzh

职务:普通成员
等级:1
金币:0.0
发贴:87
#32002/12/1 12:10:01
感谢pyaus提供这么详细的资料。
其实我最主要的需要读出每个通道使用的音色(乐器)编号就行了,其它信息可以不要。帮我这方面介绍详细点好吗?用Delphi或其它语言写一ActiveX控件嵌入网页能行吗?怎么做?再次麻烦您了!



我爱你

职务:普通成员
等级:2
金币:1.0
发贴:646
#42002/12/1 18:46:55
可以的
你是不是想在网中插入声? 直接用DW插ActiveX控件 双击控件打开你想要的MIDI音乐 就可以了


去这个网站或许可以找到你要的

www.midifan.com



zjlzh

职务:普通成员
等级:1
金币:0.0
发贴:87
#52002/12/1 21:54:18
pyaus:真不好意思!我说的不清楚。播放midi音乐我知道怎么做,现在是想读出midi文件各通道的乐器信息,在网页中显示出来,供讲解用。举例:
test.mid
曲名:蓝色的多瑙河
速度:96拍/分钟
通道1:钢琴
通道2:弦乐
通道3:小鼓
......
我不想预先把各midi文件这些信息存在数据库里,那样工作量太大。只想在播放前临时才取出来显示。
midi软件一般都具备这功能,但在网页中不能运行,所以才提出这个问题。
看看您能否再帮我出出主意?



我爱你

职务:普通成员
等级:2
金币:1.0
发贴:646
#62002/12/1 23:19:59
办法是有的
real pyayer软件上 就有带有想关的代码
Mid的做法 你可以去代码区问问看吧



zjlzh

职务:普通成员
等级:1
金币:0.0
发贴:87
#72002/12/1 23:38:54
谢谢您!