Carlaのインストール方法

MusE

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』など解説している数多のウェブサイトに譲る。

  1. Rosegardenの「MIDIデバイスの操作」という画面の「MIDI再生」の新規ボタンでガンガンとMIDIポートを作成する。例えばGeneral MIDI Device 1、General MIDI Device 2、General MIDI Device 3…といったように。なお、これらの名前は任意だが、和文等の2バイト文字は避ける。
  2. 「MIDIデバイスの操作」画面、QjackCtlの「Graph」画面、又は各クライアントのオプション画面で、起動させたRosegardenと各クライアントとをMIDIルーティングさせる。例えばGeneral MIDI Device 1にはAlsaModularSynth(略称AMS、フルモジュラーシンセ)、General MIDI Device 2にはBristol(様々なビンテージシンセをシミュレート)、General MIDI Device 3にはhorgand(オルガンを模したFMシンセ)…といったように。
  3. 各トラックの「トラックパラメータ」の「デバイス」に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ルーティングしてみる(音声ルーティングは省略)。

  1. Rosegardenの「MIDIデバイスの操作」という画面の「MIDI再生」の新規ボタンでGeneral MIDI Device 1を作成する。
  2. CarlaをJACK multiモードで起動する。
  3. QjackCtlの「Graph」画面でRosegardenのGeneral MIDI Device 1とシステムのMIDI Through Port-0とをMIDIルーティングさせる(a2jmididというALSAシーケンサーとJACKとのブリッジデーモンを使用しない場合)。
  4. CarlaのAdd Pluginボタンで「Add Plugin」画面を呼び出し、Carla内蔵の「MIDI Split」というプラグインを追加する。
  5. CarlaのPatchbayタブでシステムのmidi_capture_1とMIDI Splitのevents-inとをMIDIルーティングさせる。
  6. CarlaのAdd Pluginボタンで「Add Plugin」画面を呼び出し、適当なインストゥルメントを追加する。例えばMDA.LV2のMDA DX10(ヤマハDXシリーズにインスパイアされたFMシンセ)、MDA EPiano(ローズピアノをシミュレートしたエレピ)、MDA JX10(ローランドJX-10をシミュレートした減算方式シンセ)…といったように。
  7. 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…といったように。
  8. 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ルーティングさせる。

  1. 「MIDI Split」ではなくCarla内蔵の「MIDI Channel Filter」というプラグインを追加
  2. 当該プラグインを経由する形で各インストゥルメントをMIDIルーティング
  3. 各インストゥルメントのエディット画面の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とその関連ソフト(LAMEFFmpeg・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オプションで変更可能。

結果

x42-plugins Meter Collection

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

うん、Carlaのおかげでいい感じにできるようになった、できた曲はさておき。