jconvolver, inserts, and sends: a triple-header tutorial

Earlier today, when I was setting up another quick impulse response recording that I made, it occured to me that some of this stuff is really non-obvious — setting up Jconvolver takes some work, and using sends to share a single reverb within Ardour instead of using a separate reverb on each track can be a bit of a leap, too. Here, then, is a three-part tutorial that covers:

  • Setting up Jconvolver
  • Connecting Jconvolver in to Ardour as an insert effect
  • Using sends effects within Ardour

There’s a lot to get through, so let’s get cracking!

Setting up Jconvolver

There are two ways to run Jconvolver: on the command-line with a config file, or using the Jcgui GUI tool. If you already have a config file, then the command-line tool is very easy to use — just specify the config file:

jconvolver pneuman-stairs.conf

The config itself looks like this:

/cd /home/lsd/music/impulses
/convolver/new   2    2    512  87296
/impulse/read    1    1    0.2  0    0    0    1 pneuman-stairs.wav
/impulse/copy    2 2  1 1

This creates a two-channel (ie: stereo) convolver setup, loading the “pneuman-stairs.wav” impulse response (IR) file from the “/home/lsd/music/impulses” directory. Because the IR file is in mono, it’s simply copied from the first channel to the second. For your own similar files, just change the IR file name, and possibly the “87296” value — this is the maximum allowed length of the IR file (in samples), and it must be increased if a longer IR file is used.

Once running, Jconvolver just appears as a set of JACK ports — route some audio in to it, and it will output the reverb-processed version.

If that’s all a bit much, you can try Jcgui — it lets you load an IR file and then launch Jconvolver with an appropriate configuration. Jcgui also adds a bit of its own audio processing: there are tone controls, separate left and right delay controls, and a dry/wet control, so you can mix in some dry signal if you want (Jconvoler itself is always 100% wet). The delay controls can be used to add pre-delay on both channels, or if the delays are set to slightly different values, it can add some false, but potentially interesting, spatial effects.


Jcgui lets you configure Jconvolver interactively, with nary a text editor in sight

One problem with Jconvolver is that the only way to change its configuration is to restart it, which forces you to reconnect its JACK inputs and outputs. Jcgui actually gets around this quite nicely — it opens its own JACK inputs and outputs for you to connect your apps to, and automatically connects itself to Jconvolver when it launches it, so your can change your reverb settings as much as you like without having to reconnect anything manually.

Inserts effects in Ardour

Even if you’re not familiar with the term, you should be familiar with the behavour of an insert effect. An insert is an effect that takes a feed from a signal chain, processes the audio, and then returns the processed audio back in to the same point in the original signal chain. Whenever you add an EQ, a compressor, or any other plugin to a track, it acts as an insert effect, since the original audio signal is replaced in the signal chain by the plugin’s processed audio.

Adding an insert in Ardour (or any other DAW), then, is much like adding an external effect just as if it was a plugin — the insert takes the audio from the signal path, sends it out to some kind of external processing device, receives it back in after processing, and then feeds it back in to the original signal path. That external device could actually be a hardware effects unit, if it’s hooked up to your sound card, but thanks to the magic of JACK, it can just as easily be standalone JACK app, like Jconvoler.

Ardour insert dialog

Setting up an insert within Ardour to work with Jconvoler

Thankfully, adding an insert is easier than trying to describe what one is. Right-click in the effects list of your track’s mixer strip and select the “New Insert” option; the new insert should appear in the effects list. Double-click on that to open the insert dialog, which lets you specifiy the JACK ports that the insert will send to and read from.

In our case, we’re working with Jconvolver, so select the “jconvolver” tab on the left-side of the window and left-click on both the “In-1” and “In-2” ports to add them to the Ouputs section. Then, do the same for the Inputs section on the right-side of the window. Close the dialog, and either middle-click on the insert, or right-click on it and select “Activate”, to enable it.

Now, when you play the track, you should hear its audio processed through Jconvolver. It might sound a little odd, though, since unless you’re using Jcgui and you’ve adjusted the wet/dry control, you’ll hear just the reverb signal, with none of the original signal. Fixing that requires a trip in to the world of send effects.

Sharing a reverb, using sends

When you use a reverb plugin, you never (or at least very rarely) want to hear just the reverb signal — you want to hear the original dry signal, with some of the reverb mixed in at a lower volume. This is done within the plugin itself: it takes a copy of the original signal, applies the reverb, reduces the volume of the reverb signal, and then mixes that with the original signal (this isn’t entirely accurate, but it’s close enough for our needs). There’s another way to do that attenuation and mixing, though, and that’s within the DAW itself.

Imagine a reverb plugin that produces only the reverb signal, with no original signal mixed in. Instead of adding this to the track that we want reverb on, we add it to a separate bus, and then send a copy of the track’s audio to that bus for processing. Then, instead of reducing the volume of the reverbed signal, imagine we reduce the volume of the copy of the track’s signal that’s sent to the reverb.

What we’ve built here produces the same result as the plugin — we have our 100% dry original signal, and a quiet, reverb-processed copy of that signal — but we’ve produced it in a more flexible way. We’ve created a reverb bus, and then used a “send” from our track to effectively add reverb for that track to our mix.

There are numerous advantages to this approach, but the biggest is that the one reverb bus can be used to provide reverb for as many tracks as you like, just by adding a send to each track that routes audio to the reverb bus. You can adjust the amount of reverb that’s included in the mix for each track by adjusting the volume level on each track’s send.

This is especially handy with Jconvolver, given the complexity and raw CPU demands of running several Jconvolver instances, but it works just as well with any other reverb that can be set to a 100% wet setting, like the CALF Reverb below. Besides using less CPU power, sharing a reverb among tracks can produce a more cohesive-sounding mix, by placing all of your tracks within the same virtual “space”. You can also experiement with other types of shared effects — delays, for instance, can work just as well.

CALF Reverb, an LV2 reverb plugin, configured with no dry signal for use on a reverb bus

Using sends within Ardour

Thankfully, as with inserts, using this stuff is easier than trying to explain it. The first step is to add your reverb bus; if you haven’t worked with busses in Ardour, just think of them as tracks that don’t have any audio data of their own. In fact, they’re added the same way you’d add a track, using the “Track/Add Track/Bus” menu option. Add a single stereo bus, and once you’ve added it, name it something useful (“reverb” will do), and then add your Jconvolver insert to it from the mixer.

Ardour's send dialog

Adding a send to a track is very similar to adding an insert, just without the inputs

To add a send, open the mixer, find the audio track that you want to add some reverb to, right-click in its post-fader effects list, and select “New Send…”. The send dialog should appear automatically — it looks much like the left-side of the Insert dialog, and it’s used in the same way.

Open the “ardour” tab on the right and find the inputs for your reverb bus, hopefully named “reverb/in 1” and “reverb/in 2”. Click on each of those inputs in turn, and they should appear under the “out 1” and “out 2” banners in the “Ouputs” section, or possibly under just the “out 1” section if the track is mono. If the “out 1” and “out 2” sections don’t appear for some reason, use the “Add” button to create them. Once your outputs have been added, close the dialog, and activate the send by either middle-clicking on it in the effect list, or right-clicking on it and selecting “Activate”.

When you create a send, its volume defaults to 0dB; that is, the send has the same volume as the original signal, which usually isn’t what you want for a reverb send. If you double-click on the send in the effects list, the send dialog appears again, but now it will have a fader on the left — just adjust this down to reduce the send’s volume level, and hence the amount of reverb added to the mix for your track.

Repeat the send setup on each track that needs reverb, adjusting the fader on each send as appropriate for the track, and your reverb setup will be complete!

Ardour mixer panel with multiple sends

This project has a shared reverb and a shared delay, with sends to one (or both) of them from just about every track


Jconvolver gives you access to a world of pro-quality reverb sounds, so knowing how to use it, and how to add it to your Ardour projects, is definitely very useful, but sends and inserts have a multitude of uses beyond just working with Jconvolver. Shared reverbs and delays can give your track a more unified sound, and inserts can add Rakarrack to your guitar tracks, JAMin to your master bus, or let you plug hardware effects in to your virtual studio.

5 thoughts on “jconvolver, inserts, and sends: a triple-header tutorial

  1. Great tutorial – I was just going to dig in to jconvolver and this gives me a nice head start. The screenshots from Ardour are extremely helpful. Thanks for sharing your expertise and looking forward to more!

  2. Tried it yesturday night. Works great !!
    I allways been scared of trying jconvolver but this tutorial showed me it’s actually not so difficult…. 🙂

    Any ideas of where to find more impulse responses ?


  3. Pingback: some daw notes: mixing in qtractor, and testing ardour 3 | woo, tangent

  4. Pingback: Jconvolver, возвраты, посылы - Мультимедиа в Linux

Leave a Reply

Your email address will not be published. Required fields are marked *