Skip to content

Instantly share code, notes, and snippets.

@LFSaw
Created January 26, 2024 03:04
Show Gist options
  • Select an option

  • Save LFSaw/978541ae228cb78b46fcd297f00ad2aa to your computer and use it in GitHub Desktop.

Select an option

Save LFSaw/978541ae228cb78b46fcd297f00ad2aa to your computer and use it in GitHub Desktop.
Verber

Verber

feedback study by Till Bovermann, 2014.

(
s.options.memSize_(65536 * 2);
s.reboot;
Spec.add(\damp, [0, 1]);
Spec.add(\earlydiff, [0, 1]);
Spec.add(\highband, [1000, 10000, \exp]);
Spec.add(\highx, [0, 1]);
Spec.add(\lowband, [100, 6000, \exp]);
Spec.add(\lowx, [0, 1]);
Spec.add(\mdepth, [0, 50]);
Spec.add(\mfreq, [0, 10]);
Spec.add(\midx, [0, 1]);
Spec.add(\size, [0.5, 3]);
Spec.add(\t60, [0.1, 60, \exp]);
Spec.add(\wet, [0, 1]);
Spec.add(\shelfslope, [1, 10]);
Spec.add(\shelfFreq, \freq);
)
Ndef(\src).clear
(
Ndef(\src).fadeTime = 4;
Ndef(\src).quant = 2;
Ndef(\src, {
var src = 10.collect{
Pan2.ar([HPF, LPF, ComplexRes].choose.performKeyValuePairs(\ar,[
\in, [Impulse, LFPulse].choose.ar(
[4, 2, 1, 1/2, 1/3, 1/4, 1/6].choose,
iphase: [0, 1/4, 1/8, 1/2, 1/3].choose,
phase: [0, 1/4, 1/8, 1/2, 1/3].choose,
width: [0.001, 0.0001, 0.01, 0.1, 0.2].choose,
mul: [1, 2, 3, 4].choose.reciprocal * [1, -1].choose
),
\freq, [10000, 2000, 1000, 500, 250, 125, 125/2].choose,
\decay, [0.1, 0.2, 0.4, 1].choose,
]
), Rand(-1, 1));
}.sum;
HighShelf.ar(src, \shelfFreq.kr(1000), \shelfslope.kr(1));
})
)
Ndef(\src).rebuild;
Ndef(\src).play
Ndef(\src).edit
(
Ndef(\reverb).fadeTime = 1;
Ndef(\reverb, {
var src = Ndef(\src).ar * \amp.kr(1);
src = JPverb.ar(
src[0],src[1],
\damp.kr(0, 0.05),
\earlydiff.kr(0.707, 0.05),
\highband.kr(2000, 0.05),
\highx.kr(1, 0.05),
\lowband.kr(500, 0.05),
\lowx.kr(1, 0.05),
\mdepth.kr(5, 0.05),
\mfreq.kr(2, 0.05),
\midx.kr(1, 0.05),
\size.kr(1, 0.05),
\t60.kr(1, 0.05)
);
Limiter.ar(src);
//Compander.ar(src, src, 0.4, 0.7);
});
)
Ndef('reverb').set('lowx', 0.84375, 'amp', 0.66015625, 'damp', 0.671875, 'size', 0.94921875, 'highband', 4450.794062356, 't60', 16.362108855354, 'mdepth', 17.96875, 'mfreq', 0.0, 'highx', 0.0, 'lowband', 2450.0822520097, 'earlydiff', 0.421875, 'midx', 0.5546875);
// Dreamverb song setting.
// play with size and earlydiff
Ndef('reverb').set('wet', 0.9921875, 'lowx', 0.609375, 'amp', 0.38092041015625, 'damp', 0.2890625, 'size', 0.6171875, 'highband', 7233.9416273667, 't60', 4.0375572334984, 'mdepth', 0.0, 'mfreq', 2.03125, 'highx', 0.2265625, 'lowband', 681.56675509913, 'fadeTime', 1, 'earlydiff', 0.765625, 'midx', 0.515625);
Ndef('reverb').set('wet', 0.9921875, 'lowx', 0.84375, 'amp', 0.66015625, 'damp', 0.875, 'size', 0.5, 'highband', 5829.4153471361, 't60', 0.16483258382257, 'mdepth', 17.96875, 'mfreq', 0.0, 'highx', 0.0, 'lowband', 100.0, 'fadeTime', 1, 'earlydiff', 0.703125, 'midx', 0.5546875);
s.latency = nil;
Ndef(\reverb).play
Ndef(\reverb).edit;
//*ar { | in1, in2, damp(0.0), earlydiff(0.707), highband(2000.0), highx(1.0), lowband(500.0), lowx(1.0), mdepth(5.0), mfreq(2.0), midx(1.0), size(1.0), t60(1.0) |
MIDIIn.connectAll
/*
MIDIdef.cc(\test, {arg ... args; args.postln});
MIDIdef.cc(\test).free;
*/
(
MIDIdef.cc(\t60, {|val, num| Ndef(\reverb).set(\t60, \t60 .asSpec.map(val/128))}, 0);
MIDIdef.cc(\mdepth, {|val, num| Ndef(\reverb).set(\mdepth, \mdepth .asSpec.map(val/128))}, 2);
MIDIdef.cc(\lowx, {|val, num| Ndef(\reverb).set(\lowx, \lowx .asSpec.map(val/128))}, 3);
MIDIdef.cc(\midx, {|val, num| Ndef(\reverb).set(\midx, \midx .asSpec.map(val/128))}, 4);
MIDIdef.cc(\highx, {|val, num| Ndef(\reverb).set(\highx, \highx .asSpec.map(val/128))}, 5);
MIDIdef.cc(\vol, {|val, num| Ndef(\reverb).set(\amp, \amp .asSpec.map(val/128))}, 7);
MIDIdef.cc(\size, {|val, num| Ndef(\reverb).set(\size, \size .asSpec.map(val/128))}, 16);
MIDIdef.cc(\earlydiff, {|val, num| Ndef(\reverb).set(\earlydiff, \earlydiff.asSpec.map(val/128))}, 17);
MIDIdef.cc(\mfreq, {|val, num| Ndef(\reverb).set(\mfreq, \mfreq .asSpec.map(val/128))}, 18);
MIDIdef.cc(\lowband, {|val, num| Ndef(\reverb).set(\lowband, \lowband .asSpec.map(val/128))}, 20);
MIDIdef.cc(\highband, {|val, num| Ndef(\reverb).set(\highband, \highband .asSpec.map(val/128))}, 21);
MIDIdef.cc(\damp, {|val, num| Ndef(\reverb).set(\damp, \damp .asSpec.map(val/128))}, 22);
MIDIdef.cc(\dryAmp, {|val, num| Ndef(\src ).vol_(\amp.asSpec.map(val/128))}, 23);
MIDIdef.cc(\rebuild, {|val, num|
(val > 0).if{
Ndef(\src).rebuild;
}
}, 39)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment