Version 1.6.12 of Decent Sampler brings a Convolution effect to the Decent Sampler platform. If you don’t know what Convolution is, you can see a great explanation here. The most common use case for convolution is in creating reverb, and that is the use case that will be demonstrated here.
How to add the Convolution effect to a preset
The convolution effect is invoked in much the same way that any other effect is defined:
<effects>
<effect type="convolution" mix="0.5" irFile="Samples/Hall_IR.wav" />
</effects>
Code language: HTML, XML (xml)
As you can see, other than the required type attribute, there are two other attributes:
- The mix attribute controls how much of the convolved signal is present in the output. A value of 0 is completely dry whereas a value of 1 is completely wet containing only the convolved signal.
- The irFile attribute specifies the file that should be used as an impulse response or IR.
How to control the convolution effect using UI controls
Two of the convolution effect’s attributes can be controlled using UI controls. The mix level can be controlled by a knob as follows:
<labeled-knob x="680" y="40" label="Conv Mix" type="float" minValue="0" maxValue="1" value="0.5" textColor="FF000000" >
<binding type="effect" level="instrument" position="0" parameter="FX_MIX" translation="linear" />
</labeled-knob>
Code language: HTML, XML (xml)
The IR impulse can be changed dynamically using a menu control:
<label text="IR File" x="480" y="40" width="120" height="30"></label>
<menu x="580" y="40" width="120" height="30" requireSelection="true" placeholderText="Choose..." value="1">
<option name="long hall.wav">
<binding type="effect" level="instrument" position="1" parameter="FX_IR_FILE" translation="fixed_value" translationValue="Samples/long hall.wav" />
</option>
<option name="ABLCR Chord Vocal.aif">
<binding type="effect" level="instrument" position="1" parameter="FX_IR_FILE" translation="fixed_value" translationValue="Samples/ABLCR Chord Vocal.aif" />
</option>
<option name="Amp Spring High.aif">
<binding type="effect" level="instrument" position="1" parameter="FX_IR_FILE" translation="fixed_value" translationValue="Samples/Amp Spring High.aif" />
</option>
<option name="Swede Plate 3.5s.aif">
<binding type="effect" level="instrument" position="1" parameter="FX_IR_FILE" translation="fixed_value" translationValue="Samples/Swede Plate 3.5s.aif" />
</option>
</menu>
Code language: HTML, XML (xml)
Examples
An example Decent Sampler preset that uses IR reverb can be downloaded here. (You’ll want to check out the example-003-how-to-use-convolution-reverb
folder.)
Performance considerations
While convolution is a powerful tool that can go a long way towards shaping a sample library’s sound, it can also be quite costly in terms of CPU usage. Sample creators would do well to create versions both with and without convolution effect and compare the relative CPU usage of the two versions before opting to use convolution.
The example download link opens an XML error webpage.
It’s been fixed, for what it’s worth.
Hi,
Thanks for the useful info. Would it be possible to update link of the Decent Sampler preset example that uses IR reverb? Currently it doesn’t work.
Thanks!
Just to note that when the filter resonance is at zero, the sound is muted.
Thanks for the heads up. I’ve created a bug report here.
Hi,
I’ve been experimenting with IRs in the convolution reverb – a great addition – thank you. I’ve found that some (e.g. those included in Ableton Live) benefit from having their gain reduced by about 10dB prior to use, to avoid clipping. I note that in Reaper’s convolution reverb, there is a button for a -18dB pad – presumably because there are different IR standards historically?
Ah, that’s interesting. Are you suggesting we add a `preGain` attribute that would allow users to turn down the initial gain?
Yes, exactly that.
Hi, I was just wondering if it’s possible to use multiple reverbs in one decent sampler instrument? I am working on a drum instrument and would like to be able to send some parts of the kit to one reverb (Snare to a gated convolution sorta thing), and then have another that the whole kit goes to (a suited hall or room convolution for example ).
I suppose it was also need to be possible to use a reverb as a send in the first instance? Or would it possible to choose between a send or insert type reverb when building an instrument?
I hope that makes sense, and absolutely no worries if thats not possible in Decent Sampler so far. Thanks for all of your hard work and dedication to making something so amazing available to us all. All the best 🙂
Hi Paul! I don’t think there’s a way to do this right now. For a long time, I’ve wanted to introduce the concept of “busses” so that different groups could be routed into different buckets with different sets of effects, but it’s a ways off right now. 🙂
Busses would be amazing!
Hi, thanks so much for your reply! I figured it was a lot to ask, so honestly no worries at all. I’m sure that you’ll make it happen one day if you want to. You are so, so talented! Thank you for everything you’ve done/are doing for samplists, and musicians. Your passion and generosity are one of the reasons I started making instruments at all. I’m very grateful to you. Thanks again! Paul 🙂
[…] Sampler in seinem vierten Jahr und der Funktionsumfang wächst und wächst. Seit 2022 gibt es einen Convolution Effekt, mit dem man ganz eigene Reverbs bzw. auch Sounds von Verstärkern einsetzen kann. Kurz danach […]
Is this convolution only for reverb IRs or can I use this feature with cab IRs for guitar? I’ve tried and can’t get it to sound right now matter what. If not, I would LOVE to see this feature be able to sound great as a cab IR loader too!
Yes, you can use it for cab IRs as well. 🙂
Is there an example for this anywhere? Specifically for cab simulation? It doesn’t really sound that well, but in other cab loaders my IRs sound great. I’m possibly scripting this wrong. Any help would be appreciated!
Also, would love to see this feature enhanced to where you can let the user load in their own cab IRs. Fingers crossed!