金曜日, 6月 30, 2006

「サクラ」でランダムに音を選ぶには(RandomSelect)

今日は繰り返しのための新しい構文と、引数の中からランダムに選んだ値を返すRandomSelect関数を試してみる。

昨日までは繰り返しの構文としてForループを使ってみたが、もっと簡単な繰り返しのための構文がある。

[ ... ] の中を、n回繰り返し演奏
http://oto.chu.jp/doc/command/83.htm

単純なループならこの書き方のほうが便利そうだ。

乱数関係の構文では、普通のRandom関数と、引数の中からランダムに選んだ値を返すRandomSelect関数がある。

RandomSelect
http://oto.chu.jp/doc/command/95.htm

昨日までやった、128種類の音色で「ドレミファソラシド」と演奏するプログラムをちょっと手直しして、「ドレミファソラシド」の部分を「ドミファソシド」という5音階から8個の音をRandomに選んで演奏させてみる。

//---------- ここから ----------
Int Onkai; Int Vno=0
[128 Vno=Vno+1 @(Vno)
[8 Onkai=RandomSelect(60,64,65,67,71,72) n(Onkai)]
]
//---------- ここまで ----------



ちょっと復習なのだが、「サクラ」ではMIDI信号を、コントロールパネルで指定されたMIDIの既定のデバイスに出力する。

従って、この既定のデバイスを変えてやれば、外部のMIDI音源を鳴らしたり、MidiYokeなどの仮想MIDIドライバを使ってソフトシンセを鳴らしたりすることができる。

下の画像は、HexterというDX7互換のソフトシンセを使って上のプログラムを演奏させているところだ。