SCでチップチューンを奏でよう:その3
つづいて、シーケンスを書きましょう。SuperColliderでシーケンスを記述する方法はいくつかありますが、ここでは、Pbindというクラスをつかいます。Pbindでは、常に、キーワードとそれに与える数値(パラメータ)を、1つのセットとして書いています。使えるキーワードは、あらかじめ決まっていたり、前回記述したSynthDefの中で追加することができます。
キーワードとパラメーターの記述例
/dur, 1, // duration、音を1秒間隔で鳴らす。
/legato, 0.5, // レガート、音の長さを半分にする。
/amp, 0.5, // 全体の音量を半分にする(最大1)
/tone0, 5, // 1つ目の音色を5番にする
/tone1, 5, // 2つ目の音色を14番にする
パラメータは、数値か、Pseqなどをつかってシーケンスにすることもできます。
/dur, Pseq([0.2,0.1,0.1],inf), // duration、音を1秒間隔で鳴らす。
/tone0, Pseq([5,7,7],inf), // 1つ目の音色を5、7、7、と1音毎に変える。
なお、指定されないパラメータには、デフォルトの初期値が適応されます。
実際に音を鳴らしてみます。
// 1秒毎に音を鳴らす
Pbind(
\instrument, \atari2600,
\dur, Pseq([1], inf),
\amp, 0.5
).play;
//音の鳴らす間隔を変える
Pbind(
\instrument, \atari2600,
\dur, Pseq([0.25,0.125,0.125], inf),
\amp, 0.5
).play;
//音の鳴らす間隔を変える
Pbind(
\instrument, \atari2600,
\dur, Pseq([0.25,0.125,0.125], inf),
\legato, 0.5,
\amp, 0.5
).play;
//さらに音色も変える
Pbind(
\instrument, \atari2600,
\dur, Pseq([0.25,0.125,0.125], inf),
\legato, 0.5,
\tone0, Pseq([5,7,7],inf),
\amp, 0.5
).play;
//さらに音高も変える
Pbind(
\instrument, \atari2600,
\dur, Pseq([0.25,0.125,0.125], inf),
\legato, 0.5,
\tone0, Pseq([5,7,7],inf),
\freq0, Pseq([1,2,3,4,5],inf),
\amp, 0.5
).play;
//さらに音高も変える
Pbind(
\instrument, \atari2600,
\dur, Pseq([0.25,0.125,0.125], inf),
\legato, 0.5,
\tone0, Pseq([5,7,7],inf),
\freq0, Pseq([3,4,5,6,7,8],inf),
\amp, 0.5
).play;
//さらに2つめの音も変える
Pbind(
\instrument, \atari2600,
\dur, Pseq([0.25,0.125,0.125], inf),
\legato, 0.5,
\tone0, Pseq([5,7,7],inf),
\freq0, Pseq([3,4,5,6,7,8],inf),
\amp0,15,
\tone1, Pseq([8],inf),
\freq1, Pseq([31,15],inf),
\amp1,Pseq([15,8, 15,1,7],inf),
\amp, 0.5
).play;
//いろいろ変える サンプルを聴く:chiptune_sample3
// Pn(x,m) は、1つ目の値xを、n回繰り返します。
// P(0,16) は、0を16回繰り返す
Pbind(
\instrument, \atari2600,
\dur, Pseq([0.125], inf),
\legato, 0.5,
\tone0, Pseq([8],inf),
\freq0, Pseq([31,31,15,15,9,1],inf),
\amp0,12,
\tone1, Pseq([4],inf),
\freq1, Pseq([31,15 ,21,7],inf) - Pseq([Pn(0,12), Pn(8,12)],inf),
\amp1,Pseq([15,8, 15,1,7],inf),
\amp, 0.5
).play;
Posted: 1月 18th, 2010 under chiptune, 日々のSC.
Comments: none