対象とするUbuntu Studioのバージョン
- 7.04 Feisty Fawn以降のすべてのリリース
Linuxのサウンド関連で、以下の名前をよく目にすると思います。
- Advanced Linux Sound Architecture (ALSA)
- Open Sound System (OSS)
- FFADO
PulseAudio
- Enlighten Sound Daemon (ESD)
- Jack Audio Connection Kit (JACK)
- Gstreamer
- Xine
- Phonon
- analog Real time synthesizer (aRTs)
サウンドシステムに関して様々な技術が入り乱れていて一見してよくわからず、サウンドを巡るトラブルを解決しようとしても、どれに関して調べればよいのかわからず、途方に暮れてしまうことがあります。
この文書では、Ubuntuとその派生ディストリビューション、およびUbuntu Studioに関して、サウンドに関する標準状態について概説します。大まかな関係を把握することで、トラブルの解決の一助になれば幸いです。
Ubuntuの標準状態(インストールしたての状態)
Inkscape用SVGファイル soundStructure-PulseAudio.svg
基本的に、すべての音声ストリームはすべてPulseAudioに集まります。その後、ALSAのカーネルモジュールを経由して1サウンドデバイスに送られ、発音されます。
ALSAにとってPulseAudioは仮想のデフォルト・サウンドデバイスに設定されている2ので、ALSAをバックエンドに使うフロントエンドで生成した音声ストリームも、PulseAudioに集まります。
特殊なパッケージを導入したり1、設定ファイルを変更すると、フロントエンドで利用するバックエンドを変更したり、バックエンド同士の連携ができます。例えばパッケージ「phonon-backend-gstreamer」を導入すると、phononのバックエンドとしてGstreamerを指定することができる2ようになります。
Ubuntu Studioの標準状態(インストールしたての状態)
Ubuntuの標準状態に加え、以下が標準でインストールされます。正確に言うと、パッケージ「ubuntustudio-audio」でJACK関連パッケージとオーディオ編集ソフトウェアが、「ubuntustudio-audio-plugins」でプラグイン関連がインストールされます。
FFADO |
IEEE1394 (Firewire) 接続のサウンドデバイスのための、サウンドドライバとサウンドミキサー。FreeBOBの後継。FirewireドライバにカーネルのFirewireモジュールを使う。 |
Jack Audio Connection Kit |
低レイテンシを実現するサウンドサーバ。トランスポート機能を持ち、対応アプリケーション間の音声、MIDIデータのやりとりを仲介。 |
LADSPAプラグイン |
Linuxのためのオーディオ・プラグイン規格であるLinux Audio Developers Simple Plugin APを採用したプラグイン。 |
DSSIプラグイン |
LADSPAを拡張した規格であるDisposable Soft Synth Interfaceを採用したプラグインで、主にソフトウェア音源に使われる。 |
LV2プラグイン |
LADSPAを拡張した後継規格であるLV2を採用したプラグイン。Ubuntu 10.04からリポジトリに含まれた。 |
Lucid以前は、JACKを起動するとPulseAudioに対して「pasuspender」を実行し、PulseAudioを休止状態にしていましたが、Maverick以降ではこれがなくなりました。そのため、サウンドデバイスとJACKを接続する際に、あらかじめそのサウンドデバイス経由でPulseAudioが音声を出力していないようにする必要があります。サウンドデバイスの競合が発生してしまうからです。
加えて、GstreamerやXine、Phononなど、デスクトップ環境が利用しているバックエンドは、標準設定ではJACKを使えません。
Inkscape用SVGファイル soundStructure-JACK.svg
Firewire(IEEE1394)のカーネルモジュールは新旧があるため、1394系として記述してあります。1
詳しい情報は、https://ieee1394.wiki.kernel.org/ を参照のこと。 (1)
Old Firewire Stacks * ieee1394 * ohci1394 * sbp2 * eth1394 * dv1394 * raw1394 * video1394 New Firewire Stacks * firewire-core * firewire-ohci * firewire-sbp2 * firewire-net
JACKの特徴
- リアルタイム性能を高めて動作することが可能
- ドライバにFFADOライブラリを指定することで、ALSAやOSSでは使うことの出来ないFirewire接続のサウンドデバイスを使うことができる
- JACKトランスポートによる、複数のJACK対応アプリケーションの演奏位置同期
- JACK対応アプリケーション同士の出力ポートと入力ポートの自由な接続が出来る。サウンドデバイスへの入出力も、入出力ポートとして仮想化される。
- JACK対応のMIDIデバイス/アプリケーションが存在するが、ALSA対応のMIDIデバイスもJACK上のMIDIデバイスとして利用可能。
- 上記すべての操作を、GUIアプリケーション「qjackctl」で可能
- 10.10で導入されたJACKのバージョン2では、ネットワークを経由して遠隔マシンとの音声同期が可能
主要なバックエンドと代表的なアプリケーション
代表的なアプリケーションとその主要なバックエンドの関係リストを下に示します。SDLやPortAudioアプリケーションは各アプリケーションでバックエンドを指定する事ができます。また、独自に複数のバックエンドを切り替える事が可能なアプリケーションも相当数あります。加えて、バックエンド自体がそのバックエンドを変更することもできます。
PulseAudioアプリケーション
- Skype
- Canberra (GNOMEデスクトップ環境の効果音)
Gstreamerアプリケーション
- Banshee
- Totem
- Rhythmbox
- Amarok
PiTiVi
- Subtitle Editor
- Kaffeine
ALSAアプリケーション
- Adobe Flash Player (plugin-container)
- nspluginwrapper
SDLアプリケーション
- Avidemux
- Kdenlive
- Snes9x
- Blender
PortAudioアプリケーション
- Audacity
- Mixxx
JACK Audio Connection Kitアプリケーション
- amSynth
- Ardour
- Bristol
- Bitmeter
- FeSTige
- Hydrogen
- JACK Rack
- JACK Control
- JAMin
- JackEQ
- Meterbridge
- MusE
- Patchage
- QSampler
Qsynth (FluidSynth)
- Rakarrack
- Rosegarden
- ZynAddSubFX