Carlaのインストール方法

Carlaとは
Carlaとは、FLOSS(自由ソフトウェアかつオープンソース)でクロスプラットフォームなオーディオプラグインホスト。我がantiX 19 i386(Debian 10 BusterベースのLinuxディストリビューション)へこれをインストールしてみた。CarlaのLinuxにおける特徴は以下のとおり。
- LADSPA・DSSI・LV2・VST2・VST3プラグイン形式に対応
- SF2・SF3・SFZ形式のサウンドフォントに対応
- 音声ファイル・MIDIファイルプレイヤーを内蔵
- MIDI CCを介したプラグインパラメーターの自動化
- OSCを介したリモート制御
- ラック・パッチベイ処理モードに加え、JACK下におけるシングル・マルチクライアント処理モードを搭載
- ALSAなどネイティブなオーディオドライバーとJACKに対応
- LV2プラグインとしてCarlaでロード可能なプラグイン又はサウンドバンクをエクスポート
- 64ビットOSで32ビットプラグイン、又はLinuxでWindowsプラグインなどプラグインブリッジに対応
- オーディオプラグインとしてJACKクライアントをホスト
- JACKトランスポート等によるトランスポート制御や同期
Carla導入の目的
Windowsでは、Domino(MIDIシーケンサー)→MIDI Yoke又はloopMIDI(仮想MIDIケーブル・仮想MIDIポート)→VSTHost(プラグインホスト)→VSTプラグインとMIDIルーティングさせていた。一方、RosegardenというDomino風なピアノロール編集を主体にしたLinux系・Unix系OS向けDigital Audio Workstation(DAW)は、LADSPA・DSSIプラグインのみに対応。そこで、WindowsのときのようにRosegarden→JACK→Carla→LV2・VSTプラグイン等とMIDIルーティングさせ、より多くのプラグインを使用するのが狙い。
これまで必要に応じてJACKクライアントをMIDIルーティング・音声ルーティングさせてきたが、Carlaを導入することでグッと選択肢が広がる筈。
WineHQのインストール
Windowsのオーディオプラグインを動作させるため、まず、WineHQのリポジトリーの追加、Debian公式パッケージのWineの削除、WineHQのWine Stable(安定版)5.0.0のインストール、Q4WineというWineのGUIのインストール、Winetricksのインストールを実行。
一般的にはWine Staging(テスト版)を選択するところだが、Linuxネイティブなプラグイン等で音楽環境を構築済で、Windows VSTプラグイン等の使用はあまり想定していないため、個人的には安定版で十分かなと。
cd ~/ wget -nc https://dl.winehq.org/wine-builds/winehq.key sudo apt-key add winehq.key rm winehq.key echo 'deb https://dl.winehq.org/wine-builds/debian/ buster main' >> /etc/apt/sources.list.d/various.list echo 'deb-src https://dl.winehq.org/wine-builds/debian/ buster main' >> /etc/apt/sources.list.d/various.list sudo apt uninstall wine wine-* wine32 wine32-* libwine libwine-* dxvk-wine32-* winetricks sudo apt update && sudo apt full-upgrade && sudo apt clean sudo apt install wine-stable wine-stable-dev q4wine aria2 binutils cabextract p7zip unzip fuseiso cd ~/bin wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks chmod +x winetricks q4wine
Q4Wineを起動してWineの初期設定を行っておく。Q4Wineの初期設定は、解説している数多のウェブサイトに譲る。なお、我がOS環境は32ビットで、64ビットではないため、64ビット関係のパッケージはインストールしていない(以下同じ)。また、オーディオドライバーにはALSA・JACKを使用し、PulseAudioみたいなじゃじゃ馬やPipeWireみたいな新参者は導入していないので念のため。
Carlaのビルドとインストール
Windowsのオーディオプラグインを動作させるため、MinGWによるWindowsのビルド環境を整備してから、GitでリポジトリーからローカルへCarlaのソースコードをクローンする。
cd ~/ sudo apt install g++-mingw-w64-i686 gcc-mingw-w64-i686 build-essential git doxygen libmagic-dev ladspa-sdk dssi-dev lv2-dev liblo-dev libasound2-dev libpulse-dev x11proto-dev libgtk2.0-dev libgtkmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev libqt4-dev python-qt4-dev qtbase5-dev pyqt5-dev pyqt5-dev-tools python3-pyqt5.qtsvg libfluidsynth-dev python3-rdflib libgl*-mesa-dev git clone --recursive -b v2.1-rc1 https://github.com/falkTX/Carla carla-build cd carla-build export PATH=$PATH:/opt/wine-stable/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/wine-stable/lib make features EXTERNAL_PLUGINS=true PREFIX=$HOME/.local DEBUG=false CFLAGS='-mfxsr' CXXFLAGS='-mfxsr'
このステップで不足しているライブラリー等を確認。不足していればインストールし、不足がなくなるまで上の最後の1行を繰り返す。不足がない、あるいは不足しているライブラリー等を必要としている機能を諦めた場合は、次のステップへ進む。
make EXTERNAL_PLUGINS=true PREFIX=$HOME/.local DEBUG=false CFLAGS='-mfxsr' CXXFLAGS='-mfxsr' make win32 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ make wine32 make install PREFIX=$HOME/.local
Carlaの初期設定は、解説している数多のウェブサイトに譲る。なお、Experimentalな機能を有効にして、Windows VSTプラグインを読み込めるように設定しておく。さらに、Windows VSTプラグインも検索できるようにしておく。
ちなみに、ビルドは煩雑なのでどうしてもパッケージ管理システムでインストールしたいという場合は、Debian系のディストリビューションならばLibraZiKのpas à pas(Busterベース)のリポジトリーを追加するという裏技があるようだが、怖くてテストしていない。
Rosegardenとの接続
Rosegardenで通常のALSA・JACKクライアントとMIDIルーティングさせる場合の例は以下のとおり(音声ルーティングは省略)。なお、Rosegardenの操作方法は、『第176回 Rosegardenで作曲する | gihyo.jp』など解説している数多のウェブサイトに譲る。
- Rosegardenの「MIDIデバイスの操作」という画面の「MIDI再生」の新規ボタンでガンガンとMIDIポートを作成する。例えばGeneral MIDI Device 1、General MIDI Device 2、General MIDI Device 3…といったように。なお、これらの名前は任意だが、和文等の2バイト文字は避ける。
- 「MIDIデバイスの操作」画面、QjackCtlの「Graph」画面、又は各クライアントのオプション画面で、起動させたRosegardenと各クライアントとをMIDIルーティングさせる。例えばGeneral MIDI Device 1にはAlsaModularSynth(略称AMS、フルモジュラーシンセ)、General MIDI Device 2にはBristol(様々なビンテージシンセをシミュレート)、General MIDI Device 3にはhorgand(オルガンを模したFMシンセ)…といったように。
- 各トラックの「トラックパラメータ」の「デバイス」にGeneral MIDI Device 1、General MIDI Device 2又はGeneral MIDI Device 3を選択すれば、当該トラックはMIDIルーティングされた各クライアントの音を鳴らす。
QjackCtlというJACKのGUIの操作方法は、解説している数多のウェブサイトに譲る。一方、CarlaとのMIDIルーティングの場合、上例を応用してGeneral MIDI Device 1にはCarlaその1、General MIDI Device 2にはCarlaその2、General MIDI Device 3にはCarlaその3…といったようにCarlaを複数起動させる方法もできそうだが、この方法には無駄が多い。
そこで、『Carla: one instrument only per midi channel? - LinuxMusicians』に倣って以下の例のとおりMIDIプラグインを利用し、General MIDI Device 1だけで簡単にMIDIルーティングしてみる(音声ルーティングは省略)。
- Rosegardenの「MIDIデバイスの操作」という画面の「MIDI再生」の新規ボタンでGeneral MIDI Device 1を作成する。
- CarlaをJACK multiモードで起動する。
- QjackCtlの「Graph」画面でRosegardenのGeneral MIDI Device 1とシステムのMIDI Through Port-0とをMIDIルーティングさせる(a2jmididというALSAシーケンサーとJACKとのブリッジデーモンを使用しない場合)。
- CarlaのAdd Pluginボタンで「Add Plugin」画面を呼び出し、Carla内蔵の「MIDI Split」というプラグインを追加する。
- CarlaのPatchbayタブでシステムのmidi_capture_1とMIDI Splitのevents-inとをMIDIルーティングさせる。
- CarlaのAdd Pluginボタンで「Add Plugin」画面を呼び出し、適当なインストゥルメントを追加する。例えばMDA.LV2のMDA DX10(ヤマハDXシリーズにインスパイアされたFMシンセ)、MDA EPiano(ローズピアノをシミュレートしたエレピ)、MDA JX10(ローランドJX-10をシミュレートした減算方式シンセ)…といったように。
- CarlaのPatchbayタブでMIDI Splitのmidi-out_n(nはMIDIチャンネル番号)と各インストゥルメントのevents-inとをMIDIルーティングさせる。例えばmidi-out_1とMDA DX10、midi-out_2とMDA EPiano、midi-out_3とMDA JX10…といったように。
- Rosegardenの各トラックの「トラックパラメータ」の「デバイス」にGeneral MIDI Device 1を選択し、「楽器」に#1等のMIDIチャンネル番号を選択すれば、当該トラックはMIDIルーティングされた各インストゥルメントの音を鳴らす。例えば「楽器」に#1であればMDA DX10、#2であればMDA EPiano、#3であればMDA JX10…といったように。
このようなMIDIプラグインはx42-plugins MIDI Filter Collection(LV2)・Piz MIDI plugin collection(VST)等にもあるので、様々なプラグインをテストしてみようと思う。
なお、CarlaをPatchbayモード又はRackモードで起動させているとき、上例の「MIDI Split」は追加できない。このときは、簡単にテストしただけなので大雑把に言うと、『Carla Patchbay Mode: MIDI Split - LinuxMusicians』のとおり以下の方法でMIDIルーティングさせる。
- 「MIDI Split」ではなくCarla内蔵の「MIDI Channel Filter」というプラグインを追加
- 当該プラグインを経由する形で各インストゥルメントをMIDIルーティング
- 各インストゥルメントのエディット画面のMIDI Control Channelで各インストゥルメントのMIDIチャンネル番号を割当て
複数のMIDIチャンネルを使用するマルチティンバーなインストゥルメント等では、より詳細にフィルタリングしなければならないので念のため。いずれにしても言えることは、dssi-vstといったブリッジやJalvといったプラグインホストを導入するより、個人的にはCarlaのほうがVSTHostに近い感覚で使用できるということ。
CarlaでのWindows VSTプラグインのブリッジ
Windows VSTプラグインが「Add Plugin」画面に表示されない場合は、ファイルマネージャーからCarlaのRackタブ又はPatchbayタブへ当該プラグインのDLLファイルをドラッグアンドドロップすれば追加可能。WinetricksでGDI+をインストールしたのを除き、ほぼ素の我がWine環境で簡単にテストした古き良きWindows VSTインストゥルメント(VSTi)たち、具体的には以下のVSTiはすべて動作した。
- AquesTone: ボーカルシンセ
- Chip32: チップチューン向けウェーブテーブルシンセ(Linux向けポート版は非GUI)
- Crystal: セミモジュラーシンセ
- Oatmeal: 2オシレーターの減算方式シンセ
- Synth1: Clavia Nord Lead 2をシミュレートしたシンセ
- PG-8X: ローランドJX-8Pをシミュレートしたシンセ
- SQ8L: Ensoniq SQ-80をシミュレートしたウェーブテーブルシンセ
- VOPM: ヤマハYM2151(OPM)をエミュレートしたチップチューン向けFMシンセ(Linux向けポート版は非GUI)
- いくつかのとても古いSynthEdit製VSTi(buzzroomのローランドTB-303を模したBB303iとローランドJP-8000を模したLallapallooza lite、ElektrostudioのARP OdisseyをシミュレートしたODSayとローランドJuno-6をシミュレートしたSxMJuneなど)
ただ、PG-8Xには一部のプリセットでクリックノイズがやや入った。しかし、こういうことはWindowsでもいわゆる相性問題でまれに発生する。だから、やっぱWine Stagingを導入すべきだったか、いやDLLファイルのどれかをオーバーライドすればイケるかも、でも待てよもしかしたら…などと不埒なことを考えるより、そのプリセットを諦めるほうが精神的に良い。
Carlaでのリアルタイム録音
Rosegardenで利用できるプラグインに限りがあるのは、インストゥルメントのみならず、エフェクトにおいても同様。したがって、RosegardenからCarlaへ音声ルーティングして、Carlaでエフェクトをかける機会が増える。そこで、Carlaの音声をキャプチャー(リアルタイム録音)したくなるが、Carlaにはその機能がない。でもAudacity等での録音は大袈裟というときには、以下の方法を用いれば手軽にGUIで録音できる。
- Debian公式パッケージのTimemachineというGTKベースのJACKオーディオレコーダーをインストール(多チャンネル機能、OSC機能あり)
- Debian公式パッケージのQJackRcdというQTベースのJACKオーディオレコーダーをインストール(多チャンネル機能、JACKトランスポートとの連動機能あり)
- Debian公式パッケージのjack_captureというZenityベースのJACKオーディオレコーダーをインストール(多チャンネル機能、OSC機能、JACKトランスポートとの連動機能あり)
- screcordという音声キャプチャーLV2プラグインをビルドしてインストール
Audacityとそのプラグインもひっくるめて、試しに全部インストールしてみる。Audacityとその関連ソフト(LAME・FFmpeg・VAMPプラグイン)はDebian multimediaのパッケージのほうがいいので、そのリポジトリーも追加。
cd ~/ wget https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb sudo dpkg -i deb-multimedia-keyring_2016.8.1_all.deb rm deb-multimedia-keyring_2016.8.1_all.deb echo 'deb https://www.deb-multimedia.org buster main non-free' >> /etc/apt/sources.list.d/debian.list echo 'deb https://www.deb-multimedia.org buster-backports main' >> /etc/apt/sources.list.d/debian.list sudo apt update && sudo apt full-upgrade && sudo apt clean sudo apt install audacity lame ffmpeg rubberband-vamp bbc-vamp-plugins timemachine qjackrcd jack-capture zenity git clone --recursive -b v0.2 https://github.com/brummer10/screcord.lv2 cd screcord.lv2 make CFLAGS='-DNDEBUG -mfxsr' CXXFLAGS='-DNDEBUG -mfxsr' make install
このうち、最もシンプルだったTimemachineを以下のとおり利用することにした。ただ、これの録音開始・終了のMIDI制御ってできないのかな、う~んわからない。
timemachine -p ~/音楽/tm- -f wav
これでTimemachineのGUIが起動。QjackCtlのグラフでCarlaからTimemachineへ音声ルーティングさせ、Timemachineのデカい緑色のボタンを押すと、音声キャプチャーが開始され、ボタンが赤色になる。もう一度押すと音声キャプチャーが終了し、ボタンが緑色に戻る。そして、~/音楽/tm-yyyy-mm-ddThh:mm:ss.wav(斜体はISO 8601拡張形式による録音日時)という音声ファイルが生成されている。この保存フォルダーや接頭辞は-pオプションで変更可能。
結果

- QjackCtlのグラフでRosegarden、Carla及びTimemachineを音声ルーティング
- QjackCtlのグラフでRosegarden及びCarlaをMIDIルーティング
- Rosegardenの各トラックをパラ出ししてTimemachineで録音
- Wine上のUTAUでボーカルファイルを作成
- 3と4の各音声ファイルをAudactyと内蔵プラグイン、それにVAMP・LADSPA・LV2・VSTプラグインを駆使して波形編集
- 5の各音声ファイルでRosegardenの新規プロジェクトを作成(1トラックにつき1音声ファイル)
- QjackCtlのグラフでRosegardenからCarlaへ音声ルーティング
- Carla上のx42-plugins Meter Collection、Calf Analyzer、K-Meter、traKmeterのようなメーター系LV2・VST2・VST3プラグインで音域・位相・音量等を確認しながらRosegardenとLADSPAプラグインを駆使して各トラックを調整
- RosegardenからTimemachineへミックスダウンを録音
- Audacityと各プラグインを駆使して音量等を調整しながらマスタリング
うん、Carlaのおかげでいい感じにできるようになった、できた曲はさておき。