https://supercollider.github.io/|SuperCollider]-Codebeispiele#

(erstmalig verfasst: 09.10.2021, geändert: 09.10.2021)

Vorarbeit: 
1. % pw-jack scide
   ... ruft die SuperCollider-Entwicklungsumgebung auf, so sie installiert ist
2. Mit [Strg+B] den SuperCollider-Server starten
3. Code eintippern oder per Clipboard übertragen
4. Cursor in Code positionieren und mit [Strg+Returntaste] Code ausführen
5. Nach getaner Arbeit des Codes die Ausführung mit [Alt+.] stoppen

Hilfe für Suchbegriffe: [Strg+Shift+D]

Nathaniel Virgo ("SC140/01-Nathaniel_Virgo.scd")#

(
s.waitForBoot{
//Nathaniel Virgo
{
                LocalOut.ar(a=CombN.ar(
                        BPF.ar( // Butterworth bandpass filter
                                LocalIn.ar(2)*7.5+Saw.ar([32,33], 0.2),
                                2**LFNoise0.kr(4/3,4)*300,0.1).distort.postln, // frequency
                            2,  // rq = bandwith/frequency
                            2,  // mul
                            40  // add
                        )
                );
        a
        }.play//#supercollider
}
)

Was macht es: zufällig komponieren. Für meine Begriffe (Markus) beinahe endlos hörbar.

Reverb-Example mit zufälligen Tonnfolgen#

Quelle: https://depts.washington.edu/dxscdoc/Help/Tutorials/Mark_Polishook_tutorial/17_Delays_reverbs.html
(
{
var s, z, y;
    // 10 voices of a random sine percussion sound :
s = Mix.ar(Array.fill(10, { Resonz.ar(Dust.ar(0.2, 50), 200 + 3000.0.rand, 0.003)}) );
    // reverb predelay time :
z = DelayN.ar(s, 0.048);
    // 7 length modulated comb delays in parallel :
y = Mix.ar(Array.fill(7,{ CombL.ar(z, 0.1, LFNoise1.kr(0.1.rand, 0.04, 0.05), 15) }));
    // two parallel chains of 4 allpass delays (8 total) :
4.do({ y = AllpassN.ar(y, 0.050, [0.050.rand, 0.050.rand], 1) });
    // add original sound to reverb and play it :
s+(0.2*y)
}.scope
)

Was macht es: abspielen auf- und abklingender, verhallter, zufälliger Tonfolgen

Gabber Rave#

Quelle: Forum mit Hommage an Rave von 1995
// 60Hz Gabber Rave 1995
Server.default.boot;

(
SynthDef(\gabberkick, {
    var snd, freq, high, lfo;
    freq = \freq.kr(440) * (Env.perc(0.001, 0.08, curve: -1).ar * 48 * \bend.kr(1)).midiratio;
    snd = Saw.ar(freq);
    snd = (snd * 100).tanh + ((snd.sign - snd) * -8.dbamp);
    high = HPF.ar(snd, 300);
    lfo = SinOsc.ar(8, [0, 0.5pi]).range(0, 0.01);
    high = high.dup(2) + (DelayC.ar(high, 0.01, lfo) * -2.dbamp);
    snd = LPF.ar(snd, 100).dup(2) + high;
    snd = RLPF.ar(snd, 7000, 2);
    snd = BPeakEQ.ar(snd, \ffreq.kr(3000) * XLine.kr(1, 0.8, 0.3), 0.5, 15);
    snd = snd * Env.asr(0.001, 1, 0.05).ar(2, \gate.kr(1));
    Out.ar(\out.kr(0), snd * \amp.kr(0.1));
}).add;

SynthDef(\hoover, {
    var snd, freq, bw, delay, decay;
    freq = \freq.kr(440);
    freq = freq * Env([-5, 6, 0], [0.1, 1.7], [\lin, -4]).kr.midiratio;
    bw = 1.035;
    snd = { DelayN.ar(Saw.ar(freq * ExpRand(bw, 1 / bw)) + 
    Saw.ar(freq * 0.5 * ExpRand(bw, 1 / bw)), 0.01, Rand(0, 0.01)) }.dup(20);
    snd = (Splay.ar(snd) * 3).atan;
    snd = snd * Env.asr(0.01, 1.0, 1.0).kr(0, \gate.kr(1));
    snd = FreeVerb2.ar(snd[0], snd[1], 0.3, 0.9);
    snd = snd * Env.asr(0, 1.0, 4, 6).kr(2, \gate.kr(1));
    Out.ar(\out.kr(0), snd * \amp.kr(0.1));
}).add;

// this will record to the disk
/*SynthDef("help-Diskout", { |bufnum|
    DiskOut.ar(bufnum, In.ar(0,2));
}).add;
*/
) // zuerst mit [Strg+Return] ausführen

(
var durations;
durations = [1, 1, 1, 1, 3/4, 1/4, 1/2, 3/4, 1/4, 1/2];
Ppar([
    Pbind(*[
        instrument: \gabberkick,
        amp: -23.dbamp,
        freq: 60,
        legato: 0.8,
        ffreq: Pseq((0..(durations.size * 4 - 1)).normalize, inf).linexp(0, 1, 100, 4000),
        dur: Pseq(durations, inf),
        bend: Pfuncn({ |x| if(x < (1/2), 0.4, 1) }, inf) <> Pkey(\dur),
    ]),
    Pbind(*[
        instrument: \hoover,
        amp: -20.dbamp,
        midinote: 74,
        dur: durations.sum * 2,
        sustain: 7,
    ])
]).play(TempoClock(210 / 60));
)
)  // als zweites mit [Strg+Return] ausführen