You can read this page in English – Translated (DeepL.com Free Version)
Command Format Can Use It
@ON [Key] [Velocity]
@OFF [Key] [Velocity]
@PB [ValueHi7bit][ValueLo7bit]
@PB0 [ValueLo7bit][ValueHi7bit]
@CP [Value]
@PKP [Key][Value]
@CC [CC Num][Value]
@SYSEX F0H ..... F7H
@RPN [RPN MSB] [RPN LSB] [Data MSB] [Data LSB]
@NRPN [RPN MSB] [RPN LSB] [Data MSB] [Data LSB]
@PC [Program]
@PC_BANK [Program] [Bank-MSB] [Bank-LSB]
Or Direct Number(0x80, 80h etc)
Value Format
#NONE-
#VL
#VH
#GL
#GH
#CH, #1CH, #2CH, #3CH
#PCH
#VF1
#VF2
#VF3
#VF4
#VPGL
#VPGH
Number(0x80, 80h etc)
(Sorry, Japanese Only, Im still working Translate)
コマンドのほうから、簡単に詳細をご説明します。
・ノートON
@ON [Key] [Velocity]
(文字列サンプル)
"@ON 60 127" (ノート番号60、ベロシティ127)
"@ON #GL #VL" (ノート番号Gateで別指定、ベロシティValueで別指定)
(送信する信号)
[0x90+チャンネル][Key][Velocity]
・ノートOFF
@OFF [Key] [Velocity]
(文字列サンプル)
ノートONと同じフォーマット(@ON -> @OFFにするのみ)
(送信する信号)
[0x80+チャンネル][Key][Velocity]
・ピッチベンド
@PB [ValueHi7bit][ValueLo7bit]
@PB0 [ValueLo7bit][ValueHi7bit]
(文字列サンプル)
"@PB #VH #VL" (これは普通考えそうな順番で、たとえば、@PB #VL 0 と書き、7ビットでも指定できます)
"@PB0 #VL #VH"(これは実際に送信される順番です、MIDIの仕様でここだけ、普通と逆の考えなのです)
(送信する信号)
[0xe0+チャンネル][ValueLo7bit][ValueHi7bit]
・アフタータッチ(チャンネルプレッシャー)
@CP [Value]
(送信する信号)
[0xd0+チャンネル][Value]
・ポリアフタータッチ(ポリフォニックキープレッシャー)
@PKP [Key][Value]
(送信する信号)
[0xa0+チャンネル][Key][Value]
・CC(コントロールチェンジ)
@CC [CCナンバー][Value]
(送信する信号)
[0xb0+チャンネル][CCナンバー][Value]
・Sysex(システムエクスクルーシブ)
@SYSEX F0H ..... F7H
もし、[]で囲う部分がある場合、[]で囲われた範囲の値をチェックサムを、]部分で出力しています。
(送信する信号)
F0h から F7までの全て
また、@SYSEX F7h・・・F7h とした場合には、先頭のF7を省いて送信します。
これは分割されたSYSEXを受けとる側に配慮したためです。
・DATAENTRY RPN(レジスタードパラメータナンバー+データ)
@RPN [RPN MSB] [RPN LSB] [Data MSB] [Data LSB]
・RPN LSB, RPN MSB, DATAENTRY MSB, DATAENTRY LSBとして出力します。
[Data LSB]に、#NONEを指定することで、DATAENTRY LSBの出力を控えます。
"@RPN 10h 20h 30h 40h"
は4つのコントロールチェンジの連続出力として出力します。間になにかが割り込むことはありません。
@CC 101 [RPN MSB]
@CC 100 [RPN LSB]
@CC 6 [DATA MSB(上位7bitまたは、7ビットオンリー)」
@CC 36 [DATA LSB(下位7bit)」 #NONE指定されると、このCCは出力しません。
(送信する信号)
割愛(@CCコマンドも調べてみてください)
・DATAENTRY NPRN(ノンレジスタードパラメータナンバー+データ)
@NRPN [NRPN MSB] [NRPN LSB] [Data MSB] [Data LSB]
ノンレージスタードも[@RPN」と同様に処理します。
@CC 99 [NRPN MSB]
@CC 98 [NRPN LSB]
・PROGRAM CHANGE (プログラムチェンジ)
@PC [Program]
プログラムチェンジを送信します
[0xc0+チャンネル][Program]
・PROGRAM + BANK (プログラムチェンジ+バンクセレクト)
@PC_BANK [Program] [Bank-MSB] [Bank-LSB]
プログラムチェンジとバンクセレクトを送信します
[0xc0+チャンネル][Program]
[0xb0+チャンネル] 0 [Bank-MSB]
[0xb0+チャンネル] 32 [Bank-LSB]
値としは、下記が指定できます。
「10進数」「hで終わる16進数」「0xで始まる16進数」または、以下のエイリアスになります。
#NONE
値そのものを持ちません。上記@RPN、@NRPNの用途で使われます。
それ以外で使われている場合、0として出力します
#VL
Value値の下位7bit
#VH
Value値の上位7bit
#GL
Gate値の下位7bit
#GH
Gate値の上位7bit
#CH, #1CH, #2CH, #3CH
0x00にチャンネルを加算、
0x10に・・、0x20に・・、0x30まで同様です
#PCH
ポートの数値にチャンネルを加算
Aポートのベースは、0x00
Bポートのベースは、0x10
Cポートのベースは、0x20
Dポートのベースは、0x30
Eポート以降は、0x00固定になります
#VF1
Valueの1~4ビットの値から、0x00から0x0fを生成します
#VF2
Valueの5~8ビットの値から、0x00から0x0fを生成します
#VF3
Valueの9~12ビットの値から、0x00から0x0fを生成します
#VF4
Valueの13~16ビットの値から、0x00から0x0fを生成します
#VPGL
Value+Gateの合計値から、下位7ビットを取り出します
#VPGH
Value+Gateの合計値から、上位7ビットを取り出します
以下は、XMLから読み込んだ場合にスキップして、読み込まれますが、0として処理しているものです。
#1RCH, #2RCH, #3RCH, #4RCH
ブロックナンバー(ローランドの用法)を上位7?、8?ビット、チャンネルを下位8ビットとする
このアプリではサポートしていません。
#RSCTRT1, #RSCTRT2, #RSCTRT3
#RSCTRT1P, #RSCTRT2P, #RSCTRT3P
このアプリではサポートしていません。
#RSCTPT1, #RSCTPT2, #RSCTPT3
#RSCTPT1P, #RSCTPT2P, #RSCTPT3P
このアプリではサポートしていません。
以上がシグナルを生成する際、コマンドとして指定する内容です。
それ以外に、CH/チャンネル、Gate/ゲート、Value/数値を指定することで、
組み合わせて信号を生成しています。
この書式は、(Domino(C)たかぼー様)の定義ファイルとの部分互換性があります。
上方互換でも下方互換でもなく、部分的な互換性となります。
でも、XMLファイルはそのまま読めることも、よくあります!
#1RCHなどの、対応してない定型文を用いている場合、0に置き換えて送信します。
拡張されたのコマンドは、@ON, @OFF, @PB0 とプレーン数値です。
以下は、MIDI1.0豆知識です。
送信するさい、1バイト目の最上位ビットが1の場合、コマンドとして解釈されるようです。
最上位ビットが0の場合、パラメータとして解釈されることが、ほとんどな気がします。
7ビットまたは、2キャラで14ビットのパラメータを使います。
14ビットのさい、どちらを先にするかは、コマンドにより異なるようです。
(まぁピッチベンドだけ注意すればだいたい同じ気がする)