MIDI および MIDI Show Control (MSC) の利用

dot2 は種々のMIDIを扱え、送受信の両方を行えます。

Tools を押して MIDI Monitor をタップすると、送受信したMIDIデータを確認できます。

dot2 onPC を使用している場合は、MIDI In/Out を設定する必要があります。Tools メニューで MIDI Configuration をタップし、送受信に用いるMIDIデバイスを選択してください。

MIDIノートのリモート入力

これは、受信したMIDIノートを用いて、卓のさまざまなものをトリガーするためシステムです。設定はすべて Remote Inputs Configuration ウィンドウ で行います。

ここでは、受信MIDIノートをエクゼキュータにマッピングしたり、トリガーするコマンドを設定したりできます。

MIDIベロシティによって、フェーダ位置を設定できます。

MIDIリモート入力は、MIDI信号を受信する卓のエクゼキュータをトリガーするだけです。

MIDIノートの出力

MIDIノートはキューから送信できます。またコマンドラインから直接送信することも可能です。

MIDI Note コマンド を用いると、MIDIノート・メッセージを送信できます。詳しくはコマンドの説明を参照してください。

MIDIノートコマンドは、スタンドアロン卓から送信されます。またセッションがある場合は、セッション・マスター(コマンドラインの隣に アイコンが表示されている卓)から送信されます。

MIDI Show Control (MSC) 入力

dot2 卓は、MIDI Show Control を送信できる任意のデバイスによって制御できます。MSCに関しては多くの設定があります。Setup を押し MIDI Show Control を選んでください。ここでは、トランスミッタ(Show Control やサウンド用のソフトウェアなど)に合わせて設定を変更できます。

MSCで制御できるのは、最初のページのエクゼキュータまたはメイン・エクゼキュータのみです。

MSCデータは、スタンドアロン卓に送信してください。またセッションがある場合は、セッション・マスター(コマンドラインの隣に アイコンが表示されている卓)が対応します。

MSCの概要については後述を参照してください。

MIDI Show Control (MSC) 出力

dot2 卓は、MSCコマンドをデバイスに送信できます。これによって、他のデバイス(例: サウンド・サンプラーなど)を制御できます。設定を行うには、Setup を押し MIDI Show Control を選んでください。MSCレシーバに合わせて設定を行う必要があります。

MSCデータは、スタンドアロン卓から送信されます。またセッションがある場合は、セッション・マスター(コマンドラインの隣に アイコンが表示されている卓)から送信されます。

MSCの概要については後述を参照してください。

MIDI Time Code (MTC)

卓はMTCを受信することができ、これによってエクゼキュータのキューを自動的に実行できます。

MTCで制御したいエクゼキュータは、Settings of Executor ビュー で "MIDI" を選択してください。そのエクゼキュータには、タイムコードをトリガーとするキューがいくつかなければなりません。Timecode をトリガーにすると、"Trig Time" 列でタイムを設定できます。受信しているMTCが、Trig Time に設定したタイムに達すると、そのキューがトリガーされます。それに続くキューは必要なく、受信しているMTCに一致するタイムを持つキューに移動します。フェーダを上げておくのを忘れないでください。

タイムは手動で入力できます。
また Cues ビューのタイトルバーにある TC Record をタップすると記録機能が有効になり、Timecode キューに対して通常の Go を行うと、タイムが Trig Time 列に記録されます。タイムコードの記録機能は、Record コマンド によっても有効にできます。記録中は、コマンドラインの隣に、赤丸に白い "T" 文字のアイコンが点滅表示されます。また、Cues ビューとエクゼキュータバーにも赤丸が点滅表示されます。 記録機能がオフにするには、TC Record をもう一度タップしてください。

MTCの有効/無効は、Setup の Timecode Configuration ウィンドウ で切り替えられます。すべての入力タイムコードをオフにしていると、TC Record はタップできません。

受信しているMTCは、マスターだけでなく、セッション内のどの卓/onPCでも利用できます。

 

MSCの概要

MSCのコマンド構造と構文は、MMA(MIDI Manufacturers Association)によって定義された一般的な SysEx 構造に基づいています。これは、一般的なMIDIの拡張として、1991年にリリースされました。

生のMIDI情報は、16進オクテット(2桁の16進数、バイトとほぼ同義)で表されます。ソフトウェアメーカによっては、独自の解釈で、より可読性が高い形式でMSCデータを表している場合があります。もちろんこれは有用ですが、それらのすべてを説明することはできませんので、この取扱説明書では生データとして見ていきます。

メッセージのフォーマットは以下のようになります。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
             

デバイスID

デバイスIDは、以下の三つのセクションに分けられたオクテットです。

dot2 では、送受信メッセージの両方に対して、デバイスIDやグループIDを設定できます。

MSCでは、デバイスIDの指定に1オクテットしか送信できません。前述の Send to 設定では、送信すべきIDを三つセクションから選択できます。

コマンド・フォーマット

コマンド・フォーマットのオクテットは、メッセージを受信(または少なくとも応答)する機器タイプを表しています。dot2 は、3種類のフォーマットに対してのみ、送信や応答を行います。

コマンド

コマンド・オクテットは、メッセージ内でコマンド・タイプを表しています。コマンド・タイプによって、必要なデータ情報が決められています。

dot2 は、以下の7種類のコマンド・タイプに対応しています。

データ

01 (Go):

前述のように、これは GOTO コマンドと解釈されます。
コマンドの後に、キュー番号を指定する必要があります。キュー番号も16進オクテットで送信する必要があり、また、小数点を含む完全なキュー番号を送らなければなりません。例えばキュー番号4の場合、ドット区切りの完全な番号は 4.000 になります。10進数の数字をASCIIフォーマットの16進数に変換するには、先頭に3を付加します。10進数の 4 は、16進数の 34 になります。またドットは、16進数で 2E になります。ドットを含む完全なキュー番号は、34 2E 30 30 30 になります。

MSC In Exec オプションでステーションが Default Only に設定されている場合、コマンドの後に追加すべきものは、これですべてです。

例: デフォルトのエクゼキュータで、キュー番号 21.5 をトリガーします(All デバイス (7F)、All フォーマット(7F)、および Default Only の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 01 32 31 2E 35 30 30 F7

設定が Default Only でない場合は、エクゼキュータとページを指定する必要があります。エクゼキュータ番号とページ番号は、ドット(16進数=2E)または空白(16進数=20)のいずれかで区切ります。キュー番号と、エクゼキュータ/ページのデータは、16進数の 00 で区切ってください。

例: ページ1のエクゼキュータ5で、キュー番号 37.2 をトリガーします(All デバイス (7F)、All フォーマット(7F)、および Exec.Page の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 01 33 37 2E 32 30 30 00 35 2E 31 F7

同じ内容で、エクゼキュータ/ページ区切りに空白を用いると、以下のようになります。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 01 33 37 2E 32 30 30 00 35 20 31 F7

 

02 (Stop):

これは Pause ボタンを押すのと同様です。16進数によるキュー番号の指定方法については、上述を参照してください。

Default Only オプションが設定されている場合、休止しているエクゼキュータが対象となるため、追加データは必要ありません。

例: デフォルトのエクゼキュータを停止します(All デバイス、All フォーマット、および Default Only の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 02   F7

ステーションがMSCを送信している場合、キュー番号 0.000 が送られます。これは、「動作中のキーを停止」するコマンドを送るのと同じです。

Default Only ではなく、Exec.PageExec Page オプションが設定されている場合は、キュー0も送信する必要があります。

例: ページ1のエクゼキュータ5を停止します(All デバイス、All フォーマット、および Exec.Page の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 02 30 2E 30 30 30 00 35 2E 31 F7

 

03 (Resume):

これは、休止しているキューを再開させる唯一の方法です。Stop コマンドとの違いは、"02" が "03" になるだけです。

例: Stop の例で休止したフェードを再開します(All デバイス、All フォーマット、および Exec.Page の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 03 30 2E 30 30 30 00 35 2E 31 F7

Default Only が設定されている場合、フェードを再開するコマンドは F0 7F 7F 02 7F 03 F7 になります。

 

04 (Timed_Go):

01 (Go) コマンドと同様ですが、タイムを指定します。01 (GO) コマンドとデータについては上述を参照してください。説明を簡単にするために、MSCの設定で Default Only が有効になっているとします。

このコマンドでは、まずタイムを指定してから、次にキュー番号を指定する必要があります。タイムは、HourMinuteSecondFrame、および Fraction の順に5桁の16進数で表し、これらのセクションを正しく送信する必要があります。

なお、タイムは通常範囲を超える値で指定することもできます。例えば64秒(16進数=40)とすると、ステーションはこれを1分4秒として送信します。

今のところ卓は、Frame と Fraction セクションで指定されたタイムは受け入れませんが、Frame セクションで秒未満の値を送信できます。1秒は24フレームに分割されますので、0.5秒は12フレームとなり、送信データは16進数で 0C となります。

例: 20秒のフェードタイムで、キュー75に移ります(All デバイス、All フォーマット、および Default Only の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 04 00 00 14 00 00 37 35 2E 30 30 30 F7

例: ページ1のエクゼキュータ3において、1分のフェードタイムで、キュー5.4に移ります(All デバイス、All フォーマット、および Exec.Page の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 04 00 01 00 00 00 35 2E 34 30 30 00 33 2E 31 F7

 

06 (Set):

このコマンドは、フェーダを特定の位置に動かすために用いられます。コマンドの後に、フェーダを表す2オクテットと、位置を指定する2オクテットが続きます。

 

最初のオクテットは、(1ページ上の)フェーダ番号です。最初のフェーダは16進数で 00、2番目は 01 というようになります。16進数なので、フェーダ16は 0F、フェーダ17 は 10 となることに注意してください。

2番目のオクテットは、フェーダに対するページ番号です。フェーダ番号の場合と少し異なり、ページ1は16進数の 01、ページ2は16進数の 02 というようになります。

したがって、ページ1のエクゼキュータ1は、00 01 となります。

 

フェーダ位置の指定には、若干の計算が必要です。フェーダ位置は、Coarse および Fine 値によって定義されます。これらの値のスケールは128ステップです(ほとんどのMIDIデータは128ステップ)。最初に Fine 値が送信され、それに Coarse 値が続きます。

まず、指定したいフェーダ位置(10進数)に1.28を掛けます。この結果の整数部が Coarse 値になります。そして、残りの小数点以下の値に128を掛けると、Fine 値が得られます。これら二つの10進数値を、16進数に変換してください。

例: ページ2のフェーダ3を45%にします。まずフェーダ位置を変換します。

  1. 45 × 1.28 = 57.6
  2. Coarse 値は 57 です。
  3. 0.6 × 128 = 76.8
  4. Fine 値は 76 です。
  5. 57 を16進数に変換すると 39 になります。
  6. 76 を16進数に変換すると 4C になります。
  7. 送信データは Fine、Coarse の順なので 4C 39 となります。

MSC メッセージは以下のようになります(All デバイス、All フォーマットの場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 06 02 02 4C 39 F7

 

フェーダと位置データの後に、フェードタイムを付加することができます。タイムは、04 (Timed_Go) コマンドと同じ形式で指定します。

例: ページ1のフェーダ15を、5秒で100%にします(All デバイス、All フォーマットの場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 06 0E 01 7F 7F 00 00 05 00 00 F7

 

卓は、シーケンスが割り当てられているエクゼキュータ、および(選択されているエクゼキュータに対する)緑の特殊マスターについてのみ、それらのフェーダ位置を送信しますが、何かが割り当てられているすべてのフェーダに対する位置を受け入れます。

 

07 (Fire):

このコマンドによって、マクロを実行できます。コマンドの後に続く1オクテットで、マクロ番号を指定します。

マクロ番号1は16進数の01に、マクロ番号255は16進数のFFになります。

: マクロ番号24をトリガーします(All デバイス、All フォーマットの場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 07 18 F7

 

0B (Go_Off):

このコマンドによって、エクゼキュータをオフにできます。コマンドの後に、キュー番号を指定する必要があります。キュー0を用いることもできます。

: ページ5のエクゼキュータ9に Off コマンドを送ります(All デバイス、All フォーマット、および Exec.Page の場合)。

F0 7F デバイスID 02 コマンド・フォーマット コマンド データ F7
F0 7F 7F 02 7F 0B 30 2E 30 30 30 00 39 2E 35 F7

イーサネットによるMIDI

MSCは、イーサネットを利用して送信できます。この場合、UDPメッセージとして送られます。

MSCメッセージは前述と同じですが、odt2 がデータを受け入れるためのヘッダが必要となります。

ヘッダは二つの部分に分かれています。最初の部分で 47 4D 41 00 4D 53 43 00 ("GMA MSC ")で、メッセージを dot2 MSC メッセージとして識別しています。

2番目の部分は、ヘッダを含むメッセージ長をリトルエンディアン形式で表した4オクテットです。
全体のオクテット数を計算し、それを16進数に変換します。4オクテットをすべて送信する必要がありますが、通常必要とされるのは最初のオクテット部分だけです(最大255オクテットまでのメッセージが可能)。

 

例:

キュー35に Go コマンドを送信します。MSC メッセージは次のようになります。
F0 7F 7F 02 7F 01 33 35 2E 30 30 30 F7.

これは13オクテットあります。ヘッダは常に12オクテットですので、合わせた長さは、25オクテットになります。10進数の 25 は、16進数では 18 です。メッセージ全体は次のようになります。
47 4D 41 00 4D 53 43 00 18 00 00 00 F0 7F 7F 02 7F 01 33 35 2E 30 30 30 F7

 

マクロ1のトリガーは、F0 7F 7F 02 7F 07 01 F7 になります(8オクテット)。

これにヘッダ長の12を足すと、20(10進) = 13(16進)になり、メッセージ全体は次のようになります。
47 4D 41 00 4D 53 43 00 13 00 00 00 F0 7F 7F 02 7F 07 01 F7