From fcdb2ab48adf9597b1c2501233670cff00b9686b Mon Sep 17 00:00:00 2001 From: Julian Rohrhuber Date: Tue, 6 Mar 2018 20:54:22 +0100 Subject: [PATCH] dirt-synths: add delay send parameter --- classes/DirtOrbit.sc | 2 +- synths/core-synths-global.scd | 11 ++++++++--- used-parameters.scd | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/classes/DirtOrbit.sc b/classes/DirtOrbit.sc index 5e4197eb..fa74b44c 100644 --- a/classes/DirtOrbit.sc +++ b/classes/DirtOrbit.sc @@ -58,7 +58,7 @@ DirtOrbit { initDefaultGlobalEffects { this.globalEffects = [ - GlobalDirtEffect(\dirt_delay, [\delaytime, \delayfeedback, \delayAmp, \lock, \cps]), + GlobalDirtEffect(\dirt_delay, [\delaytime, \delayfeedback, \delaySend, \delayAmp, \lock, \cps]), GlobalDirtEffect(\dirt_reverb, [\size, \room, \dry]), GlobalDirtEffect(\dirt_leslie, [\leslie, \lrate, \lsize]), GlobalDirtEffect(\dirt_rms, [\dirtOut, \rmsReplyRate, \rmsPeakLag]), diff --git a/synths/core-synths-global.scd b/synths/core-synths-global.scd index 2916ce35..288bc230 100644 --- a/synths/core-synths-global.scd +++ b/synths/core-synths-global.scd @@ -63,6 +63,8 @@ CORE SYNTHDEFS FOR DIRT Each must have at least: dryBus, effectBus, gate + dryBus and effectBus have \ir as rates (they shouldn't change at runtime) + */ @@ -70,11 +72,13 @@ CORE SYNTHDEFS FOR DIRT if(\SwitchDelay.asClass.notNil) { - SynthDef("dirt_delay" ++ numChannels, { |dryBus, effectBus, gate = 1, delaytime, delayfeedback, delayAmp = 1, lock = 0, cps = 1| + SynthDef("dirt_delay" ++ numChannels, { |dryBus, effectBus, gate = 1, delaytime, delayfeedback, delaySend = 1, delayAmp = 1, lock = 0, cps = 1| var signal; var input = In.ar(dryBus, numChannels); var maxDelayTime = 4; + input = input * delaySend.lag(LFNoise1.kr(1).range(0.01, 0.02)); // regulate input + delayfeedback = delayfeedback.max(0); delaytime = delaytime * if(lock, reciprocal(cps), 1); delaytime = delaytime.clip(0, maxDelayTime); // just to be sure @@ -120,7 +124,7 @@ CORE SYNTHDEFS FOR DIRT // thanks to Jost Muxfeld and James McCartney - // note that "size" is not room size, just a depth metaphor + // note that "size" is not room size, just the feed level into the room SynthDef("dirt_reverb" ++ numChannels, { |dryBus, effectBus, gate = 1, room = 0, size = 0.1, dry = 0| var in, snd, loop, depth; @@ -165,7 +169,8 @@ CORE SYNTHDEFS FOR DIRT var in, distance, throb, sound1, sound2, bal1, bal2, snd; in = In.ar(dryBus, numChannels); - ReplaceOut.ar(dryBus, in*(1-leslie)); + ReplaceOut.ar(dryBus, in * (1 - leslie)); + if(numChannels > 2) { in = in.clump(2).sum }; distance = SinOsc.ar(Lag.kr(lrate,10), 0).range(0, lsize); throb = SinOsc.ar(Lag.kr(lrate*0.8, 20), 0).range(0,lsize*1.3); diff --git a/used-parameters.scd b/used-parameters.scd index ae14ba3c..eb43fcfe 100644 --- a/used-parameters.scd +++ b/used-parameters.scd @@ -100,6 +100,7 @@ vowel delaytime delayfeedback delayAmp +delaySend lock cps size