別にそれで曲が作れるようになる……という訳でもないんですが、以前購入していた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を動かそうとする人間なんてそうそう居ないような気がしますが、 何かの役に立てば幸いです。
