pact - april

april 2009, 30 days, 1hour/day. do something and show the result to your contracting party. similar to our previous live-coding practising sessions (aug2006 and jun2007). 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 sc. 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;
        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));
}).memStore;

and here follows short mp3 excerpts. note: all the 30 files + synthdef can also be found the 'pact-apr09.zip' attached below.

AttachmentSize
pact-apr09.zip44.32 KB