TX81Zを解析した(パフォーマンスモード編)
TX81Zに搭載されているOPZは(OPMと同様に)異なる8音を同時に発声する能力を持つ。1つのNote on信号を受信するとシングルモードでは1音を発声するのに対し、パフォーマンスモードでは2つ以上の音を同時に発声することができる。どのように組み合わせるかはPCED(Performance Edit Parameters)で指定する。
以下、Instrument Detuneというパラメータの働きを述べる。音の高さを微妙にずらすためのもので、音の厚み?を増やすのに使うようだ。-7~+7の値をとる。OPZのKF(Key Fraction:半音の1/64)に素直に加算されるかと思っていたが、その加算量は音の高さによって異なることが解析の結果判明した。
まず音の高さから。発声される音の高さは次のように決まる:
- MIDIのNote on信号で0~127が指定される
- この値にVCEDのTransposeパラメータで-24~+24が加算される
- さらにPCEDのNoteShiftパラメータで-24~+24が加算される
- 12以下の場合、13以上になるまで12を足す
- 109以上の場合、108以下になるまで12を引く
- この結果、音の高さ は13(C#-1)~108(C7)となる。真ん中のドは60(C3)。
この音の高さとInstrument Detuneパラメータの値でKF=0からずらす量が決まる。
横軸: Instrument Detune (-7~7) 縦軸: (音の高さ - 13) / 4 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 +------------------------------------------------------- 0 | -17 -15 -12 -10 -8 -5 -3 0 2 4 7 9 12 14 17 1 | -17 -15 -12 -10 -7 -5 -3 0 2 4 7 9 11 14 16 2 | -16 -14 -12 -10 -7 -5 -3 0 2 4 6 9 11 13 16 3 | -16 -14 -12 -9 -7 -5 -3 0 2 4 6 9 11 13 15 4 | -16 -13 -11 -9 -7 -5 -2 0 2 4 6 8 10 13 15 5 | -15 -13 -11 -9 -7 -5 -2 0 2 4 6 8 10 12 14 6 | -15 -13 -11 -9 -6 -4 -2 0 2 4 6 8 10 12 14 7 | -14 -12 -10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 8 | -14 -12 -10 -8 -6 -4 -2 0 1 3 5 7 9 11 13 9 | -13 -12 -10 -8 -6 -4 -2 0 1 3 5 7 9 11 13 10 | -13 -11 -9 -8 -6 -4 -2 0 1 3 5 7 9 10 12 11 | -13 -11 -9 -7 -6 -4 -2 0 1 3 5 7 8 10 12 12 | -12 -10 -9 -7 -5 -4 -2 0 1 3 5 6 8 10 11 13 | -12 -10 -8 -7 -5 -4 -2 0 1 3 4 6 8 9 11 14 | -11 -10 -8 -7 -5 -3 -2 0 1 3 4 6 7 9 10 15 | -11 -9 -8 -6 -5 -3 -2 0 1 3 4 6 7 9 10 16 | -10 -9 -7 -6 -5 -3 -2 0 1 2 4 5 7 8 10 17 | -10 -9 -7 -6 -4 -3 -2 0 1 2 4 5 6 8 9 18 | -9 -8 -7 -6 -4 -3 -2 0 1 2 3 5 6 7 9 19 | -9 -8 -7 -5 -4 -3 -2 0 1 2 3 5 6 7 8 20 | -9 -7 -6 -5 -4 -3 -1 0 1 2 3 4 5 7 8 21 | -8 -7 -6 -5 -4 -3 -1 0 1 2 3 4 5 6 7 22 | -8 -7 -6 -5 -3 -2 -1 0 1 2 3 4 5 6 7 23 | -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
あとは実装。しばらくプログラムから離れていたので思い出すところから。エミュレーションしたいのはWT11なので、TX81Zの解析結果がそのまま適用できるか微妙…。