2009年7月24日

JACK を使用した Linux における柔軟な音声編集

JACK を利用した Linux における柔軟な音楽の編集の仕方と様々な音声編集ツールの紹介です。

JACK

JACK は対応したアプリケーション同士のオーディオ入力・出力をルーティングして柔軟に音声加工できるサウンドサーバーデーモンです。これを利用すると、JACK に対応した様々な音声編集アプリケーションからの音源を取り込み、編集したり出力したりする事が出来るようになります。

・JACK のインストール

# sudo apt-get jackd qjackctl

qt GUI 環境の JACK コントロールアプリケーションを導入すれば楽に JACK がコントロールできます。今回はこのアプリケーションを使って JACK を使用した音声編集をしていきたいと思います。

 Ubuntu Japanese Team Wiki - UbuntuStudioTips/Application/qjackctl(qjackctl に関するチュートリアル)

・JACK の設定

まず JACK の GUI コントロールアプリケーションを起動させます。

# qjackctl

これが JACK のコントロールアプリケーションです。まず JACK を環境に合わせた設定をするために「Set up...」をクリックします。


まず JACK の使用するデバイスを選びます。ほとんどの Linux PC が ALSA をサウンドドライバにしていると思うので、ここでは ALSA で設定しています(PulseAudio でも ALSA で動作する筈です)。次に、音声のインプット・アウトプットに使用するデバイスを選択します。インプットが録音に使うデバイス、アウトプットが再生に使うデバイスです。 Default 設定でも良いですが、使用状況に合わせて設定できます。また、この設定画面には各種数値が多く表示されていますが、それを制御することによって JACK のパフォーマンスを変化させることができます。専門的に使用する場合や PC のスペックの兼ね合い等で設定しなおした方が良い場合もあります。ただ、簡単にいじる分には特に変更しなくても動くと思いますので、ここでは説明は省かせてもらいます。


・JACK の起動

設定が完了したら、「Start」ボタンを押して JACK デーモンを起動させます。デーモンの起動に成功すると、ディスプレイに Started と表示され、 JACK が音声のルーティングを開始します。


JACK による音声のコントロールを行うには、「Connect」を選択してコネクションウィンドウを開きます。


このウィンドウで JACK の音声ルーティングを制御できます。JACK の設定で指定したデバイスのポートが表示されていると思います。画面は左が「アウトプット」ポート、右が「インプット」ポートです。音声はアウトプット方面(アウトプットポート)からインプット方面(インプットポート)へと渡されます。それぞれのポートを「コネクト」することで、そのポートに音声をルーティングします。非常に説明が難しいので、実際に JACK に対応しているアプリケーションを使用してこのやり方を説明したいと思います。

Jack Rack

JACK Rack は JACK を利用して音声に LADSPA エフェクト処理を施せるツールです。 LADSPA とは、フィルターやエフェクトの取り扱いの規格であり、各種プラグインを利用してそれらのエフェクト処理を音声に施す事が出来ます。


JACK Rack を立ち上げた後、JACK の コネクションウィンドウを見てみて下さい。JACK Rack のポートが表示されていると思います。このように JACK に対応しているアプリケーションは JACK 起動中に立ちあげると、 JACK で音声をルーティングする為のポートが表示されます(JACK で専門的に使用するアプリケーション以外では設定で JACK に対応させる必要があります)。


左側「system」の「capture_1」は今は USB マイクでのキャプチャに設定してあります。これに JACK Rack を使ってエフェクト処理をして音声を PC で再生させてみたいと思います。

この場合、音声のルーティングはこういう流れになります。

USB マイクから音声入力

JACK Rack で音声エフェクト処理

PC で再生(出力)

アウトプットのポートとインプットのポートを選択して「Connect」を押すと、そのポート同士がコネクトされます。今回上記のような音声ルーティングをするにはアウトプット側「system」の「capture_1」とインプット側の「jack_rack」の「in_1」「in_2」をコネクトし、アウトプット側の「jack_rack」の「out_1」「out_2」とインプット側の「system」の「playback_1」と「playback_2」をコネクトすれば実現できます。コネクトしているポート同士は視覚効果で線で結ばれます。ポートが2つありますが、これは音源が「ステレオ」だからです。

JACK Rack の入力ポートに音声を入力する事で JACK Rack で音声にエフェクトが施され、出力ポートからエフェクトを施された音声が出力されます。この例では USB マイクで入力した音声は JACK Rack を経由(ルーティング)して PC に出力される訳です。

system: capture_1(USB マイクのアウトプット)

jack_rack in_1, in_2(JACK Rack へ音声のインプット)

jack_rack out_1, out_2 (JACK Rack で加工した音声のアウトプット)

system: playback_1, playback_2(PC への出力にインプット)


VLC media player

有名な VLC media player も JACK に対応したアプリケーションの一つです。「ツール」→「設定」→「オーディオ」→「出力タイプ」を JACK にすると、音声を JACK でルーティングできます(VLC の JACK プラグインのインストールが必要です)。


今度は VLC から音楽を再生してそれに JACK Rack でエフェクトを加えて出力してみます。この例では入力される音声は USB マイクではなく VLC で再生された音楽となります。

VLC で音楽再生(入力)

JACK Rack で音声エフェクト処理

PC で再生(出力)

VLC からのアウトプットを JACK Rack のインプットに繋ぎ、 JACK Rack のアウトプットと PC のプレイバックを繋ぐことで実現できます。JACK Rack で音楽を LADSPA の C* PreampIV で出力の変更をしてみました。


Ardour

デジタル・オーディオ・ワークステーションである Ardour ももちろん JACK に対応しています。今度は実用性も兼ねて Auder を使って音楽を録音しながら USB マイクで自分の声を録音し、マルチトラックでの録音で「歌ってみる」事を実現してみたいと思います。

USB マイクから音声入力

Ardour で録音 ← VLC から音楽入力

PC で再生

Auder では使用するトラック毎に入出力ポートが用意されるので、トラックに対応するポートに音声をルーティングすることでマルチトラッキングが可能です。今回は「Audio 1(トラック1)」に VLC からの音楽の入力、「Audio 2(トラック2)」に USB マイクからの自分の声の入力の2トラックを使用してマルチトラックでの録音を JACK を介して実現してみました。 Ardour のような高度なアプリケーションになると JACK のルーティングもある程度自動でやってくれます。


このように、 JACK は対応したアプリケーションのポートを介して連携させることでそのアプリケーションで作成・編集した音声のルーティングが出来る為、非常に柔軟な音声の編集が可能です。

・その他 JACK に対応したアプリケーション一例

Linux MultiMedia Studio (LMMS)

Linux 上での FL Studio や Cubase や Logic Pro に相当する音楽作成ソフトウェアです。


Audacity

使いやすいサウンドレコード・編集ソフトです。生オーディオの録音、既存のサウンドの切り取りや貼り付け、特殊効果の付与等が簡単にできるので、簡単なオーディオ編集にはもってこいのソフトです。


Hydrogen

先進的なドラム・マシンソフトウェアです。ドラムリズムを直感的に作り上げる事が出来ます。


tarminatorX

リアルタイムオーディオシンセサイザです。 LADSPA を利用した音声のミックスができます。マウスの軸に様々なプロパティを付けてグリグリ動かすことで、DJ のようなスクラッチ音を出したりと様々な面白い音を作ることができます。


recordMyDesktop

デスクトップキャプチャソフトである recordMyDesktop も JACK に対応しています。よって JACK を利用すればマイクで音声を入れた動画をキャプチャしたりもできたりします。

・リアルタイムカーネル

JACK のパフォーマンスを最大限発揮するにはマルチメディア処理に特化した特殊なカーネルが必要になります。これは「リアルタイムカーネル」と言われています。このカーネルを導入した Linux 上で JACK をリアルタイム処理で実行するとパフォーマンスを最大限に引き出すことができます。JACK でリアルタイム処理を有効にするには qjackctl では「Settings」で「Realtime」にチェックを入れます。 リアルタイムカーネルが有効に動作していればリアルタイム処理で JACK が動作します。

See Also: Ubuntu Desktop で出来るマルチメディア処理

・JACK と PulseAudio の連携

JACK の Input/Output を PulseAudio の Sink/Source にするモジュールを使うことで、両者を連携させる事が出来ます。 PulseAudio を使用する環境で JACK を動かす場合に有効に利用できる方法です。

UbuntuStudioTips/Application/JACK-PulseAudio

0 件のコメント:

コメントを投稿