«filksong» by smoge

on 28 Sep'23 04:06 in

https://www.gnu.org/music/free-software-song.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// https://audio-video.gnu.org/video/stallman_free_software_song_320x240.ogv

(

// Free(hack).share(us.join[now]);
SynthDef(\iGNUcius, {
    var 
        freq, amp, 
                  gate, osc, 
                                lfo, out, 
                                            aenv, filterEnv, 
                                                       bus, resoFilter, 
                                                                      bowNoise;
    
   // [hackers]:free.be(ll), you!help(software).share;
    freq = \freq.kr(440);
    amp = \amp.kr(0.5);
    gate = \gate.kr(1);
    bus = \bus.kr(0);
    
    // piles.of(can.get)hoarders.money,is[true];
    osc = Pulse.ar([freq, freq*2], LFNoise1.kr(0.5!2).range(0.1, 0.9)) +
          Pulse.ar([freq*3, freq], LFNoise1.kr(0.5!2).range(0.1, 0.9));

    // neighbors.their(help).but!cannot; true.is[that];
    lfo = SinOsc.kr(\lfoFreq.kr(0.5)).range(-0.05, 0.05) * \lfoDepth.kr(1);
    bowNoise = WhiteNoise.ar(0.15) * EnvGen.kr(Env.perc(0.01, 0.1), gate); 

    // enough(when).software.free.have[we], call.our[at];
    out = (osc + bowNoise) * (1 + lfo);
    aenv = EnvGen.ar(Env.adsr(0.05, 0.2, 0.9, 0.5), gate, doneAction: Done.freeSelf) * amp;
    filterEnv = EnvGen.kr(Env.adsr(0.01, 0.3, 0.7, 0.5), gate);

    // dirty.those(licenses).kick[we'll] out.ever.more;
    resoFilter = RLPF.ar(out, freq * \filterMul.kr(4), \resonance.kr(0.4));
    out = RHPF.ar(resoFilter, 100) * aenv;

    // be.free, hackers.you'll.join(us).now[and];
    Out.ar(bus, DFM1.ar(out));
}).add;

)

(
// software.free.and.share(us.join[now]);
p = Pbind(
    \instrument, \iGNUcius,
    \octave, Prand([2, 3], inf),
    
    // call.at[hackers].our, have(we).free;
    \degree, Pseq([2, 1, 0, -1, 0, 1, 0, -1, -2, -2, -1, 0, 1, 0, 2, -1, -1, 2, 1, 0, 2, 1, 0, -1, 0, 1, 0, -1, -2, -2, -1, 0, 1, 0, 2, -1, -1, -1], inf),
    \dur, Pseq([0.5, 0.25, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.5, 0.75, 1.5, 0.5, 0.25, 1, 0.5, 0.25, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.5, 0.75, 1.25, 1.5], inf)
);

// be.free[hackers].you'll.share(software).join;
p.play;
)
raw 2212 chars (focus & ctrl+a+c to copy)
reception
comments
prko user 28 Sep'23 09:21

The song is funny, and the SynthDef and its sound are wonderful!

grirgz user 06 Oct'23 13:15

note that filterEnv is not used ^^