Pre-delay and reverb (how to do ?)



I’m trying to set up a reverb with pre-delay. I can not really manage it.
That’s where I am:

SynthDef(\rev, {|predelay=0.05, room=0.8, damp=0.5|
var rev, predel;
predel =, maxdelaytime:0.1, delaytime:predelay); // e is a bus
rev =, mix:0.5, room:room, damp:damp);
rev =, pos:0);, rev);

But it does not work: both the sound and the reverb are in the delay.
How to do?

Thanks for help !


The correct way to use a Bus in a SynthDef is to provide the bus number as an argument.

SynthDef(\test { |out = 0, in|
    var input =;, input)

x = Synth(\test, [\in, e]);    // e is your Bus

Try fixing this and see if it helps. Everything else looks fine at a quick glance.


I realise I didn’t really answer your question @elode . Here’s one way to accomplish this (untested):

SynthDef(\rev, { |out=0, in, predelay=0.05, room=0.8, damp=0.5, wet=0.33|
var input, rev;
	input =, 1);
	rev =, maxdelaytime:0.1, delaytime:predelay);
	rev =, mix:1, room:room, damp:damp);
	rev = (input*wet) + (rev*(1-wet));
	rev =, pos:0);, rev);


Thank you for the reply :slight_smile: , it’s a little simpler than the solution I ended up finding:

e =, 1);
(SynthDef(\rev, {|in=\e, predelay=0.1, room=0.8, damp=0.5|
var rev;
rev =, maxdelaytime:0.3, delaytime:predelay);
rev =, mix:1, room:room, damp:damp);, rev); // the reverb goes out on bus 1 (right)
~rev = Synth(\rev, addAction: \addToTail);

SynthDef(\sin, {|freq=440, direct=0.5|
var env, sig;
env =, 0.2, curve:-4),doneAction:2);
sig =*env;, sig * direct ); // the sound without reverb goes out on bus 0 (left), sig * (1-direct)); //… and with reverb

~s = Synth(\sin, [\direct, 0.5]); // adjusting the ratio between direct sound and reverberated sound

Thanks again :slight_smile: