4_modulation_synthdefs.scd 865 B

12345678910111213141516171819202122232425262728293031323334
  1. (
  2. // Low Frequency Oscillator for parameter modulation
  3. SynthDef(\lfo, { |out=0, freq=1, min=0, max=1, waveform=0|
  4. var lfo;
  5. // Select waveform based on parameter
  6. lfo = Select.kr(waveform, [
  7. SinOsc.kr(freq), // Sine wave (waveform=0)
  8. LFTri.kr(freq), // Triangle wave (waveform=1)
  9. LFSaw.kr(freq, 0, -1), // Decreasing sawtooth wave (waveform=2)
  10. LFPulse.kr(freq, 0, 0.5) // Square wave (waveform=3)
  11. ]);
  12. // Scale to range
  13. lfo = lfo.range(min, max);
  14. // Output to control bus
  15. Out.kr(out, lfo);
  16. }).add;
  17. // ADSR envelope generator
  18. SynthDef(\envelope, { |out=0, gate=1, attack=0.01, decay=0.3, sustain=0.5, release=1|
  19. var env = EnvGen.kr(
  20. Env.adsr(attack, decay, sustain, release),
  21. gate,
  22. );
  23. Out.kr(out, env);
  24. }).add;
  25. "Modulation SynthDefs loaded".postln;
  26. )