#12 複数の音を同時に出す : poly~ オブジェクト その② | Max サウンドプログラミングの可能性
我らが井出所長による、JR新宿駅の元祖発車音について語るポッドキャストが、現在大好評配信中です。
その中の重要なキーワード「鐘の音」を、正弦波を重ねることでシミュレーションしたパッチを参考にし、前回はpoly~オブジェクトについて解説しました。今回は、poly~オブジェクトのデータ入力について見ていきたいと思います。
データ入力の方法
同じサブパッチが複数重なっているため、データの入れ方にクセがあります。
・「note」メッセージを先頭につけて入力。(数字等のデータ。公式のヘルプパッチで最初に紹介されているが、少々わかりにくい)
・send, recieve オブジェクトを使用し入力。(重なったサブパッチ全てに送信)
・「target」メッセージで受け取り先を何番目のサブパッチにするか決め、入力。
など、色々な方法がありますが、まずは前回の参考パッチで使用した「target」メッセージを使用したデータ入力の方法を見ていきます。
受け取り先を決めてデータを入れる: target メッセージ
こんなパッチを用意しました。
受け取り先を決めてデータを入れるには、「target」と数字をセットにしてpoly~オブジェクトにメッセージを一度入れます。例えば「target 7」とします。
すると、7番目のサブパッチにデータが入るように設定されます。
この後にデータを入れてあげると、無事7番目のサブパッチにだけデータが送られます。
ちなみに、「target 0」とすると、重なったすべてのサブパッチにデータが送られます。
ぜひ試してみてください。
busy状態でないサブパッチを自動で選択し、データを送信: note メッセージ
少しややこしいですが、ヘルプパッチで最初に紹介されている note メッセージの使い方です。
こちらのメッセージを使うためには、poly~のサブパッチの方で設定が必要です。
こんなパッチを用意しました。
「note 0」を入力すると、ランダムな音高のサイン波が鳴るパッチです。
サブパッチの中はこんな感じ。
サイン波の鳴る長さは3000msとしました。
ここで重要なのが、thispoly~オブジェクトです。
このオブジェクトに「1」を入力するとbusy状態となり、データの入力ができなくなります。「0」を入力するとbusy状態が解除され、データの入力が可能になります。
サイン波の鳴っている3000msの間をbusy状態とし、入力を受け付けなくなるようにしてみました。
動かすとこんな感じです。
右アウトレットからの「voice」メッセージは現在のサブパッチの番号ですが、時折動かなくなりbusy状態になっていることがわかると思います。
しばらく時間をおいたり、入力中に時間が経ったりすると、また動き始めます。
(GIFだとわかりにくいかもしれませんが…)
また、ヘルプパッチで使用されている「mute」メッセージを thispoly~ オブジェクトに入力すると、そのサブパッチのサウンド処理を停止することができるため、CPU負荷の軽減になります。
次回はこのコントロールの方法など、少し詳しく見ていきたいと思います。