デジタル・オーディオ・ワークステーション・ソフトウェアとは
デジタル・オーディオ・ワークステーション(DAW)はかつて、音を記録しそれに何らかの処理を加えた上で出力する大規模な装置のことを指していました。その後、コンピュータ周りの技術が進展し、大規模なシステムを組まなければ実現できなかったようなことが、家庭用のコンピュータとサウンドデバイスを使って可能となりました。そのため、DAWが目的としていたことを実現するソフトウェアを、DAWソフトウェアと呼んでいます。
DAWソフトウェアは音を記録し、処理し、出力することを求められますが、それに加え他のソフトウェアやハードウェアと連携したり、プラグインによって新しい処理を追加したり、ハードウェアからコントロールできたりすることが、通常の録音ソフトウェアと異なる点です。
現在一般的に使われているDAWソフトウェアにおいて、このような機能はMIDI信号で実装されています。そこで今回は、ArdourのMIDI入出力機能を見てみましょう。
ArdourのMIDI入出力機能
ArdourのMIDI入出力は、本連載の第150回 で紹介したALSAシーケンス機能を利用しています。現在どのようなポートがALSAシーケンス機能に開かれているか、QjackctlのConnectウィンドウで確認してみましょう。「 ALSA」タブを開いてください。
図1 QjackctlのConnectウィンドウ。「 ALSA」タブにArdourがポートを開いていることがわかる
「control」「 mcu」「 seq」の3つのポートが開いていることがわかります。次にArdourの画面上で見てみましょう。ツールバーの項目「Window」から「Preferences」をクリックし、「 Preferences」ウィンドウが開きます。「 MIDI」タブを選択すると、現在開いているポートが表示されます。
図2 ArdourのMIDIポート設定画面
この画面で、MIDIのポートそれぞれに割り当てる役割を指定することができます。役割には以下があります。
MTC: MIDI Time Code信号の受信/送信をします
MMC: MIDI Machine Control信号の受信/送信をします
MIDI Parameter Control: MIDIのコントロール・チェンジ信号の受信/送信をします
なお、前回 説明したとおり、役割の中にはMIDIシーケンスがありません。
以降ではそれぞれの役割を紹介しながら、ソフトウェアやハードウェアとの同期や連携、ハードウェアからのコントロールについて詳しく説明します。
MTCによる同期
音楽ソフトウェア/ハードウェアは、その発音のタイミングを合わせることで使い道が広がります。
ハードウェアとの同期については、本連載の第149回 と第150回 で説明したMIDI規格に定められている[1] 、MIDI Time Code(MTC)が現在の主流です。ArdourをMTCマスターとし、他のソフトウェア/ハードウェアをMTCスレーブとする、あるいは他のソフトウェア/ハードウェアをMTCマスターとし、ArdourをMTCスレーブとすることで、MTC同期を実現することができます。この際、ALSAシーケンス機能がそれぞれを仲介します。
MTCは、SMPTEタイムコードとして知られるSMPTE 12M-1999のMIDI実装です。SMPTEは米国のSociety of Motion Picture and Television Engineersのことで、映像技術に関する標準化を行う業界団体です。12M-1999はタイムコードに関する規格で、時間を時/分/秒/フレームとして表現します。時間をテンポと分解能で管理するMIDIに対し、絶対的な時間表現であるSMPTEタイムコードを持ち込むことで音声技術と映像技術の仲立ちをし、より絶対的な時間管理を可能とするのがMTCです。
MTCはフレーム表現を持ちます。フレームというのは1秒間に何枚の静止画像を入れるかという指標ですが、詳細については別途映像技術関連の書籍を参照してください。Ardourでフレーム数を設定するには、ツールバーの項目「Options」から「Sync」 、「 Timecode fps」とだどります。
図3 ArdourのMTCフレーム設定
ArdourでMTCを利用するには、まず、ALSAシーケンス機能に開いているポートのどれでMTC信号をやりとりするかを決めておきます。今回はポート「seq」にしてみます。
先の「Preference」ウィンドウの「MIDI」タブで、ポート「seq」にMTCの役割を割り当てます。次にQjackctlの「Connect」ウィンドウでMTCのマスター、あるいはスレーブとなるソフトウェア/ハードウェアのMIDIポートに接続します。
図4 ConnectウィンドウでArdourのポート「seq」と、ハードウェア/ソフトウェアのポートを接続
ArdourをMTCスレーブとするには、トランスポート部分のタイムコード右のプルダウンリストから、「 MTC」を選択します。
図5 ArdourをスレーブとしてMTCマスターに同期
ArdourをMTCマスターとするにはツールバーの項目「Options」から「Sync」 、「 Send MTC」を選択して下さい。そして、トランスポート部分のタイムコード右のプルダウンリストから「Internal」あるいは「JACK」を選択します。こうすることで、外部にMTC信号を送信するようになります。
図6 ツールバーの項目「Options」から「Sync」とたどり、「 Send MTC」を選択
図7 ArdourをMTCマスターとした状態。図ではInternalを選択している
ここでポイントなのが、「 Internal」を選択した場合はArdourが自分でタイムコードを管理しますが、「 JACK」を選択した場合はJACKサーバのトランスポート機能にタイムコードを同期するようになることです。
JACKサウンドサーバの諸機能とReWire
JACKサーバのトランスポート機能は、ソフトウェア間を同期する仕組みです。対応するソフトウェア間でタイムコードを同期することができます。
WindowsやMacOS Xのソフトウェアでは、同様の仕組みをReWire が実現しています。Rewireはライセンスを持っているスウェーデンのPropellerhead Software社 がその仕様を公開していないため、Ardourをはじめとしたオープンソースソフトウェアには実装することができません。
そこでJACKサウンドサーバの出番です。JACKサウンドサーバはオーディオ機能でソフトウェア間の音声データの仲介をし、トランスポート機能でタイムコードの同期を、シーケンス機能により、あるいはALSAシーケンス機能を利用することでMIDI信号を仲介します。さらにサウンドデバイスとの接続も仲介するため、ReWire以上の機能をより効率的に実装しています。
図8 Qjackctlのメイン画面でタイムコードを表示し、トランスポートを操作する
筆者の知る限り、RosegardenやMuSE、Qtractor、Renoise(プロプライエタリ)などのオーディオ/MIDIシーケンス・ソフトウェア、3Dモデリング兼アニメーション・ソフトウェアであるBlender、ノンリニアビデオ編集ソフトウェア兼VJソフトウェアであるLiVESなど、多くのソフトウェアがJACKサウンドサーバのオーディオ機能やトランスポート機能に対応しおり、相互に演奏・再生タイミングを同期してMIDIデータや音声データのやりとりをしています。
タイムコード同期に関しては、コンピューターの内部ではJACKトランスポート機能で同期し、コンピュータの外とはMTCで同期することが可能です。ArdourとJACKはシステム外も考慮した、より汎用的なタイムコード同期機能を持っていると言えます。
なお、このJACKサーバのトランスポート機能にも、アプリケーション別にタイムコードのマスター/スレーブがあります。Ardourの場合は、「 time master」ボタンをクリックして有効にするとマスターとなります。
図9 ArdourをJACKサーバのトランスポート機能のマスターとした状態
ハードウェアによるコントロール
DAWを操作するハードウェアは、日本ではフィジカルコントローラー、英語圏ではControl Surfaceと呼ばれています。これらはすべて、MIDI信号を送受信しています。この信号には以下の種類があります。
Control Change信号
MMC (MIDI Machine Control) 信号
Mackie Controlプロトコル
このうち、上の2種類はMIDIの規格で標準化されいるため、流通している多くのハードウェアが実装しています[2] 。Control Change信号はパラメータを0から127の範囲で調整するための信号であり、MMCはトランスポートを操作するための信号です。Mackie Controlプロトコルは特定のMIDI信号に対して規格にはない役割を持たせたルールで、主に業務用の大型ハードウェアが実装しています。
一般的なMIDIコントローラーの場合
一般的なMIDIコントローラーは、Control Change信号を実装しています。例えば本連載の第150回 で紹介したRoland社のPCR-M30 や、Korg社のnano2 シリーズなどです。nano2シリーズのKontrolはこの他に、トランスポートを操作するためにMMC信号も実装しています。
ArdourでControl Change信号とMMC信号を扱うには、まずその信号をどのMIDIポートでやりとりするかを決めます。今回はポート「control」を使うことにしましょう。
まずはウィンドウ「Preference」のタブ「MIDI」で、ポート「control」に「MMC」と「MIDI Parameter Control」の役割を割り当てます。次にQjackctlのConnectウィンドウで、ハードウェアMIDIデバイスがALSAシーケンス機能に設けたポートと接続します。そして最後に、ツールバーのメニュー「Options」から項目「Control Surfaces」とたどっていき、項目「Generic MIDI」を有効にします。
図10 ツールバーのメニュー「Options」から項目「Control Surfaces」から、MIDIコントローラの有効化ができる
このままでは受信したControl Change信号とArdourの各機能の対応が設定できていませんので、各ボタンやスライダー、ノブとソフトウェアのパラメータの割り当て(MIDIアサイン)をする必要があります。
MIDIアサインは、Editor画面やMixer画面のボタンやプラグインのフェーダー上で、キーボードのCtrlキーを押しながらマウスの中クリックをします。そうすると「operate controller now」という小さなウィンドウが表示されますので、MIDIコントローラで割り当てたいパーツを操作して信号を送ります。これにより、MIDI信号が割り当てられ、ハードウェアからArdourのパラメータを操作できるようになります。
図11 MIDIアサイン。「 operate controller now」が表示されている間にMIDIコントローラーを操作し、MIDI信号を登録する
MMC信号は、MIDIアサインをする必要はありません。その代わり、ツールバーのメニュー「Options」から項目「Sync」とたどっていき、項目「use MMC」を有効にする必要があります。これにより、Ardourが外部のソフトウェア/ハードウェアから受信したMMC信号に合わせてスタートやストップをするようになります。
ハードウェアMIDIコントローラーの中には内蔵したモーターにより、ソフトウェアシーケンサー上のパラメータ値に合わせてハードウェアのスライダーやノブなどを自動で動かすものもあります。このようなハードウェアに対しては、ツールバーの項目「Options」から「Sync」とたどり、「 Feedback」とすることでフィードバック信号を送信します。
「use MMC」は、外部のソフトウェア/ハードウェアをMMCマスター、ArdourをMMCスレーブとして利用します。これに対して「send MMC」は、ArdourをMMCマスター、外部のハードウェア/ソフトウェアをMMCスレーブとして利用できます。コンピューター内部ではJACKトランスポート機能で同期し、コンピューター外部はMMCで操作するといった使い方ができます。
Mackie Controlプロトコルを用いたMIDIコントローラーの場合
Mackie Controlプロトコルは、例えばLoud Technologies社のMackieブランドで発売されているMackie Control Universalシリーズで使われています。筆者はこのデバイスを持っていないため、以下の内容はArdourの旧マニュアル 、MIDIの諸規格とRP、そしてEmagic社(2002年にApple社が買収)のLogic Controlユーザーマニュアル第2版を参照しました。そのため、設定の順番が異なっている可能性があることをご了承ください。
これらハードウェアはその電源が入れられた際、メーカー固有のID(00 00 66-hex)を含むMIDIエクスクルーシブ・メッセージを送信し、ソフトウェアとの同期を行います。それにより、特定のMIDI信号にその本来の役割とは異なる役割を与えて利用することができます。
Ardourにはポート「mcu」が、Mackie Controlプロトコルを用いたハードウェア専用に用意されています。このポートに接続することで、ハードウェアとの同期が自動的に行われ、本来の役割とは異なる役割を与えられたMIDI信号をパラメータのコントロール信号として扱うことができるようになります。
設定に先立ち、ハードウェアの電源は切っておきます。初期化のためのMIDI信号が送られるのを防ぐためです。次にウィンドウ「Preference」のタブ「MIDI」で、ポート「mcu」にMMCとMIDI Parameter Controlの役割を割り当てます。QjackctlのConnectウィンドウで、ハードウェアMIDIデバイスがALSAシーケンス機能に設けたポートと接続します。そしてツールバーのメニュー「Options」から項目「Control Surfaces」とたどっていき、項目「Mackie」を有効にします。この状態でハードウェアに電源を入れると、初期化のためのメッセージが交換され、デバイスとArdourの同期が行われます。それ以降の設定、MIDIアサインなどは一般的なMIDIコントローラーに準じます。
Open Sound Controlの利用
ArdourはMIDI信号以外にも、Open Sound Control(OSC)による操作を受け付けることもできます。バージョン2では画面操作での設定ができず、ユーザのホームディレクトリのファイル「~/.ardour2/ardour.rc」に設定を追記する必要があります。記述する内容に関してはマニュアルの該当ページ を参照してください。
ファイルのインポートとRegionリスト
Ardourは録音した音源をRegionとして扱いますが、MP3やFLACなどのファイルをインポートしてRegionとして使うこともできます。ツールバーの項目「Session」から「Import」を選択すると「add existing audio」ウィンドウが開きます。
ウィンドウの左側でファイルを選択すると、ウィンドウの右側にその詳細が表示されます。
図12 「 add existing audio」ウィンドウの左側
図13 「 add existing audio」ウィンドウの右側
注目して欲しいのは、ウィンドウ下部の「Add files」プルダウンメニューです。ここでは「as new track」「 to region list」「 as new tape track」から選択することができます。インポートしたファイルをどのようにArdourに取り込むのかを決定します。
ここで、Editor画面の右でRegionsを表示してみましょう。ArdourのSessionにこれまで作成されたRegionのリストがすべて表示されます。ここには現在タイムラインに配置されていないRegionも見ることができるので、クリック&ドラッグでタイムラインに再配置することができます。
図14 Regionのリスト
プラグインの適用
Linuxで利用できるサウンドプラグイン規格に、LADSPA(Linux Audio Developer's Simple Plugin API)やLV2(LADSPA Version 2)といったものがあります。Ubuntuはそのリポジトリで、さまざまなサウンドプラグインのパッケージを提供していますので、あらかじめインストールしておくことで、Ardourで利用することができます。筆者の環境では利用可能なプラグインは200弱程度ありますが、すべてのプラグインパッケージを利用しているわけではないため、これより多くのプラグインが利用できるでしょう。
Ardourでプラグインを適用するには、Mixer画面で設定します。Mixer画面の各Recordボタンの下部で右クリックをしてメニューを表示します。項目「New Plugin」 、「 By Category」とたどり、適用したいプラグインを選択します。
図15 Mixer画面でプラグインのリストを表示
上図では「Distortions」カテゴリーに分類されているプラグインを表示しています。カテゴリー別ではなくとも製作者別に表示することもできます。また、項目「Plugin Manager」を選択すると、プラグインを管理するためのウィンドウが開きます。
図16 Plugin Manager
プラグインを選択すると、Mixer画面に表示されます。表示された名前をクリックすると、パラメータを設定するウィンドウが開きます。
図17 シンプルなパラメータ調整ウィンドウ
このウィンドウでは、パラメータの設定をプリセットとして保存したり、バイパスをすることが可能です。またMIDIアサインもすることができます。
図18 MIDIアサイン
さらにプラグインの中には、独自にウィンドウを開くものもあります。こちらは画面上での使い勝手の代わりに、プリセットの保存やMIDIアサインといった機能を犠牲にしています。
図19 LV2プラグインのInvada Compressor (stereo)
プラグインのそれぞれのオプションに対しては、Editor画面でオートメーションを描くことができます。
図20 プラグイン・オートメーション
なお、筆者はMacintoshを持っていないためAU(AudioUnit)プラグインが使えるかどうかは確認できませんでした。おそらく同様の手順で利用できるはずです。
また、Steinberg社 の規格であるVST に基づくプラグインも広く利用されています。そのWindows用バイナリをLinux環境で使えるようにするために、オープンソース・ソフトウェアのFeSTige がリリースされています。このソフトウェアはJACKサーバを音声/MIDI入出力先としており、バイナリを動かすためにWineを利用しています。
Ardourバージョン3の実力
2011年4月4日に、Ardourのバージョン3がテスト目的でアルファリリース されました。簡単にレビューして締めくくりたいと思います。
図21 バージョン3の外観
やはり目玉はMIDIシーケンス機能です。ノートのオン・オフといったMIDI信号の送受信や、その編集を行うことができるようになっています。
図22 MIDIシーケンス機能
また、今回紹介した様々なオプションが整理されて、よりわかりやすくなっています。
図23 オプション設定画面。左はArdourのセッションに関する設定ウィンドウ、右は一般的な設定ウィンドウ
この他、ポート接続も専用のウィンドウが設けられました。音声データを扱うポートとMIDI信号を扱うポートの接続状況がわかりやすくなっています。
図24 ポート接続画面。左は音声入力ポート、右はMIDI信号出力ポート
音声/MIDIポートを表示・接続するためのソフトウェアであるPatchageで、ポートの状態を見てみましょう。ごちゃごちゃしてますが、MIDIを入出力するトラックが設けられていることがわかります。
図25 Patchageの画面。慣れてくると使い勝手のよいソフトウェア
このアルファリリースは必要な機能を実装しただけの状態であり、これからユーザからの意見を取り入れて画面描画や操作プロセスの改善、コードの効率化などが行われます。この先、ベータリリース、リリースキャンディデートとプロセスを経るため正式リリースはまだまだ先の話となりそうですが、とても楽しみです。
なお、Ardourプロジェクトは寄付の金額によって開発者が開発時間を確保しており、寄付の多寡によってその開発の進捗が変動するというユニークな体制を取っています。もしArdourを気に入ったなら、寄付をすることでプロジェクトに貢献してみてはいかがでしょうか。