application notes title: em61000 midi inter code format description notes number : ap-EM61-0006C-V2 revised date : 1,feb, 2002 revised version : 2.0 apply to chips : all chip (em61001 ~ em61500) apply to software : 2.0 see also: em61000 serial V?a?f : tempo data : ????? bytes tempo ? , ?? . ?x??r melody interrupt (mi) ?rg . msr 0x00 ~ 0x07 melody prescaler data. write to ioc a for r9=0 mtc 0x01 ~0xff melody timer down counter data. write to mtc (r6) ??? 1 mi = 1/48 = (60sec / tempo) / 48 = ( 2/ fosc) * msr * mtc tempo= 120 , fosc = 4mhz mi = 60 /120 /48 = 10.42 ms = (2 /4000000) * msr * mtc x msr = 128 (0x06) , mtc= 10.4/0.064 = 162.5 P 163 (0xa3) note data : bit 7 ?? ? ?a a ?N . contral code : bit 7 =1 r?a , N? . instrument define : melody channel instrumet & volume define. 0x80 instrument setting Rea inst 0x00 ~ 0x7f inst code vol 0x00 ~ 0x7f volume volume change : melody channel volume redefine. 0x81 volume setting Rea vol 0x00 ~ 0x7f volume stop code : melody channel stop play. 0xff stop code Rea
note code : bit 7 =0 ra . ??N? . silence note : 0x7f silence note Rea f1 0xfc fixed data f2 0xff fixed data beat L beat 0 L < 2 5 / 8 ?r?a . normal note : twf 0x00 ~0x7e twf type code f1 ?? ( ) f2 ?? ( ) beat L beat 0 L < 2 5 / 8 ?r?a . twf : ????? wave form table (twf) . ??? 0x00 ~0x02 or 0x03, pl?? 0x00 ~0x07 . f2, f1 : l?? = ?? . f = f 0 *( (n -n0) / 12 2) f 0 = .twf ??l n 0 = .twf ?? ex. c4=60, c5= 72 n = ? ex. d4=62 ex. .twf ??l = 16842hz, ? = c4(60) d4, l? f = 16842 *( (62 -60) / 12 2) = 16842 *( 2 / 12 2) = 16842 * 1.12246? = 18904.5 d4 l f = 18904.5 hz c5 , l? f = 16842 *( (72 -60) / 12 2) = 16842 * 2 = 33684 c5 l f = 33684 hz fosc l 4 * (f2.f1) = f fosc = Ul ex. fosc = 4mhz, ? , d4 f2. f1 ?? 18904.5 hz = 4000000/ 4 / (f2.f1) f2.f1 = 4000000/4/18904.5 = 52.89745? f2 = 52 (0x34) f1 = 0.89745 * 256 = 229.75 P 230 (0xe6) ioc b ? 6 bits , bit7 ~ bit2. ??? 0xe4 (228) 0xe8 (232).
beat 0 ( beat 1 ) : ?? melody interrupt (mi) = ??L . ? ( ? ) 48 mi, 3 mi . L 1/16 ( ?? ) beat ? bit 7 =0 r ? L < 127 mi , 2 bytes beat 0x03 ~0x7e 3 ~ 126 mi, 1/16 ~ 2 5 / 8 beat ? bit 7 =1 r ? L > 127 mi , 2 bytes. beat 1 0x80 ~0xff L? bit14~bit 8 ( ? ) beat 0 0x00 ~0xff L? bit7~bit 0 ( ? ) LL_ 32767 (0x7fff) mi , s 682 5 / 8 . example : code : 0x06 0xa3 tempo =120 0xff ch1 off 0xff ch2 off 0xff ch3 off 0xff ch4 off 0xff ch5 off 0xff ch6 off 0xff ch7 off 0x80 0x06 0x64 inst =06 , volume =100 0x01 0x40 0x4f 0x48 g4, 3/2 0x01 0x9c 0x46 0x18 a4, 1/2 0x01 0x40 0x4f 0x30 g4, 1
0x00 0x20 0x2f 0x80 0x90 e4, 3 0x01 0x40 0x4f 0x48 g4, 3/2 0x01 0x9c 0x46 0x18 a4, 1/2 0x01 0x40 0x4f 0x30 g4, 1 0x00 0x20 0x2f 0x80 0x90 e4, 3 0x01 0xe4 0x34 0x60 d5, 2 0x01 0xe4 0x34 0x30 d5, 1 0x01 0xe8 0x3e 0x80 0x90 b4, 3 0x01 0x60 0x3b 0x60 c5, 2 0x01 0x60 0x3b 0x30 c5, 1 0x01 0x40 0x4f 0x80 0x90 g4, 3 0x01 0x9c 0x46 0x60 a4, 2 0x01 0x9c 0x46 0x30 a4, 1 0x01 0x60 0x3b 0x48 c5, 3/2 0x01 0xe8 0x3e 0x18 b4, 1/2 0x01 0x9c 0x46 0x30 a4, 1 0x01 0x40 0x4f 0x48 g4, 3/2 0x01 0x9c 0x46 0x18 a4, 1/2 0x01 0x40 0x4f 0x30 g4, 1 0x00 0x20 0x2f 0x80 0x90 e4, 3 0x01 0x9c 0x46 0x60 a4, 2 0x01 0x9c 0x46 0x30 a4, 1 0x01 0x60 0x3b 0x48 c5, 3/2 0x01 0xe8 0x3e 0x18 b4, 1/2 0x01 0x9c 0x46 0x30 a4, 1 0x01 0x40 0x4f 0x48 g4, 3/2 0x01 0x9c 0x46 0x18 a4, 1/2 0x01 0x40 0x4f 0x30 g4, 1 0x00 0x20 0x2f 0x80 0x90 e4, 3 0x01 0xe4 0x34 0x60 d5, 2 0x01 0xe4 0x34 0x30 d5, 1 0x01 0x7c 0x2c 0x30 f5, 1 0x01 0xe4 0x34 0x30 d5, 1 0x01 0xe8 0x3e 0x30 b4, 1 0x01 0x60 0x3b 0x80 0x90 c5, 3 0x01 0x20 0x2f 0x80 0x90 e5, 3 0x00 0x60 0x3b 0x30 c5, 1 0x01 0x40 0x4f 0x30 g4, 1 0x00 0x20 0x2f 0x30 e4, 1 0x01 0x40 0x4f 0x48 g4, 3/2 0x00 0x7c 0x2c 0x18 f4, 1/2 0x00 0xe4 0x34 0x30 d4, 1 0x00 0x60 0x3b 0x80 0x90 c4, 3 0xff ch8 off
|