小ネタ。
サウンドフォントにはなかなかいい音をもっているものが多く、また統合音源として各種サンプルをバンドルしているものはMIDI楽器として楽に使いやすいので、それなりに活用したい。
juicysfpluginはfluidsynthを利用してサウンドフォントをVSTiにしてしまおうというJUCEベースのオーディオプラグインだ。Linuxでも使えるようには作られているようだ(外部コントリビューターがLinuxサポートを追加している)。
ただし、juicysfpluginはfluidsynth 2.0系列を前提としている。Ubuntu用にパッケージされているfluidsynthは(というか大半のLinuxデスクトップ環境のfluidsynthが)やや古い1.1系列のもので、fluidsynth 2.0とはAPIがだいぶ異なるようだ。そのため、まずfluidsynth 2.0をビルドするところから始めないといけない。
juicysfpluginのチェックアウトのトップディレクトリにgithubからチェックアウトしてcmake -DCMAKE_INSTALL_PREFIX=../../fluidsynth-dist
のようにしてビルドすると、make/make installの後にトップレベルのfluidsynth-dist
ができるはずだ。
JUCEがVST3をサポートしていないLinux環境用にJUCEのプラグインをビルドするには、VST2_SDKを含むVST3SDKが必要になる。githubのリリースからVST2_SDKを含む古いSDKを拾えるようだ(自分でビルドまでしたことはないけど)。
それが出来たら、次はjuicysfplugin.jucer
からそれを参照するようにする必要がある。理想を言えばjuicysfpluginがlibfluidsynth.a
をstaticリンクすることで余計な外部依存ライブラリをなくしたいところだが、とりあえずは共有ライブラリをリンクすることにする。Projucerで開いて、Linuxビルドの設定でCPPFLAGSに-I../../fluidsynth-dist/include
、LDFLAGSに-L ../../fluidsynth-dist/lib64
を指定する(fluidsynth 2.0.7時点ではなぜかlibではなくlib64に生成されるようだ)。
いったんfluidsynth 2.0がビルドできたらjuicysfplugin.jucerを保存してBuild/Linux/Makefileを生成し、make -C Build/Linux
で
juicysfplugin.soをビルドする。
juicysfplugin.soがビルドできたら、これを~/.vst
にコピーすれば良い…というわけではない。このjuicysfplugin.soにはlibfluidsynth.so.2.0.xへの強参照が含まれており、このファイルがLD_LIBRARY_PATHなどでロード可能なパス上に存在していないと、プラグインホストがjuicysfplugin.soのロードに失敗する。~/.vst
にlibfluidsynth.so.2.0.xを置いてもロードはしてもらえない。
自分の手元の環境ではfluidsynth 2.0.xを含むlib64にLD_LIBRARY_PATHを追加したターミナル環境からWaveform10などを起動することで呼び出せている。