-
Notifications
You must be signed in to change notification settings - Fork 0
Midi File Analysis
ReVanTis edited this page Aug 21, 2014
·
3 revisions
Example:
Full Midi File as:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 4D 54 68 64 00 00 00 06 00 01 00 03 01 E0 4D 54 MThd 郙T
00000010 72 6B 00 00 00 0F 00 FF 03 00 00 FF 51 03 07 A1 rk Q ?
00000020 20 00 FF 2F 00 4D 54 72 6B 00 00 00 3D 00 FF 03 / MTrk =
00000030 0E 54 72 61 63 6B 20 31 05 E8 94 37 54 8C 0A 00 Track 1 钄7T?
00000040 B0 65 00 00 64 02 00 06 40 00 65 00 00 64 01 00 癳 d @ e d
00000050 06 40 00 65 00 00 64 00 00 06 02 00 C0 00 00 B0 @ e d ? ?
00000060 0A 40 9D 20 09 00 00 FF 2F 00 4D 54 72 6B 00 00 @ / MTrk
00000070 00 2C 00 C0 00 00 90 3C 50 8D 40 90 3C 00 81 40 , ? <P @ < @
00000080 90 3E 50 83 30 90 3E 00 30 90 40 50 83 30 90 40 >P? > 0 @P? @
00000090 00 30 90 41 50 86 60 90 41 00 00 FF 2F 00 0 AP哷 A /
MThd:
4D 54 68 64 MThd
00 00 00 06 chunk length
00 01 midi type 01
00 03 MTrk counts=3
01 E0 ticks per beats=480
MTrk1:
4D 54 72 6B MTrk
00 00 00 0F chunk length
00 FF 03 00 meta event:Track name,length=0,value=""
00 FF 51 03 07 A1 20 meta event:set tempo,length=3,MPQN value=0x07a120=500,000,\
BPM = MICROSECONDS_PER_MINUTE / MPQN,MPQN = MICROSECONDS_PER_MINUTE / BPM \
MICROSECONDS_PER_MINUTE=60,000,000
BPM = 120;
00 FF 2F 00 meta event:MTrk end
MTrk2:
4D 54 72 6B
00 00 00 3D
00 FF 03 0E 54 72 61 63 6B 20 31 05 E8 94 37 54 8C 0A
meta event:Track name,length=0x0e,value = ^
00 B0 65 00 bank select,track 0,controler=0x65(Registered Parameter Number (MSB)),value =0;
00 64 02 con=0x64,value=0x02
00 06 40
00 65 00
00 64 01
00 06 40
00 65 00
00 64 00
00 06 02
00 C0 00 change instrument,track 0,value=0x00(grand piano)
00 B0 0A 40 con=0x0A(pan),value=0x40(64)
9D 20 09 00 3744 tick, end of ticks,09 device not defined? possible shutting down
00 FF 2F 00 meta event:MTrk end
MTrk3:
4d 54 72 6b //MTrk3
00 00 00 2c //chunk length:0x2c
00 C0 00 //track 0 use instrument:0x00(grand piano)
00 90 3c 50 //dtime=0x00, 0 play, track:0, note:3c, velocity:50
8d 40 90 3c 00 //dtime=0x8d40, 1728 play, track:0, note:3c, velocity:0
81 40 90 3e 50 //dtime=0x8140, 192 play, track:0, note:3e, velocity:50
83 30 90 3e 00 //dtime=0x8330, 432 play, track:0, note:3e, velocity:0
30 90 40 50 //dtime=0x30, 48 play, track:0, note:40, velocity:05
83 30 90 40 00 //dtime=0x8330, 432 play, track:0, note:40, velocity:0
30 90 41 50 //dtime=0x30, 48 play, track:0, note:41, velocity:50
86 60 90 41 00 //dtime=0x8660, 864 play, track:0, note:41, velocity:0
00 ff 2f 00 //dtime=0x00 0 meta event,MTrk end
dtime calculation:
//ticks per beat=480
//beats per minute=120
//ticks per second is :480*2=960
//ticks per ms is: 0.96
//which meas:1ms==1/0.96=100/96=1.041666666666667 ticks;
8d 40
10001101 01000000 =>
0000110 11000000 =>1728 == 1800 ms
81 40
10000001 01000000 =>
0000000 11000000 =>192 == 200 ms
83 30
10000011 00110000 =>
0000001 10110000 =>432 == 450ms
30
00110000 =>48 == 50ms
86 60
10000110 01100000
0000011 01100000 =>864 == 900ms
//in total:
//1728+192+432+48+432+48+864=3744
//3744*1.041666666666667=3900 ms