~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SMAF解析メモ集 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ この解析書は携帯電話に使われているYAMAHA/MA-2 というFM音源上で扱われるサウンドフォーマット "SMAF" の音色定義部分の解析メモです。 ソフトウェア開発のプログラマーの皆さんは 煮るなり焼くなり自由にお役立て下さい♪o(^-^)o [参考]: KonDoHさんのホームページ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FQ: エフェクト周波数 DR: ディケイレート FB: フィードバック AR: アタックレート AL: アルゴリズム SL: サスティーンレベル ML: マルチプル TL: トータルレベル EN: エンベロープ KL: キースケールレベル SU: サスティーン VI: ビブラート KR: キースケールレート AM: AM変調 RR: リリースレート WF: 波形選択 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (1) [FQ FB AL] = [xx xxx xxx] [FQ] 1.4Hz: 00 6.1Hz: 10 4.8Hz: 01 7.2Hz: 11 [FB] 0: 000 4: 100 1: 001 5: 101 2: 010 6: 110 3: 011 7: 111 [AL] 1: 000 2: 001 例:(FQ, FB, AL) = (7.2Hz, 4, 2)なら [11 100 001] = [ 1110 0001 ] = [ \0xE1 ] --------------------------------- (2) [00000001] = [ 01 ] (?) --------------------------------- (3) [ML VI EN SU KR] = [xxxx x x x x] [ML] 0.5: 0000 8 : 1000 1 : 0001 9 : 1001 2 : 0010 10 : 1010 3 : 0011 11 : 1011 4 : 0100 12 : 1100 5 : 0101 13 : 1101 6 : 0110 14 : 1110 7 : 0111 15 : 1111 [VI] OFF: 0 ON : 1 (OFF以外は全て1) [EN] [SU] [KR] 減衰音: 0 OFF : 0 1: 0 持続音: 1 ON : 1 2: 1 例:(ML, VI, EN, SU, KR) = (11, 2, 持, OFF, 1)なら [ 1011 1 1 0 0 ] = [ 1011 1100 ] = [ \0xBC ] --------------------------------- (4) [RR DR] = [xxxx xxxx] [RR] [DR] 1 : 1111 1 : 1111 2 : 1110 2 : 1110 3 : 1101 3 : 1101 4 : 1100 4 : 1100 5 : 1011 5 : 1011 6 : 1010 6 : 1010 7 : 1001 7 : 1001 8 : 1000 8 : 1000 9 : 0111 9 : 0111 10: 0110 10: 0110 11: 0101 11: 0101 12: 0100 12: 0100 13: 0011 13: 0011 14: 0010 14: 0010 15: 0001 15: 0001 16: 0000 16: 0000 例:(RR, DR) = (13, 6)なら [0011 1010] = [ \0x3A ] --------------------------------- (5) [AR SL] = [xxxx xxxx] [AR] [SL] 0 : 1111 1 : 1111 1 : 1110 2 : 1110 2 : 1101 3 : 1101 3 : 1100 4 : 1100 4 : 1011 5 : 1011 5 : 1010 6 : 1010 6 : 1001 7 : 1001 7 : 1000 8 : 1000 8 : 0111 9 : 0111 9 : 0110 10: 0110 10: 0101 11: 0101 11: 0100 12: 0100 12: 0011 13: 0011 13: 0010 14: 0010 14: 0001 15: 0001 15: 0000 16: 0000 --------------------------------------- (6) [TL KL] = [xxxxxx xx] [TL] [64〜49] [48〜33] [32〜17] [16〜01] 000000 010000 100000 110000 000001 010001 100001 110001 000010 010010 100010 110010 000011 010011 100011 110011 000100 010100 100100 110100 000101 010101 100101 110101 000110 010110 100110 110110 000111 010111 100111 110111 001000 011000 101000 111000 001001 011001 101001 111001 001010 011010 101010 111010 001011 011011 101011 111011 001100 011100 101100 111100 001101 011101 101101 111101 001110 011110 101110 111110 001111 011111 101111 111111 [KL] 0: 00 1: 10 2: 01 3: 11 例:(TL, KL) = (36, 2)なら [ 011100 01 ] = [ 0111 0001 ] = [ \0x71 ] --------------------------------------- (7) [VI AM AM WF] = [ xx xx x xxx] [VI] 1: 00 3: 10 2: 01 4: 11 [AM] 1: 00 3: 10 2: 01 4: 11 [AM] 0:OFF 1:ON [WF] 1: 000 5: 100 2: 001 6: 101 3: 010 7: 110 4: 011 8: 111 --------------------------------------- [MTR] MTRの次のビットはtr.num 00:0 01:1 4D 4D 4D 44 [00 00 00 A3] 43 4E 54 49 [00 00 00 0F] 01 11 00 00 00 4D 32 3A 01 2C 53 54 3A 00 2C 4D 54 52 01 00 00 00 82 00 00 02 02 00 00 4D 74 73 75 00 00 00 15 FF F0 12 43 03 00 00 00 60 01 14 52 F4 3A A0 14 62 F7 00 A0 F7 4D 74 73 71 00 00 00 57 00 00 31 00 00 00 30 00 00 FF F0 06 43 03 91 18 00 F7 00 00 37 57 00 00 32 00 00 00 72 00 00 00 B2 00 00 00 F2 00 00 1C 6E 73 21 6E 73 22 6E 73 23 6F 73 24 6F 74 25 6E 73 26 6E 73 27 6E 73 28 6F 73 29 6F 74 2A 6E 73 2B 6E 73 2C 6E 73 FF 00 00 FF 00 00 00 00 00 [BA BD] [00 00 00 A3] MMFファイルサイズ タイトルなしで、[00 00 00 A3] タイトルを入れた分だけ加算 A3=163 〜 FF=255 [00 00 00 0F] CNTIデータサイズ タイトルなしで、[00 00 00 0F] タイトルを入れた分だけ加算 M2:.,ST:title 追加したバイト数だけCNTI datasizeに加算。 [BA BD] CRCコード