Pbind/Patternの内容を変える

春がくるのかしら、と思うような天気から、冷たい雨の白い冬の空。
この雨は、暖かい日をよんでいるのだろうか。今日は祭日。

午前中にiPressさんの原稿をチェックしました。写真のわたし、プクプクですが、なかなか楽しい記事になっています。2月中に全国のソフトバンクショップなどで無料でいただけるフリーペーパーです。また、配布が始まったらお知らせします。。

さて、Pbind/Patternの内容を、コードを走らせて音を鳴らしながら、要素をダイナミックに変える方法は以前書いたかも。

Pattern系のクラス自体を書き換えるような場合(PseqとPrandを切り替えて使う、など)は、PatternProxyを使った1の方法、そうではなく、リストの要素のみを書き換えたい場合は、2番目の方法がよいかな。

// SCデフォルトのinstrumentはいつになったら、
// テストしやすいものに変わるのだろう、苦笑。
SynthDef("simpleSine", {arg freq=440, amp=0.5;
Out.ar([0,1],
SinOsc.ar(freq) * EnvGen.ar(Env.perc, doneAction:2) * amp)
}).store;

//方法1///////////////////////////////////
~playerA_deg = PatternProxy(Pseq([0,1,2,3,4],inf));

p = Pbind(
\instrument, \simpleSine,
\degree, ~playerA_deg,
\dur ,0.25,
\octave, 7
).play

// Patternを変える
~playerA_deg.source = (Pseq([2,3,4,5],inf));
~playerA_deg.source = (Pseq([0,1,2,3,4,5],inf));
~playerA_deg.source = (Prand([0,1,2,3,4,5],inf));

//方法2 ///////////////////////////////////
~playerA_deg= List[2,2,2,2];

p = Pbind(
\instrument, \simpleSine,
\degree, Pseq(~playerA_deg, inf),
\dur, 0.25,
\octave, 7
).play;

// Listの内容を変える
~playerA_deg[1] = 5
~playerA_deg[3] = 7

Write a comment





Get Adobe Flash playerPlugin by wpburn.com wordpress themes