カラクリスタ

「人並みの人生」なんて失かった人の個人ブログ

Synthesizer V Pro を NixOS で動かした

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