Room correction using your iPhone and HouseCurve

Hi Greg, if I play the external sweep via roon, roon shows, that the volume of the sweep is not constant. See the screenshot. My understanding is, that the volume of the sweep should be the same from start to end.

Add images

Just tagging @Greg_Wilding - too many Greg’s on this thread :slight_smile:


Hi @Greg_Wilding

Thanks so much for this app, it’s given me the courage at attempt applying filters for the first time ever.

I’m going to try to borrow a mic to do more measurements but it is a “iMM-6S”. I guess this Dayton model will still work as per your list of microphones.


Mine looks the same (seems to work fine).

I’m wondering why, though. I don’t think it really has to be a constant-volume sweep - the app just has to know what the volume is at each point, then it can account for it.

Maybe it simplifies measuring if it’s not as loud in the bass; with Dirac I had to spend 15 minutes before every measurement round to remove or secure a lot of stuff that clattered at various bass frequencies.

This doesn’t explain the variable volume across the bass, though. Looking forward to Greg’s explanation :slight_smile:

1 Like

True, but not usually the common way to do it.

Actually, the lower the frequency the worse the signal to noise ratio, so that’s counter intuitive.

To offer a different perspective, I think this visual appearance could well be an artifact of how Roon’s algorithm analyzes audio content, and since that’s quite a fast sweep up the range, Roon might well sample too slow/coarse to catch the complete integral in the lower registers.

When comparing Roon’s EBU128 LUFS numbers with my dynamic-range-metering-bridge, I have found minor discrepancies in some instances, and think I’ve just found the answer in light of this topic.

True, but just saying in response to the post that brought this up

I gave the example why :slight_smile: With Dirac, the instructions were something like “sweep as loud as possible as long as (something or other)”, so that was quite annoying to find any last rattling thing in a drawer.

Right, that’s most likely.

1 Like

An explanation from greg @Greg_Wilding would be great.

Patience, it’s his weekend project :slight_smile:

1 Like

If you look at the sweep file in an audio editor (ex: Audacity), you’ll see that the amplitude is constant, but it starts at a very low frequency (long wavelength). I suspect the long wavelength is what causes the ripples in Roon’s display.


Should work with a lightning to 3.5 mm adapter. If you need an extension cable, make sure it’s a TRRS cable.

1 Like

Thanks @Greg_Wilding, you’ve done a great job developing this app. It works quite well just using the microphone on my iPod Touch 7th gen.
I have 2 subs along with my 2 speakers. I ran the app with the subs off, it showed clearly where my speakers dropped off on the low end. Made setting my subs crossover value easy.
Nice work.

1 Like

Due to the exigencies of life with the girlfriend, my speakers are stuck at different distances from my favorite chair. About 50cm different. Can I remedy that using HouseCurve?

So far, I’ve adjusted the timing of the speakers via Roon, and created a convolution filter for the room via HouseCurve. But I haven’t adjusted the relative loudness of the speakers, because I am uncertain how to measure it much less adjust it.

Also, notwithstanding all the great advice in this thread, I haven’t figured out whether to use HouseCurve with or without the timing correction applied.

I see that HouseCurve provides for measurement of individual speakers, but I can’t imagine how to combine those into one convolution filter, if that is even the right approach.

Help, please. And thanks.

I would apply the timing correction, then use HouseCurve to measure the system and generate a filter.

You could generate filters for each channel if you want. Just mute/unplug speakers and measure separately. Be sure to measure from exactly the same locations for each channel. Set the target curve fit to manual so HouseCurve corrects to the same level for each channel. I did this for my kitchen system with decent results, although I used a miniDSP device to apply the filters, not Roon.

See instructions here for applying monaural filters for each channel in Roon. I haven’t tried it, so I can’t provide an example config file. Perhaps someone else can provide input?

Thanks for getting back (and for developing this excellent app in the first place). I’ll try to generate filters for each channel and let you know how it turns out.

A more fundamental question: If I already have PEQ set up for a particular speaker, should I disable that before running HouseCurve? In other words, does HouseCurve correct not just for the room but for the speakers as well? (I realize that might be a really stupid question . . .)

Thanks again.

No problem, hope it works for you!

That’s a common question - it corrects both. Although we call it “room correction”, what HouseCurve measures (and we hear) is a combination of audio system and the room. I would disable the PEQ and then measure. HouseCurve will likely create a filter to replace what the PEQ was doing (if it helps achieve the target).

@Greg_Wilding any chance you will ever (at least this year maybe) take on correction in the time domain, not just frequency domain?

Seems like you have the basis for a giant killer. I know it’s your weekend project. And I love what you’ve done so far. And I know overcomplication can kill great products.

But… HouseCurve Pro?



You can fix that with Roon’s DSP using speaker setup. Just enter the left and right speaker distances from your listening position and adjust the gain settings to taste. Just a warning, depending on the gain settings you choose you may need to add some headroom to avoid clipping.

Or just use a negative gain setting for the louder channel to avoid clipping.

Yep, it’s been on my roadmap for a while now - an option to generate FIR filters, which can correct time domain. But, yeah, it’s a weekend project so it’ll be later this year. Hehe, keep telling your friends about HouseCurve and maybe that can change :wink: