Room correction using your iPhone and HouseCurve

You’re gonna end up gutting a lot of high margin businesses with your weekend project :slight_smile: that’s my prediction. Love what you’re doing. That’s a compliment, even if a bunch of people don’t like it. You’re doing the same essential thing with “free” hardware and cheap software that has been done with expensive bespoke both. Bravo.

1 Like

Does having a case on an iPhone negatively impact the performance of the mic and/or the results?

Yes, assuming only the mains are being equalized and the sub is separate. The app doesn’t know how many speakers are involved, it just measures the overall sound. If the subwoofer’s level is already at the target curve, then there won’t be anything to correct in the subwoofer’s frequency range. So, yes, that would mean no additional work for the main speakers in that region.

Yep, it can. My iPhone case seems ok. But I have an iPad case that degrades the mic. The condition of the device is another factor - dirty or blocked microphone ports will have an impact too. You can try measuring with and without the case to see. (put plot in History mode to compare)

1 Like

Noob question, in which position you are holding your iPhone when measuring? Upright so the screen is facing the speakers or flat so the small side is facing the speakers (parallel to the ground).
I have to redo all my measurements as I had hold the phone completely wrong (parallel to the ground but facing the mic away from the speakers, dunno why I thought that is the right position :see_no_evil:).

In my experience, upsampling takes a lot more processing power than convolution.
If you use upsampling, Roos upsamples both the music file and the correction filter before convolution, so it’s worthwhile to have filters for all relevant sample rates at hand, as it saves one upsampling process.

On my NUC7i3-based ROCK (same hardware as the original Nucleus, IIRC) I get pretty low processing speed numbers (like around 8, which equals about 12.5 % CPU usage) with upsampling from 44.1 to 174.6 kHz both the music and the filter.
The processing speed indicator jumps up to around 16 (about 6 % CPU usage) with an 174.6 kHz filter in place.
If no upsampling takes place, convolution of a 44.1 kHz file doesn’t even trigger the speed indicator (meaning >100 or less than 1% CPU usage).

So while all this isn’t critical even on the NUC7i3, with even more powerful hardware this might not be an issue at all.

One more question / feature suggestion:

I suppose, measurement data is included in Backups of the iDevice, so if you restore from a backup, your data will be all there. Correct?

Is it possible, to manually save/export to file (and of course import) the measurements taken by HouseCurve?
This would be useful, if you need to move to another device or need to start over from scratch with the current device.

Ok, I think I previously misunderstood you. I thought I can Iet the Subs crossover freq go way over the speakers roll off (100hz) And let HouseCurve eq the summed output of the Sub + Speakers between 35 and 100 hz. Or didn’t I?

Yes, I believe that will work… though, I admit I’ve never managed to keep a measurement for that long. My inner audio nerd always finds reasons to redo them :smiley:

Right now, it’s not possible to export the measurements to another device. But, I’ve put it on the list. Thanks for the suggestion!

@Greg_Wilding

have been reading thru this thread. Nice app! I wanna ask, is it possible to create impulse responses for several bit rates eg 44.1, 48, 96, 192 etc and put them into a common folder, zip it, and point Roon to that zipped folder for the convolution filter? then Roon chooses the correct one depending on the bitrate of the music being played.

That’s exactly how Roon works. As I pointed out above you have to do some manual work (export in each of the bitrates separately and do the zip) but then it works like a charm. If I had my druthers, it’d output a file in each bitrate for each house curve and put them all in a zip along with a cfg, but that’s future work.

See the below link to confirm:

1 Like

@Greg_Wilding would love to see your code running inside Roonlabs Remote App automated applying convolution filters into Roon Core DSP settings :wink: what a fit!

4 Likes

Loving this app Greg. It sounds great. Thank you.

One question is about how you time align just 2 passive speakers (L/R).
Can I make adjustments within the app?

The app can be used to measure the delays (see time alignment) but it can’t change them. You’ll need to adjust your audio system for that - moving speakers, delay/distance/phase settings, etc.

Hehe, that would be pretty awesome. It’s not quite the same thing, but you could vote/comment on this feature request:

From what I understand, the API to send filters to the Roon Core doesn’t exist. But we can dare to dream :smiley:

With the release of iPadOS 16.2 I took the opportunity to swipe my iPad and restore from (encrypted) backup, so I can confirm, that the measurements are salvaged during this process.

My inner audio nerd wants me to keep measurements, so I can compare filters to the same target curve based on different measurements or apply a new target curve to an older measurement, that feels to have been better than a new one :smile:

Seriously I think, once you have done the measurements right, it’s worth keeping them in a safe place for future use until you change something fundamental (like speakers, speaker positioning, room treatment…) that renders them useless.

1 Like

@Cameron_Rector
You can use Speaker Setup in Roon DSP to time align speakers, it’s actually quite easy by entering distances in cm, the necessary delay is automatically calculated.

Since HouseCurve takes/generates monaural measurements/correction filters by playing the test signal through both speakers at the same time, i would recommend measuring speaker distances before taking measurements to either put the microphone exactly center on your listening position (if you use an external mic on a tripod) or compensating distance differences by DSP in Roon or even moving the speaker before taking measurements.I often use a laser distance meter for this purpose.

If you correct for distances after taking measurements, the effect of inequal speaker distances might be double compensated both by the filter and the extra adjustments in Roon.

But I wouldn’t get too hung up about it, since during listening, you’re never sitting perfectly centered or otherwise couldn’t move you head at all. Also, when taking multiple measurements around your listening position to generate an average response curve, you inevitably get different speaker distances with each measurement, with only one measurement being perfectly centered between the speakers.

So unless you’re having reasons that prevent you from mechanically adjusting equal speaker distances (like furniture position in the living room) in a tolerance of let’s say less than 1 cm, you probably don’t need to correct for that by DSP.

1 Like

Are we able to export measurement data the app gathers or only able to export filters. Just wondering if I could play around with the raw data in REW

Yeah, just the filters right now. What exactly are you looking to export? The raw audio recording? Or the results of analysis, ex: impulse response of each measurement?

Anyone have trouble with saved measurements disappearing?

Today I downloaded the app to an iPhone 6s to give it a try. I successfully saved a couple sets of measurements and exported them to use in Roon. A little later, I opened the app and my saved measurements are gone.