FM音色 エクスクルーシブデータ構造 ---------------------------------------------------------------------------------------------------------------------- Head Size TAG MSB Nmal Drum WT fotter [F0] [2F] [43 79 06 7F 01] [7C] [00] [00] [00] [00] [OP0:4byte] [OP1:8byte] [OP2:8byte] [OP3:8byte] [OP4:8byte] [F7] ---------------------------------------------------------------------------------------------------------------------- (ex) ピアノの場合 F0 2F 43 79 06 7F 01 7C 01 01 00 00 03 00 79 43 02 67 7F 1D 02 00 10 40 23 33 62 73 02 00 50 00 12 42 53 54 02 01 10 00 23 63 54 02 00 01 10 00 F7 ---------------------------------------------------------------------------------------------------------------------- OP2=>OP4 データは常に0x00〜0x7F(7ビット)で表現される。(MSBが1の場合、後続バイトが存在しDuration表現とみなす) ****************************** * OP0は4バイトで構成されている * ****************************** #1 [ 0 0 y y y y y y ] = [ PANc FQx SRc RRc ARc TLc ] ※下位4ビットはOP4の各フラグ(2OP音色の場合はOP2) #2 [ 0 yyyyyyy ] = [ PITCH(FM Drum Voice) ] #3 [ 0 yyyy 0 yy ] = [ PAN OCT ] #4 [ 0 y ? ? ? yyy ] = [ FQy 不明なフラグ AL ] *********************************** * 各オペレータは8バイトで構成されている * *********************************** #1 [ 0 yyy y ? y y ] = [ SR KEY ? SU KR ] #2 [ 0 yyy yyyy ] = [ RR DR ] #3 [ 0 yyy yyyy ] = [ AR SL ] #4 [ 0 yyyyy yy ] = [ TL KL ] #5 [ 0 0 y y y y y y ] = [ MLc WFc SRc RRc ARc TLc ] #6 [ 0 yy y 0 yy y ] = [ AM AMc VI VIc ] #7 [ 0 yyy 0 yyy ] = [ ML DT ] #8 [ 0 yyyy yyy ] = [ WF FB ] ********** * 各フラグ * ********** SRc : 8以下なら立てる RRc : 8以下なら立てる ARc : 7以下なら立てる WFc : 波形17以上で立てる (OP1のWFcはOP4フィールドで立てる) TLc : 32以下なら立てる MLc : 8以上なら立てる PANc: L=0〜14なら立てる VIc : ONなら立てる AMc : ONなら立てる KEY : (OFF,ON) = (0,1) SU : (OFF,ON) = (0,1) KR : (1,2) = (0,1) AR RR ~~~~ ~~~~ 000 : 8 / 7 000 : 16 / 8 001 : 14 / 6 001 : 15 / 7 010 : 13 / 5 010 : 14 / 6 011 : 12 / 4 011 : 13 / 5 100 : 11 / 3 100 : 12 / 4 101 : 10 / 2 101 : 11 / 3 110 : 9 / 1 110 : 10 / 2 111 : 8?/ 0 111 : 9 / 1 ML FB DT ~~~~ ~~~~~~~ 000 : 0.5/ 8 000 : 0(OFF) 001 : 1 / 9 001 : 1 010 : 2 / 10 010 : 2 011 : 3 / 10 011 : 3 100 : 4 / 12 100 : 4 101 : 5 / 12 101 : 5 110 : 6 / 15 110 : 6 111 : 7 / 15 111 : 7 AM VI KL ~~~~ ~~~~ ~~~~ 00 : 1 00 : 1 00 : 0 01 : 2 01 : 2 10 : 1 10 : 3 10 : 3 01 : 2 11 : 4 11 : 4 11 : 3 SL DR PAN ~~~~ ~~~~ ~~~~~ 1111 : 1 1111 : 1 1111 : L=0 / L=15 1110 : 2 1110 : 2 1110 : L=1 / L=16 1101 : 3 1101 : 3 1101 : L=2 / L=17 1100 : 4 1100 : 4 1100 : L=3 / L=18 1011 : 5 1011 : 5 1011 : L=4 / L=19 1010 : 6 1010 : 6 1010 : L=5 / L=20 1001 : 7 1001 : 7 1001 : L=6 / L=21 1000 : 8 1000 : 8 1000 : L=7 / L=22 0111 : 9 0111 : 9 0111 : L=8 / L=23 0110 : 10 0110 : 10 0110 : L=9 / L=24 0101 : 11 0101 : 11 0101 : L=10 / L=25 0100 : 12 0100 : 12 0100 : L=11 / L=26 0011 : 13 0011 : 13 0011 : L=12 / L=27 0010 : 14 0010 : 14 0010 : L=13 / L=28 0001 : 15 0001 : 15 0001 : L=14 / L=29 0000 : 16 0000 : 16 0000 : / L=30 あと残りのパラメタも同じ感じ。 ------------------------------------------------------------------ [FQ] = [FQ(xy)] xy 00 : 1.9Hz 01 : 4.2Hz 10 : 6.1Hz 11 : 7.2Hz 音階はNoteNumberで指定できるのでオクターブ設定は無視して、[01]を設定すると良い。 [OCT] 00 : +1 01 : 0 02 : -1 03 : -2 ★WF=16,24,32ではオリジナル波形としてインクルードできます。 ★ALに依存してFBが存在しない場合は0を設定します。 ★DT(デチューン)は各OPごとに存在する。7バイト目であると考えられる。  実際、FQとFBを変えて、この下位3bitをいじると変調がかかる。 ★サスティーンペダルはントロールチェンジ64による。0〜63でOFF、64〜127でON。 ★ビブラート倍率はコントロールチェンジ1のLFO/モジュレーション。 ★マスターボリュームは、Mtsqのいっちゃん最初に、  F0 07 43 79 06 7F 00 xx  の形式で記述。xxに音量を記述する。初期値はMA3 TOOLでは0x2Dとされていた。  スピーカー精度にもよるが、0x64ぐらい(YAMAHA推奨?)にするのが望ましい。 ★MA3ではMtsuチャンクは必要ない可能性がある。デフォルトでは2OP音色が音色マップに  設定されて居る。 各OPの#1の2ビット目もよくわからない。SH51内蔵のオリジナル音色で全てのパラメタを いじってみたが変化なし=隠しパラメタ? ----------------------------------------------------------------------- ★不明なフラグと書いてあるところはSR RR AR TLの値に影響するようだ。  しかし、その規則性が不明。以下は2OPを例に話を進める。 例えば、 こっちは上の容量に従って計算するとTLが(54,30)だが、実際は(22,62)。 00010011 00000000 01111001 01000000 00100111 00010101 01111100 00101001 00100010 00000110 01000000 00000000 01000110 01010101 01111111 00001000 00000000 00000001 00010000 00000000 オリジナル音色でエディットして、TLを(22,62)にすると…。 00010010 00000000 01111000 01[1]00000 00100111 00010101 01111100 00101001 00100011 00000110 01000000 00000000 01000110 01010101 01111111 00001000 00000000 00000001 00010000 00000000 理論上の(54,30)になる。つまりフラグを反転させるフラグらしきものが存在する。 OP0#4の5ビット目であるが・・・。 RR、ARをいじると、ここのフラグがONになったりOFFになったりする・・・(;_;) 【見つけた法則性】 ★SR RR AR TLのうち、OP1で値が反転しているパラメタはOP2でも反転している。 ★値が反転しても、それを表す確実なフラグが存在しない。