Skip to content

Instantly share code, notes, and snippets.

@iani
Created June 29, 2013 11:55
Show Gist options
  • Save iani/5890870 to your computer and use it in GitHub Desktop.
Save iani/5890870 to your computer and use it in GitHub Desktop.
Like SC_detect_silence before, but with added second envelope to control the duration of the continued sound "tail"
(
SynthDef("releaser", { | gate = 1 |
var env;
env = Env([0, 1, 0], [0.04, 6.0], releaseNode: 1);
Out.ar(0, WhiteNoise.ar(1) * EnvGen.kr(env, gate, doneAction: 2))
}).add;
)
(
SynthDef("reverbreleaser_template", { | gate = 1 |
var env, source, reverb;
env = Env([0, 1, 0], [0.04, 6.0], releaseNode: 1);
source = WhiteNoise.ar(1) * EnvGen.kr(env, gate, doneAction: 0);
reverb = GrayNoise.ar(1) * DetectSilence.ar(source, 0.5);
Out.ar(0, [source, reverb])
}).add;
)
(
SynthDef("reverbreleaser", { | gate = 1, gate2 = 1, stretch = 1 |
var env, source, reverb, env2;
env = Env([0, 1, 0], [0.04, 6.0], releaseNode: 1);
source = SinOsc.ar(LFNoise2.kr(5).range(400, 4000))
* EnvGen.kr(env, gate, doneAction: 0);
reverb = Mix({
AllpassC.ar(source, 0.3, 0.001.exprand(0.1) min: 0.3, decaytime: 20);
} ! 20
)* DetectSilence.ar(source, 0.5);
env2 = Env([0, 1, 0], [0.04, 1], releaseNode: 1);
Out.ar(0, [source, reverb * EnvGen.kr(env2, gate2, timeScale: stretch, doneAction: 2)])
}).add;
)
a = Synth('reverbreleaser');
a.release(10);
a.release(3);
a.release(0.1);
a.set(\gate2, 0);
a.set(\stretch, 10, \gate2, 0);
a.release(10);
a = Synth('releaser');
a.set(\gate, 0);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment