たま日記

たまに書く

TX81Zを解析した(パフォーマンスモード編)

TX81Zに搭載されているOPZは(OPMと同様に)異なる8音を同時に発声する能力を持つ。1つのNote on信号を受信するとシングルモードでは1音を発声するのに対し、パフォーマンスモードでは2つ以上の音を同時に発声することができる。どのように組み合わせるかはPCED(Performance Edit Parameters)で指定する。

以下、Instrument Detuneというパラメータの働きを述べる。音の高さを微妙にずらすためのもので、音の厚み?を増やすのに使うようだ。-7~+7の値をとる。OPZのKF(Key Fraction:半音の1/64)に素直に加算されるかと思っていたが、その加算量は音の高さによって異なることが解析の結果判明した。


まず音の高さから。発声される音の高さは次のように決まる:

  1. MIDIのNote on信号で0~127が指定される
  2. この値にVCEDのTransposeパラメータで-24~+24が加算される
  3. さらにPCEDのNoteShiftパラメータで-24~+24が加算される
  4. 12以下の場合、13以上になるまで12を足す
  5. 109以上の場合、108以下になるまで12を引く
  6. この結果、音の高さ t は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の解析結果がそのまま適用できるか微妙…。