Ambisonics in Reaper: Processing
August 28, 2017
The ability of Reaper to allow up to 64 channels per track, along with its flexible signal routing, makes it an excellent choice for working with ambisonic B format files. However, processing using Reaper's native Rea plug-ins throws up some “gotchas”. Luckily, there's a relatively straightforward workaround.
In my case, I wanted to apply some overall corrective EQ to a B format recording, while also running the same recording in parallel with a gate applied - my goal was to subtly increase the volume of certain sounds without pulling them too far outside of the context of the original recording.
It's tempting to assume that Reaper's native EQ and gate plug-ins will adapt to the channel count of the track they're inserted on, however they're designed to process only two channels of audio (stereo) while in the case of the gate, also accepting a key or sidechain input on channels 3-4.
While I could simply find plug-ins to use that were multi-channel capable by default, using Reaper's internal processors allows session portability, and I tend to work on projects across different workstations.
In the case of the EQ, my solution is to use two separate instances of the ReaEQ plug-in, routing the W and X channels to the first instance, and Y and Z to the second instance. Note that my recording uses the traditional WXYZ channel ordering, which becomes channels 1-4 of our track, respectively.
Click the button on the top of the FX window which says "2 in 2 out" to open the plug-in pin connector window. This interface allows us to route audio from any channel of our track, through the two available processing channels, and back out to whichever channels we need.
In the case of the W and X channels, these are automatically routed to and from the first plug-in instance on channels 1 and 2, so there's nothing to change here.
For the Y and Z channels, we have to change the routing of the second plug-in instance, so that audio comes in from and is sent back out to channels 3 and 4 of the track. Click the small + icon at the bottom left of the plug-in pin connector window to expand the routing table. Clicking on the black squares toggles them between active (shown) and inactive (not shown).
EQ can now be applied to all four channels of our B format recording. Making changes to the EQ is a little cumbersome, because the change has to be applied to each instance of the plug-in separately. It may be best to set up the EQ settings required on one instance of the plug-in, then copy and paste it to make the second instance, setting up the channel routing afterwards—however this still does not allow straightforward EQ adjustments "on the fly".
We can add this 4 channel EQ setup to an FX chain and it will retain its channel routing across the two instances of the plug-in. Right click in the left pane of the FX window and select FX chains > Save all FX as chain. Note that any EQ curve applied will also be stored as part of the FX chain, so it might be preferable to set up and save the FX chain first.
To load the chain into a new track, right click and select FX chains > Load FX chain. If necessary Reaper will change the number of channels in the track to match that required by the FX chain, in this case 4.
The process for setting up a gate which operates across all four channels of our B format recording is the same as for the EQ, except this time we are using two separate instances of ReaGate.
In the case of gating, by processing the WX and YZ channel pairs separately we run up against the problem of the two gates operating independently, given that the channel pairs will naturally feature different frequency and amplitude content. This could lead to odd spatial artifacts, so we need to make the two gates operate as one.
This is accomplished by ReaGate's built-in sidechain/key function. First we should switch the Detector Input of both instances of the plug-in to Auxiliary Input L.
Opening the plug-in-in pin connector window (shown in the plug-in window as "4 in 2 out" this time), we are presented with the following pin layout:
For the first plug-in instance, assign input pin 1 to Auxiliary Input L (remember to deactivate the default assignment of input pin 3). We will also click on the assignment of input pin 4 to Auxiliary Input R to deactivate it. Leave the main inputs and gated outputs as they are.
Repeat the process for the second plug-in instance, except this time we are going to reassign our input and output pins to channels 3 and 4, respectively, as shown:
What we've done is to use the W channel of our B format recording as the trigger (Detector Input) for both gates. This makes sense because the W channel is omni, and thus should be a good representation of the overall amplitude characteristics of the recording.
An interesting solution would be to see if Reaper's native JSFX scripting language could be employed to create some native four channel processors suitable for working with B format audio.