オーディオ I/O:
MSP のオーディオ入出力

MSPでは、コンピュータのオーディオハードウェアとのインターフェイスとして、dac~adc~ およびそれに相当する使い勝手の良い ezdac~ezadc~ を使います。あなたが特別なオーディオハードウェアを持っていない場合、そしてアプリケーション間のオーディオのルーティングを必要としない場合、システムのデフォルトドライバは、あなた自身で特別な設定を行なわなくても、ステレオ全二重オーディオ I/O を提供してくれます。

Core Audio あるいは Windows の MME に加え、Max/MSP ヘのオーディオの入出力を得るために、いくつか他の方法があります。これらの方法にはそれぞれ、私たちがドライバと呼んでいるものの使用が含まれますが、このドライバは、実際には特別なタイプのMax オブジェクトです。これらのドライバのうちのいくつかは、サードパーティによるオーディオハードウェア上でMSP を使うことを容易にしてくれます。さらに、非リアルタイム(non real-time)ドライバによって、MSP をディスクベースのオーディオ処理・合成システムとして使用することができ、CPU でリアルタイムに行なうことができる処理の量による限界を取り除いてくれます。

MSP オーディオドライバ・オブジェクトは、Macintosh の場合には、/Library/Application Support/Cycling'74フォルダの中にある ad フォルダの中に、Windows の場合には、C:\ProgramFiles\Common Files\Cycling'74\ad フォルダの中に置かれています。これらのオブジェクトファイルは、この ad(audio driver を表しています)と呼ばれるフォルダの中に置かなければなりません。そうでない場合MSP はこれらを見つけることができません。

 私たちは、MSP における一般的なオーディオ入力/出力の説明から始めたいと思います。この章の後半では、MSP で利用できる特定のオーディオドライバの状況について説明します。最初に、DSP ステータスウィンドウと、それを使ってどのようにあなたのオーディオハードウェアの情報を得たり、MSP がオーディオ入力/出力を扱うためのパラメータを設定したりするかについて説明します。

DSP ステータスウィンドウ

MSP における全体的なオーディオ・パラメータは DSP ステータスウィンドウに表示されます。DSP ステータスウィンドウを開くには、ロックされたパッチャーウィンドウの中の dac~または adc~オブジェクトをダブルクリックするだけです。あるいは、Options メニューの DSP Status... を選んで開くこともできます。

DSP ステータスウィンドウは、MSP におけるオーディオ入出力のパラメータの設定を行なうメニューとチェックボックスのグループとして用意されています。これら全てのオプションはパッチ内から変更できるため(下記参照)、DSP ステータスウィンドウは、現時点のオーディオセッティングのモニタとしても機能します。

技術的な詳細: DSP ステータスウィンドウは実際にはMax のパッチです(Max の patches サブフォルダの中にあるDSP Status と呼ばれるものです)。DSP ステータスウィンドウに表示される全てのパラメータは adstatus オブジェクトのインスタンスに接続されているメニューあるいはチェックボックスです。adstatus オブジェクトは MSP パッチの中で使用できるため、特定のパッチのパッチのためのオーディオパラメータを特別に設定、保存することができます。adstatus オブジェクトはまた、カレントのCPU 負荷、ベクタサイズ、サンプリングレートの情報を得るためにも役立ちます。詳細は、MSP リファレンスマニュアルの中の adstatus オブジェクトマニュアルページを参照して下さい。

DSP ウィンドウの一番上は、MSP のオーディオをオン/オフするためのポップアップメニューです。他の方法でオーディオをオン、またはオフにすると、このメニューはカレントの状態を反映して更新されます。

2番目のポップアップメニューでは、MSP 用のオーディオドライバを見たり、選択したりすることができます。特定のオーディオドライバに関してはこの章の後の方で説明します。ここでは、概要を示すだけにします。

None この設定では、MSP オーディオプロセッシングをオフにします。

Core Audio これは、Macintosh 上で動作する MSP 用の、デフォルトのオーディオドライバです。これは、システムに組み込まれた Core Audio システムとのインターフェイスとして働き、コンピュータのビルトイン・オーディオや、固有のソフトウェアサポート、ASIO のようなサードパーティ製ハードウェアによって使われることができます。

MME or
DirectSound
(Windows のみ) Windows上では, MSP はデフォルトのドライバとしてMME をロードします。外部ハードウェアが正しくインストールされていて、そのハードウェアが DirectSound をサポートしている場合には、ポップアップメニューのオプションとして表示されます。

ad_rewire このドライバは、Propellerhead Software によって開発された規格をサポートします。この規格によってサウンド生成アプリケーション(Rewire デバイス)は複数のオーディオとMIDI のチャンネルを、処理と出力を行う他のアプリケーション(Rewire ミキサ)に送ることができます。ad_rewire ドライバが使用可能となるように選択すると、Max/MSP は Rewire デバイスとして機能し、MSP から Rewire をサポートするアプリケーション(Live、Digital Performer、あるいはCubase)へオーディオを送ります。rewire~ オブジェクトを使うと、MSP を(Reason のような)Rewire のホストデバイスとして使用することが可能になります。

ASIO (Windows のみ) ASIO(Steinberg社によって開発されたクロスプラットフォームのオーディオ標準規格 )をサポートするサードパーティ製のオーディオインターフェイスを持っていて、正しくインストールされている場合、MSP の ASIO ドライバはそれを見つけ出します。希望するだけの ASIO デバイスを使用することができ、それらはドライバによって見つけ出されて、DSPステータスウィンドウ内の Driver プルダウンメニューにASIO という語に続いて表示されます。

NonRealTime このドライバは、MSP のノンリアルタイム・モードでの動作を可能にし、どのようなリアルタイム処理のパフォーマンスの限界にもとらわれることなく、シンセサイズやオーディオ処理を行なうことができます。このドライバでは、リアルタイムのオーディオ入出力は使用できなくなります。

どのような場合でも、1つのオーディオドライバだけしか選択することはできません。MSP は個々のオーディオドライバのセッティングを別々に保存し、Max を再起動した時には最後に使われたオーディオドライバが呼び出されます。

次の2つのポップアップメニューは、Macintosh でCore Audio ドライバが選択されている場合、または、ASIO ドライバが選択されている場合にアクティブになります。Core Audio ドライバが選択されている場合、あるいはWindows 上で MME か DirectSound ドライバが選択されている場合には、ポップアップメニューによってオーディオ入力ソースを変更することができます。Macintoh 上でのみ、追加のポップアップメニューによってオーディオプレイスルーの使用の可/不可を選択することができます。これらのセッティングは、Macintosh では Audio MIDI セットアップアプリケーションによって、Windows 上ではサウンドとオーディオデバイスのプロパティウィンドウ(スタート - 設定 - コントロールパネル - サウンドとオーディオデバイス)によって設定することもできますが、これらのメニューによる設定は MSP が起動している時にしかできません。

ASIO が使われている場合、ポップアップメニューによってオーディオハードウェアのクロックソース、およびMIDI 入出力をオーディオ I/O に対して優先させるかどうかについての設定を行なうことができます。

DSP ステータスウィンドウの次の3つのフィールドは、MSP が現在行なっているシグナル処理の量をモニタしています。CPU Utilization フィールドは、コンピュータの CPU がMSP のオーディオ処理にどのくらい割り当てられているかについての概算を示しています。Poll チェックボックスでは、CPU 利用率の自動ポーリング機能(チェックされている場合には毎秒4回、自動的に更新されます)のオン/オフを行ないます。自動ポーリングをオフにした場合、Update ボタンを手動でクリックすることによって、CPU の表示を更新できます。

Function Calls の数値によって、個々のオーディオのサンプルについてどのくらいの計算量が必要かについての、おおよその見当をつけることができます。次の Signal Used の数値は、現在のシグナルネットワークで使われているシグナルオブジェクトに接続するために MSP が必要とする内部バッファの数を示しています。これら2つのフィールドはオーディオオブジェクトの数が変更されたり、それらがパッチコードによってつながれたりするたびごとに更新されます。

次の2つのセクションはポップアップメニューによる数値の後に、Overrideチェックボックスを持っています。これがチェックされた場合、Override は、あなたが行なった設定が、現在のオーディオドライバ初期設定ファイルに保存されないということを意味します。デフォルトでは、すべての Override は無効になっていますが、これは、現在表示されているセッティングが保存され、次に Max/MSP を起動した時に復元されることを意味しています。

Sampling Rate ポップアップメニューによって、オーディオサンプリングレートを設定することができます。フルレンジのオーディオを得る場合には、サンプリングレートは44.1 KHz が推奨されます。より低いレートを使うと、MSP が演算を行なうサンプルの数が少なくなり、これによってコンピュータの負荷は軽くなりますが、周波数領域を狭めることになります。もし、44.1KHz ではコンピュータに重荷になっているという場合には、より低いレートを試す必要があります。

I/O ベクタサイズはレイテンシ、および全体的なパフォーマンスに影響を及ぼす可能性があります。より小さいベクタサイズでは、MSP が1回に演算を行なう量(チャンク)がより小さいため、オーディオの入力と出力の間の固有な遅延は減少します。一方で、MSP は毎回他のベクタ(次のオーディオチャンク)を演算するための準備を行なうため、余計なコンピュータへの負荷がかかることになります。そのため、より大きなベクタを計算する方が、プロセッサ全体としてはより負荷が軽くなります。しかし、この話には別の側面があります。MSP がオーディオのベクタを計算する場合、「割り込み」として知られる処理の中で行なわれます。コンピュータで MSP が実行されている場合、あなたが、たまたま行なっている他の処理(例えばワープロなど)は、割り込みを行なわれ、オーディオのI/O ベクタ分の演算が行なわれ、演奏されます。その後、コンピュータは通常のスケジュールを割り当てられたプログラムに戻ります。ベクタサイズがかなり大きい場合、コンピュータの動作が少し遅れ、コンピュータが期待するより処理に長い時間がかかることにより、オーディオ出力がクリック(訳注:クリックノイズ)によって始まる可能性があります。I/O ベクタサイズを小さくすることによって、この問題を解決できるかもしれないし、できないかもしれません。一方、非常に多くの割り込みを発生させてみると、コンピュータはそれらを処理しようとしてスローダウンします(今行なっている処理を保存し、他のタスクを開始することは負荷のかかる動作です)。従って、一般的に、小さい I/O ベクタサイズは、コンピュータのリソースのより大きなパーセンテージを消費することがわかります。CPU の能力の限界に近づくような特定のシグナルネットワークのパフォーマンスの最適化は試行錯誤によるしかありません。そのため、MSP ではベクタサイズが選択できるようになっています。

技術的な詳細: いくつかのオーディオインターフェイスカードでは、I/O ベクタサイズの選択機能が提供されていません。また、選択できる I/O ベクタサイズが、現在MSP のASIO サポートに課せられている、「2の累乗の倍数」という制限に合致しない ASIO ドライバもいくつか存在します。場合によっては、他のサンプリングレートでASIO ドライバを使うことによってこの制限がクリアされることもあります。

サンプリングレートの変更が高い周波数のレスポンスに影響を及ぼすのに対し、ベクタサイズの変更は特にオーディオ自体の実際の品質には影響を及ぼしません。シグナルベクタサイズの変更はレイテンシには影響しませんが、わずかに全体のパフォーマンスにのみ影響を及ぼします(サイズが大きいほうがより良いパフォーマンスを期待できます)。しかし、特定のタイプのアルゴリズムにおいては、小さいシグナルベクタサイズの方が良い結果を得ます。例えば、MSP のディレイラインオブジェクト tapin~tapout~から得ることができる最も短いディレイは、現在のサンプリングレートでの1つのシグナルベクタサイズのサンプル数に等しくなります。シグナルベクタサイズが 64 で、サンプリングレートが 44.1 KHz の場合、これは 1.45 ミリ秒になり、シグナルベクタサイズが 1024 ならば 23.22 ミリ秒になります。MSP のシグナルベクタサイズは最小2 サンプルから設定することができます。そして、ほとんどの場合、最大はオーディオドライバで可能な I/O ベクタサイズの大きさまで設定することができます。しかし、I/O ベクタサイズが 2 のベキになっていない場合、最大のシグナルベクタサイズはI/O ベクタサイズを均等に割って得られる最大の 2 のベキの値になります。

技術的な詳細: poly~ オブジェクトにロードされるサブパッチは、トップレベルのパッチと異なるサンプリングレートやベクタサイズで動作することが可能です。加えて、poly~ オブジェクトは異なるベクタサイズで動作できるのと同様に、アップサンプリングやダウンサンプリングを行なうことができます。DSP ステータスウィンドウはトップレベルのパッチにおける設定だけを表示、変更します。

シグナルベクタサイズは、MSP が一回に計算するオーディオサンプルの数を表します。コントロールできるベクタサイズは2つあります。I/O ベクタサイズ(「I/O」 は入出力を表しています)は一度にオーディオインターフェイスへ送信し、オーディオインターフェイスから受信されるサンプル数をコントロールします。シグナルベクタサイズは MSP オブジェクトによって一度に計算されるサンプル数を設定します。これは、I/O ベクタサイズと等しいか、より小さい値を取ることができますが、より大きい値を取ることはできません。シグナルベクタサイズが I/O ベクタサイズより小さい場合、MSP は計算の必要な I/O ベクタごとに、複数のシグナルベクタを連続して計算します。

I/O ベクタサイズが 256 で、サンプリングレートが44.1 KHz の場合、MSP は、一回におよそ 5.8 ミリ秒分のオーディオデータの計算を行ないます。

Max Schetuler in Overdrive オプションは、DSP ステータスウィンドウ内で、Max のオーバードライブ設定をオン/オフすることを可能にします。オーバードライブが使用可能になっている時、Max のイベントスケジューラは割り込みレベルで動作します。イベントスケジューラは、直前に受け取ったMIDI データをを送信するだけでなく、metro オブジェクトから繰り返し送りだされる bang をトリガするようなことを行ないます。これが使用不可の時には、オーバードライブは低い優先度のイベントハンドルループの中で実行され、この場合メニューのプルダウンのような動作によって割り込みを受ける可能性があります。Options メニューを使ってオーバードライブを使用可、あるいは不可にすることもできます。オーバードライブは一般的にタイミングの精度を向上させますが、例外もあるかも知れません。また、サードパーティ製ののソフトウェアの中には、オーバードライブが使用可になっていると正常に動作しないものがあるかもしれません。

Schetuler in Audio Interrupt 機能はオーバードライブが使用可の場合に使うことができます。これは、シグナルベクタ分の量のオーディオを処理する直前に、Max のイベントスケジューラを実行します。Scheduler in Audio Interrupt を使用可にすると、コントロール処理や外部のMIDI 入力によってトリガを受けるオーディオイベントのタイミングを大幅に改善することができます。しかし、これはスケジューラ(MIDI 入出力など)の外部でイベントの間隔を決定するため、タイミングの向上は、I/O ベクタサイズの選択と直接関係してきます。シグナルベクタサイズが512 の場合、スケジューラは 512 サンプルごとに動作します。44.1 KHz では、これは 11.61 ミリ秒ごとになり、これが、正にタイミングのアクセス可能なぎりぎりの限界になります。小さなベクタサイズ(256、128、64 )では、タイミングはより「タイトに」なるように思われます。これら全てのパラメータは演奏中に変更することができるため、精度とパフォーマンスの許容できる組み合わせを見つけるための実験を行なうことができます。

コントロールとオーディオの間の正確な同期が重要であるものがなければ、Scheduler in Audio Interrupt のチェックは外したままにしておいて下さい。この場合、シグナル処理のための、全体としての CPUパフォーマンスはわずかに向上します。

Input Channel 1、Input Channel 2、Ooutput Channel 1、Output Channel 2 、と表示されたポップアップメニューによって、MSP における I/O の最初の2つの論理チャンネル(すなわち、adc~オブジェクトの最初の2つのアウトレットと、dac~オブジェクトの最初の2つのインレット)を、オーディオドライバによって使用される物理チャンネルにマップすることができます。様々なオーディオドライバによって、様々なオプションが提供されます。例えば、Windows の MME ドライバは2つのチャンネルだけをサポートするため、通常デフォルトのオプションを使用します。追加された論理チャンネルをマッピングするためには、I/O マッピングウィンドウを使います。これは、DSP ステータスウィンドウの下部にあるI/O Mapping ボタンをクリックすると見ることができます(I/O マッピングウィンドウについての詳細は、後述の説明を参照して下さい)。加えて、このアブストラクト・オブジェクトをパッチの中で使うことによって、512 の論理オーディオチャンネルの全てをマッピングすることができます。

訳注:「アブストラクト・オブジェクト」とは、ファイルとして保存されたパッチです。日本では、「パッチ・オブジェクト」という言い方のほうが多く使われるようです。詳細はMaxチュートリアル2728 を参照して下さい。

Optimize ポップアップメニューは、Macintosh 版の MSP だけにあります。これによって、オーディオの計算を行なう際、MSP によってG4 (Altivec) ベクタ最適化を使用するかどうかを選択できます。ベクタ最適化によって、1つの命令スペース内で4つのサンプルを処理することが可能になります。しかし、この方法によって全てのオーディオシグナル処理が最適化されるわけではありません(例えば、再帰フィルタアルゴリズムは、ベクタ最適化によってほとんど影響を受けません)。G4 マシン上で MSP を使っている場合、このオブションをオンのままにしておくことによって、CPU 利用率とパフォーマンスが高められますが、正確なパフォーマンスの向上の度合いは、使用しているアルゴリズムや、ベクタ最適化を実装している MSP オブジェクトの数によります。G4 以前の Macintosh を使用している場合、このオブションをオンにしても全く効果はありません。

CPU Limit オブションによって、MSP に実行させるシグナル処理の量のリミット(コンピュータのCPUのパーセンテージで表されます)を設定することができます。MSP は、設定された CPU リミットを越えることはありません。これによって、コンピュータはMSP によって締め出されることなく、他ののタスクを実行することができます。しかし、これによるトレードオフは、CPU が指定されたリミットを越えようとした時に、オーディオ出力にクリックノイズが生じることです。この値を '0' または '100' に設定すると、CPU リミットは使用不可になります。

論理入力、論理出力について

MSP 2 では、1 〜 512 の間のチャンネルナンバを持つdac~ あるいは adc~ オブジェクトを作ることができます。これらのナンバは、私たちが論理チャンネルと呼んでいるもので、DSP ステータスウィンドウ、その I/O マッピングサブウィンドウ、あるいは adstatus オブジェクトで input または output キーワードアーギュメントを使うことによって、特定のドライバの物理デバイスチャンネルに、動的に再割り当てを行なうことができます。

adc~ および dac~ オブジェクトでは、アーギュメントを指定して、それぞれどの論理チャンネルがオブジェクトのインレットおよびアウトレットにマップされるかを定義することができます。次の例では、シンプルなパッチの中で、複数の論理チャンネルが使用されています。

この例では、2つの別々な adc~ オブジェクトが、それぞれ、論理チャンネルのペア 1/2 および 3/4 からオーディオシグナルを出力しています。この合計4つのチャンネルは gain~ オブジェクト群に送られ、gain~ オブジェクト群は入力されるシグナルを減衰させて第1の dac~ オブジェクトによって指定された最初の4つのチャンネルに送っています。入力シグナルはまた、乗じられて(リングモジュレーションを施されて)論理チャンネル9 と 10 に送られています。1つの adc~ および dac~ オブジェクトには、最高 16 までのアーギュメントを指定することがでます。16 以上の論理チャンネルを使いたい場合には、複数の adc~ および dac~ オブジェクトを使うことができます。ezadc~ および、ezdac~ オブジェクトは、MSP の最初の2つの論理入力、および論理出力にしかアクセスすることはできません。

論理チャンネルと物理デバイスチャンネルが存在することの目的は、使用している特定のハードウェア構成に関りなく、必要なだけのチャンネルを持つパッチを作ることができるようにするということです。例えば、S/PDIF の入出力として物理デバイスのチャンネル1と2を使うオーディオインターフェイスがあります。もし、S/PDIF 互換のオーディオインターフェイスがない場合、その代わりとしてチャンネル8と9を使いたいこともあるでしょう。MSP 1.x では、アーギュメント 1 と 2 を持つすべての dac~ および(または)adc~ オブジェクトのインスタンスを 8 と 9 をアーギュメントとして持つように変更することが必要でした。MSP 2 では、もはやその必要はありません。

単に、DSP ステータスウィンドウを開いて、Input および Output のポップアップメニューから8番目と9番目の物理チャンネルを選択するだけです。

MSP の論理チャンネルは、dac~ または adc~ オブジェクトがそれを使っている場合にのみ作られます。言い換えれば、論理アウトプット 1 と 2 だけを使っている場合に、510 個の使われないオーディオストリームがCPU を無駄に使って遊んでいる状態になるというわけではありません。しかし、必要ならば多くの論理チャンネルを1つの物理チャンネルにミキシングすることもできるため、他の人々が2チャンネルの出力デバイス上で動作させる場合でもすべての論理チャンネルを聞くことができるような、複雑なマルチチャンネルセットアップを作ることが可能です。

多くの論理チャンネルを、出力デバイスの1つの物理チャンネルに割り当てるためには、I/O マッピングウィンドウを使います。DSP ステータスウィンドウの下部にある I/O Mappings ボタンをクリックして下さい。

この設定では、論理チャンネル 1、3、5、7 はカレントオーディオデバイスの左出力チャンネルにマッピングされ、論理チャンネル 2、4、6、8、はカレントオーディオデバイスの右出力チャンネルにマッピングされています。

I/O マッピングは個々のオーディオドライバごとに保存されます。また、パッチの中で adstatus オブジェクトを使うことによって I/O マッピングを作ることもできます。下のサンプルパッチでは、上の I/O マッピングウィンドウで示したものと同じ再マッピングを行なっていますが、これは、パッチをロードした際に自動的に実行されます。

Macintosh 上のCore Audio の使用

Macintosh では、MSP はデフォルトで Core Audio ドライバを使います。全てのオーディオドライバと同様、Core Audio オブジェクトファイルは、/Library/Application Support /Cycling'74/ の中の ad というフォルダに置かれなければなりません。Core Audio は Macintosh 上で動作する Mac OS 10.2 以降でサポートされ、Macintosh アプリケーションに対して、あなたが持っているあらゆる外部オーディオハードウェアからのものだけでなく、コンピュータのビルトインオーディオハードウェアからのものも含めた双方からのオーディオ I/O を提供します。

外部オーディオハードウェアを使う場合、ハードウェアはCore Audio とのインターフェイスを持つドライバを添付されているものでなければなりません。このドライバがインストールされ、ハードウェアが接続されると、Core Audio はDSP ステータスウィンドウの Driver メニューから選択されるCore Audio の中に、その外部デバイスを含むようになります。

システム環境設定アプリケーションの「サウンド」セクションでは、入力ボリュームやサウンド入力デバイスだけでなく、出力ボリューム、左右のバランス、サウンド出力デバイスといったような、システムの基本的なサウンド設定を行なうために使用できます。また、Audio MIDI 設定 アプリケーション(/Applications/Utilities(アプリケーション/ユーティリティ)に置かれています)を使えば、サウンドの I/O セッティングのより詳しいコントロールが可能です。システム環境設定アプリケーションのサウンドセクションで、出力ボリュームやバランス等の変更を行なうと、Audio MIDI 設定に反映する(逆の場合も同様です)点に注意して下さい。DSP ステータスウィンドウの左下隅にある Open Audio Control Panel ボタン(訳注:MSP4.6 のDSP ステータスウィンドウでは Audio Driver Setup ボタンになっています。)をクリックすると、Audio MIDI 設定アプリケーションを開くことができます。

この部分の訳について:以下の説明の Audio MIDI 設定の項目に関しては、Mac OS のバージョンによって項目が異なるようです。また、日本語システムの場合、名称が異なっています。この訳の時点で、訳者のシステムは Mac0S X 10.4.9 の日本語版、Max/MSP 4.6、サウンドでバイスはEDIROL FA101になっています。原文に該当する項目が10.4.9の Audio MIDI 設定にある場合には、できる限り日本語版による項目名を使い、図の英語による項目を( )内に併記しています。また、存在しない項目等については、その旨訳注を入れてあります。


下段はOS 10.4.9 の日本語表示による Audio Midi 設定

オーディオ MIDI 設定(Audio MIDI Setup)アプリケーションのオーディオ部分では、左側にオーディオ入力設定(Input Section)、右側にオーディオ出力設定(Output Section)があります。

システム設定(System Settings)では、システムオーディオの入力、出力にどのオーディオデバイスを使うかを設定することができますが、一方で「選択されたオーディオデバイス」メニュー

訳注:OS 10.4.9 日本語版では「プロパティ」メニュー)によって、ビルトインオーディオや他の外部ハードウェアオーディオデバイスの様々な設定をコントロールすることができます。

外部オーディオデバイスを使っている場合、Input Volume および Output Volumeスライダを使って、選択されたデバイスの全体的な入力、出力ボリュームを設定することができます(これは、ビルトイン・オーディオコントローラを使っている場合には使用できません)。適用が可能な場合には、Device Mute チェックボックスによって、入力および出力デバイスをミュート(消音)することができます。

Input Volume スライダの真下にあるPlay Through チェックボックスでは、入力デバイスを直接アウトプットから「モニタ」するかどうかを選択することができます。playthrough が使用可の場合、入力ソースからのドライ(加工されない)シグナルは、MSP のアウトプットへ送られる処理済みのシグナルとミキシングされて出力されます。Play Through が使用不可の場合は、オーディオ入力からのドライシグナルを(必要ならば)どのくらいアウトプットへ送るかをコントロールすることができます。

訳注:10.4.9 日本語版では、このスライダは、ウィンドウ下部のチャンネルごとのスライダの上のM(Main) スライダになっています。日本語の項目名は「音量つまみ」です。また、ミュートチェックボックス(消音)、および後述のPlay Through チェックボックス(Thru)も、M スライダの所にあります。

このオプションは、Macintosh 上の MSP では dsp オブジェクトに メッセージを送ることによって変更できます。メッセージボックスに次のように入力し、それをクリックすることによって Play Through をオフにできます。

;dsp driver playthrough 0

アーギュメントに 1 を指定するとオンになります。

オーディオ入力(Input Section)では、フォーマット(Current Format) ポップアップメニューの中のサンプリングレートやビットデプスの変更ができるだけでなく、入力ソース(例えば、選択されたデバイスのライン、またはマイク入力)の選択を行なうことができます。同様に、オーディオ出力(Output Section)では、フォーマット(Current Format) ポップアップメニューでサンプリングレートとビットデプスの選択を行なうことができます。あなたのオーディオハードウェアによって、選べる選択肢は変わります。

フォーマット(Current Format) メニューの下にあるコントロールを使って、オーディオ入力、出力の個々のチャンネルのボリュームレベル、個々のチャンネルのミュートの設定、また、Play Through でのそれらの選択を行なうことができます。ウィンドウの下部は現在の入力、出力の設定の表示に使われています。(訳注:OS 10.4.9 では、この場所には表示されていません。)

Windows における MME オーディオと DirectSounod の使用

Windows では、MME、DirectSound、および ASIO の3つのタイプのサウンドカードドライバがサポートされています。ドライバの選択は、MSP で体験するパフォーマンスとレイテンシに重要な影響を及ぼします。

MME ドライバ(ad_mme)はWindows のシステムサウンドのデフォルトの出力として使われています。そして、これはほとんど全てのサウンドカードとビルトインオーディオシステムで提供されています。あなたのハードウェアとの互換性がほとんど保障されているとはいえ、MME ドライバによって得られるレイテンシの性能は良くないので、これはリアルタイムメディアの動作には最も望ましくない選択肢です。

DirectSound ドライバは、Microsoft の Direct X テクノロジによって設計されていますが、これはほとんどのサウンドカードで普通に用いられ、MME ドライバに比べ非常に優れたレーテンシとパフォーマンスを提供します。可能ならば、MME ドライバよりDirectSound ドライバ(ad_directsound)を優先的に使うべきです。たまに(そして、特にマザーボードベースのオーディオシステムの場合)DirectSound ドライバのパフォーマンスが MME ドライバより劣っていると気がつくことがあるでしょう。これは、ハードウェア固有の DirectSound ドライバを得ることができず、システムが MME ドライバを使って DirectSound をエミュレートしている場合に起こります。これらのケースでは、MME を直接使うか、そのシステム用の ASIO ドライバを探し出すことがベストです。

一般的に ASIO ドライバを使うことによって、最も良いパフォーマンスと最も小さいレーテンシが得られます。ASIO 標準規格は Steinberg によって開発され、多くのメディア指向のサウンドカードによってサポートされていて、非常に小さいレイテンシと高いパフォーマンスに最適化されています。DirectSound ドライバの場合と同様に、パフォーマンスが実際に他のオプションより優れているかについては確認をする必要があります。時として、ASIO ドライバが単に MME あるいは DirectSound ドライバのラッパーであることがあり、この場合パフォーマンスは期待したものより劣っている結果になります。

Windows 上のMSP によるMME および DirectSound ドライバの使用

Windows 上では、MSP はデフォルトで MME ドライバを読み込みます。MSP の MME および DirectSound ドライバは、C:\Program Files\Common Files\Cycling‘74\ad\ に置かれています。

外部ハードウェアが正しくインストールされていれば、DSP ステータスウィンドウのDriver メニューでMMEおよび DirectSoundドライバによる再生と録音がサポートされているはずです。オーディオデバイスが MME または DirectSound のどちらか一方だけをサポートする場合、Windows OS は自動的に片方をもう片方にマッピングします。最初、多くのオーディオデバイスは、DirectSound をサポートしなかったため、Microsoft は、DirectSound から MME へのブリッジとなるレイヤを使って DirectSound をエミュレートしていました。現在では、ネイティブな DirectSound ドライバに対するより多数のサポートがあります。また、時として、MME ドライバを使っている場合でも、実際にはWindows が MME から DirectSound へコンバートするレイヤを実行しています。

注:Digidesign mBox のようないくつかのデバイスは、ASIO ドライバ標準規格のみをサポートします。このようなケースでは、DSP ステータスウィンドウで適切な ASIO ドライバを選択する必要があります。「Windows上でのASIO ドライバの使用」のセクションには、より詳しい情報がありますので、参照して下さい。

「サウンドとオーディオデバイスのプロパティ(Sounds and Audio Devices Properties)」ウィンドウ(スタート - 設定 - コントロールパネル - サウンドとオーディオデバイス)にアクセスすることによって、デフォルトオーディオドライバの全体的な基本動作の変更を行うことができます。ここでは、オーディオデバイスの選択、出力のバランスとボリュームの設定を行うことができます。


下段はWindows XP 日本語版のコントロールパネル

MSP はMME および DirectSound ドライバによる様々な入力、出力デバイスの使用をサポートしています。入力、出力デバイスを選択するには、DSP ステータスウィンドウを使います。

入力と出力のデバイス

MME あるいは DirectSound ドライバを使っている場合、DSP ステータスウィンドウのプルダウンメニューから入力、および出力のデバイスを選択することができますが、これは自動的にあなたのオーディオハードウェアのドライバによって取り込まれます。MME および DirectSound ドライバを使っている場合、同時に、入力、および出力用に異なったオーディオデバイスを使用することが可能です。しかし、これは推奨またはサポートされません。また、デバイスを同期させるいくつかのエクスターナル(Max/MSP からの)を準備しない場合、時間と共にドロップアウトが生じます。

スレッドプライオリティ(優先度)とレイテンシの設定

MME および Directsound ドライバの両方とも、スレッド優先度とレイテンシのセッティングを持っています。これら両方のセットは、デフォルトで、あなたのコンピュータがほとんどの状況で、期待するような動作を行なうように設定されています。しかし、実際にパッチを動作させている時に、これらのセッティングの変更を余儀なくされるような問題が起こるケースに出会うかもしれません。オーディオがバリバリいったり、不具合が生じたりする場合、設定されたレイテンシを増加させてみたいと思うでしょう。これは、リアルタイムでのオーディオのレスポンスを低下させるという不利な点がありますが、オーディオドライバは、押し付けられた余分な要求を処理するためにより多くの時間を割くことができます。

システムが他の領域(例えば、スクリーンの再描画や一般的なタイミングの精度)遅くなる場合、オーディオドライバのプライオリティ(優先度)を下げたいと思うかもしれません。これによって、他のタスクが実行されるための余地をより多く与えることができますが、その結果、オーディオドライバにも新しいプライオリティで時間を取れるような余地を与えるために、レイテンシを増加させる必要があるかもしれません。

Max スケジューラと MSP の間のタイミングは、I/ ベクタサイズが 1 ミリ秒のオーダーになる場合がベストです。私たちは、I/O ベクタサイズを128 サンプル に設定することを推奨します。レイテンシの設定を I/O ベクタサイズと別にすることによって、ほとんどのハードウェアでオーディオの不具合なく動作させることができます。

MSP での ReWire の使用

ad_rewire ドライバによって、MSP を ReWire デバイスとして使うことができます。これにより、MSP オーディオを Cubase のような Rewire ミキサアプリケーション へ送ることができます。ReWire のサービスを利用するためには、Max/MSP と ミキサアプリケーションの両方が同時に動作していなければなりません。最もよい結果を得るためには、ミキサアプリケーションがReWire 2 以降との互換性を持っている必要があります。

ad_rewire ドライバが選択されている場合、MSP からのオーディオは、アプリケーション間をつなぐ ReWire の 16 個のチャンネルのいずれにも送ることができます。これは、ReWire ミキサ・ホストアプリケーションの入力として表示されます。最初に ad_rewire が選択されると、自分自身を ReWire システムに登録します。ReWire ミキサアプリケーションの起動の後、Max/MSP を ReWire デバイスとして提供します。

例えば、Max/MSP ReWire デバイスが登録された後、Cubase SX 1.0 はデバイスメニューに、Max/MSP というメニューアイテムを持つようにになります。これを選択すると、Max/MSP からのオーディオ出力のリストが見えるようになります。これらはデフォルトではオフ状態になっています。チャンネルをアクティブにするためには、どれかのボタンをクリックして下さい。チャンネルがアクティブにされると、Cubase のトラックミキサに表示されるようになります。

また、MSP を Reason のような ReWire デバイスのためのミキサーアプリケーションとして使うこともできます。これには、rewire~ オブジェクトを用います。より詳しい情報は、MSP リファレンスマニュアルの rewire~ のページを参照して下さい。

rewire~ と ad_rewire オーディオドライバを同時に使おうとすると、オーディオは出力されなくなります。これは、お互いがお互いを待っている(ad_rewire ドライバは、オーディオストリームについて rewire~ オブジェクトに尋ねますが、rewire~ オブジェクトはオーディオドライバによって処理の時間を与えられないと、何もすることができません。)ためです。

しかし、Max のランタイム版または Max/MSP によってビルドされたスタンドアローンアプリケーションが ad_rewire ドライバを使っている時に、これらと共に rewire~ を使うことは可能です。

ReWire でのアプリケーション間の同期とMIDII

ReWire は、Rewire デバイスから、および ReWire デバイスへの同期、トランスポート、テンポ情報の送信をサポートします。MSP オブジェクト hostsync~hostphasor~hostcontrol~ は、ad_rewire ドライバと協同してこの情報とホストのトランスポートのコントロール機能を提供します。より詳しい情報は、これらのオブジェクトに関する MSP リファレンスマニュアルページを参照して下さい。

Rewire 2 では、ReWire デバイスとの MIDI によるコミュニケーションをサポートします。現在、rewire~ オブジェクト、および ad_rewire ドライバは MIDI をサポートしていますが、各々異なる方法で動作しています。rewire~ オブジェクトを使った MIDI の送受信では、オブジェクトから直接メッセージの送受信を受けます。より詳しい情報は、MSP リファレンスマニュアルの rewire~ に関するページを参照して下さい。

ad_rewire による MIDI のサポートは、より Max の MIDI システムと統合されていて、標準的なMax の MIDI オブジェクトを使って ad_rewire ドライバを経由した MIDI の送受信を行なうことができるように、Max の MIDI ポートが作られます。DSP ステータスウィンドウで ad_rewire ドライバを選択すると、次にMIDI セットアップウィンドウを開いた時に MIDI ポートが表示されます。ReWire 専用の MIDI ポートの数は、DSP ステータスウィンドウの MIDI Ports オプションによって変更することができます。

例えば、Cubase の MIDI 出力デバイスとして Max の ReWire の1つを選択すると、標準的な Max の MIDI オブジェクト(例えば notein)を使って Max/MSP で作ったシンセサイザをコントロールすることができます。同様に、Max の MIDI オブジェクトと ReWire MIDI ポートを使って Cubase に MIDI を送信し、その結果をトラックに記録して更に操作を行なったり、再生したりすることができます。

高度なad_rewire の機能

Max/MSP を使ってスタンドアロン・アプリケーションをビルドする場合、そのスタンドアロンの中で ad_rewire ドライバを利用することができますが、これによって、Max/MSP 自身や、Max/MSPによって作られた他のスタンドアロン・アプリケーションとは独立して動作する ReWire デバイスを作ることができます。デフォルトでは、ReWire デバイスはあなたのアプリケーションの名前を使い、 16 個のチャンネルを持っています。これは、スタンドアロンのフォルダ内の、support/ad フォルダの中にある msprewire.config ファイルを編集することによってカスタマイズできます。

注:このファイルは、最初にスタンドアロンを起動し、DSP ステータスウィンドウで ad_rewire を選択してデフォルトのファイルが作られるまでは存在しません。

msprewire.config ファイルは次の場所の中にある ad フォルダの中に置かれています:

Macintosh: Library/Application Support/Cycling ‘74/ad/

Windows: c:\Program Files\Common Files\Cycling '74\ad\

Max/MSP で作られたスタンドアロンの場合、これは、スタンドアロンの support/ad/ フォルダの中にあります。msprewire.config は2行からなり、ReWire がデバイス用に使う名前、およびオーディオチャンネルの数が指定されています。これを編集することによって、Max/MSP あるいはあなたのスタンドアロンの動作を変更することができます。

Windows 上でのASIO の使用

DSP ステータスウィンドウから ASIO ドライバを選択することによって、MSP はオーディオインターフェイスと直接コミュニケーションを取ることができるようになります。ASIO サウンドカードを使うためには、デバイスが正しくインストールされ、接続されている必要があります。そうすれは、MSP の ASIO ドライバは、起動時にこれを見つけます。

正しくインストールされた全ての ASIO デバイスは、DSP ステータスウィンドウで選択することが可能な状態になるはずです。しかし、MSP は、あなたが明確にオーディオインターフェイスカード用の ASIO ドライバを切り替えるまで、関連したオーディオインターフェイスハードウェアがシステムに正しくインストールされているかどうかを確認することはしません。ASIO ドライバを使おうとした時、それをロードすることができない場合には、Max ウィンドウにエラーメッセージが表示され(通常,コード -1000 で表される初期化エラー)、DSP ステータスウィンドウの残りの部分のメニューはブランク(空白)になります。MME および/または DirectSound ドライバに切り替えると、MSP オーディオは再び使用可能になります。

Clock Source ポップアップメニューでは、オーディオハードウェアためのクロックソースを設定します。いくつかの ASIO ドライバは外部クロックをサポートしません。このような場合、メニューには通常、Internal と書かれた1つのオプションしか表示されません。

Prioritize MIDI ポップアップメニューでは、オーディオハードウェアのクロックソースをセットすると共に、オーディオ I/O に対してMIDI 入出力を優先させるかどうかを設定できます。多くの ASIO ドライバは別のウィンドウで編集できるような他の設定を持っています。これらの設定にアクセスするためには、DSP ステータスウィンドウの最下部にある Open ASIO Control Panel ボタン(訳注:Audio Driver Setup ボタン)をクリックします。インターフェイスカードの ASIO ドライバがコントロールパネルを持っている場合、インターフェイスのドキュメントに操作方法が書かれているはずです。

Windows 上での、dsp へのメッセージによる ASIO ドライバのコントロール

ASIO のバージョン 2 の仕様では、オーディオインターフェイスへの入力をダイレクトにモニタすることができます。言い換えると、オーディオ入力を、コンピュータにシグナルを通すことなく、直接インターフェイスカードのオーディオ出力につなぐことが可能です。また、チャンネルの接続、ボリューム、パンの設定をコントロールすることもできます。

ダイレクトモニタをコントロールするためには、dsp オブジェクトに monitor メッセージを送ります。monitor メッセージは次のようなアーギュメントを取ります

int 必須。数値で入力チャンネルナンバを指定します。 (1 から始まります)

int オプション。数値で出力チャンネルナンバを指定します。また 0 の時は指定された入力チャンネルのルーティングをオフにします。2 番目のアーギュメントで指定するチャンネルが存在しない場合にもこのような動作をします。

int または float オプション。0 〜 4 の数値で入力->出力の接続のゲインを指定します。1 は同じゲインであることを示します(この値がデフォルト)。

int または float

数値で出力チャンネルのパンニングを指定します。-1 で左、0 で中央、1 で右になります。0 がデフォルトです。

次に、いくつかの monitor メッセージの例を示します。

;dsp driver monitor 1 1 入力 1 を 出力 1 に、同じゲインで、パンの位置は中央で接続します。

;dsp driver monitor 1 0 入力 1 をオフにします。

;dsp driver monitor 1 4 2. -1. 入力 1 を 出力 4 へ +6dB のゲインで、パンの位置は左で接続します。

注:これらのメッセージを使う場合、"driver" という語はオプションですが、使うことを推薦します。この機能がすべての ASIO ドライバでサポートされるというわけではありません。monitor メッセージを送信したときに、その結果として ASIO が Max ウィンドウに error -998 を返す場合、ドライバはこの機能をサポートしていません。

ASIO 2 のもう1つの機能は、タイムコードの読み取りの開始と停止です。タイムコードの読み取りを開始する場合、次のようなメッセージを送ります。

;dsp driver timecode 1

タイムコードの読み取りを停止する場合、次のようなメッセージを送ります。

;dsp driver timecode 0

plugsync~ オブジェクトは、タイムコードを使用可能にした場合、オーディオインターフェイスによって報告されたサンプル位置を知らせてくれます。しかし、現在、インターフェイスのタイムコードを知らせるオブジェクトは存在しません。

MSP のノンリアルタイムでの動作

MSP の NonRealTime ドライバは、コンピュータの CPU のスピードによる制限について心配することなく、シンセシスやシグナル処理を行なうことを可能にします。ノンリアルタイムモードは、単に、MSP におけるサンプルの演算を、他の物理的なスケジューリングの優先度とは独立して実行し、リアルタイムで計算するベクタ量の何倍にもなるようなシグナルパスを使うオーディオのベクタを処理することを可能にします。

一般的に、dsptime~ オブジェクトを使って、オーディオがオンになってからどれくらいの時間がかかっているかを知り、ルーチンの出力を sfrecord~につなげてその結果をキャプチャしたいと考えるでしょう。ノンリアルタイムドライバでは、ハードウェアによるオーディオ入出力は使用不可になります。

MSP における、典型的なノンリアルタイムのシグナルパスは、次に示すようなものです。

DSP をスタートさせる(dac~オブジェクトをトグルする)と、sfplay~からのオーディオ再生、およびパッチの最下部にあるsfrecord~へのオーディオ録音と同期して、dsptime~ オブジェクトは 0 サンプルからスタートします。5 秒分の処理が終わった後、sfrecord~オブジェクトは出力されたオーディオのファイルへの録音を停止します。

参照

adc~ オーディオ入力、および、オン/オフ
adstatus オーディオドライバの出力チャンネルへのアクセス
dac~ オーディオ出力、およびオン/オフ
ezadc~ オーディオのオン/オフ; アナログ−デジタルコンバータ
ezdac~ オーディオ出力、およびオン/オフのボタン