Ubuntu Weekly Recipe

第161回オーディオインターフェイスを使う ― Firewire活用編

前回はFirewireオーディオインターフェイス導入編として、Echo社のAudiofire Pre 8を例に挙げ、Ubuntuに認識させるところまでをお伝えしました。今回は実際に使う方法を紹介していきます。

FFADOとJACKサウンドサーバ

実は、Ubuntu標準のサウンドサーバであるPulseAudioからは、Firewire接続のサウンドデバイスを使うことができません。何故かというと、Ubuntu標準のPulseAudioサウンドサーバは、今のところ、前回お伝えしたFFADOライブラリを使うことができないからです。そのため、別なサウンドサーバを導入する必要があります。それが、Jack Audio Connection Kit(JACKサウンドサーバ)です。

JACKサウンドサーバもまた、PulseAudioと同じようにマルチプレクサとしての働きをしますが、より柔軟にアプリケーション/デバイス間をつなぐことができます。また、JACKトランスポート機能によってアプリケーション間の演奏タイミングを同期することができるなど、音楽製作を強く指向したサウンドサーバです。

このJACKサウンドサーバですが、FFADOの他にもALSAやOpen Sound Systemをドライバとして使えるため、Firewire接続のサウンドデバイスだけではなく、USB接続、PCI/PCI-Expressバス接続のサウンドデバイスも同様に使うことができます。

なお、パッケージ「pulseaudio-module-jack」を導入して適切な設定を行うと、PulseAudioサウンドサーバとJACKサウンドサーバを連携することができます。詳細は、また別の機会にお伝えしたいと思います。

JACKサウンドサーバの導入

JACKサウンドサーバを導入するには、パッケージ「jackd」をインストールします[1]⁠。Synapticパッケージマネジャーなどでインストールを開始すると、インストールプロセスの最中に以下の画面が表示されます。

図1 PAMの設定ファイルをインストールするかどうかの選択画面
図1 PAMの設定ファイルをインストールするかどうかの選択画面

これは本連載の第150回でお伝えした、リアルタイムオプションを許可するためのPAMの設定ファイルをインストールするかどうかの画面です。ここでチェックボックスをチェックして進むと、jackdをリアルタイムオプションで実行できるようになります。

なお、このリアルタイムオプションとUbuntu Studioコミュニティがパッケージで提供しているリアルタイムカーネルは、直接の関係がありません。リアルタイムオプションはUbuntuの標準カーネルにおいても、PAMを設定することで利用できます。

JACKサウンドサーバのコントローラー「Qjackctl」

パッケージ「jackd」をインストールすると、依存関係で「qjackctl」もインストールされます。これは、JACKサウンドサーバの実体であるjackdを設定/起動するツールです。起動するには、メニューの「サウンドとビデオ」「JACK Control」を選択します。

図2 JACK Controlの停止時
図2 JACK Controlの停止時

このメインウィンドウでボタン「Setup」をクリックすると、Setupウィンドウが開きます。設定できる項目は多岐に渡るため、今回はFirewireオーディオインターフェイスを接続する上で必要な操作だけをお伝えします。それは、Setupウィンドウの項目「Driver」「Firewire」を、項目「Interface」「(default)」を選択することです[2]⁠。

図3 Setup画面
図3 Setupウィンドウ

設定が完了したら、ボタン「OK」をクリックしてメインウィンドウに戻ります。そして、ボタン「Start」を押してJACKサウンドサーバを開始します。起動すると、JACK Controlウィンドウのトランスポート表示がスタンバイ状態となります。JACKトランスポート機能に対応していないアプリケーションであれば、スタンバイ状態でもポートをつなげることで、音声の入出力ができます。

図4 JACK Controlの起動時
図4 JACK Controlの起動時

Setupウィンドウでは、本連載の第150回でお伝えしたバッファの設定ができます。バッファに関しては、演奏のようにタイミングにシビアな使い方をしないのであれば、十分なサイズ(レイテンシ80〜100msec程度)を確保しておくのが無難でしょう。

また、項目「Realtime」「Priority」でリアルタイムオプションとその優先度を設定できますが、これに関しても同じことが言えます。取得した音声や入力した信号に処理を加えてすぐに出力に回すといった使い方をしない限り、これらのオプションをいじる必要はないでしょう。

AudaciousとAudacityをJACKで使う

Ubuntu標準のアプリケーションのほとんどは、PulseAudioサウンドサーバに対して音声入出力ポートを開きます。しかし今回はJACKサウンドサーバに対応したアプリケーションを使う必要がありますので、本連載で既に扱っているAudaciousとAudacityを紹介します。

第149回で紹介したAudaciousですが、設定画面の項目「オーディオ」で、項目「現在の出力プラグイン」「JACK Output Plugin」を指定することで、JACKサウンドサーバに音声出力ポートを開くことができる音楽プレイヤーとなります。

図5 Audaciousのオーディオ出力設定画面。JACK Output PluginによりJACKへ音声を出力できる
図5 Audaciousのオーディオ出力設定画面。JACK Output PluginによりJACKへ音声を出力できる

なお、本連載の第149回でお伝えしたMIDI信号に関する設定と、今回の音声に関する設定は別であることに注意してください。

第137回で録音ソフトウェアとして紹介したAudacityもまた、設定のデバイスで項目「ホスト」「Jack Audio Connection Kit」を選択することで、JACKサウンドサーバに音声入力ポートを開くことができる音楽レコーダーとなります。

図6 Audacityのデバイス設定画面。JACKサウンドサーバが起動していると、選択肢にJACK Audio Connection Kitが現れる
図5 Audacityのデバイス設定画面。JACKサウンドサーバが起動していると、選択肢にJACK Audio Connection Kitが現れる

JACKサウンドサーバに開かれた音声入出力ポートをつなぐ操作は、Connectionウィンドウで行ないます。Connectionウィンドウを開くには、JACK Controlのメインウィンドウのボタン「Connect」をクリックします。

Connectionウィンドウでは、出力ポートが画面の左に、入力ポートが画面の右に表示されます。ポートがアプリケーションの設けるものであっても、サウンドデバイスの設けるものであっても、同じように扱うことができます。これらポート間をマウス操作で接続することで音声データが流れるようになります。この流れは複数作ることが可能なので、オーディオインターフェイスからの入力を複数のアプリケーションに同時に送るといった操作が可能です。

図7 JACK ControlのConnectionウィンドウ。AudacityのポートはバックエンドであるPort Audioで表示されている。これらポートをマウス操作で接続し、音声データを流す
図7 JACK ControlのConnectionウィンドウ。AudacityのポートはバックエンドであるPort Audioで表示されている。これらポートをマウス操作で接続し、音声データを流す

Ubuntuには、JACKサウンドサーバを中心とした音楽製作のためのソフトウェアやプラグインのパッケージが、さまざま用意されています。こういったパッケージはまた別な機会に紹介したいと思います。なお、Ubuntu Studioはこれらを標準でインストールするよう作られているため、音楽製作に興味のある方に最適です。

FFADOミキサーの利用

さて、FFADOが公式にサポートしている特定のオーディオインターフェイスでは、FFADOミキサーを利用することができます。

FFADOミキサーは、サウンドデバイスのハードウェアミックス機能を操作するためのソフトウェアです。ハードウェアミックスとは、入力と出力のミックスをハードウェア内で完結する機能のことです。コンピュータと音声データのやりとりをしないため、通信やソフトウェアの処理による遅延(レイテンシ)を考える必要がありません。

FFADOミキサーは、パッケージ「ffado-mixer-qt4」にてインストールすることができます。パッケージをインストールすると、メニューの「サウンドとビデオ」「ffado-mixer」が追加されます。

このパッケージをインストールすると、依存関係で「ffado-dbus-server」もインストールされます。FFADOミキサーを使うためには、この「ffado-dbus-server」が先に動いている必要があります。MaverickやNattyの「ffado-mixer」はこのソフトウェアを自動起動しますが、Lucidのパッケージは自動実行しないため、前もって端末でコマンド「ffado-dbus-server」を実行し、起動しておく必要があります。

$ ffado-dbus-server &;
図8 Echo Audiofire Pre 8のFFADOミキサー画面。アナログ入出力8系統とADAT入出力8系統、光デジタル入出力2系統の合わせて18系統が画面に表示されるため、横に長く画面におさまりきらない
図8 Echo Audiofire Pre 8のFFADOミキサー画面。アナログ入出力8系統とADAT入出力8系統、光デジタル入出力2系統の合わせて18系統が画面に表示されるため、横に長く画面におさまりきらない

デイジーチェーン

JACKサウンドサーバやFFADOミキサーは、デイジーチェーンにも対応しています。デイジーチェーンとは、複数の装置を「数珠つなぎ」して作る接続形態のことです。IEEE1394/Firewireの仕様にはこの接続形態が盛り込まれており、そのため、大抵のIEEE1394/Firewireの装置はポートを2つ備えています。

ここでは、筆者所有のEcho Audiofire Pre 8とMOTU 828 Mk2を接続してみました。まず、前回で紹介したコマンド「ffado-test」で、デバイスの認識状況を確認してみます。なお、旧カーネルモジュールセットを使っています。

$ ffado-test ListDevices;
-----------------------------------------------
FFADO test and diagnostic utility
Part of the FFADO project -- www.ffado.org
Version: 2.0.0
(C) 2008, Daniel Wagner, Pieter Palmers
This program comes with ABSOLUTELY NO WARRANTY.
-----------------------------------------------

=== 1394 PORT 0 ===
  Node id  GUID                  VendorId     ModelId   Vendor - Model
   0       0x0001f2000001480f  0x000001F2  0x00101800    - 
   1       0x0014860a5b6bdb9b  0x00001486  0x00000AF9   Echo Digital Audio - AudioFirePre8
   2       0x001d72ff883f4aff  0x00001D72  0x00000000   Linux - ohci1394  - 
no message buffer overruns

MOTU社の製品のサポートはFFADO開発者がリバースエンジニアリングによって実現しており、その影響か、Vendor名とModel名が不明となっています。

次にFFADOミキサーを起動してみます。画面はMOTU 828 Mk2に対応するミキサー画面ですが、タブでEcho Audiofire Pre 8に対応するミキサーに切り替えられるようになっています。

図9 FFADOミキサーの画面。タブ「MotuMixer」でMOTU 828 Mk2に対応するミキサーに、タブ「Generic FireWorks」でEcho Audiofire Pre 8に対応するミキサーに切り替えることができる
図9 FFADOミキサーの画面。タブ「MotuMixer」でMOTU 828 Mk2に対応するミキサーに、タブ「Generic FireWorks」でEcho Audiofire Pre 8に対応するミキサーに切り替えることができる

次に、JACKサウンドサーバを起動してみます。Connectionウィンドウに両方のサウンドデバイスの入出力ポートが表示されますはずですが、表示ポート数が多くなってしまったので、本連載の第149回で紹介したPatchageというソフトウェアでポートを見てみます。

図10 Patchageの画面
図10 Patchageの画面

MOTU 828 MK2とEcho Audiofire Pre 8により、アナログ入出力18系統とADAT入出力16系統、光デジタル入出力4系統の合計38系統もの入出力ポートを利用することができるようになります。ポートの名称は任意に書き換えることができますので、どのポートがどのハードウェアのどのジャックに対応したものなのかを実際に音声を流して確認し、ポートの名前を変更しておくと使い勝手がよくなります。

JACKシーケンサとALSAシーケンサ

本連載の第150回で、ALSAシーケンサ機能を紹介しました。USB/PCIバス/PIC-Expressバス接続のサウンドデバイスのMIDI機能は、このALSAシーケンサがサポートします。それではFirewire接続のサウンドデバイスの場合はどうかというと、JACKシーケンサ機能がカバーします。先のPatchageの画面では、EMU 0404 USBがALSAシーケンサに設けたMIDI入出力ポートとは別に、デイジーチェーンによって接続された2つのデバイスが、⁠firewire_pcm」にMIDI入出力ポートを設けているのがわかるかと思います。この2種類のシーケンササブシステムの連携に関しても、また機会を改めてお伝えしたいと思います。

最後に、ここまでを概念図にまとめておきます。

図11 Firewireオーディオインターフェイス利用時の各サブシステムの連関
図11 Firewireオーディオインターフェイス利用時の各サブシステムの連関

昨今話題のUSB Audio Class 2.0[3]やUSB 3.0など、オーディオインターフェイスは今後USB接続のものが主流となっていくかと思いますが、Firewire接続のものもまだまだ現場では大活躍しています。最新のデバイスはALSAやFFADOが対応していないかもしれませんので、導入の際はALSAやFFADOのウェブサイトで検索したり、Ubuntuフォーラムですでに試しているユーザがいないかどうか尋ねるなどして、事前に情報を集めるのがよいでしょう。

おすすめ記事

記事・ニュース一覧