You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.1 KiB
Plaintext

(
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;
)