poly~

パッチのためのポリフォニー/DSPマネージャ

poly‾オブジェクトはpatcherオブジェクトと同様なものです。これは、オブジェクトの中にパッチャーをカプセル化します。しかし、名前が示しているように、patcherオブジェクトがカプセル化されたパッチャーを1つだけ保持できるのに対し、poly‾オブジェクトでは1つ、あるいは複数のインスタンス(コピー)をロードすることができます。パッチャーのファイル名と必要とされるインスタンスの数はpoly‾の引数として指定されます。

poly‾オブジェクトはシグナルやイベント(メッセージ)を直接インレットで受け取り、パッチャーの中のin,in‾オブジェクトに伝えます。また、パッチャーはout,out‾ というオブジェクトを持つこともでき、これはシグナルやイベントをpoly‾のアウトレットから出力します。poly‾オブジェクトに対するメッセージは、ロードされたパッチャーのインスタンスのオーディオ処理をコントロールし、イベントのルーティングをのコントロールを可能にします。

インプット

すべての入力
poly‾のインレット、アウトレットの数はロードされるパッチャーによって決まります。poly‾オブジェクトによってロードされたパッチャーのインレットはシグナルとイベントの双方を受け取ることができます。

シグナルは、シグナル入力用のin‾オブジェクトを使ってロードされたパッチャー内にルーティングされ、イベントはイベント入力用のinオブジェクトによってルーティングされます。poly‾のインレットの数は、ロードされたパッチャー内のin‾またはinオブジェクトの引数のうちの多い方になります。(例えば、引数3を持ったin‾と引数4を持ったinがある場合、poly‾オブジェクトは4つのインレットを持ちます。in‾オブジェクトが各々のインレットに対応していない場合でも、すべてのインレットはシグナルの接続を受け付けます。)

シグナル入力は、すべてのインスタンスに送られます。

すべてのメッセージ どのインレットでも:メッセージは、poly‾オブジェクトのターゲットとなっているパッチャーのインスタンス内のinオブジェクトへ送られます。poly‾オブジェクトの左インレットに送られたメッセージはin 1というオブジェクトに送られ、第2インレットに送られたメッセージはin 2オブジェクトに送られます。以下同様です。
シグナル どのインレットでも:シグナルは、すべてのパッチャーインスタンスの、対応するin‾インレットに送られます。poly‾オブジェクトの左インレットに連結されたシグナルはin‾ 1オブジェクトで受け取られ、第2インレットに送られたメッセージはin‾ 2オブジェクトに送られます。以下同様です。
list どのインレットでも:poly‾オブジェクト自身のコントロールに使われる語を伴ったメッセージをpoly‾オブジェクトのインスタンスに送る場合は、メッセージの前に"list"という語を加えます。例えばメッセージ[list target 2]がpoly‾の左インレットに送られた場合、カレントのターゲットとなるインスタンスを2番目のものに変えるのではなく、すべてのin 1オブジェクトにtarget 2が送られます。
down 左インレット:"down"の後に2の累乗となる数値を付け加えることで、ロードされているパッチャーで、2の累乗で明示された値によるダウンサンプリングを行うことを指定します。donw 2というメッセージは2を係数とするダウンサンプリング(例えばサンプリングレートが44100Hzの場合には、22050Hzへのダウンサンプリング)を行います。パッチャーで用いられる新しいサンプリングレートは、次のDSPチェインのコンパイル用にセットされます。downメッセージは強制的にDSPチェインの再コンパイルを行うことはしません。
midinote 左インレット:"midinote"の後に1つ以上の数値を付け加えることで、ノートオンメッセージを受け取っていて対応するノートオフメッセージを受け取っていない最初のインスタンスの最初のinオブジェクトにデータを送ります。"midinote"の後の最初の数値はノートナンバを、次の数値はベロシティになります。例えば、midinote 60 64を2つのインスタンスを持つpoly‾に送ると、第1のインスタンスをビジーにします。次のmidinote 67 64 は第2のパッチャーインスタンスに送られます。
midinote 60 0 がpoly‾によって受信されると(poly‾はどのインスタンスがノートオンメッセージを受け取ったかという情報を保持しているので)直ちに第1のインスタンスに送られます。同じように midinote 67 0 が受信されると第2インスタンス送られます。
mute 左インレット:"mute"の後に数値及び0または1を付け加えることで、poly‾オブジェクトによってロードされたパッチャーの、指定したインスタンスのシグナル処理をオフにすることができます。2番目の値が1ならばパッチャーインスタンスの処理はオフ(ミュート)になります。2番目の数値が0の場合はパッチャーインスタンスの処理はオンに変えられます。メッセージmute 0 1はパッチャーのすべてのインスタンスをミュートし、mute 0 0 はすべてのインスタンスをオンにします。
note 左インレット:"note"の後に数値を付け加えると、パッチャーの指定されたインスタンス内のthispoly‾オブジェクトへ1を送信することによってビジーにされていないパッチャーインスタンスの内、最も最初のインスタンスの第1インレットにデータを送ります。
open 左インレット:"open"の後にメッセージを付け加えると、パッチャーの指定されたインスタンスをオープンします。パッチャーのボイス数(voiceメッセージ、またはpoly‾オブジェクトの引数によって指定される数)以内のどのインスタンスの動作でも見ることが可能です。このメッセージを使うと、パッチャーが動作している間に個々のインスタンスを見ることができます。引数を伴わない場合、openメッセージはカレントのターゲットインスタンスをオープンします。(後述のtargetメッセージを参照して下さい。)
steal 左インレット:"steal"の後に0または1を付け加えると、ボイススティールをオン/オフするトグルになります。ボイススティールがsteal 1メッセージによってセットされると、poly‾オブジェクトはまだビジー状態のままのインスタンスにnoteまたはmidinoteメッセージを送ります。これらは、インスタンスが割込みをどのように扱うかによって、クリック音で終わってしまう場合があります。デフォルトは0です。
target 左インレット:"target"の後に数値または数値で構成されるリストを付け加えると、poly‾オブジェクトがロードしたパッチャーのローカルなスケジューリングを切り替えます。targetメッセージはpoly‾ オブジェクトがインレットから受け取ったメッセージを受信するインスタンスをコントロールします。イベントに複数のターゲットを指定する場合、targetはリストをとります。
voices 左インレット:"voices"の後に数値を付け加えると、ロードされたパッチャーのインスタンス(コピー)の数を変更します。必要に応じて、パッチャーのインスタンスはロードされ、あるいは消去されます。
up 左インレット:"up"の後に2の累乗となる数値を付け加えることで、ロードされているパッチャーで、2の累乗で明示された値によるアップサンプリングを行うことを指定します。up 2というメッセージは2を係数とするアップサンプリング(例えばサンプリングレートが44100Hzの場合には、88200Hzへのアップサンプリング)を行います。パッチャーで用いられる新しいサンプリングレートは、次のDSPチェインのコンパイル用にセットされます。upメッセージは強制的にDSPチェインの再コンパイルを行うことはしません。
wclose 左インレット:"wclose"の後に数値を付け加えることで、数値のインデックスによって識別される、ロードされたパッチャーのインスタンスを含むウィンドウをクローズします。これはopenメッセージの反対のものです。
vs 左インレット:"vs"の後に2から2048の範囲内の2のベキ数を付け加えることで、poly‾オブジェクトのロードされたパッチのシグナルベクタサイズを指定します。シグナルベクタサイズは、次のDSPチェインのコンパイル用にセットされます。vsメッセージは強制的にDSPチェインの再コンパイルを行うことはしません。vs 0は固定されたベクタサイズを指定しません。デフォルトの値がカレントのベクタサイズとして使用されます。

引数

シンボル 必須。第1引数はパッチャーの名前でなくてはなりません。

ノート:patcherオブジェクトと異なり、poly‾オブジェクトにパッチャーを引数として与えた時にエディット用にサブパッチウィンドウが自動的にオープンされることはありません。オブジェクトに含まれるパッチャーは、前もってMax/MSPサーチパス内に存在しているものである必要があります。

int オプション。パッチャー名の後の引数は、ロードされたパッチャーのインスタンスの数(利用できる"ボイス"の数)を指定します。デフォルトの値は1です。利用できるボイス数はvoiceメッセージで動的に変更することができます。
local オプション。"local"の後に0または1を追加すると、poly‾オブジェクトのロードされたパッチャーニ対するローカルスケジューリング(local scheduling)のトグルになります。ローカルスケジューリングとは、poly‾オブジェクトが、オーディオ処理の間、グローバルなMaxのスケジューラではなく、自分自身ののスケジューラを使用することです。これによって、複数のパッチャーインスタンスで生成されるイベントの解像度が向上します。しかし、オーディオ処理がオフになった場合、グローバルにもローカルにもpoly‾オブジェクトやそのインスタンスにイベントは発生しません。デフォルトはオフ
(local 0)です。ローカルスケジューリングはpoly‾オブジェクトにメッセージを送ることでは変更できません。スケジューラがローカルかどうかはどのようなパッチャーがロードされても、変化しません。
up オプション。"up"の後に2の累乗となる数値を付け加えることで、ロードされているパッチャーで、2の累乗で明示された値によるアップサンプリングを行うことを指定します。up 2というメッセージは2を係数とするアップサンプリング(例えばサンプリングレートが44100Hzの場合には、88200Hzへのアップサンプリング)を行います。upもdownもpoly‾オブジェクトが受け取ることができる引数ですが、downメッセージはupより優先します。
down オプション。"down"の後に2の累乗となる数値を付け加えることで、ロードされているパッチャーで、2の累乗で明示された値によるダウンサンプリングを行うことを指定します。up 2というメッセージは2を係数とするダウンサンプリング(例えばサンプリングレートが44100Hzの場合には、22050Hzへのアップサンプリング)を行います。upもdownもpoly‾オブジェクトが受け取ることができる引数ですが、downメッセージはupより優先します。
args オプション。"args"は、ロードされたパッチャーの中にある#のついた引数(例えば#1など)を初期化するために使用できます。引数argsは最後の引数として使用しなければなりません。"args"の後に続くものはすべてその引数として扱われます。

アウトプット

すべての出力 poly‾オブジェクトのアウトレットの数は、ロードされたパッチャーにあるout及びout‾オブジェクトの引数の最大値の計になります。例えば、out3オブジェクトとout‾2オブジェクトがある場合、poly‾オブジェクトは5つのアウトレットを持ちます。out‾オブジェクトに対応するシグナル出力はpoly‾オブジェクトの最も左のアウトレットからとなり、その後にout オブジェクトに対応するイベント出力のアウトレットが続きます。

poly‾オブジェクトのアウトレットに対応するパッチャーインスタンスが複数存在する場合、各々のパッチャーインスタンスからout‾オブジェクトのインレットに送られたシグナルはミックスされます。

実例

poly‾オブジェクトはサブパッチの複数のインスタンスを管理します

参照

in  poly‾によってロードされたパッチャーへのメッセージ入力
in‾  poly‾によってロードされたパッチャーへのシグナル入力
out  poly‾によってロードされたパッチャーからのメッセージ出力
out‾  poly‾によってロードされたパッチャーからのシグナル出力
patcher  パッチの中にサブパッチを作る
thispoly‾  poly‾のボイスアロケーションとミュートのコントロール
tutorial 20 MIDIコントロール:サンプラ
tutorial 21 MIDIコントロール:
poly‾オブジェクトの使用