Les 4 - SuperCollider introductie
Hier de presentatie sysbas-1b-supercollider-1-introductie.pdf
Hier de code van de les:
// ====> Shortcuts
//
// cmd (macOS) of ctrl (Windows/Linux)
//
// cmd + B server opstarten
// cmd + enter code/regel uitvoeren
// cmd + . alle draaiende code stoppen
//
// cmd + D documentatie van code openen
// cmd + M geluid in/out meter openen
// Opstarten kan ook zo:
s.boot;
// Speel een sinus
{ SinOsc.ar(220) }.play;
// ====> Globale variabelen
//
// door hele file te gebruiken
~docent = "Roald";
~docent = "Ward";
// Je kan iets printen (in de postwindow)
// door ergens .postln achter te zetten
~test.postln;
// De laatste regel wordt altijd gepost
"Marc".postln;
~docent = "Ward";
~les = "SuperCollider";
// ====> Lokale variabelen
//
// binnen blocks/scopes te gebruiken
// daarbuiten dus niet bekend
{
var amp = 0.5;
SinOsc.ar(432, 0, amp);
}.play;
amp.postln; // hier is amp dus onbruikbaar
// ====> Code organiseren
//
// Code verzameld binnen { } en
// opgeslagen in een globale variabele
~zee = {
var lfo = SinOsc.ar(0.1, pi, 0.4, 0.6);
PinkNoise.ar([lfo, lfo]);
}
// Gebruik variabele:
~zee.play; // geluid afspelen
~zee.plot; // plot maken
~zee.scope; // scope openen (Ên afspelen)
// ====> unit-generators (UGens)
//
// oscillatoren, filters, effecten...
SinOsc.ar();
BLowPass.ar();
Delay1.ar();
FreeVerb.ar();
LFSaw.kr();
// UGen op audio rate (samplerate):
SinOsc.ar();
// UGen op kontrol rate (samplerate / 64):
// Gebruikt minder CPU
// Handig als je bijv. een LFO maakt
SinOsc.kr();
// ====> UGen mul en add
//
// UGens hebben meerdere argumenten.
//
// Veel UGens hebben een mul en add:
// mul vermenigvuldigd het signaal
// add voegt een offset toe aan signal
SinOsc.ar(freq, phase, mul, add);
BHiPass.ar(in, freq, reso, mul, add);
// SinOsc gaat van -1 naar 1
// Hoe maken we dat -0.25 t/m 0.25?
// En van 0 naar 1?
{ SinOsc.ar(440, 0, mul, add) }.scope;
// ====> UGen nesting en multichannel
//
// Als argument van een UGen kan je ook
// een andere UGen gebruiken
{
Saw.ar(SinOsc.kr(5, 0, 5, 110));
}.play;
// Door bij een argument een array
// mee te geven kan je meerdere
// kanalen aan geluid generen
{
Saw.ar(SinOsc.kr(0.25, 0, 5, [55, 110]));
}.play;