MIXandCCコマンド文法

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ビットのさい、どちらを先にするかは、コマンドにより異なるようです。
(まぁピッチベンドだけ注意すればだいたい同じ気がする)
タイトルとURLをコピーしました