Skip to content
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

Clone this wiki locally