すっかり、忘れられているでしょうが、Fibonacci数列というのを思い 出してください。そう、黄金律を導く数列でしたね。
そこで今回はその数列から音を奏でてみようというわけです。
ご存じのとおりMAXのみのときは手っ取り早くMIDIを使うところですが、 mspを使えば、ソフトシンセほどではありませんが、立派なシンセを形
作ることができるのです。そこで、アナログシンセサイザーの仕組みに 習って、シンセを作っていこうと思います。
アナログシンセを簡単なセクションにすると、音の元となる波形を作り 出すオシレーター、減算方式で音に味つけをするフィルター、音量を時 間軸に沿って変化させる(あるいは変化させるのはフィルターの場合も
ある)エンヴェロープジェネレーターと言ったところとなる。このほか にもオシレーターを制御する、つまり音階をコントロールするセクショ ンなどがあるが、今回はあくまでも、音を出すというところに限って作
っていこうと思うので、簡単なものになると思う。
cycle~はサイン波、phasor~は矩形波、noise~はノイズジェネレーター の役割をする。前者二つは周波数で音程を(右インレット)コントロー ルする。余談になるがmtofというオブジェクトはMIDIノートナンバーを 周波数に変換することができるので、これらのオブジェクトの上にこの オブジェクトを配置することで、MIDIキーボードによる演奏も可能とな る。
mspにはいくつかのフィルターとなるオブジェクトが存在するが、その中 でも、シンセとして、一般的なレゾナンスつきローパスフィルターの役 割をするlores~が一番適していると思う。このほか、バンドパスフィル ターの役割をするreson~も使いやすそうだ。
line~と*~の組み合わせで緩やかな変化を与えることができる。つまり、 時間的変化は得られることができるのだが、アナログシンセなどに一般 的に見られるASDRのような変化を与えるのなら、functionを使用すれば、 視覚的にもわかりやすいエンヴェロープジェネレーターとなることがで きる。さらに、値を変化させるのはASDRのように4点と決まっていない ので、より複雑な変化を与えることもできる。たとえば、周期的に波の ようにすれば、トレモロ効果となる。
まー、以上のオブジェクトを利用して、音源を作って試て行こうと思っ ています。そこで、とりあえず、今回は隣り合う4つの数列の項を和音 にすることを前提にパッチを組んでいくことにした。ついでに、その項 をランダムに再生することにした。仕組みは簡単である。metroでrandom をバングすることによって、数列の最初の項をランダムに決定するだけ ですから。あとは、それぞれの項の値を周波数にするサイン波を発生す るようにしてあります。始めはMIDIノートナンバーでやろうと思ったの ですが、値が大きすぎて、周波数にすることにしました。そこに、今回 は音量の変化を与えるエンヴェロープジェネレーターを取りつけてみま した。functionにつながるsetdomain nとは横軸のミリ秒を設定するもの ですが、これは変数がつかえない模様です。だから、テンポが速くて、 エンヴェロープが途中で切れるとぶつぶつ言わないようにするにはポリ フォニックにするか、他のもっと違うこと考えなくてはいけないようで す。簡単に、その辺ができると思っていた私が甘かったようで。とりあ えず、今回は未完成ですが、このへんで、次はフィルターやら、今回の 課題を解決した改善版を考えるのは次回にしようかと思います。そう、 そう、今回のパッチにはオートパンもつけてみました。サブパッチの横 にあるのは上のほうが、パンニングの周波数で、下は各々のゲインにな っています。それでは、おおきな課題を抱えつつ、また次回。
Posted by com4jai at 2004年03月28日 21:18