自作のMIDIプレイヤーで外部接続したMIDI機器を鳴らしてデバッグとかしてたんですが、MIDI機器がないときにでもデバッグとかできたらいいな。。。と思ってGarageBandをソフトウェアシンセとして使用してきたんです。
が。。。いちいち起動するのが面倒で、とりあえずピアノの音っぽいのが慣ればいいのでもっと簡単なアプリがないかと探したんですが。。。これがない。
デバッグ用ではあるけど、ないなら自分で作ろうか、とあれこれやっていました。Pythonで作ったもののどうもうまくいかない、Rustで作ってもらったらとりあえず動作しました。
PythonもRustも結局はソフトウェアシンセのfluidsynthというアプリをバックグラウンドで使うという方法で作っていったようですが、Rustで動作したあとどうしてかMIDIの仮想ポートが2つ立ち上がっていて、なんでそうなるのか聞いてみると 実はfluidsynthだけでサーバーモードとして起動してMIDI INを受け付けることができる って知ったわけでした。
なーんやそれ。
ということでコマンドをメモしておきます。
準備
brew install fluidsynth
起動
fluidsynth -a coreaudio -m coremidi -s
MIDI情報をダンプしたければ -dをつけるとターミナルに表示されます。
fluidsynth -a coreaudio -m coremidi -s -d
さらに、サウンドフォント(音源ファイルですね)はインストールされていれば探しに行くようですが、入ってなければ指定すればいいようです。
ちなみに僕はカワイさんのUprightPianoKW-20220221.sf2というファイルをダウンロードして利用させてもらったので、以下のコマンドになります。
fluidsynth -a coreaudio -m coremidi -s -d UprightPianoKW-20220221.sf2
で、MIDIシーケンサアプリ(例えば、MuseScore4など)でMIDI出力を選択するところに「Fluidsynth virtual port (...)」という感じの選択肢が出てきますので選択して再生すると音がなります。
オプションとかはチャッピーとかに聞いて下さい。-s がサーバーモードでの起動らしいです。
便利ですね。
サウンドフォントは僕は以下のページからダウンロードしました。色々あるようです。
でわ。