見出し画像

MIDI機器を使わずMIDIを使う

割引あり

どういう場面で使うかわからないけど、MIDI経由で操作したいアプリを、フィジカルコントローラなどを使わず、コマンドラインで操作する方法。(有料記事ですが無料で最後まで読めます)

用意するもの

loopMIDI
MIDIメッセージをループバックさせる仮想デバイス。これをつかうことでコマンドで送信したMIDIメッセージを、同じパソコン上で動作するMIDI対応アプリに送ることができる。

sendmidi
MIDIメッセージを送信することができるコマンドレット(といっていいのか?)。Githubで公開されている。

MIDI対応アプリ
MIDIでコントロールしたいアプリを用意する。当然MIDIに対応していないと利用できない。ここではMIDIプラグインを読み込ませたOBSを用意した。

loopMIDIの起動

ダウンロードしたloopMIDIのインストーラーを起動して、インストールを完了させ、起動する。

起動直後のloopMIDI

My Loopbacl MIDI portsに何も含まれていないので、画面下部の[+]をクリックして追加する。すると、loopMIDI portが追加される。

追加されたloopMIDI Port

sendmidiのインストール

sendmidiはgithubからダウンロードする。プロジェクトページの右側にReleasesというセクションがあるので、その中にあるReleasesをクリックする。

releasesの表示

Latestの表示があるreleaseの中にあるsendmidi-windows-1.3.1.zipをクリックしてzipファイルをダウンロードする。これを解凍するとCOPYING.md、README.md、sendmidi.exeの3つのファイルが生成されるので、sendmidi.exeをC:\Windows\System32フォルダに保存する(セキュリティ的に不安がある場合は、別のフォルダでも可)。

生成されたファイル

動作確認として、コマンドプロンプトを立ち上げ、以下のコマンドを実行してみる。

sendmidi list

すると、現在このパソコンで利用できるMIDI機器が一覧表示される。この中にloopMIDIが見えれば、loopMIDI、sendmidiともに正常に動作していることになる。

sendmidiを実行した結果。3行目にloopMIDIが見える。

動作確認

実際にMIDIメッセージが送信できるか確認する。ここでは先述の通りobs-midi-mgをインストールしたOBSを利用する。

obs-midi-mgの利用方法の詳細は他にゆずることにするが、一般的なMIDI連携方法としては、アプリ側でMIDIメッセージを待ち受け、ユーザーが送信したメッセージを認識したうえで、機能を追加するという流れになる。この作業をbindingなどと呼ぶ。

以下はobs-midi-mgのバインド設定画面である。真ん中の緑色の画面内にあるDeviceにloopMIDI Portを選択し、最下部ののボタンを何度かクリックして「Listening for Message Continuously」にセットする。

obs-midi-mgの設定画面

続いてコマンドプロンプトから以下のコマンドを実行する

sendmidi dev "loopMIDI" ch 1 on 65 127

すると、obs-midi-gmの画面が以下のように変化すし、MIDIメッセージが正常に送信されたことがわかる。

sendmidiから受け取ったmessageが反映された

この仕組みを利用することで、コマンドラインからMIDIメッセージを送信することができる。なお、基本的なMIDIメッセージは
チャンネル番号、ノート番号、ベロシティ
の順番になっており、ノート番号がフェーダーやノブ、スイッチなどに割り当てられ、ベロシティは可変値(フェーダーやノブの位置)として扱われることが多い。たとえばノート65番をある音声チャンネルの音量として設定した場合、127を送信すると最大音量、0を送信するとミュートといった利用方法ができるようになる。

結局何に使うの?

これが最大の問題。たとえばタイマーでコマンドを発行してMIDIで操作できるミキサーの特定のチャンネルの音を出したり止めたり、上記のOBSであれば時間ごとにシーンを自動的に切り替えるなどといった操作ができるようになる。とにかく、MIDIでできることがMIDIコントローラを使わずにコマンドで実行できる=いろんなものが自動化できるようになる、という一部の人しか喜ばないネタでした。

ここから先は

0字

期間限定!Amazon Payで支払うと抽選で
Amazonギフトカード5,000円分が当たる

この記事が気に入ったらチップで応援してみませんか?