MIDI Tuning Standard
概要
■チューニング・プログラム
各MIDIデバイス間でマイクロ・チューニングを相互利用する為に用いられます。
チューニング・プログラムの実装方法は、プログラム・チェンジ(Sakuraの@命令やVoice命令)と同様にMIDI楽器メーカーの任意となります。
チューニング・プログラムは、各プログラム(音色:Sakuraの@命令やVoice命令で指定する)毎にあるべきで、
Registered Parameter No.3 & 4の
Tuning Preset & Bankにて、各プログラムのチューニングを切り換えます。
このエクスクルーシブ・メッセージで使用されるチューニング値のフォーマットは、相対値ではなく絶対値で3Byte1組となります。
MSBで100cent(半音)単位で指定でき、LSB(下位14bit)を0にした場合、
MSB(上位7bit)にて平均律(A=440Hz)時のノートナンバーの音程となります。
LSBは、100/16383cent(=0.0061cent)単位で指定可能です。
"$7F,$7F,$7F"の場合は、チューニングを変更しません。
発音可能な音程が限られているプログラム(音色)の時に、発音不可能な音程のチューニングは"$7F,$7F,$7F"となります。
例えば、ヴァイオリンはNote No.59〜96しか発音されないべきで、No.0〜58及び97〜127の音程では"$7F,$7F,$7F"となるべきです。
Frequency Data Format
MSB | LSB | |
$00 | $00 | $00 | Note No.0 のデフォルトのチューニング |
… | | | … |
$3C | $00 | $00 | Note No.60(中央ド) のデフォルトのチューニング |
… | | | … |
$7F | $00 | $00 | Note No.127 のデフォルトのチューニング |
… | | | … |
$7F | $7F | $7F | 変更無し |
標準化されているチューニング・プログラムのPreset No.及びBank No.のマップは、以下の通りです。
Bank No. | Preset No. | |
$00 | $00 | 平均律 (A=440Hz) |
MIDI規格では、この機能を実装しない場合は標準で平均律とする事が推奨されています。
General MIDI Level.2(GM2)では、この機能を実装しない場合は標準で平均律とする事が義務つけられています。
■スケール・オクターブ・チューニング
各チャンネルの各オクターブの12個の音階について、チューニングを行います。
MIDIデバイスに選択可能なチューニング・プログラムがある場合、
あらかじめ設定されているチューニング・プログラムからのオフセット量を指定します。
チューニング・プログラムはデフォルトで平均律が設定されており、平均律からのオフセット量となります。
■MIDIのチューニングについて
最終的な音程は、
Tuning Preset No.(RPN No.3)及びTuning Bank No.(RPN No.4)で設定されているチューニング・プログラム
(デフォルトは平均律、又、MIDIデバイスがこのメッセージに対応していない場合も平均律とする。)
を基準とし、
Fine Tuning (RPN No.1)
Corse Tuning (RPN No.2)
Master Fine Tuning (Universal Exclusive Message (Real Time) )
Master Corse Tuning (Universal Exclusive Message (Real Time) )
Scale Octave Tuning (Universal Exclusive Message (Real Time or Non Real Time) )
Pitch Bend (Channel Voice Message)
で指定されたチューニング量が加減算された音程が出力されます。
詳細(チューニング・プログラム)
■Bulk Tuning Dump Request
指定されたPreset No.のチューニング・プログラムの設定について、ダンプ送信をMIDIデバイスに要求します。
このメッセージを送信すると、MIDIデバイスはBulk Tuning Dumpを送信します。
■Bulk Tuning Dump
MIDIデバイスがBulk Tuning Dump Requestを受信した場合に、MIDIデバイスはこのメッセージを送信します。
F0, 7E, device ID, 08, 01, no, tuning name(16), tuning data(128×3), chksum, F7
device ID | Target device (7F=全て) |
no | Tuning Preset No. (0〜127) |
tuning name(16) | 16ByteのASCII code |
tuning data(128×3) | 3Byte1組で、各ノートのチューニング |
chksum | 先頭のF0と最後のF7を除いたメッセージをXORした値。 |
■Bulk Tuning Dump Request (Bank)
指定されたPreset No.及びBank No.のチューニング・プログラムの設定について、ダンプ送信をMIDIデバイスに要求します。
このメッセージは、Bankを指定する他はBulk Tuning Dump Requestと同じです。
MIDIデバイスが、Key-BasedかScale Octaveかのどのテーブルを持っているかで、
MIDIデバイスから返信されるメッセージが変わります。
送信されるメッセージは、Key Based Tuning Dumpか、Scale Octave Tuning Dump 1Byte formatか、Scale Octave Tuning Dump 2Byte formatです。
■Key Based Tuning Dump
このメッセージは、Bankがある他はBulk Tuning Dumpと同じです。
Scale Octave Tuningと区別する為に、Key Based Tuningと改名されました。
MIDIデバイスがBulk Tuning Dump Request (Bank)を受信し、且つ、
Key Basedのテーブルを持っていた場合に、MIDIデバイスはこのメッセージを送信します。
このメッセージは、MIDIデバイスのチューニングを設定するものではありません。
F0, 7E, device ID, 08, 04, bank, no, tuning name(16), tuning data(128×3), chksum, F7
device ID | Target device (7F=全て) |
bank | Tuning Bank No. (0〜127) |
no | Tuning Preset No. (0〜127) |
tuning name(16) | 16ByteのASCIIコード |
tuning data(128×3) | 3Byte1組で、各ノートのチューニング |
chksum | 先頭のF0と最後のF7を除いたメッセージをXORした値。 |
■Scale Octave Tuning Dump 1Byte format
MIDIデバイスがBulk Tuning Dump Request (Bank)を受信し、且つ、
Scale Octaveの1Byte formatのテーブルを持っていた場合に、MIDIデバイスはこのメッセージを送信します。
このメッセージは、MIDIデバイスのチューニングを設定するものではありません。
F0, 7E, device ID, 08, 05, bank, no, tuning name(16), tuning data(12), chksum, F7
device ID | Target device (7F=全て) |
bank | Tuning Bank No. (0〜127) |
no | Tuning Preset No. (0〜127) |
tuning name(16) | 16ByteのASCIIコード |
tuning data(12) | ド〜シの12音階のチューニング(64が±0centで、1cent単位で変化) |
chksum | 先頭のF0と最後のF7を除いたメッセージをXORした値。 |
■Scale Octave Tuning Dump 2Byte format
MIDIデバイスがBulk Tuning Dump Request (Bank)を受信し、且つ、
Scale Octaveの2Byte formatのテーブルを持っていた場合に、MIDIデバイスはこのメッセージを送信します。
このメッセージは、MIDIデバイスのチューニングを設定するものではありません。
F0, 7E, device ID, 08, 06, bank, no, tuning name(16), tuning data(24), chksum, F7
device ID | Target device (7F=全て) |
bank | Tuning Bank No. (0〜127) |
no | Tuning Preset No. (0〜127) |
tuning name(16) | 16ByteのASCIIコード |
tuning data(24) | 2Byte1組で、ド〜シの12音階のチューニング
MSB=$40, LSB=$00が、中央(±0cent)。
MSBは半音(100cent)単位。
LSBは、100/128cent単位。 |
chksum | 先頭のF0と最後のF7を除いたメッセージをXORした値。 |
■Single Note Tuning Change (Real-Time)
指定されたTuning Preset No.及びBank No.の、指定された音程について、チューニング設定を変更します。
この変更は、Tuning Preset No.(RPN No.3)及びTuning Bank No.(RPN No.4)で指定することで各チャンネルで有効になります。
また、既に設定されていた場合は、即座に、現在鳴っている音もチューニングを変更します。
■Single Note Tuning Change (Non Real-Time)
指定されたTuning Preset No.及びBank No.の、指定された音程について、チューニング設定を変更します。
Single Note Tuning Change (Real-Time)の、ノン・リアルタイム版です。
既に同一のTuning Preset No.(RPN No.3)及びTuning Bank No.(RPN No.4)が設定されていた場合、現在鳴っている音はチューニングを変更しません。
■Single Note Tuning Change (Real-Time) (Bank)
このメッセージは、Bankを指定する他はSingle Note Tuning Change (Real-Time)と同じです。
このメッセージは、即座に、現在鳴っている音もチューニングを変更します。
■Single Note Tuning Change (Non Real-Time) (Bank)
このメッセージは、Bankを指定する事及び、Non Real-Timeで送信される他は
Single Note Tuning Change (Real-Time)と同じです。
このメッセージは、現在鳴っている音はチューニングを変更しません。
詳細(スケール・オクターブ・チューニング)
■Scale Octave Tuning 1Byte format (Real-Time)
各チャンネルの各オクターブの12個の音階について、チューニングを行います。
このメッセージは、即座に、現在鳴っている音もチューニングを変更します。
■Scale Octave Tuning 1Byte format (Non Real-Time)
各チャンネルの各オクターブの12個の音階について、チューニングを行います。
Scale Octave Tuning 1Byte format (Real-Time)の、ノン・リアルタイム版です。
このメッセージは、現在鳴っている音はチューニングを変更しません。
■Scale Octave Tuning 2Byte format (Real-Time)
各チャンネルの各12個の音階について、チューニングを行います。
Scale Octave Tuning 1Byte format (Real-Time)の、2Byte format版で、指定できる範囲と制度を大きくしたものです。
このメッセージは、即座に、現在鳴っている音もチューニングを変更します。
最小/最大のオフセットは、100centです。
■Scale Octave Tuning 2Byte format (Non Real-Time)
各チャンネルの各12個の音階について、チューニングを行います。
Scale Octave Tuning 2Byte format (Real-Time)の、ノン・リアルタイム版です。
このメッセージは、現在鳴っている音はチューニングを変更しません。
最小/最大のオフセットは、100centです。
Reference