IR: the convolution plugin i’ve been waiting for

It’s not every day that you wake up to find something that you’ve always wanted, but it happened this morning when I read the announcement for IR, an LV2 plugin that combines the convolution engine from Jconvolver with a slick, powerful user interface. It doesn’t do anything you couldn’t already do under Linux, but its ease (and speed) of use takes convolution under Linux to an entirely new level.

IR plugin

IR gives you incredibly quick access to your convolution reverbs

It’s great that IR runs as a plugin (it’s certainly easier than using Jconvoler as an insert via JACK), but its greatest feature is its file browser, which lets you browse through collections of impulse response files with ease, and load new files for auditioning with a single click. It’s hard to overstate how handy this is; finding the right IR file for a particular job is often a case of trial and error, and IR’s file browser lets you test your options and narrow the possibilities very, very quickly. IR automatically resamples your IR files to your session’s sample rate as they’re loaded, too.

IR also borrows some reverb-shaping ideas from its proprietary Windows and Mac OS X counterparts, like SIR2 and Altiverb. Beyond simply adjusting the wet/dry gains (so you can use it on individual instruments, or on a send bus) and adding pre-delay, you can actually shape your impulse respones: you can stretch and shrink their length, and use envelope controls to shape their volume over time. That means that if you find an impulse response that sounds great, but isn’t quite the right length, you can trim or extend it to match your needs with ease.

The envelope and length controls let you shape your reverbs

To me, IR is a great example of open-source at its best. Plugin author Tom Szilagyi (who, uncoincidentally, is also the author of the excellent TAP plugin suite) wanted a convolution reverb plugin, so he built one! Normally that’d be a massive undertaking, but by “standing on the shoulders of giants” — building on top of Jconvolver’s “zita-convolver” library, as wel; as libsamplerate for audio resampling and libsndfile for reading the audio files — he was able to put it together in just a few weeks.

If you want to try IR yourself (and if you don’t, I haven’t done my job properly), it may be worth waiting a few days — the current version has some minor issues, including a potential memory leak on multi-core systems. It’s definitely a project to keep an eye on, though!

some daw notes: mixing in qtractor, and testing ardour 3

So far, I’ve been using Qtractor for all of the recording and sequencing on the track I’m working on. As an exercise, I’m going to try to stick with Qtractor throughout the mixing process, too. I’ve used different synths and sequencers on different tracks over the last 18 months, but everything has been recorded in to Ardour at some point, so I think it’ll be good to put it aside for one track to see how the other half live.

I’m certainly happy recording MIDI in Qtractor, but it doesn’t yet feel as robust as Ardour for recording audio. It’s working fine, though, so I might get over that initial feeling once I’ve used it a bit and built some confidence in the fact that it’s not going to keel over at random. One thing I haven’t found a way to do, though, is to use a shared reverb bus, as I do in Ardour (as discussed in my last tutorial). It hasn’t been a problem yet, since I’m not using much ‘verb yet, but it will definitely be a problem if I decide to use a convolution reverb later.

Qtractor's new quantise dialog, with percentage options

One very nice thing that’s landed in Qtractor SVN is percentage quantisation, which lets you bring your MIDI notes just part of the way towards being perfectly quantised; it’s a great way to tighten up the timing of a recorded MIDI part without completely eliminating those nice, human timing variations. I described it to Rui on the LinuxMusicians forum the other day, and to my surprise, he had it written, working, and committed to SVN by the very next day. Now that’s service!

Ardour 3’s non-MIDI improvements

I’ve also been testing Ardour 3 from SVN, and I’m very, very happy with how it’s coming along; both its stability (ie: its ability to run for more than five minutes without crashing) and its reliability (its ability to do what you tell it to do in a consistent, repeatable manner) have increased dramatically over the last few months. My good friend (and guitar/drum extraordinaire) Stuzz gave me a link to a list of Ardour 3’s new features, which is an excellent read — going through the new features, which are all described in great detail, it quickly becomes clear that there’s a lot more to Ardour 3 than just MIDI sequencing.

Internal sends to aux buses make shared reverbs even easier in Ardour 3

One thing I noticed quickly is that it handles reverb buses very well. Setting up the bus is much the same as it is in Ardour 2, but once it’s there, adding sends to your tracks takes just a few clicks, and each send has a tiny gain slider next to it in the track’s effects list, so you can adjust your send gain straight from the mixer. The sends are also given meaningful names, now, so you know which bus they’re sending to at-a-glance.

Another nice change is what’s being called the matrix router, which is used whenver you need to connect Ardour’s inputs and outputs (audio or MIDI) to external apps or devices. The dialog for this in Ardour 2 was a bit cumbersome, and I know more than a few users that used an external tool like Patchage to connect things to Ardour. The matrix router, while initially a bit of a confusing sight, makes it much easier both to see what’s connected to where, and to change those connections.

…and the MIDI stuff, too

MIDI editing is done a little differently than in some other apps, but it’s not totally dissimilar to apps like Qtractor, and it follows Ardour’s audio editing model very closely. MIDI regions work much like audio regions — you can copy and drag them around and trim them to length with ease. By default, copying a region makes a “linked” copy, so editing a region changes every copy of that region; if you do need to edit one specific copy of a region, you can “fork” it to create a duplicate that can be edited independently. Speaking of editing, it happens inline — that is, within the main Ardour timelilne window, rather than in a pop-up — which seems odd at first, but it works well enough once you expand your track vertically.

Editing the contents of a MIDI region in Ardour 3 SVN

You can use instrument plugins, too. When you create a MIDI track, it starts with just a MIDI input and output, but if you add an instrument plugin it spawns a matching set of audio outputs, which can be routed just like the outputs of a standard audio track. It also has the best automation implementation I’ve seen on Linux; Ardour’s traditional plugin automation works on instrument plugins on MIDI tracks, and you can also draw automation curves for MIDI CCs. One catch right now is the lack of DSSI support — Ardour only supports LV2 plugins for now, along with VSTi plugins in VST-enabled builds, and AudioUnits on OS X.

Paul Davis wisely warns in his description of Ardour 3’s MIDI features that since this is Ardour’s first attempt at MIDI sequencing, we shouldn’t expect Ardour to necessarily to everything as good as, or better than, other apps that have been working with MIDI for years, and I think that’s very fair. I don’t expect people to dump Rosegarden and Qtractor en masse just yet, since there are certainly features that Ardour 3 lacks. Overall, though, I think he and his team have done a brilliant job, and I think Ardour 3 will have more than enough MIDI functionality to cover most of my projects.

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!
Continue reading

sketchbook: ghetto convolution reverb

Convolution reverb is a hell of a trick — it lets you record the reverb of a real-world environment (or a hardware reverb unit) and apply that reverb to a signal, with amazingly realistic results. Normally, those reverbs are recorded very carefully using high quality equipment, but I wanted to see what I could manage with something more modest: my phone.
Continue reading