loopMIDIはMIDIの仮想ケーブル (Virtual Cable)と呼ばれる Windowsのアプリケーションの名前です。ドイツのTobias Erichsen氏が開発されました。 Windows 10 32/64bit で使えます。 http://www.tobias-erichsen.de から手に入ります。プライベートでは無料で使えます。
通常、MIDIは楽器と楽器を繋いで、一方の楽器からもう一方の楽器(音源モジュール)を鳴らすことができます。 または、PCを楽器につないでPCのDAW(デジタル・オーディオ・ワークステーション)から楽器(音源モジュール)を鳴らすことができます。
仮想ケーブル(Virtual Cable)はPCの中で、アプリケーションとアプリケーションをMIDIでつなぎます。 例えば、PCで立ち上がっているソフトウェアシンセサイザーを、自作のアプリケーションから鳴らすことができます。 自作のアプリケーションは、PCの外につながっている楽器(音源モジュール)も、PC内のソフトウェアシンセサイザーも 同じように(意識すること無く)プログラムを書くことができます。
loopMIDIをインストールします。I agree to the license ... をチェックします。 Autostart loopMIDI when logging inにチェックが入っていると、Windowsの起動時にloopMIDIが起動します。
以下のアイコンのアプリケーションを起動します。
このアプリを立ち上げるとMy loopback MIDI ports というウィンドウの中に"loopMIDI Port"という一本の仮想ケーブルが設定されていることがわかります。
仮想ケーブルは双方向の通信ができます。1つの仮想ケーブルでソフトシンセサイザーとDIY Appを双方向で接続することができます。
接続の例として、ソフトシンセサイザーの例として Piano Machineを使います。 Piano Machine をブラウザで開きます。もう一つのブラ座で Send And Receiveを開きます。
両方のブラウザのMIDI Portの設定をすべて、loopMIDI Portとします。 Send And ReceiveのOutput MIDIのボックスに、90 40 60 90 44 60 90 47 60と3つのノート・オンメッセージを記述して、 Sendボタンをおします。3つのノート・オンメッセージをは、仮想ケーブルを介して、Piano Machine を鳴らします。
もっと複雑なことをやりたい場合は仮想ケーブルを追加します。 追加するには、New Port-nameに名前を記入し、プラスボタンを押します。 これで2つの仮想ケーブル、loopMIDI PortとNew MIDI Aができました。
この状態で、たとえばSend And Receiveを2つのブラウザで立ち上げます。
https://mikatahara.github.io/SendReceive/1つのブラウザで2つのタブで開くのでは無く、 2つのウィンドウを開いてSend And Receiveを立ち上げます。 2つのブラウザを、ブラウザA、もう一つをブラウザBとします。 ブラウザA、BのSelect MIDI Portを以下のように設定します。
ブラウザA Inout Device:loopMIDI Port Output Device:New MIDI A ブラウザB Output Device:loopMIDI Port Inout Device:New MIDI A
この設定は2つのポートを使って、2つのブラウザ間をMIDIを使って通信する例です。
下の例では左側のブラウザAの送信BOXのMIDI(0x90 0x50, 0x7E)が、右側のブラウザBの受信ボックスに表示されています。MIDIはNew MIDI Aの仮想ケーブルを通りました。
一方、右側のブラウザBの送信BOXのMIDI(0xB0 0x01, 0x7F)が、左側のブラウザAの受信ボックスに表示されています。MIDIはloopMIDI Portの仮想ケーブルを通りました。
次の例は、ブラウザAもブラウザBも同じポートを設定しています。
ブラウザA Inout Device:loopMIDI Port Output Device:loopMIDI Port ブラウザB Output Device:loopMIDI Port Inout Device:loopMIDI Port
下の例では右側のブラウザBの送信BOXのMIDI(0x90 0x40, 0x7E)が、左側のブラウザAの受信ボックスに届くと同時に、 右側のブラウザBの受信ボックスにも届いています。 MIDIはloopMIDI Portの仮想ケーブルを通りました。