今夜は葛西スペースでのクリエイティブコーディング会。参加者それぞれ「これやります!」宣言をして、それぞれ作業を頑張っています。私は「ORCAのリストをSuperColliderに渡すサンプルを作ってQiitaにアップする」ところまでが今日の目標です。クラフトワイフのライブの準備とも言います!
まずはSuperColliderのSynthDefを定義します。好きなやつなんでもどうぞ。ライブで使っているやつを載せておきます。
SynthDef(\dtk_arp, { arg freq=208, amp=0.8, pan = 0, releaseTime = 0.1,filterLowFreq = 2000;
var osc, seq1, seq2, env;
osc = Pulse.ar(freq, Line.kr(0.5,0.48,0.1), amp * 0.5) + Pulse.ar(freq/2, Line.kr(0.5,0.49,0.2), 0.01) ;
env = EnvGen.kr(Env.perc(0.0001,releaseTime * 10,1,-3), doneAction: 2);
osc = LPF.ar(osc, XLine.kr(10000,filterLowFreq,0.1));
Out.ar(0, Pan2.ar(osc * env, pan));
}).store;
次にSCのパターン、Pbindで使いたいリストを定義しておきます。
~test = PatternProxy(Pseq([0,2,4,6], inf));
上のパターンを使ったPbindを作って再生します。今はリストを音の高さに割り当てています。
~pt = Pbind (
\instrument, \dtk_arp,
\degree, ~test,
\amp, 1.5,
\dur, 0.5
).play;
ORCAちゃんに移動しましょう。4つの数字のリストをpというタグをつけてOSC送信するコードです。1番目と4番目の要素はRを使ってランダムにしてあります。ORCAソフトのOSCメニューからSuperColldier(57120)を選択しておくのを忘れずに!
..R4.R8
=p3241.
SuperColliderに戻り、pのOSCメッセージを受け取る部分を書きます。
(
OSCdef(\orca_osc, {|msg|
msg.removeAt(0);
msg.postln;
~list = msg;
~test.source = PatternProxy(Pseq(~list,inf));
}, \p);
);
これを実行しておけば準備完了です。
ORCAの上から2列目の=のところにbangを送ってトリガーすればOKです。このトリガー、使い道が謎だった東西南北コマンドが便利です!2列目の=の数マス左にいき大文字のEをタイプします。Eが=に当たったところで、OSCメッセージがSuperColliderに送られて、Pbindの音の高さのところが変わります!
ではまた来月!