はじめに
LinuxでもVOCALOIDに歌わせられると聞いたが,やってみたら古い記事しかなくてハマったので書いておきます.
概要
LinuxでWindows向けのソフトを使用するために Wine を使います.また,VOCALOIDのエディタであるPiapro StudioはVSTプラグインです.VSTプラグインを開くために VSTホスト というものが必要なので,今回は dssi-vst を使用します.
環境
Ubuntu 18.04.3 LTS (UbuntuStudio)
VOCALOID4 鏡音リン・レン
Piapro Studio VSTi 2.0.4.3
方法
VOCALOIDをインストール
VOCALOIDを買ってきましょう.
-
Windows用のDVDをセットします.
RinRen/Crypton Software Installer (32bit)/setup.exe
を Wine で開いてインストールしてください. 32ビット バージョンなので,間違えないようにしましょう. -
RinRen/RINLEN V4X Installer/setup.exe
を Wine で開いてインストールしてください. -
~/.wine/drive_c/Program Files (x86)/VOCALOID4/Activator/Activate4.exe
を Wine で開いてアクティベートします.
dssi-vstでPiapro Studioを使えるようにする
-
GitHubからdssi-vstをインストールします.
-
ライブラリをインストールします.
何も考えずに以下をターミナルにコピペしてください.
$ sudo apt install -y libasound2-dev lib32z1-dev liblo-dev wine32-tools ; sudo apt install -y libjack-dev:i386 ; sudo cp /usr/lib/i386-linux-gnu/libjack.a libjack.a.bkup ; sudo cp /usr/lib/i386-linux-gnu/libjack.so libjack.so.bkup ; sudo apt install -y libjack-dev ; sudo mv libjack.so.bkup /usr/lib/i386-linux-gnu/libjack.so ; sudo mv libjack.a.bkup /usr/lib/i386-linux-gnu/libjack.a ;
このコマンドで何をやっているかというと...
必要なライブラリをインストールしています.libasound2-dev
lib32z1-dev
liblo-dev
wine32-tools
libjack-dev
が必要です.
ただし,libjack-dev
は32bitのライブラリを残しつつ64bitバージョンをインストールしています.まず32bitバージョン(libjack-dev:i386
)をインストールし,ライブラリを一旦カレントディレクトリにコピーします.次に64bitバージョンをインストールしますがこの際に32bitバージョンは削除されます.そして,コピーしておいた32bitのライブラリを元の場所に戻します.
最後に$ sudo make
でコンパイル,$ sudo make install
でLinuxにインストールします.
エラー: 「bits/c++config.h: そのようなファイルやディレクトリはありません」が出たら...
In file included from dssi-vst-scanner.cpp:10:
/usr/include/c++/9/iostream:38:10: fatal error: bits/c++config.h: そのようなファイルやディレクトリはありません
38 | #include <bits/c++config.h>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
winegcc: g++ failed
make: *** [Makefile:78: dssi-vst-scanner.wine.o] エラー 2
上のようなエラーが出た人は以下のコマンドを実行してからmake
でコンパイルを試してみてください.
sudo apt-get install -y gcc-multilib g++-multilib
実行
$ env WINEPREFIX=/home/USERNAME/.wine VST_PATH='/home/USERNAME/.wine/drive_c/Program Files (x86)/Vstplugins/' WINE_RT=15 WINE_SVRT=10 vsthost 'Piapro*Studio*VSTi.dll'
USERNAME
のところは適切に書き換えてください.
上記コマンドで実行できますが,デスクトップエントリも作っておきましょう.以下のファイル~/.local/share/applications/PiaproStudio.desktop
を作成すると,アプリケーションを検索できるようになります.
[Desktop Entry]
Name=Piapro Studio
GenericName=Piapro Studio VSTi
Comment=VOCALOID4 Editor
Exec=env WINEPREFIX=env WINEPREFIX=/home/USERNAME/.wine VST_PATH='/home/USERNAME/.wine/drive_c/Program Files (x86)/Vstplugins/' WINE_RT=15 WINE_SVRT=10 vsthost 'Piapro*Studio*VSTi.dll'
Icon=/home/USERNAME/.wine/drive_c/Program Files (x86)/Crypton/Piapro Studio VSTi/Data/images/icon/notification/PPS48.png
Terminal=false
Type=Application
Categories=AudioVideo;
ハマった箇所
この章は読み飛ばしてもらって構いません.
主に64bitか32bitかでハマりました
主に64bitか32bitかでハマりました.apt
でインストールするときに:i386
をつけると32bitバージョンがインストールできるようです.また,apt
で64bitバージョンと32bitバージョンを同時にインストールしようとすると片方が削除されてしまいます.
まず,.h: No such file or directory
というエラーは必要なライブラリをインストールしていないことによるものでした.
m32
をつけて32bitで.o
ファイルを作ったのに64bitでリンクしようとすると以下のようなエラーが出ました.
ld: 形式 elf32-i386 (/usr/lib/i386-linux-gnu/wine/libwinecrt0.a(exe_entry.o)) から形式 elf64-x86-64 (dssi-vst-scanner.iGjSnK.o) への再配置を伴う再配置可能リンクはサポートされていません
sudo apt install wine32-tools
をしないと以下のようなエラーが出ます.64bitバージョンがインストールされているときも同じようになりました.
wineg++ -m64 dssi-vst-scanner.wine.o libremoteplugin.wine.a -m64 -L/lib/x86_64-linux-gnu -L/usr/lib -L/usr/lib/wine -L/usr/lib/x86_64-linux-gnu/wine -lpthread -lrt -lz -o dssi-vst-scanner.exe
/usr/bin/ld: -ladvapi32 が見つかりません
/usr/bin/ld: -luser32 が見つかりません
/usr/bin/ld: -lwinecrt0 が見つかりません
/usr/bin/ld: -lkernel32 が見つかりません
/usr/bin/ld: -lntdll が見つかりません
/usr/bin/ld: -lwine が見つかりません
collect2: error: ld returned 1 exit status
sudo apt install libjack-dev
で64bitのlibjackをインストールすると,以下のようなエラーが出ました.
wineg++ -m32 dssi-vst-server.wine.o libremoteplugin.wine.a -m32 -L/lib/i386-linux-gnu -L/usr/lib32 -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine -lpthread -lrt -lz -ljack -o dssi-vst-server.exe
/usr/bin/ld: 互換性のないを //usr/lib/x86_64-linux-gnu/libjack.so スキップしました (-ljack を探索している時)
/usr/bin/ld: 互換性のないを //usr/lib/x86_64-linux-gnu/libjack.a スキップしました (-ljack を探索している時)
/usr/bin/ld: -ljack が見つかりません
collect2: error: ld returned 1 exit status
かと言って,sudo apt install libjack-dev:i386
で32bitのlibjackをインストールすると,以下のようなエラーが出ます.
No package 'jack' found
g++ remotevstclient.o vsthost.o libremoteplugin.unix.a -lpthread -lrt -lz -o vsthost
vsthost.o: 関数 `jackProcess(unsigned int, void*)' 内:
vsthost.cpp:(.text+0x94): `jack_port_get_buffer' に対する定義されていない参照です
32bitのライブラリを残しつつ,64bitライブラリをインストールすることで解決できました.
VSTホスト で FST(FreeST) というのも代表的なのですが,コンパイルできませんでした.これも32bitのglibがないのが原因と思われます.必要そうなライブラリをインストールしてコンパイルすると,以下のようなエラーが出ました.
/usr/include/glib-2.0/glib/gmacros.h:142:29: error: size of array ‘_GStaticAssertCompileTimeAssertion_0’ is negative
終わりに
これで,Linux上でVOCALOIDが歌ってくれます.DAWと同期する方法は現在模索中です.
参考
WineHQ: Applications by Yamaha
dssi-vst
GitHub: falkTX/dssi-vst
雑メモ: dssi-vst のインストール(Ubuntu Studio 8.04)