MAX 7 シンセサイザー基礎3-2
ioscbankオブジェクトによる加算合成の続き。
ioscbankオブジェクトの第1インレットへ、[set ,インデックス0番の周波数, 振幅, インデックス1番の周波数, 振幅, ...]というリストを送ることでも活用できる。
一見少しややこしいが、次のパッチを見ていきたい。
まずは上記のリストを再現するため、0〜63番に相当する周波数と振幅を定めなければならない。
そこで、まずuziオブジェクトを用いて1〜64のbangをいっせいに放ち(このbangの順番がインデックス番号)、周波数設定で[random10000]すなわち1Hz〜10kHzをランダムに生成(本来、条件指定とgateオブジェクトで可聴範囲内にするのが良い)。
続いてもう一つのrandomオブジェクトを(1〜64)÷64で0.015〜1.000の範囲でランダムに変動するように設定。そのそれぞれの値をpackでリスト化し、そのリスト化された周波数と振幅の×64番号分を、さらにthreshオブジェクトでリスト化する。
そうすることで、メトロオブジェクトがbangするごとに、64個分の合成されたシグナルが出力されることになる。
また、freqsmoothメッセージとmagsmoothメッセージは、それぞれのオシレーター周波数と振幅の変化時間をサンプル単位で設定するもので、設定された時間をかけて周波数と振幅を滑らかに連続的に変化する。ただ、受け取る数値がサンプル単位なので、ここではmstosampsメッセージを使ってmsec単位に変換している。
また、次のパッチでは、multisliderオブジェクトによって64個のインデックス番号を設定し、個々の振幅をランダムに設定したものをiterオブジェクトで一つにまとめ、先頭にsetをつけてioscbankに送り込んでいる。iterオブジェクトは、受け取ったリストを一つずつ分けて出力するものである。
このように、ioscbankオブジェクトのオシレーターバンクによる加算合成では、多数のサインはオシレーターの合成音を手軽に利用することが出来、簡単に複雑なサウンドを得ることが可能となる。