-
Notifications
You must be signed in to change notification settings - Fork 0
Midi Crash Course
MIDI(MusicalInstrument Digital Interface)は音声デバイスの通信において標準的です。 このページはMIDIの簡単な説明をし、その説明はあなたの求めるMixxxのMIDIコントローラーマップの説明になるでしょう。
MIDIはソフトウェア・ハードウェアともに広く標準的に利用されています。 このデータは1980年代シンセサイザー、サンプラー、そしてシーケンサー同士の通信を目的として作られました。 これらの古いデバイスでは5ピンDINコネクターがMIDI信号を乗せていました。
今日の主なMIDIデバイスはUSBケーブルに乗せて信号を送っています。 いくつかの現在のデバイスは割と5ピンDINケーブルを使って接続しているものもあります。 DJコントローラーはこれらの 5ピンDINコネクターは通常コンピューターに信号を送る際には使いません。 それらはMIDI通信以外の能力としてMIDI以外の情報は送りません(しかし、それらは電源もUSBケーブルから供給することがあります)。
コントローラーは標準USB・MIDIクラスに準拠し(またはデバイスが「クラスに準拠しました」)特別なドライバを必要としません。 ほとんどのコントローラーがUSB・MIDIクラスに準拠しましたが、すべてではありません。 特定のコントローラーに関してはMixxx DJハードウェアガイドを閲覧してください。
Mixxxの表示は16進数のMIDI信号です。もし見知らぬ16進数があった場合、このチュートリアルを読んでください。
ひとつのMIDI信号の説明について、あなたのコントローラーがコンピューターに信号を送り、 どのような反応をコンピューターはするべきかは、コントローラーのメーカーによるものです。これは製品ページのドキュメントを これは製作者(メーカー)のコントローラーのWebサイトの製品ページのドキュメントもしくはWebサイトのサポートの項が良いでしょう。 もしそのドキュメントがない場合は、マニュアルの最後に書かれている事があります。 不幸にも、メーカーがこれら全ての情報を提供していないことがあります。
ほとんどのMIDIメッセージは3バイト長です。最初のバイトのMIDIメッセージのほとんどは 状態 を呼ぶバイトです。
最初のニブルはオペレーションコードで、2番目はMIDIチャンネル番号です。たとえば、もしあなたが
0x90 という信号を得たなら、オペレーションコードは 0x9
で、チャンネル番号は 0x0
(チャンネル1)となります。
全てのMIDIメッセージは以下になり、 n はチャンネル番号(0〜F)が入ります。
状態 | 機能 | データバイト | |
---|---|---|---|
0x8n | ノート切 | ノート番号 | ノートの速さ |
0x9n | ノート入 | ノート番号 | ノートの速さ |
0xAn | 多声・アフタータッチ | ノート番号 | プレッシャー値 |
0xBn | コントロール/モード変更 | コントロール番号 | 値 |
0xCn | プログラム変更 | プログラム番号 | (値なし) |
0xDn | プログラム・アフタータッチ | プログラム番号 | (値なし) |
0xEn | ピッチベンド | 最下位バイト | 最上位バイト |
0xF0 | システムの排他的メッセージ | ベンダーID | (データ) |
0xF1 | MIDIタイムコード クオンタイズフレーム | (仕様を見よ) | |
0xF2 | 演奏位置ポインター | 最下位バイト | 最上位バイト |
0xF3 | 楽曲選択 | 楽曲番号 | (値なし) |
0xF4 | 未定義 | ||
0xF5 | 未定義 | ||
0xF6 | チューンリクエスト | (値なし) | |
0xF7 | エンドオブエクスクルーシブ | (値なし) | |
0xF8 | タイミングクロック | (値なし) | |
0xF9 | 未定義 | (値なし) | |
0xFA | 先頭から再生 | (値なし) | |
0xFB | 停止中からの再生 | (値なし) | |
0xFC | 停止 | (値なし) | |
0xFD | 未定義 | (値なし) | |
0xFE | アクティブセンシング | (値なし) | |
0xFF | システムリセット | (値なし) |
テーブル上の太字表記のメッセージは私達に大きく関係しており、DJコントローラーはこれらの機能のみを使います。あなたがDJコントローラーの助言を求めるときは、あなたはDJコントローラーの機能やLEDと信号やノートやコントロール番号がどのように一致するかを限定する作業をします。 もしあなたのコントローラーのMIDI仕様がノートネームだけで番号がない場合、このテーブルを使ってそれらを変換しましょう10進数から16進数に変換するにはコレを使いましょう
(ノート あなたがMIDIスクリプティングでシステムの排他的メッセージを要求する時に使うでしょう。)
全てのコントローラーを動作させるのは難しいですが、それらにはいくつかパターンがあります。
* ボタンを押した時: オペレーションコード 0x9
, 値が 0xf7
* ボタンを話した時: オペレーションコード 0x9
, 値が 0x00
* もしくはオペレーションコード 0x8
, 値が 0x00
ある場合のボタンの後ろのLEDは、それは例によって操作信号をコントローラーに最初の2バイト(ステータスとノート番号)が送信され、それはコントローラーがボタンを押された時に送られます。
同様に、値のバイトのためにLEDが点灯か消灯のみします。典型的には 0x00
に切り替わると消灯、そして 0x01
か 0x7f
に切り替わると点灯します。
マルチカラーLEDは、色は典型的に違う値のコントロール信号を送られます。どれがどの色かを特定するには、あなたのコントローラーのMIDI仕様書を読みましょう。もしそれらがなければ
あなたは他のDJソフトウェアのマッピングを見るか、少しの違う値を試してみてください。
これらは通常 0xB
のオペレーションコードをノブの相対的な値( 0x00
から 0x7F
の間)と送信します。
エンドレス(連続的な)ノブ・エンコーダーは典型的にオペレーションコード 0xB
と値またはエンコーダーの左右( 0x01
&
0x7F
もしくは 0x41
& 0x31
)のどちらかを示します。
これらは通常エンドレスノブ・エンコーダーよりも正確に制御され、通常、触れるか離すとボタンとして意図して機能し、スクラッチングの開始や終了を制御します。
初めに、「Preferences」→「MIDI Devices」ウィンドウ下の「MIDI Learn」機能を試しましょう。これはあなたを助け、機能要素の割当をXMLを手動で編集するよりも素早く行えます。
あいにくいくつかの大手メーカーはコントローラーのMIDI信号情報を提供しません。この場合、あなたはコントローラーがどんな信号を送っているか見ることがMixxxで可能です。たとえ大手メーカーがMIDIドキュメントを提供しても、それは簡単にあなたのコントローラーとMixxxのコントローラーのドキュメントとして見れるでしょう。
- Mixxxをコマンドプロンプトから –controllerDebug オブションをつけて起動します。例えば:
- Linux:
<code>user@machine:~$ mixxx --controllerDebug</code>
* Windows:
<code>C:\Program Files\Mixxx>mixxx --controllerDebug</code>
* Mac OS X:
<code>$ open -a mixxx --args --controllerDebug</code>
- 出力を見ます
- コンソール出力もしくは Mixxx.log ファイルにMixxxが受信した全てのMIDIメッセージが格納されます。 あなたがコントローラーを操作すると、MIDIコマンドが送られ、スクリーン/ログファイルに記録されます。 ステータス(最初の)バイトの行と表を比較し、ボタン/スライダー/コントロールがどのような信号を送っているかノートを取りましょう。
- 例として、あなたがスライダーを動かした時のログを見ます。:
<code>
Debug: [...]: "MIDI ch 1: opcode: B0, ctrl: 2, val: 3D" Debug: [...]: "MIDI ch 1: opcode: B0, ctrl: 2, val: 3A" Debug: [...]: "MIDI ch 1: opcode: B0, ctrl: 2, val: 3D" Debug: [...]: "MIDI ch 1: opcode: B0, ctrl: 2, val: 3B" Debug: [...]: "MIDI ch 1: opcode: B0, ctrl: 2, val: 3C"
</code>
この実体は、0xB0(ここで MIDIメッセージ のテーブルを見て、私達はこれはコントロールチェンジ信号をチャンネル1で行われているとわかります。)を送り、 私達は2番目のバイトが0x02だと把握でき、このコントロール番号を動かし、更に3つ目の項目では操作の値か場所で、あなたは割当の際に意図的にどちらか無視できます。
- <control>
ブロックのバイトの値をXMLファイルに追加する。
- これで最初の2バイトを <control> XMLブロックの <status> と <midino> に割り当てられます。詳細は次のセクションで。
コンソールを開き amidi -l
を実行してください。これで接続されているMIDIデバイスリストがでます。
Dir Device Name
IO hw:1,0,0 SCS.3d MIDI 1
そしてデータをダンプします。 amidi -p hw:1,0,0 -d
を実行してください。(hw:1,0,0
はあなたのコントローラーのリストに表示されたデバイスIDに書き換えてください)
このような情報が得れます:
B0 02 3D
B0 02 3A
B0 02 3D
B0 02 3B
B0 02 3C
判断するデータがわかります。
amidiは -S オプションをつけることでMIDI信号をコントローラーに送ることができます。明示的に16進数列で2バイト同士をスペースで区切ります。例えば:
amidi -p hw:1,0,0 -S "b0 02 7f"
aseqdump
は同様のプログラムです。しかし、細かいビット情報が16進数で出てきます。:
$ aseqdump -l
Port Client name Port name
0:0 System Timer
0:1 System Announce
14:0 Midi Through Midi Through Port-0
20:0 Tweaker Tweaker MIDI 1
20:1 Tweaker Tweaker MIDI 2
$ aseqdump -p 20:0
Waiting for data. Press Ctrl+C to end.
Source Event Ch Data
20:0 Note on 0, note 1, velocity 127
20:0 Note off 0, note 1
20:0 Note on 0, note 2, velocity 127
20:0 Note off 0, note 2
20:0 Note on 0, note 3, velocity 127
20:0 Note off 0, note 3
tail.exeをダウンロードし、mixxx.logの新しく追加された信号を見るか、
scons msvcdebug=1
を有効にして
[compiling_on_windows|Mixxxをビルド]し、ビルドした実行ファイルを
–controllerDebug
オブションをつけて実行します。これはコンソールウィンドウが立ち上がり、コントローラーからのMIDI信号を受信すると表示されます。
無料のMIDI Monitorをダウンロードして実行します。MIDI MonitorはMac OS XでMIDI信号を色々なフォーマットで表示するツールです。 入出力MIDIストリームを観察でき、メッセージタイプやチャンネルでフィルターをかけることができます。
無料のMIDISimulatorをダウンロードして実行します。 MIDISimulatorはMIDIデバイスをピアノやDJコントローラー的にテストするツールです。 これでMIDIイベントを送受信できます。
Mixxx is a free and open-source DJ software.
Manual
Hardware Compatibility
Reporting Bugs
Getting Involved
Contribution Guidelines
Coding Guidelines
Using Git
Developer Guide
Contributing Mappings
Mixxx Controls
MIDI Scripting
Components JS