Les 2


//boot de server
s.boot;

//een functie
~sinus = {SinOsc.ar([100, 101, 50], 0, [0.2, 0.1])}

//voer de functie uit
~sinus.play;


//simpele synth definitie
(
SynthDef(\sin, {|freq = 100, amp = 0.4|
  var lala;
  lala = SinOsc.ar([freq, freq+1], 0, amp);
  Out.ar(0, lala);
}).add;
)


// nu een synth definitie met een envelope!!!!
(
SynthDef(\sinEnv, {|freq = 100, amp = 0.4, t_trig = 1, att=0.001|
  var lala, envelope;
  //zo maak je een envelope
  envelope = EnvGen.ar(Env.perc(att, 2, amp, -8), gate: t_trig,
  doneAction:2);

  lala = SinOsc.ar([freq, freq+1], 0, envelope);

  Out.ar(0, lala);
}).add;
)



//definieer patronen met een Pbind
(
~pattern = Pbind(    \instrument, \sinEnv,
            \dur, 0.5,
            //Pseq maakt een sequentie
            \freq, Pseq([48,50,60,67].midicps, inf),
            \amp, Pseq([0.4, 0.2, 0.1], inf),
            \att, Pseq([0.0001, 3, 0.0004],inf),
            \t_trig, 1);
)


//speel de Pbind en er worden synths gestart
~play = ~pattern.play;


//simpel algoritme
Routine({

  var omhoog = 0;
  10.do({
    omhoog = omhoog + 1;
    0.5.wait;
    omhoog.postln;
  });


  "klaar".postln;

}).play;