別にそれで曲が作れるようになる……という訳でもないんですが、以前購入していたSynthesizer V Proについて、 Windows VM上で動かすだけではなくNixOSでも動いたらいいなーということでやってみました。
ちなみに先に結論を書いておくと、動かすこと自体は割とサックリできます。 ただnixpkgsへのパッケージングはちょっと難しいかなーという感じですね。
環境
- OS: NixOS master at
f5f7e40
- Desktop: labwc 0.8.3
- Synthesizer V Pro: v1.11.2
Synthesizer V Pro をNixOSで動かすための default.nix
{ pkgs ? import <nixpkgs> { }, }: with pkgs; (buildFHSEnv { name = "Synthesizer V Pro"; targetPkgs = p: with p; [ alsa-lib brotli bzip2 curl freetype keyutils krb5 libGL libglvnd libidn2 libpng libpsl libssh2 libunistring nghttp2 openssl stdenv.cc.cc stdenv.cc.libc zlib zstd ] ++ (with p.xorg; [ libX11 libXau libXdmcp libXext libxcb ]); pathsToLink = [ "/bin" "/lib" ]; runScript = toString ( pkgs.writeShellScript "synthv-studio" '' unset NIX_LD unset NIX_LD_LIBRARY_PATH # ここの `synthv-studio` のパスについては各自のパスに書き換えてください exec -a synthv-studio "$HOME/Applications/Programs/Synthesizer V Studio Pro/synthv-studio" "''${@:-}" '' ); }).env
使い方・実行の仕方
まずSynthesizer V Proの実行ファイル一式を任意のディレクトリに展開し、その中に上記の default.nix
を配置します。
あとは bash
などで、
$ cd /path/to/synthv-studio $ nix-shell
すれば普通に起動します。楽ちんですね。
動かない場合は?
上記の default.nix
で大体は動くと思うのですが、万が一依存が足りなくて動かない(共有ライブラリに対し No such file or directory
が出るなど)場合、
その依存パッケージ名を targetPkgs
に追加すれば動くはずです。
音声ライブラリはどうインストールするの?
これはまず上記 default.nix
内の exec
から始まる行を一時的にコメントアウトします。
次にその状態で、
$ nix-shell
という形でシェルに入った後、
$ ./synthv-studio ./path/to/voicebank.spvk
と言う流れでコマンドを発行すればインストールできます。
なお私のWayland環境(labwc・wlroots系Wayland Compositor)ではボイスバンクのインストールでドラッグ&ドロップは使えませんでしたが、 Xorg環境ではそっちの手段が使えるかもしれません(未検証)。
※ちなみに私は最初ここに引っ掛かりましたが、まぁなんとかなりました。
何故パッケージングが難しいのか
Synthesizer V Proを実際に動かしたからこそ分かったことですが、
Synthesizer V Proはライセンス情報のファイルも含め、
関連ファイルを synthv-studio
と同じディレクトリにあるサブディレクトリへ保存します。
そのため synthv-studio
の実行バイナリが存在するディレクトリは書き込み可能でなければならないのですが、
/nix/store
は通常であれば読み込み専用であるため、そこの都合上パッケージングは難しいかな、と判断しました。
とは言え synthv-studio-run
と言った名前で実行環境用シェルに入るラッパーをnixpkgsへ組み込むことは出来るので、
もしSynthesizer V Proを実行できる環境をシステムへ組み込みたいのであれば、そちらの手法を使うと良いかもしれません。
以上
という事で今回の話はそんな感じでした。
まぁNixOSでSynthesizer V Proを動かそうとする人間なんてそうそう居ないような気がしますが、 何かの役に立てば幸いです。