はじめに
以前作った「ProcessingとKinectで作る身体全体をシーケンサにするマジキチ楽器」の記事に対して、コメント欄でハードMIDI音源の代わりにソフト音源使う方法ないでしょうか?という質問があって、そのときは調べてもよくわからなかったのですが、色々調べ続けた結果ようやくできるようになったのでメモ代わりに公開します。
やってみたら、Macの場合は思ったよりシンプルにできて凄く便利でした。「you got mail」さんのコメントのおかげです。ありがとうございました。
環境は、iMac Retina 4K 2017 + macOS Sierra 10.12.6ですが、他の組み合わせでも基本的には同じと思います。
外部MIDI音源をソフトウェア化(MIDIのループバック方法)
Mac限定です。Windowの人はグーグル先生に聞けばなんとかしてくれるでしょう。まずはAudio MIDI設定という標準アプリを起動して下さい。アプリケーション→ユーティリティの下にあります(/Applications/Utilities)。その後、メニューから「ウィンドウ -> MIDIスタジオを表示」を選択して下さい。
下図のようなウィンドウが表示されます。
上図のIACドライバというのがMacの仮想MIDIポートらしいのでこれをダブルクリックします。
上記のようなウィンドウが出るので、以下設定します
- 装置はオンラインにチェックを入れる
- ポートの名前を設定する
ポートが何もなければ、「+」をクリックして追加してやりましょう。名前は何でもよいのですが、2バイト文字(日本語)は使わない方が無難と思います。私は「IACBUS」としました。
設定はこれでOKです。ね、簡単でしょ?あとは適当なソフトシンセが入ったソフトを立ち上げましょう。Macの場合はGaragebandが良いと思うので、Garagebandの例を紹介します。
まず、Garagebandを起動します。以下のような画面が表示されるので「空のプロジェクト」を選択します。
次に以下画面で「ソフトウェア音源」を選択します。
メニューの「Garageband -> 環境設定 -> オーディオ/MIDI」を確認すると以下のように表示されます。
Garagebandは自動でIACドライバを認識してくれるらしく、既にMIDIのステータスでMIDI入力が検出されていることがわかりますので、これでOKです。
あとはMIDIを送信するソフトで、MIDIデバイスとしてIACドライバを指定してやればOKです。プログラムのソースとしては、Processingの場合はmidiOut = midiIO.getMidiOut(0,1);
の一番最後の1をIACのドライバのデバイスナンバに変えてやればよいです。デバイスナンバは、プログラム実行すると下のデバッグウィンドに「output 0 : IACBUS」 といった感じに表示されます。この場合は、midiOut = midiIO.getMidiOut(0,0);
と設定してやればよいことになります。
これは、他にも応用効きそうですね。
応用例
ソフトシンセ、MacだとGaragebandの他、MainStageというアプリが色んな音源使えてオススメです。またGaragebandでも、プラグインを入れて色々な音源を試すことができます。フリーのプラグインだとYMCKさんのMagical 8bit Pluginなんかが手軽にチップチューンが楽しめて面白いですね。
プラグインの変更は、Garagebandの以下の真ん中下の、プラグインという項目で変更できます。
詳細は、以下のサイトがわかりやすいと思います。
変更履歴
- 2018/05/03 全体的に更新