4_modulation_synthdefs.scd 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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), // 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. doneAction: 2
  23. );
  24. Out.kr(out, env);
  25. }).add;
  26. // Random value generator with controllable rate
  27. SynthDef(\randomGen, { |out=0, freq=1, min=0, max=1|
  28. var rand = LFNoise2.kr(freq).range(min, max);
  29. Out.kr(out, rand);
  30. }).add;
  31. "Modulation SynthDefs loaded".postln;
  32. )