LoginSignup
1
0

More than 3 years have passed since last update.

ORCAのリストをSuperColliderに渡す

Last updated at Posted at 2019-09-13

今夜は葛西スペースでのクリエイティブコーディング会。参加者それぞれ「これやります!」宣言をして、それぞれ作業を頑張っています。私は「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の音の高さのところが変わります!

ではまた来月!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0