juicysfpluginをUbuntuデスクトップ環境で使うためのまとめ

小ネタ。

サウンドフォントにはなかなかいい音をもっているものが多く、また統合音源として各種サンプルをバンドルしているものはMIDI楽器として楽に使いやすいので、それなりに活用したい。

juicysfpluginはfluidsynthを利用してサウンドフォントをVSTiにしてしまおうというJUCEベースのオーディオプラグインだ。Linuxでも使えるようには作られているようだ(外部コントリビューターがLinuxサポートを追加している)。

github.com

ただし、juicysfpluginはfluidsynth 2.0系列を前提としている。Ubuntu用にパッケージされているfluidsynthは(というか大半のLinuxデスクトップ環境のfluidsynthが)やや古い1.1系列のもので、fluidsynth 2.0とはAPIがだいぶ異なるようだ。そのため、まずfluidsynth 2.0をビルドするところから始めないといけない。

github.com

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などを起動することで呼び出せている。

f:id:atsushieno:20191005213812p:plain
juicysfplugin on Waveform10 on Linux