MM – EZConv.

EZConv Convolution reverb implementation as an external FX processor.

You need to drop in your own IR file.

You’ll need to install the EZConv extension:
https://github.com/davidgranstrom/EZConv

// EZConv convolution reverb implementation.

(
Server.local.options.memSize=8192; //8192 is the default memSize. You can increase this if needed.
Server.local.options.device = "ASIO : ASIO PreSonus FireStudio";
Server.local.options.sampleRate=48000;
Server.local.options.hardwareBufferSize=128;
)

//Test implementation.

(
SynthDef(\test, {
	|amp=1, pos=0|
	var sig, pan;
	sig=Pulse.ar(50,0.9,EnvGen.ar(Env([0,amp,0],[0.001,0.2],-4),1,doneAction:2));
	pan=Pan2.ar(sig, pos,1);
	Out.ar(0, pan)
}).add
)

x=Synth(\test, [\pos, 0]);//Test synth left out.
x=Synth(\test, [\pos,  0.5]);//Test synth left out.
x=Synth(\test, [\pos, -0.5]);//Test synth left out.
x.free

//Stereo Convolution verb implementation. Will work with stereo incoming signals. Test with the scope on first and no volume. This can get loud pretty easy.

//Load your IR.
(
~path="G:/IRs/Reverb Units and Plugins/FL/Reverb/Default.wav";
~ezConv=EZConv(~path);
)

~ezConv.numChannels;//Test how many channels your IR has.
~ezConv.free; //Unload the IR. You might want to do this before loading a new one.

//Evaluate the Reverb engine.
(
z.free; //This will free itself before each time you evaulate to avoid overload due to stacking.
(
SynthDef(\Convr, { |out, wet=0.1, dry=1|
	var signal, process;
	signal = In.ar(out, 2);
	process=~ezConv.ar([signal[0],signal[1]],0.1,1); //(signals, leak, mult)
	ReplaceOut.ar(0, (process*wet)+(signal*dry));
}).add;
);

z = Synth(\Convr, [\outbus, 0, \wet, 0.25, \dry, 1], addAction:\addToTail);

)

z.free;//To stop reverb if you need.
Author
554 PM
  • Platform:
  • Category: Effect
  • Revision: 1.0
  • License: GNU General Public License family
  • Views: 642
  • Modified: 2 years ago
Chat about this patch on Discord!
Appreciate 2

Leave a Reply