Max/MSPでマルチチャンネルのシステムを作る人は少なく無いと思いますが、オーディオファイルとして記録する際に、sfrecord~を使って2ch以上のデータを録音する場面はあると思います。
ここまではいいのですが、再生となると少しやっかいです。sfplayがどうもMax6.1では正常に動作しません。
2ch以上のインターリーブファイルを扱う際に、2chのときとは違い、サンプルレートやビット数をきちんとメッセージで送る必要があり、それもオーディオをopenする前にやると音がきちんとでる場合とopenしてからメッセージで送るとそのタイミングで音が出る場合など、なにやら不思議な挙動になります。
これでは展示や舞台等で使用するにはなんとも不安。
そこで、gen~を使ってみたところあっさり動いたのでパッチのスクリーンショットを貼っておきます。
wave~オブジェクトは4ch以上のインターリーブファイルがバッファーに入っている場合、すべてのチャンネルが全く同じ1つのオーディオチャンネルを参照してしまったり、意図したようには動きません。
play~オブジェクトも4ch以上のアウトレットが出現してくれません。
Max6ユーザーにはgenがあるので、この問題は解決できます。
gen~の中はsampleオペレーターを使い、アーギュメントにチャンネル数を指定すれば適切なアウトレットが出現します。
そこからそれぞれoutオペレーターに接続するだけでwave~オブジェクトのマルチチャンネル版のように使えます。
buffer~のドキュメントには最大4chのオーディオを保持できると書いてあるのですが、実際やってみるともっと多くのチャンネルのインターリーブファイルを格納することができます。ダブルクリックすればそれがグラフィカルに確認できます。
gen~のchannelオペレーターを使っても4ch以上のオーディオファイルが認識されていることがわかります。
売り上げランキング: 11,786
リットーミュージック
売り上げランキング: 247,496