Self contained room/sound correction solution in Volumio

Good to know we are already 3 to be interested :nerd_face:. Theoretically, once properly set up, room correction should be kept on all the time. The goal is to have a working and easy to apply process. Currently performing measurements with another computer running on windows and requiring REW and RePhase to generate the filter and copying it on the streamer is a hurdle very few have the knowledge and interest in setting up.
I strongly believe that connecting a 100€ microphone to the RPi and following a simple procedure would allow a lager population to use this technology.


1 Like

+1 :grin:

+1 :grinning:

Let’s say something is coming! :kissing_smiling_eyes:


Yes I completely agree - I was thinking of doing something similar already - I just bought myself a umik-1 microphone and would love to use REW (or similar) within volumio - I think room correction is a killer feature (just look at how much Dirac Live costs). I have already used Audyssey in my main system and I thought it made a huge difference. I use Volumio in 2 other rooms and I actually believe both those rooms (and the cheaper speakers I have in those rooms) would greatly. benefit for room correction - I am using a bit of EQ already with FusionDSP.

1 Like


An update on the topic: doing a self contained solution on the Volumio distro is not straightforward and require more thinkering than initially expected.

Anyway, an elegant alternative is possible for the iPhone owners. Using the HouseCurve app (from Greg Wilding) available at 4,5€ on the AppStore, you may simply use your phone to play sweeps, record and analyse result and generate parametric filter that may directly be saved on the Volumio shared folder for use with FusionDSP

So with a few euros and and iPhone, you get a very handy solution to the initial goal.

Find below a screenshot of the recorded sweep, the parametric correction and the theoretical result.

Any feedback of your trials is welcome.


I would add that House Curve can also uses impulse for convolution in FusionDsp.
See File Formats - HouseCurve

Thanks for the shout out :blush:

For those that are interested, I wrote an application note on this topic:

The application note uses PEQ filters, but as @balbuze points out, you can just as easily generate impulse responses for convolution.


I really like the idea, but do wonder what I am correcting here. The room or the iPhone mic?

1 Like

I guess, strictly speaking, the transfer functions of the audio system, room and microphone all multiply together to produce the measured response. If the mic is “flat enough”, we can assume the measurement is the audio system + room and correct accordingly.

I’m often asked how good iPhone mics are, and the sort answer is “actually, pretty good, especially when you don’t have a measurement mic handy”.

iOS microphones can be accessed in a special “measurement mode”, which disables signal processing for voice calls, etc. My own measurements show that the mics are pretty flat from 60 Hz to 16 KHz. HouseCurve applies some compensation at either end to get the mics closer to what an actual measurement mic would read. For the curious, there’s more information here

HouseCurve also works with calibrated external microphones, like miniDSP’s UMIK-1, but I recommend starting with the iPhone mic.

Thanks for your feed-back.
Couldn’t find much info on the frequency response of the iphone mic, besides those from 12 years ago.
Did you also test the default headset that comes with iPhone, as those seem to have a pretty flat response.

No problem. Yeah, some folks have used the headset mics too. I recall they measured similar to the iPhone mics. They’re also a good way to sanity check that your iPhone mic is working correctly (dirt, lint, cases can mess them up).

Thanks for this awesome development. I’ve used it to do a basic room correction from this:

To this:

The drop from 8-12 k isn’t corrected. Might be due to my speakers being up on wall brackets so tweeter isn’t quite angled down enough.

However, the graph I don’t understand is this one,

the response remains above the line, I thought this was a delay between speakers due to a slightly off centre listening position (this is a family room not dedicated). But adding a slight delay in DSP does not improve it. What causes this?

(Primo mk1- audiolab 6000a - Dynaudio Emit 20 - 2x Eclipse TD316 )

1 Like

The correction filters created by HouseCurve are (currently) IIR based and can’t correct phase/delay but they still impact it. That could be why you see a small difference.

The group delay plot is pretty hard to read. It more or less shows the delay at a given frequency relative to the start of the measured impulse response. It will only show delays that affect a range of frequencies, ex: adding subwoofer delay. Delays that affect the whole frequency range don’t show up because that moves the impulse response.

You could compare group delays between L/R speakers, by setting the chirp to one channel, and then sweep L/R channels separately (see: Measure Setup - HouseCurve).

@balbuze @gregwilding


Follow up on this topic hyphening HouseCurve with FusionDSP plugin.

HouseCurve is exporting convolution filters up to 98KHz, and FUSIONDSP pluging is able to switch automatically filters based on stream frequency (and if corresponding filter file is existing). I sometimes listen tu highres files up to 192 kHz. So my questions are :
How Fusion is handling the correction if the 192kHz correction file is not available?
Is it possible to increase Houscurve filter export capabilities up to 192kHz?

Another question is about the ability to generate FIR filters un FusionDSP: what is the difference between the original impulse correction from HC and the FIR transformed one in Fdsp?

Thanks a lot for this bunch of info.


Hello @BenoitMarhieu

If filter for samplerate played is not present, you’ll get no sound for this sample rate.
You can enable resampling in FusionDsp to always use your max samplerate filter.

no idea, ask the author :wink:

The “engine” is different. FusionDsp runs DRC-FIR to generate filter from an impulse (from REW). Don’t know for HC, but different measures, with different computation settings may give with different result.

Strange… when DSP’ing in convolution mode with filter files up to 98KHz and streaming in 196kHz, music is plying as usual…

HC states it is (currently) generating IIR filters, not FIR (yet). It would then be interesting that HC provide an option to output impulse as they are recorded, not the corrective IIR filter. @gregwilding , if you are online :wink:.


I forgot to mention. If the name for filter contains samplerate ‘myfilter-44100’ it use the related filter according to the track and nothing if samples rate is not present.
But if your filter is called simply ‘myfilter’, it will play at any samplerate but with a wrong correction with samplerate different from the one used to design the filter.

Yep, I have that on my todo list :slight_smile:

tried it and worked well.

1 Like