For my second post I’m going to show you all how to make some cool sounds using convolution, and describe a bit of the theory behind it. To throw some science words around, what we’re going to be doing is creating a physical model of sympathetic resonance using convolution.

What is sympathetic resonance?

Sympathetic resonance is a phenomenon that occurs when the vibration of air causes other things to vibrate. You can experience this by holding down a note on a guitar or piano, then playing another instrument into it of the same note or one with an interval related to it like a third or fifth. The vibration of what you play causes the stationary string to vibrate sympathetically with the note that excited it. It’s a cool effect, and composers make use of it all the time. It’s not uncommon to see a piano with the damper pedal held down and a musician playing into it, which gives an awesome texture to the sound.

Why are we doing this?

Pianos are really expensive, and we can’t always afford to book a studio to record sounds playing into one with nice mics. In addition, we aren’t limited by a physical instrument and use any timbre we want.

How can we model this in a DAW without writing any code or using expensive software?

I’m going to be using a technique called convolution. You may have heard of convolution reverb, which uses the same process. That’s why I’m calling this ‘tonal reverb,’ because we’ll end up with something very much like reverb, but tuned to pitches. It will be useful to think of this in the context of reverb. There are many freeware convolution plugins, today I’ll be using a Windows VST called Reverberate LE. If you like it, consider donating to the developers! It’s a great tool.

Skip ahead if you already know about convolution, or don’t really care.

What is convolution?

Wikipedia has an excellent article on convolution. To surmise, convolution is a mathematical operation like addition, multiplication, subtraction and division. Since we’re in the digital world, we’re going to be using discrete time convolution. Say you have two signals, A and B. A convolved with B will give us a new signal, where the output is the first sample of A multiplied with every sample of B, then the second sample of A multiplied with every sample of B, etc. The result is a new signal whose length is equivalent to the length of A plus the length of B. This gif describes it very well.

Mathematically, A convolved with B in the time domain is the same as A multiplied by B in the frequency domain. Convolution in time is the same as multiplication in frequency. If you look at the spectrum of A, then multiply it by the spectrum of B, their result in time is A convolved with B.

Why do we care about this weird math operation?

When you consider any arbitrary linear system that takes an input and gives an output, the output is equivalent to the input convolved with the impulse response of the system. If we know the impulse response, we can model its corresponding output for any given input.

Convolution reverb works by recording the impulse response of a room. This can be done several ways, but it’s easiest to imagine as shooting a gun or popping a balloon in a room to generate our impulse, then recording the resulting reverberations. We then take that recording, which is an audio file and load it into our convolution plugin. When we put a signal through it, the output will be the input convolved with the impulse response, which we hear as the input signal with the same reverberation characteristics as the room recorded. It’s a great tool for modeling real world spaces. It’s even been used to model analog gear and guitar cabs where you can record an impulse response through a circuit or amp and use that as an IR in a convolution plugin.

The way most convolution algorithms work is based off what I mentioned earlier, the fact that convolution in time is the same as multiplication in frequency. What they’ll do is take the FFT (the fast-fourier-transform) of the input and IR to convert them to the frequency domain, multiply them, then take the iFFT (the inverse fast fourier transform) to get it back to the time domain. I’m noting this because anything using FFTs is very resource hungry, and even the most efficient convolution algorithms can put stress on your system. I’m including this as a warning if you end up with lots of buffer underruns in your project. It’s not because you messed something up, it’s because convolution is not efficient in the slightest.

So now what?

Now we know about convolution and how it works, and we have a basic idea of what we’re going to do.

Step 1: Create our impulse response

I’m going to use a sampler instrument to create my impulse response. You can use any sound you want, but I’m going to be using a harpsichord sampler instrument. It has a lot of harmonic content, so it will be easier to hear.

So first things first, pull up the sampler (Halion Sonic SE in my case, bundled with Cubase).

Step 2: Decide what it’s going to play

I’m going to play an F9 chord with no third

Step 3: Bounce to audio

I have a macro for bouncing in place in Cubase, but it’s built in to many other DAWs. I deleted the MIDI track because I don’t need it anymore, keeping the project clean.

Step 3.5: Create whatever sound you want to play through the reverb

I made a super simple square pluck. You can see the notes it’s playing on the left. Take note which notes were in the chord that I played on the harpsichord… you’ll notice in a second the difference it makes.

Step 4: Load the audio into a convolution plugin

This is either really simple or really aggravating depending one the plugin. In Reverberate LE, open the file navigator and locate the audio file. The only thing to note is that you can clip really easily with this particular plugin, so turn off the “normalize” button and adjust the dry/wet settings so it doesn’t distort. I’ve highlighted that below. File path is blacked out for personal reasons.

So how does it sound? Because wordpress won’t let me upload audio, you can listen here

So that’s that! The theory seems pretty intense, but actually making music with this is pretty easy. Hope you enjoyed this!