Hey everyone —
I've just gotten started with TidalCycles, and felt an itch yesterday to create a synthdef for the amazing Greyhole reverb/echo effect from the sc3-plugins
. I've configured it locally as a global effect, in a way I hope is appropriate/safe. I'm definitely open to feedback if you spot anything that seems off.
Here's a little demo for those who haven't experimented with the ugen in sc before:
SynthDef
(
var numChannels = ~dirt.numChannels;
(1..SuperDirt.maxSampleNumChannels).do { |numChannels|
SynthDef("grey_h" ++ numChannels, { |dryBus, effectBus, gdelay = 1, gdamp = 0.5, gsize = 0.5 gdiff = 0.5, gfdbk = 0.5, gdepth = 0, gfreq = 0, gverb = 0|
var signal = In.ar(dryBus, ~dirt.numChannels);
var verbd = Greyhole.ar(
signal,
gdelay,
gdamp,
gsize,
gdiff,
gfdbk,
gdepth,
gfreq,
) * gverb;
Out.ar(effectBus, verbd);
}, [\ir, \ir]).add;
}
)
I have this SynthDef saved in a file, stored in SuperCollider's synthdefs
folders under Library/Application Support
on my mac, which I then load in my startup
file:
load("/Users/olivier/Library/Application Support/SuperCollider/synthdefs/grey_h.scd");
The global effect is declared and added to all orbits in my startup file also:
~dirt.orbits.do { |x|
var grh = GlobalDirtEffect(\grey_h, [\gdelay, \gdamp, \gsize, \gdiff, \gfdbk, \gdepth, \gfreq, \gverb]);
x.globalEffects = x.globalEffects
.addFirst(grh);
x.initNodeTree;
};
Lastly, you'll have to evaluate the following lines in your tidal file (or add them to your BootTidal.hs
file:
let gverb = pF "gverb" -- dry/wet (0-1)
gdelay = pF "gdelay" -- approximate reverberation time in seconds (0.1 - 60 sec)
gdamp = pF "gdamp" -- controls damping of high-frequencies as the reverb decays. 0 is no damping, 1 is very strong damping. Values should be between (0..1). argumentsize scales size of delay-lines within the diffusion unit, producing the impression of a larger or smaller space. Values below 1 can sound metallic. Values should be between (0.5..5).
gsize = pF "gsize" --
gdiff = pF "gdiff" -- controls pattern of echoes produced by the diffuser. At very low values, the diffuser acts like a delay-line whose length is controlled by the 'size' parameter. Medium values produce a slow build-up of echoes, giving the sound a reversed-like quality. Values of 0.707 or greater than produce smooth exponentially decaying echoes. Values should be in the range (0..1).
gfdbk = pF "gfdbk" -- amount of feedback through the system. Sets the number of repeating echoes. A setting of 1.0 produces infinite sustain. Values should be in the range (0..1)
gdepth = pF "gdepth" -- depth (0..1) of delay-line modulation. Use in combination with modFreq to produce chorus and pitch-variations in the echoes.
gfreq = pF "gfreq" -- frequency (0..10 Hz) of delay-line modulation. Use in combination with modDepth to produce chorus and pitch-variations in the echoes.
Have fun.