| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- (
- // RGB-controlled synthesizer with amplitude envelope
- SynthDef(\rgbSynth, { |out=0, freq=440, amp=0.5, attack=0.01, release=1, redAmt=0.5, greenAmt=0.5, blueAmt=0.5|
- var env, red, green, blue, sig;
- // Amplitude envelope
- env = EnvGen.kr(Env.perc(attack, release), doneAction: 2);
- // Different waveforms for RGB components
- red = SinOsc.ar(freq) * redAmt;
- green = Saw.ar(freq) * greenAmt;
- blue = Pulse.ar(freq, 0.5) * blueAmt;
- // Mix the waveforms
- sig = (red + green + blue) / 3;
- // Apply envelope and output
- sig = sig * env * amp;
- Out.ar(out, sig!2);
- }).add;
- // RGB-controlled synthesizer with filter envelope
- SynthDef(\rgbFilterSynth, { |out=0, freq=440, amp=0.5, attack=0.01, release=1,
- filterAttack=0.01, filterRelease=1, filterMin=200, filterMax=5000,
- redAmt=0.5, greenAmt=0.5, blueAmt=0.5|
- var ampEnv, filterEnv, red, green, blue, sig;
- // Amplitude envelope
- ampEnv = EnvGen.kr(Env.perc(attack, release), doneAction: 2);
- // Filter envelope
- filterEnv = EnvGen.kr(Env.perc(filterAttack, filterRelease));
- // Different waveforms for RGB components
- red = SinOsc.ar(freq) * redAmt;
- green = Saw.ar(freq) * greenAmt;
- blue = Pulse.ar(freq, 0.5) * blueAmt;
- // Mix the waveforms
- sig = (red + green + blue) / 3;
- // Apply filter with envelope control
- sig = RLPF.ar(sig, filterEnv.linexp(0, 1, filterMin, filterMax), 0.5);
- // Apply amplitude envelope and output
- sig = sig * ampEnv * amp;
- Out.ar(out, sig!2);
- }).add;
- // RGB-controlled synthesizer with pitch envelope
- SynthDef(\rgbPitchSynth, { |out=0, freq=440, amp=0.5, attack=0.01, release=1,
- pitchAttack=0.01, pitchRelease=1, pitchRatio=2,
- redAmt=0.5, greenAmt=0.5, blueAmt=0.5|
- var ampEnv, pitchEnv, red, green, blue, sig;
- // Amplitude envelope
- ampEnv = EnvGen.kr(Env.perc(attack, release), doneAction: 2);
- // Pitch envelope
- pitchEnv = EnvGen.kr(Env.perc(pitchAttack, pitchRelease));
- // Calculate modulated frequency
- freq = freq * (1 + (pitchEnv * (pitchRatio - 1)));
- // Different waveforms for RGB components
- red = SinOsc.ar(freq) * redAmt;
- green = Saw.ar(freq) * greenAmt;
- blue = Pulse.ar(freq, 0.5) * blueAmt;
- // Mix the waveforms
- sig = (red + green + blue) / 3;
- // Apply amplitude envelope and output
- sig = sig * ampEnv * amp;
- Out.ar(out, sig!2);
- }).add;
- "RGB-controlled synthesizers loaded".postln;
- )
|