[Shell] オープンソースなFluidSynthでMIDIファイルを再生する
FluidSynth
を使って、MIDIファイルを再生してみました。コマンドラインから操作できるので、覚えておくといろいろ応用できるのでとても便利です。
fluidsynthとは、フリーでオープンソースのシンセサイザーです。macOS、Windows、Linuxに対応しています。この記事ではmacOSでの使い方を説明しています.
いわゆるアナログシンセやFMシンセのように、基本波形を変調して、音色を合成するというより、SoundFontという音色データを再生するサンプラーのような感じですね。なので、音質は、SoundFontのデータ次第です。
インストール方法
インストールには、次のふたつが必要です。
- FluidSynth - 本体
- SoundFont - 音データ
FluidSynth
MacPortユーザーであれば、次のコマンドで簡単にインストールできます。
$ sudo port install fluidsynth
Hombrewでも、homebrew-coreに登録されていますので、簡単ですね。
$ sudo brew install fluidsynth
SoundFont
次に、音色のデータSoundFont
を別途インストールします。
SoundFonntにもいろいろフリーで利用できるものがネットで公開されていますが、おすすめは
GeneralUser GS (the GeneralUser SoundFont by S. Christian Collins (GS))
です。他にもいろいろ試してみましたが、これが一番、手軽 & 高音質で気に入りました。
MacPortsユーザーなら幸せなことに、パッケージが用意されています。
$ sudo port install generaluser-soundfont
他のユーザーでも、簡単に公式サイトからダウンロード&インストールできるので、問題ないはずです。
使い方
それでは、実際に再生してみましょう。
コマンドラインの使い方です。
fluidsynth {オプション} {SoundFontのパス} {MIDIファイル}
例えば、こんな風に入力すれば、MIDIが再生されるはず。
$ fluidsynth -i ~/SoundFonts/Yamaha_XG_Sound_Set.sf2 /opt/local/share/examples/generaluser-soundfont/*.mid
最初の引数-i
を指定しておくと、再生終了後、FluidSynthも終了します。
指定しない場合、再生終了後もFuidSynthのシェルが起動したままになります。今回は単なるMIDIプレイヤーとして使いたいだけなので、-i
を指定しておいたほうがいいでしょう。
2番目の引数は、SoundFontのファイルパスを指定しています。
SountFontのインストール方法によって違いますが、MacPortsのパッケージを使っている場合、次のコマンドで確認できます。
$ port contents generaluser-soundfont
3番目の引数は、再生するMIDIファイルです。サンプルのMIDIファイルがGeneralUser GS
に含まれていますので、今回はそれを指定しています。
*.mid
とアスタリスクで指定すれば、複数のMIDIファイルを連続再生することができます。
ちなみにSondFontのGeneralUser GS
が想像以上に高音質でおどろきました。同梱されていたMIDIファイルThe Christmas Song.mid
がとても気に入ったので、季節はずれながら、よく聴いています。
ちなみに、いつもサウンドフォントのパスを指定するのは面倒なので、aliasを使って
alias midi='/opt/local/bin/fluidsynth -i /opt/local/share/sounds/sf2/GeneralUser_GS_v1.47.sf2'
などと設定しておくと
$ midi {ファイル名}
で再生できるので便利かと思われます。