Les 6: SuperCollider - OSC


Hier de code van de les van vandaag over OSC

s.boot;

//bouw een synthdef met een kamfilter
(
SynthDef(\naam,{ | freq=220,amp=0.5,cutoff=220 |
  var in, sig, env;
  env = EnvGen.ar(Env.perc(0.01,0.1));
  in = WhiteNoise.ar(env);
  sig = CombC.ar(in,0.2,1/freq,1,0.5);
  sig = BLowPass.ar(sig,cutoff);
  DetectSilence.ar(sig,doneAction:2);
  Out.ar(0,sig);
}).add;

)
//testen om de synth af te spelen
Synth(\naam,[\freq,110]);

//open een udp-poort
thisProcess.openUDPPort(9001);

//maak een osc-functie om OSC-data binnen te krijgen
//zorg dat je de variabele waar je het in opslaat 
//eerst leeghaalt, zodat oude functies niet door blijven gaan
//osc-data komt als array binnen
(
~oscfunc.free;
~oscfunc = OSCFunc({ |message| 
  Synth(\naam,[
    \freq,message[1],
    \amp,message[2],
    \cutoff,message[3]
  ]
  );
},'/synth');
)

//bonus: soort van for-loop
10.do({ | i |
  i.postln;
});