(
SynthDef(\slowBass, {
    |freq = 50, dur = 4, amp = 0.5, ringFreq = 80|
    var env, sig, ringMod;

    // Freq env (rises over time)
    env = EnvGen.kr(Env.perc(attackTime: dur * 0.8, releaseTime: dur * 0.2), doneAction: 2);

    // Sinusoidal bass tone with rising pitch
    sig = SinOsc.ar(freq * (1 + (env * 2)), 0, amp);

    // Sideband modulation (AM synthesis)
    //ringMod = SinOsc.ar(ringFreq); // Modulator
    //sig = sig * ringMod; // AM modulation

	ringMod = SinOsc.ar(ringFreq);
	sig = DiodeRingMod.ar(sig, ringMod);

    // Apply an amplitude env for shaping
    sig = sig * EnvGen.kr(Env.asr(0.5, 1, 1), doneAction: 2);

    Out.ar(0, sig.dup);
}).add;


Pbind(
	\instrument, \slowBass,
	\freq, Pseq([40, 45, 50, 55], inf),
	\dur, Pseq([6, 8, 10, 12], inf),
	\amp, 0.3
).play;
)



(
SynthDef(\telemusik, {
    |freq = 50, dur = 4, amp = 0.5, ringFreq = 500, modIndex = 2.0, delayTime = 1, fb = 0.7|
    var env, sig, ringMod, vibrato, shimmer, resonances;

    // Frequency envelope (rises over time)
    env = EnvGen.kr(Env.perc(attackTime: dur * 0.8, releaseTime: dur * 0.2), doneAction: 2);

    // Sinusoidal bass tone with rising pitch
    sig = LFTri.ar(freq * (1 + (env * 2)), 0, amp);

    // High-Frequency Ring Modulation for Glassy Effect
    ringMod = LFSaw.ar(ringFreq); // Faster modulator
    sig = DiodeRingMod.ar(sig, ringMod);

    // Vibrato (subtle FM-style detuning)
    vibrato = SinOsc.kr(6, 0, 0.01, 1); // 6 Hz LFO for micro-detuning
    sig = sig * vibrato;

    // Bright resonances (adds "electronic shimmer")
    resonances = BPF.ar(sig, freq * [2, 3, 5], 0.2).sum; // Resonant bands
    sig = sig; // + resonances;

    // Feedback delay for metallic shimmer
    shimmer = CombC.ar(sig, 0.1, delayTime, fb);
    sig = sig + shimmer;

    // Apply an amplitude envelope
    sig = sig * EnvGen.kr(Env.asr(0.5, 1, 1), doneAction: 2);

	// Cheap reverb
	//sig = FreeVerb.ar(sig, 0.7, 0.4, 0.2);

    Out.ar(0, sig.dup);
}).add;

Pbind(
	\instrument, \telemusik,
	\freq, Pseq([40, 45, 50] * 60, inf),
	\dur, Pseq([6, 8, 10] * 2, inf),
	\amp, 0.08
).play;
)