How to: set up Home Audio Fidelity Room Shaper with Roon on a Mac

Background

For several years, I have been using room correction convolution filters made for me by Thierry Villard (@Home_Audio_Fidelity) at Home Audio Fidelity. As I have written in other posts, I consider these filters the best value of all my audio equipment or software, considering price vs. improvement in sound quality.

Recently I became interested in his “plugin” software offering, Room Shaper. The linked page contains a description of what the audio plugin does, and a link to a review by Mitch Barnett at the Audiophile Style website, giving more details about how it works.

Mitch Barnett does precise before-and-after measurements showing how the plugin improves the sound you hear in your room. I don’t intend to repeat a review here, other than saying I agree with the subjective listening improvements that Mitch describes.

The important fact about this software is that the digital signal processing (DSP) required to achieve its effect cannot be done by MUSE, the Roon DSP engine. The transform is not “linear time invariant” and therefore can’t be done by convolution. MUSE has no way to perform such a transform itself. You need software external to Roon, sitting between Roon and your output device, which intercepts the digital audio stream, transforms it, and sends it on to the output. That software is this plugin.

For a long time, I was confused about how to implement this on my system. I didn’t completely understand the instructions at Thierry’s site. I decided to dive in and try to figure it out. I hope this post will save you the time I spent figuring this out.

What do you need?

  • A computer directly connected to your output device. This can be your Roon Server device if it’s connected directly to your output, or a computer running Roon or Roon Bridge as a network endpoint. Other configurations are possible, but this is the only one I considered.

  • This computer must run Windows or macOS because the plugin runs only on these two platforms. Unfortunately there is no Linux version. This post discusses only macOS because I’m unfamiliar with Windows.

  • A piece of software to provide the “plumbing” that connects Roon, the plugin, and your output device. There are several options available. Some are free, but in this post I’ll concentrate on commercial software from Rogue Amoeba, because I found their technical support outstanding. There are two options from Rogue Amoeba: Audio Hijack is less expensive, but requires more runtime resources; and Loopback, which allows complex audio plumbing within macOS.

  • Thierry’s Room Shaper plugin, of course. It comes in two formats that are compatible with Rogue Amoeba: an AU plugin that requires Audio Hijack, and a standalone app that requires Loopback. I’ll discuss only the standalone app and how to configure it with Roon and Loopback.

  • A measurement microphone to acquire the room response. I use a UMIK-1 from miniDSP.

How much does it cost?

Loopback costs $99 USD at the Rogue Amoeba site. The Room Shaper plugin cost me 69€ as an existing customer of Thierry’s convolution filter service. If you don’t buy the convolution filters, it costs 129€. Thierry accepts PayPal so you can pay in your local currency.

Loopback and Room Shaper are both available as trials, with trial restrictions.

Steps required

  1. Install Loopback

  2. Configure the plumbing

  3. Install Room Shaper

  4. Measure your room

  5. Configure Room Shaper

  6. Configure Roon to use the plumbing that connects it to Room Shaper

Let’s walk through these steps.

Install Loopback

I’ll link to the Rogue Amoeba page here. It’s a bit fidgety if you have an Apple Silicon Mac, so follow the onscreen instructions carefully. As I mentioned, their technical support is fantastic and very responsive. They responded within 24 hours over Christmas weekend!

After you install Loopback, run it. See these instructions. You do not need to create any devices other than the default Loopback Device. Loopback automatically creates it; you can now quit the Loopback app.

This device acts as a “pipe” that will connect Roon to Room Shaper.

Configure the plumbing

In this step, you’ll use the macOS utility “Audio MIDI Setup” to configure the Loopback Device, the “pipe” that Loopback created.

Bring up Audio MIDI Setup. You can find it in the Utilities subfolder of your Mac’s Application folder.


Select the Loopback Device on the left panel of devices.

Click on the popup menu next to Format, and select the sample rate you want to use with your DAC. Higher rates may yield better sound quality but will impose more computational load. Do not choose a sample rate higher than your DAC can handle, even if it’s available in the dropdown.

This sample rate will be fixed; you cannot use variable rates. All audio will be converted to this fixed rate. It’s a DSP pipeline, so the notion of “bit perfect” doesn’t really apply. You can have Roon do this required conversion; see my Wrap-up section below.

Check that the little speaker icon does NOT appear next to the Loopback Audio device. If it does, select the internal speaker device, then click on the gear menu at the bottom left, and select “Use This Device For Sound Output”. This makes sure that your alert sounds don’t play from your music system.

You might see a little microphone icon next to Loopback Audio if your Mac has no builtin microphone, e.g., a Mac mini. That’s fine. I got compulsive and created a dummy device to act as the default input, but it really doesn’t matter.

Bring all the volume sliders up to maximum so that there is no digital signal attenuation being done in the pipe device. Room Shaper will not function correctly if there is any upstream digital volume control.

Install Room Shaper

Thierry hosts the plugin at his Google Drive site. Download the ZIP file for the Mac and examine the contents, a bunch of more ZIP files. Expand the one named “Room_Shaper.zip”. It expands to Room_Shaper, the app. Drag the app to your Applications folder.

Running it the first time is messy. First of all, it’s an Intel app, so macOS may need to first download and install Rosetta 2 if you have an Apple Silicon Mac.

Second, Thierry’s Mac apps are not signed with a developer certificate as macOS security demands. So you need to follow these instructions to run it the first time.

Close out the app for now.

Measure your room

Next, you need to measure the response of your room. There are two ways to do this: you can use Room Equalization Wizard (REW); or, you can use a tool that Thierry makes available on his website.

If you wish to use REW, see the instructions given in the article by Mitch Barnett that’s linked from Thierry’s Room Shaper page. The screenshots are for Windows, but the same applies to macOS too.

To use Thierry’s tool, download it from here, including the instructions. The instructions are pretty clear, but once again the app isn’t signed with a developer certificate, so you’ll have to go through the little dance I linked to above in “Install Room Shaper”.

I looked at the video Thierry provides, which shows how the app is supposed to behave. I couldn’t get it to work exactly the same way. The level slider didn’t respond when I played the test signals, but Thierry told me the measured response looked okay, so I kept going.

You may need to play with the input level of your measurement microphone so you don’t trigger a “clipping” error from the software when you calibrate the microphone level. You can find the input level slider in your Mac’s System Settings → Sound → Input and Output section, under the Input tab.

For Room Shaper, you only need to take one set of measurements at the “sweet spot”. There’s no need to move the microphone around for the other 8 positions.

Play the test tones through Roon to take measurements. Include any Roon DSP you intend to use during normal playback. However, if you have a set of HAF filters, use only the “standard” filter for your room. While measuring, do not use any crosstalk cancelation filters you may have purchased. You can use crosstalk cancelation filters for regular playback once everything is set up.

The app will save two files: L1.wav and R1.wav in the folder ~/Documents/HAF. These are the two files you will need in the next step…

Configure Room Shaper

Fire up Room Shaper again.


Click IR Left, and select the file L1.wav.

Click IR Right, and select the file R1.wav.

Click Configure.

The app computes its response and shows the two graphs at the bottom. The “Idx” graph is a measure of how much correction your room will require as a function of frequency. The higher the curve, the more correction will apply at that frequency. You can see my room has a lot of bass resonances, which create a “boomy” or “thick” bass.

Click the Options button at top left and select Audio/MIDI Settings.


Keep the Mute audio input box checked for now.

Select your output device in the Output dropdown. Mine shows my DAC, a Benchmark DAC3 B.

Select the Loopback Audio device in the Input dropdown.

Select the same Sample rate you set in the Audio MIDI Setup app, as described in the section “Configure the plumbing” above.

You may leave the other settings at their defaults. Thierry told me that increasing the Audio buffer size reduces the compute load but slightly increases the memory footprint.

Finally, uncheck the Mute audio input box and close the Settings window.

Configure Roon to use the plumbing that connects it to Room Shaper

You noticed how we set up Room Shaper to use the Loopback Audio device as its input. So, if we set Roon up to use Loopback Audio as its output, the bitstream from Roon will be fed into the Room Shaper app.

Bring up Roon’s Settings → Audio panel.


Notice that the list of devices on this endpoint is exactly the same as the list that Audio MIDI Setup showed a few steps previously. For example, you can see my DAC here. You’ll also see your Loopback Audio device here. In my screenshot, I have named the Roon zone Room Shaper to identify that device.

Do NOT enable the DAC. Instead, enable the Loopback Audio device and give it a zone name.

Hopefully you see the logic here. Roon sends its output to the Loopback Audio device, and Room Shaper takes its input from that same device. You’ve plumbed a pipe that connects these two applications.

Click on the gear icon for the device you just enabled, and select Device setup.


Note that Exclusive mode must be OFF. If you turn it on, CoreAudio has no way to reroute the output through the pipe to Room Shaper.

Also, per Thierry, there can be no digital volume upstream of Room Shaper. In my case, my DAC is connected to a Benchmark analog preamp and power amp, so I simply chose Fixed Volume and set the volume in the analog stage. If your DAC has a digital volume control, you can use that since it’s downstream from Room Shaper.

Scroll the Device setup pane down and open the advanced settings section.


Choose the same Max sample rate you selected in Audio MIDI Setup and while configuring Room Shaper.

Max bits per sample will likely be 32 because the Loopback Audio device can handle 32 bit audio. If your DAC can handle 32, that’s okay, but if it can’t, make sure you select 24 here.

Select the new zone and enjoy the music.

Wrap up thoughts

  • This process took me about three days to figure out, with help from Thierry and from Rogue Amoeba tech support. I hope my instructions let you get more quickly to your desired result.

  • I hope Thierry @Home_Audio_Fidelity will release signed, Universal versions of his apps. As I mentioned earlier, the apps are not signed and require some tinkering to get them working on recent versions of macOS. And because they are Intel apps, you might need Rosetta; plus, you’re giving up some performance, which is an important factor for a DSP app.

  • The internal plumbing mechanism of macOS Core Audio needs to run at a fixed sample rate unless the device is in Exclusive Mode, which isn’t possible here. In my screenshots above, everything needs to run at 96 kHz. You have two options for resampling: let macOS resample internally between Roon’s output and the Loopback Audio pipe, or insert a resampler into Roon’s DSP chain. I chose the latter option. All my music streams through a Roon resampler that upsamples everything to 96 kHz, then through a set of room correction convolutions that Thierry made for me, then out to Room Shaper via the Loopback Audio pipe. Outside Roon, everything runs at 96 kHz with no further resampling. My DAC can take 192 kHz but I don’t think I can tell the difference.

  • Roon’s remote controls will lag when you use them. That’s because Room Shaper is buffering audio to run its algorithms. If you click Pause, it may take a half second or so to actually pause at your speakers. That’s also true of making adjustments to Room Shaper options, e.g., bypass, volume control, etc.

  • Finally, Roon sees the Loopback Device as an “OS Mixer” device. Therefore, it drops the signal quality indicator to “green”. This bothers some people, but it doesn’t matter to me. The final sound quality is what makes the difference.

I hope this helps you.

4 Likes

Here is a signal path. Cremona is the name of my Mac mini in the listening room that serves as my DSP platform.

My MUSE setup converts everything to 24 bits, 96 kHz and runs the audio through the HAF convolution filter.

Once the signal is handed off to the Loopback Audio pipe device, Roon loses track of it. At the other end of the pipe is Room Shaper.

1 Like

Many thanks @Kuryan_Thomas for your detailed tutorial.

For the ones willing to try crosstalk reduction w/o any room correction, I have added a new plugin (X-talk Shaper) to my list. Check here

1 Like