‹ redTie redWirelessMaster ›

Pact - April

2009-04-01 23:24 livecoding, supercollider

April 2009, 30 days, 1hour/day. Do something and show the result to your contracting party. Similar to our previous live-coding practising sessions (Aug 2006 and Jun 2007). This time I battle Marcus Fjellström. Follow his daily work here.

My rules are: on the last day of March, code a single SynthDef in SuperCollider that I'll force myself to make music with all throughout the month. I'm not allowed to use any other SynthDefs! If I need to change the synth definition during the 30 days, all the music written up to that point will be affected. These constraints are both quite strict and quite silly I know, but I imagine it'll help me focus my 1hour work on controlling the synth instead of rewriting the synthesis part all the time (bad habit). Of course, it is not the optimal way to make music in SuperCollider. Normally one would opt for smaller SynthDefs that do less and are interconnect via busses. See that as a warning and don't copy my SynthDef below. It's a big ugly beast.

So here's first the SynthDef. Coded on March 31st...

//this is the SynthDef that I must use for all 30 days
SynthDef(\redMond, {
  arg out= 0, pan= 0, det= 0,
  atk= 0.01, rel= 0.1, cur= -4, gate= 1,
  amp= 1, freq= 440, sel= 0, selFreq= 40,
  amp2= 0, freq2= 40, sel2= 0, selFreq2= 40,
  amp3= 0, freq3= 40, sel3= 0, selFreq3= 40,
  ringMix= -1, ringFreq= 440, ringGain= 0, ringRate= 1,
  distMix= -1, distFreq= 0.4, distDeep= 1,
  combMix= -1, combFreq= 40, combDecy= 1,
  moogMix= -1, moogFreq= 440, moogGain= 1,
  verbMix= -1, verbRoom= 0.4, verbDamp= 0.4;
  var iii, aaa, bbb, ccc, zzz,
  ii, aa, bb, cc, zz,
  i, a, b, c, z,
  e;
  det= det+1;  //detune.  1= no detune
  iii= SelectX.ar(sel3, [
    DC.ar(0),
    DC.ar(1),
    DC.ar(2),
    SinOsc.ar(selFreq3, 0, 1.5, 1.5),
    LFSaw.ar(selFreq3, 0, 1.5, 1.5),
    LFPulse.ar(selFreq3, 0, 0.3, 1.5, 1.5)
  ]);
  aaa= SinOsc.ar(freq3, 0, amp3);
  bbb= LFSaw.ar(freq3*det, 0, amp3);
  ccc= LFPulse.ar(freq3*det*det, 0, 0.3, amp3);
  zzz= Select.ar(iii, [aaa, bbb, ccc]);
  ii= SelectX.ar(sel2, [
    DC.ar(0),
    DC.ar(1),
    DC.ar(2),
    SinOsc.ar(selFreq2, 0, 1.5, 1.5),
    LFSaw.ar(selFreq2, 0, 1.5, 1.5),
    LFPulse.ar(selFreq2, 0, 0.4, 1.5, 1.5)
  ]);
  aa= SinOsc.ar(freq2+zzz, 0, amp2);
  bb= LFSaw.ar(freq2+zzz*det, 0, amp2);
  cc= LFPulse.ar(freq2+zzz*det*det, 0, 0.4, amp2);
  zz= Select.ar(ii, [aa, bb, cc]);
  i= SelectX.ar(sel, [
    DC.ar(0),
    DC.ar(1),
    DC.ar(2),
    SinOsc.ar(selFreq, 0, 1.5, 1.5),
    LFSaw.ar(selFreq, 0, 1.5, 1.5),
    LFPulse.ar(selFreq, 0, 0.5, 1.5, 1.5)
  ]);
  a= SinOsc.ar(freq+zz);
  b= Saw.ar(freq+zz);
  c= Pulse.ar(freq+zz);
  z= Select.ar(i, [a, b, c]);
  z= XFade2.ar(z, SinOsc.ar(ringFreq+SinOsc.ar(ringRate, 0, ringGain), 0, z), ringMix);
  z= XFade2.ar(z, SinOsc.ar(distFreq, z*(1+(distDeep*(8pi-1))))*0.5, distMix);
  z= XFade2.ar(z, CombN.ar(z, 1, combFreq.reciprocal, combDecy), combMix);
  z= XFade2.ar(z, MoogFF.ar(z, moogFreq, moogGain), moogMix);
  z= FreeVerb.ar(z, verbMix*0.5+0.5, verbRoom, verbDamp);
  e= EnvGen.ar(Env.asr(atk, 1, rel, cur), gate, doneAction:2);
  Out.ar(out, Pan2.ar(z, pan, e*amp));
}).store;

And here follows short MP3 excerpts. Note: all the 30 files + SynthDef can also be found the 'pact-apr09.zip' attached below.

Updates:

Attachments:


‹ redTie redWirelessMaster ›