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

オーディオ入出力

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

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

MSP オーディオドライバ・オブジェクトは、Max アプリケーションフォルダの中のCycling'74フォルダ内にある ad フォルダの中に置かれています。これらのオブジェクトファイルは、この ad(audio driver を表しています)と呼ばれるフォルダの中に置かなければなりません。そうでない場合MSP はこれらを見つけることができません。

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

DSP ステータスウィンドウ to be continue...

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

DSP ステータスウィンドウは、MSP のオーディオ入出力のパラメータの設定を行なうメニューとチェックボックスのグループとして用意されています。これらのオプションはすべてパッチ内から変更することができますが、DSP ステータスウィンドウは、その時点でのオーディオ設定のモニタとしての機能も提供します。

技術的な詳細: DSP ステータスウィンドウは実際にはMax パッチです(Cycling '74 フォルダの中のinterface フォルダ内の 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 という語に続いて表示されます。

ad_noreal このドライバは、MSP のノンリアルタイム・モードでの動作を有効にします。これにより、リアルタイム処理のパフォーマンスによる限界に一切とらわれることなく、音響合成やオーディオ処理を行なうことができます。このドライバでは、リアルタイムのオーディオ入出力は使用できなくなります。

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

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

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

DSP ステータスウィンドウによって、MSPが使用するサンプルのブロックのサイズ(シグナルベクタサイズと呼ばれます)をコントロールすることができます。コントロール可能なベクタサイズには2種類あります。

  • I/O ベクタサイズ(I/O は Input/Output を意味します)は、オーディオインターフェイスとの送受信の際に、1回にやり取りするサンプル数をコントロールします。
  • シグナルベクタサイズは、 MSPオブジェクトが1回に演算処理を行なうサンプル数を設定します。この値はI/Oベクタサイズと同じか、それより小さい値を設定できますが、I/Oベクタサイズより大きな値には設定できません。シグナルベクタサイズが I/O ベクタサイズより小さい場合、MSPは、演算を行なう必要がある I/O ベクタ1つごとに、2つ以上のシグナルベクタを連続して処理します。

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

I/O ベクタサイズはレイテンシ、および全体的なパフォーマンスに影響を及ぼす可能性があります。より小さいベクタサイズでは、MSP はより小さな時間のチャンク(1回に演算を行なう量)で計算を行なうため、オーディオの入力と出力の間の潜在的な遅延は減少します。いっぽうで、MSP は別のベクタ(次のオーディオチャンク)を演算するための準備を毎回行なうため、1回ごとに余計なコンピュータへの負荷が生じることになります。そのため、より大きなベクタを計算する方が、プロセッサ全体としてはより負荷が軽くなります。しかし、この話には別の側面があります。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 のベキの値になります。

オーディオ・サンプリングレートは、Sampling ポップアップメニューで設定することができます。フルレンジのオーディオ処理の場合、推奨されるサンプリングレートは 44.1KHzです。より低いレートを使った場合、MSP が計算するサンプル数は減少します、そのため、コンピュータの負荷は軽くなりますが、周波数レンジも狭くなります。コンピュータが44.1KHz の設定では重荷になっているようであれば、より低いレートを試してみるべきでしょう。

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

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パフォーマンスはわずかに向上します。

DSP ステータスウィンドウの次の部分は、システムのパフォーマンスを見る場合の手がかりになります。

CPU Utilization フィールドは、コンピュータの CPU がMSP のオーディオ演算処理にどのくらい割り当てられているかについての概算を示しています。

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

Signal Used の横に表示される数値は、現在あるシグナルネットワークで使用されているシグナルオブジェクトを接続するために、MSPによって必要とされる内部バッファの数を示しています。

Function Calls の数値は、オーディオの1つ1つのサンプルあたりどのくらいの計算量が必要かについての、おおよその目安を与えてくれます。この2つのフィールドは、オーディオオブジェクトの数や接続を変更した場合には、常に更新されます。

Vector Optimization は PowerPC コンピュータにのみ適用されます。ベクタ最適化によって、1回の命令の中で4つのサンプルを処理することが可能になります。しかし、すべてのオーディオシグナル処理アルゴリズムがこの方法で最適化できるわけではありません(例えば、再帰型フィルタアルゴリズムは、事実上ベクタ最適化の対象になりません)。MSP 自身は、すでにベクタ最適化を使用していませんが、サードパーティ製のオーディオオブジェクトはまだこの最適化を使用している可能性があります。言い換えれば、ベクタ最適化を使ったサードパーティ製のオーディオオブジェクトをPowerPCコンピュータで使用しているのでない限り、この設定は何の効果も持たないということです。DSP ステータスウィンドウの次の部分では、論理 I/O チャンネルのマッピング(割り当て)を行なうことができます。

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 Mappings ボタンをクリックして開くことができます(I/O マッピングウィンドウについての詳細は、後述します)。さらに、パッチの中で adstatus オブジェクトを使うと、512 の論理オーディオチャンネルの全てをマッピングすることができます。

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

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 マッピングウィンドウで示したものと同じ再マッピングを行なっていますが、この場合にはパッチをロードした際に自動的に実行されます。

Core Audio の使用

Core Audio は Mac アプリケーションに対してオーディオ I/O を提供します。これには、コンピュータのビルトインオーディオハードウェアからのものだけはでなく、使用しているあらゆる外部オーディオハードウェアからのものも含まれます。

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

システム環境設定アプリケーションの「サウンド」セクションを使うと、入力ボリュームやサウンド入力デバイスだけでなく、出力ボリューム、左右のバランス、サウンド出力デバイスといったような、システムの基本的なサウンド設定を行なうことができます。また、Audio MIDI 設定 アプリケーション(/Applications/Utilities(アプリケーション/ユーティリティ)に置かれています)を使うと、サウンドの I/O 設定に関するより詳細なコントロールが可能です。システム環境設定アプリケーションの「サウンド」セクションで、出力ボリュームやバランスなどの変更を行なった場合、Audio MIDI 設定に反映される(逆の場合も同様です)点に注意して下さい。DSP ステータスウィンドウの左下隅にある Open Audio Control Panel ボタン(訳注:MSP5 の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 設定にある場合には、できる限り日本語版による項目名を使い、図の英語による項目を( )内に併記しています。また、存在しない項目等については、その旨訳注を入れてあります。

 

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

システム設定(System Settings)では、システムオーディオの入力、出力にどのオーディオデバイスを使うかを設定することができます。また、選択されたオーディオデバイスに関するメニューではビルトインオーディオや、他の外部ハードウェアオーディオデバイスの設定をコントロールすることができます。

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

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

プレイ・スルー(Play Through)はPowerPC Mac でのみ利用できます。

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

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

;dsp driver playthrough 0

アーギュメントを 1 にした場合にはオンになります。

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

「フォーマット」メニューの下にあるコントロールを使うと、オーディオ入力、出力のそれぞれのチャンネルごとのボリュームレベル、ミュートの設定、プレイ・スルーの設定を行なうことができます。ウィンドウの下部は現在使用されている入力、出力の設定の表示に使われています。

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 ドライバの使用」のセクションには、より詳しい情報がありますので、参照して下さい。

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

 

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

入力と出力のデバイス

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

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

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

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

Max スケジューラと MSP のタイミングの関係で言うと、I/O ベクタサイズが 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 はデバイスメニューに、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 デバイス間での、同期、トランスポート、テンポ情報の送受信をサポートします。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 ポートが作られ、標準的なMax の MIDI オブジェクトを使って ad_rewire ドライバを経由した MIDI の送受信を行なうことができます。DSP ステータスウィンドウで ad_rewire ドライバを選択すると、次にMIDI セットアップウィンドウを開いた際に MIDI ポートが表示されます。ReWire 専用の MIDI ポートの数は、DSP ステータスウィンドウの MIDI Ports オプションによって変更することができます。

例えば、Cubase の MIDI 出力デバイスとして Max の ReWire MIDI ポートの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 ボタンをクリックします。インターフェイスカードの 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 の ad_nonoreal ドライバは、コンピュータの CPU のスピードによる制限について心配することなく、MSPを使った音響合成やシグナル処理を行なうことを可能にします。ノンリアルタイムモードは、単に、MSP におけるサンプルの演算を、他の物理的なスケジューリングの優先度とは独立して実行するもので、リアルタイムで計算するベクタ量の何倍にもなるようなシグナルパスを使うオーディオのベクタを処理することを可能にします。

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

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

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

参照

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