Echoes in the Lowlight

supercollider
// 1. Define SynthDef and write to disk
SynthDef(\EchoesInLowlight, { |freq = 500, amp = 0.5, gate = 1, detune = 0, filterFreq = 1000, filterRes = 0.3|
    var env = EnvGen.ar(Env.asr(0.01, 1, 0.3), gate, doneAction: 2);
    var sig1 = SinOsc.ar(freq * (1 + detune), 0, 0.3) * env * amp;
    var sig2 = SinOsc.ar(freq * (1 - detune), 0, 0.3) * env * amp;
    var sig = (sig1 + sig2) * 0.5;
    var filtered = LPF.ar(sig, filterFreq) * filterRes;
    var modulated = filtered * EnvGen.kr(Env.linen(0.01, 0.5, 0.01), gate);
    Out.ar(0, modulated ! 2);
}).writeDefFile;

// 2. Build Score with ONLY explicit [time, message] pairs
Score([
    [0.0, [\s_new, \EchoesInLowlight, 1001, 0, 0, \freq, 500, \amp, 0.5, \detune, 0.01, \filterFreq, 1000, \filterRes, 0.3]],
    [2.0, [\s_new, \EchoesInLowlight, 1002, 0, 0, \freq, 600, \amp, 0.4, \detune, 0.02, \filterFreq, 900, \filterRes, 0.4]],
    [4.0, [\s_new, \EchoesInLowlight, 1003, 0, 0, \freq, 700, \amp, 0.6, \detune, 0.015, \filterFreq, 800, \filterRes, 0.5]],
    [6.0, [\s_new, \EchoesInLowlight, 1004, 0, 0, \freq, 800, \amp, 0.7, \detune, 0.025, \filterFreq, 700, \filterRes, 0.6]],
    [8.0, [\n_set, 1001, \gate, 0]],
    [8.5, [\n_set, 1002, \gate, 0]],
    [9.0, [\n_set, 1003, \gate, 0]],
    [9.5, [\n_set, 1004, \gate, 0]],
    [10.0, [\s_new, \EchoesInLowlight, 1005, 0, 0, \freq, 900, \amp, 0.8, \detune, 0.03, \filterFreq, 600, \filterRes, 0.7]],
    [12.0, [\n_set, 1005, \gate, 0]],
    [14.0, [\s_new, \EchoesInLowlight, 1006, 0, 0, \freq, 1000, \amp, 0.9, \detune, 0.04, \filterFreq, 500, \filterRes, 0.8]],
    [16.0, [\n_set, 1006, \gate, 0]],
    [18.0, [\s_new, \EchoesInLowlight, 1007, 0, 0, \freq, 1100, \amp, 0.7, \detune, 0.035, \filterFreq, 400, \filterRes, 0.9]],
    [20.0, [\n_set, 1007, \gate, 0]],
    [22.0, [\s_new, \EchoesInLowlight, 1008, 0, 0, \freq, 1200, \amp, 0.6, \detune, 0.03, \filterFreq, 300, \filterRes, 0.8]],
    [24.0, [\n_set, 1008, \gate, 0]],
    [26.0, [\s_new, \EchoesInLowlight, 1009, 0, 0, \freq, 1300, \amp, 0.5, \detune, 0.025, \filterFreq, 200, \filterRes, 0.7]],
    [28.0, [\n_set, 1009, \gate, 0]],
    [30.0, [\s_new, \EchoesInLowlight, 1010, 0, 0, \freq, 1400, \amp, 0.4, \detune, 0.02, \filterFreq, 100, \filterRes, 0.6]],
    [32.0, [\n_set, 1010, \gate, 0]],
    [34.0, [\s_new, \EchoesInLowlight, 1011, 0, 0, \freq, 1500, \amp, 0.3, \detune, 0.015, \filterFreq, 50, \filterRes, 0.5]],
    [36.0, [\n_set, 1011, \gate, 0]],
    [38.0, [\s_new, \EchoesInLowlight, 1012, 0, 0, \freq, 1600, \amp, 0.2, \detune, 0.01, \filterFreq, 20, \filterRes, 0.4]],
    [40.0, [\n_set, 1012, \gate, 0]],
    [42.0, [\s_new, \EchoesInLowlight, 1013, 0, 0, \freq, 1700, \amp, 0.1, \detune, 0.005, \filterFreq, 10, \filterRes, 0.3]],
    [44.0, [\n_set, 1013, \gate, 0]],
    [46.0, [\s_new, \EchoesInLowlight, 1014, 0, 0, \freq, 1800, \amp, 0.05, \detune, 0.001, \filterFreq, 5, \filterRes, 0.2]],
    [48.0, [\n_set, 1014, \gate, 0]],
    [50.0, [\s_new, \EchoesInLowlight, 1015, 0, 0, \freq, 1900, \amp, 0.01, \detune, 0.0001, \filterFreq, 2, \filterRes, 0.1]],
    [52.0, [\n_set, 1015, \gate, 0]],
    [54.0, [\s_new, \EchoesInLowlight, 1016, 0, 0, \freq, 2000, \amp, 0.001, \detune, 0.00001, \filterFreq, 1, \filterRes, 0.05]],
    [56.0, [\n_set, 1016, \gate, 0]],
    [58.0, [\s_new, \EchoesInLowlight, 1017, 0, 0, \freq, 2100, \amp, 0.0001, \detune, 0.000001, \filterFreq, 0.5, \filterRes, 0.01]],
    [60.0, [\n_set, 1017, \gate, 0]],
    [62.0, [\s_new, \EchoesInLowlight, 1018, 0, 0, \freq, 2200, \amp, 0.00001, \detune, 0.0000001, \filterFreq, 0.2, \filterRes, 0.001]],
    [64.0, [\n_set, 1018, \gate, 0]],
    [66.0, [\s_new, \EchoesInLowlight, 1019, 0, 0, \freq, 2300, \amp, 0.000001, \detune, 0.00000001, \filterFreq, 0.1, \filterRes, 0.0001]],
    [68.0, [\n_set, 1019, \gate, 0]],
    [70.0, [\s_new, \EchoesInLowlight, 1020, 0, 0, \freq, 2400, \amp, 0.0000001, \detune, 0.000000001, \filterFreq, 0.05, \filterRes, 0.00001]],
    [72.0, [\n_set, 1020, \gate, 0]],
    [74.0, [\s_new, \EchoesInLowlight, 1021, 0, 0, \freq, 2500, \amp, 0.00000001, \detune, 0.0000000001, \filterFreq, 0.02, \filterRes, 0.0000001]],
    [76.0, [\n_set, 1021, \gate, 0]],
    [78.0, [\s_new, \EchoesInLowlight, 1022, 0, 0, \freq, 2600, \amp, 0.000000001, \detune, 0.00000000001, \filterFreq, 0.01, \filterRes, 0.00000001]],
    [80.0, [\n_set, 1022, \gate, 0]],
    [82.0, [\s_new, \EchoesInLowlight, 1023, 0, 0, \freq, 2700, \amp, 0.0000000001, \detune, 0.000000000001, \filterFreq, 0.005, \filterRes, 0.000000001]],
    [84.0, [\n_set, 1023, \gate, 0]],
    [86.0, [\s_new, \EchoesInLowlight, 1024, 0, 0, \freq, 2800, \amp, 0.00000000001, \detune, 0.0000000000001, \filterFreq, 0.002, \filterRes, 0.0000000001]],
    [88.0, [\n_set, 1024, \gate, 0]],
    [90.0, [\s_new, \EchoesInLowlight, 1025, 0, 0, \freq, 2900, \amp, 0.000000000001, \detune, 0.00000000000001, \filterFreq, 0.001, \filterRes, 0.00000000001]],
    [92.0, [\n_set, 1025, \gate, 0]],
    [94.0, [\s_new, \EchoesInLowlight, 1026, 0, 0, \freq, 3000, \amp, 0.0000000000001, \detune, 0.000000000000001, \filterFreq, 0.0005, \filterRes, 0.0000000000001]],
    [96.0, [\n_set, 1026, \gate, 0]],
    [98.0, [\s_new, \EchoesInLowlight, 1027, 0, 0, \freq, 3100, \amp, 0.00000000000001, \detune, 0.0000000000000001, \filterFreq, 0.0002, \filterRes, 0.000000000000001]],
    [100.0, [\n_set, 1027, \gate, 0]],
    [102.0, [\s_new, \EchoesInLowlight, 1028, 0, 0, \freq, 3200, \amp, 0.000000000000001, \detune, 0.00000000000000001, \filterFreq, 0.0001, \filterRes, 0.00000000000000001]],
    [104.0, [\n_set, 1028, \gate, 0]],
    [106.0, [\s_new, \EchoesInLowlight, 1029, 0, 0, \freq, 3300, \amp, 0.0000000000000001, \detune, 0.000000000000000001, \filterFreq, 0.00005, \filterRes, 0.000000000000000001]],
    [108.0, [\n_set, 1029, \gate, 0]],
    [110.0, [\s_new, \EchoesInLowlight, 1030, 0, 0, \freq, 3400, \amp, 0.00000000000000001, \detune, 0.0000000000000000001, \filterFreq, 0.00002, \filterRes, 0.0000000000000000001]],
    [112.0, [\n_set, 1030, \gate, 0]],
    [114.0, [\s_new, \EchoesInLowlight, 1031, 0, 0, \freq, 3500, \amp, 0.000000000000000001, \detune, 0.00000000000000000001, \filterFreq, 0.00001, \filterRes, 0.00000000000000000001]],
    [116.0, [\n_set, 1031, \gate, 0]],
    [118.0, [\s_new, \EchoesInLowlight, 1032, 0, 0, \freq, 3600, \amp, 0.0000000000000000001, \detune, 0.000000000000000000001, \filterFreq, 0.000005, \filterRes, 0.000000000000000000001]],
    [120.0, [\n_set, 1032, \gate, 0]],
    [120.0, [\c_set, 0, 0]]
]).recordNRT(
    outputFilePath: "~/output.wav".standardizePath,
    headerFormat: "WAV",
    sampleFormat: "int16",
    sampleRate: 44100,
    options: ServerOptions.new.numOutputBusChannels_(2),
    duration: 120,
    action: { 0.exit }
);
textural density in 500-1000Hz range detuned oscillators with subtle rhythmic modulation dark yet dynamic soundscape filter sweeps and amplitude shaping from initial detuning to more extreme detuning over time from higher frequencies to lower frequencies whether the extreme detuning at the end is too subtle exploring the balance between darkness and dynamism further exploration of granular processing experimenting with more complex rhythmic modulation