![見出し画像](https://assets.st-note.com/production/uploads/images/172026130/rectangle_large_type_2_cdc88f6b8e3cf3400f0fd1e062a1102a.png?width=1200)
MIDI機器を使わずMIDIを使う
どういう場面で使うかわからないけど、MIDI経由で操作したいアプリを、フィジカルコントローラなどを使わず、コマンドラインで操作する方法。(有料記事ですが無料で最後まで読めます)
用意するもの
loopMIDI
MIDIメッセージをループバックさせる仮想デバイス。これをつかうことでコマンドで送信したMIDIメッセージを、同じパソコン上で動作するMIDI対応アプリに送ることができる。
sendmidi
MIDIメッセージを送信することができるコマンドレット(といっていいのか?)。Githubで公開されている。
MIDI対応アプリ
MIDIでコントロールしたいアプリを用意する。当然MIDIに対応していないと利用できない。ここではMIDIプラグインを読み込ませたOBSを用意した。
loopMIDIの起動
ダウンロードしたloopMIDIのインストーラーを起動して、インストールを完了させ、起動する。
![](https://assets.st-note.com/img/1738064393-lnjeh4t61zcH8GIB9iFgbyZO.png)
My Loopbacl MIDI portsに何も含まれていないので、画面下部の[+]をクリックして追加する。すると、loopMIDI portが追加される。
![](https://assets.st-note.com/img/1738064473-yfvCJGSY0BWEqps2wm6R1joc.png)
sendmidiのインストール
sendmidiはgithubからダウンロードする。プロジェクトページの右側にReleasesというセクションがあるので、その中にあるReleasesをクリックする。
![](https://assets.st-note.com/img/1738064653-tB9HWxYTlGEuZUI58AXJsOFL.png?width=1200)
Latestの表示があるreleaseの中にあるsendmidi-windows-1.3.1.zipをクリックしてzipファイルをダウンロードする。これを解凍するとCOPYING.md、README.md、sendmidi.exeの3つのファイルが生成されるので、sendmidi.exeをC:\Windows\System32フォルダに保存する(セキュリティ的に不安がある場合は、別のフォルダでも可)。
![](https://assets.st-note.com/img/1738064729-n8J6lVh7Iv5MxsHFikYEa1ce.png)
動作確認として、コマンドプロンプトを立ち上げ、以下のコマンドを実行してみる。
sendmidi list
すると、現在このパソコンで利用できるMIDI機器が一覧表示される。この中にloopMIDIが見えれば、loopMIDI、sendmidiともに正常に動作していることになる。
![](https://assets.st-note.com/img/1738065002-ecWgQGswSliZODPjqNKrMmCn.png)
動作確認
実際にMIDIメッセージが送信できるか確認する。ここでは先述の通りobs-midi-mgをインストールしたOBSを利用する。
obs-midi-mgの利用方法の詳細は他にゆずることにするが、一般的なMIDI連携方法としては、アプリ側でMIDIメッセージを待ち受け、ユーザーが送信したメッセージを認識したうえで、機能を追加するという流れになる。この作業をbindingなどと呼ぶ。
以下はobs-midi-mgのバインド設定画面である。真ん中の緑色の画面内にあるDeviceにloopMIDI Portを選択し、最下部ののボタンを何度かクリックして「Listening for Message Continuously」にセットする。
![](https://assets.st-note.com/img/1738065317-j59k7LgfTOUPXHFqriKSxuMh.png?width=1200)
続いてコマンドプロンプトから以下のコマンドを実行する
sendmidi dev "loopMIDI" ch 1 on 65 127
すると、obs-midi-gmの画面が以下のように変化すし、MIDIメッセージが正常に送信されたことがわかる。
![](https://assets.st-note.com/img/1738065979-YHZPu0VIXBa5hGw2NkFyW96R.png)
この仕組みを利用することで、コマンドラインからMIDIメッセージを送信することができる。なお、基本的なMIDIメッセージは
チャンネル番号、ノート番号、ベロシティ
の順番になっており、ノート番号がフェーダーやノブ、スイッチなどに割り当てられ、ベロシティは可変値(フェーダーやノブの位置)として扱われることが多い。たとえばノート65番をある音声チャンネルの音量として設定した場合、127を送信すると最大音量、0を送信するとミュートといった利用方法ができるようになる。
結局何に使うの?
これが最大の問題。たとえばタイマーでコマンドを発行してMIDIで操作できるミキサーの特定のチャンネルの音を出したり止めたり、上記のOBSであれば時間ごとにシーンを自動的に切り替えるなどといった操作ができるようになる。とにかく、MIDIでできることがMIDIコントローラを使わずにコマンドで実行できる=いろんなものが自動化できるようになる、という一部の人しか喜ばないネタでした。
ここから先は
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?