Room correction using your iPhone and HouseCurve

Hi Folks,

I’d like to share my experiences finding the “perfect” house curve - for my taste.
I included the curve definitions, so you can just copy-paste to a text file, import in HouseCurve and try out for yourself.

After some research regarding Floyd Tooles findings and recommendations I started out with a flat curve wit a 0.7 dB/oct slope:

Slope 0.7
Hz dB
12.5 2.8
25 2.1
50 1.4
100 0.7
200 0
400 -0.7
800 -1.4
1600 -2.1
3200 -2.8
6400 -3.5
12800 -4.2
25600 -4.9

This gives a very neutral presentation, tight bass and works very well with near to live volume levels around 85 dB SPL. Recommendations for a jaw dropping listen (crank it up :slight_smile: ):

  • Lorde, Royals
  • Billie Eilish, You should see me in a crown
  • Trentemøller, Vamp

If you feel, you need more “air”, I recommend stopping the 0.7 dB/oct roll off at 4 kHz and keeping it flat from there:

Slope 0.7_brilliant
Hz dB
12.5 2.8
25 2.1
50 1.4
100 0.7
200 0
400 -0.7
800 -1.4
1600 -2.1
3200 -2.8
4000 -3
20000 -3

For listening at regular volume levels and less bass heavy music, the above shown curve sounds a bit thin, so it’s useful to include some bass boost.
Taking a closer look at the Harman target curve which takes into account the Fletcher/Munson curves of equal loudness perception (i.e. the sensitivity of the human ear at different SPL levels), I came up with an gradually increasing bass level starting from 200 Hz downwards to 50 Hz (2 octaves) and keep it flat from there down to 20 Hz.

For a 2+dB Bass boost at 50 Hz, use this curve:

Slope 0.7_2dB bassboost
Hz dB
20 3.4
50 3.4
100 1.7
200 0
400 -0.7
800 -1.4
1600 -2.1
3200 -2.8
6400 -3.5
12800 -4.2
25600 -4.9

To my ears, this sounds best at normal listening levels.
You can vary the level of bass boost to your taste and listenings habits by editing the values from 20Hz to 100 Hz as follows:

+1dB bass boost:
20 2.4
50 2.4
100 1.2

+3dB bass boost:
20 4.4
50 4.4
100 2.2

+4dB bass boost:
20 5.4
50 5.4
100 2.7

At very low listening levels (or with thin sounding 80’s pop) , the +4 dB version will be useful.

Of course this can also be combined with the above mentioned extra “air” above 4 kHz, which is recommended for lower listening levels:

Slope 0.7_2dB bassboost_brilliant
Hz dB
20 3.4
50 3.4
100 1.7
200 0
400 -0.7
800 -1.4
1600 -2.1
3200 -2.8
4000 -3
20000 -3

I hope this to be useful for others as a starting point for their own experiments.

Have fun and always keep an eye on the low frequency limits of you speakers and set the frequency range accordingly for filter calculation to avoid overload/damage to the woofer!

4 Likes

Thank you Roland. How do you flip through the filters while listening? In Roon DSP? For the boosts, did you create separate eqs to add on top of the “default” filters or create totally new filters from scratch? Thank you

I created 10 sepetate convolution filters sets.
Two for each bass boost setting (0 - 4dB) with and without extra treble.
Inside roon i created 10 dsp settings accordingly, so i could easily switch between settings during playback and immediately compare results.

To avoid different SPL levels of the different filters i recommend turning off the auto fit target curve and set it manully to an equal value for all filters. Also make sure to use identical headroom for all dsp Settings in roon.

I actually did my experiments using the FocusFidelty Filter Designer Software. The resulting curves work just as well in HouseCurve, but don’t have the correction in time domain applied by the FocusFidelity Software.
So by switching between convolution filters created onto the same target curve by HouseCurve and FocusFidelty the additional benefit of phase and group delay correction can easily be demonstrated.

Thank you. I had a look at Focus Fidelity but it’s only Windows for now. Thank you for the explanations. I’ll try your templates. Do you think there is any benefit in measuring and correcting for channels separately if I don’t go above 300hz? I have a perfectly symmetrical rectangular room. if I measure the wall distances accurately for speaker placement, and create the perfect triangle, is there still a noticeable benefit for time corrections? Sorry if I avalanche you with questions.

You‘re welcome.

If your setup is symmetrical, i don‘t think there is much to gain from channel individual correction, especially if you limit the corrections to the bass region, which is mostly mono on most recordings anyways.

Using HouseCurve this would be a quite manual process measuring each speaker independantly, creating individual convolution files (mono) to the same target curve abd level and merging them together as a steteo file.

You might want to take individual measurements for both speakers from the same (centered) microphone position and compare those. If your setup is symmetrical, there shouldn‘t be much diffetence in bass response from both speakers.

Time correction does not only correct for speaker placement/inequal distances to the listening position. This should better be done by placing the speakers correctly anyways.

The main purpose of correction in the time domain is to make sure that all frequencies arrive at the ear at the same time, compensating for phase errors introduced by the passive crossover inside the speakers and by the eq filters apllied to correct the frequency response.

For those familiar with HQplayer as a stand alone app, do you know if the convolution filters generated can be used directly with HQplayer

I checked it out myself. They can be loaded directly into HQplayer

aha. Glad to hear I don’t need to be concerned about separating the channels for measurements. Roon I think can map channels correctly with multiple conv. filters if within the same zip file. I had not fully grasped what you explained in your last paragraph. Now I know. thank you

I stumbled on this thread and tried out HouseCurve. First of all, congratulations to @Greg_Wilding for creating such a useful and usable tool. Very nice. I always wanted to play around with room correction and this let me without having to buy extra hardware.

I used it with Roon following the directions. I used house curve A and it did open up the sound at the lower frequencies for jazz albums. Will have to play around more. For mid range-heavy stuff in vocals and chamber music etc, it didn’t make that much difference.

They only snag I saw was was that with DSD 128 and above files, using convolution totally overwhelmed my i7-based NUC. If I turn on sampling to PCM and then doing the convolution, it’s fine. And DSD 64 is ok without needing sampling to PCM.

I noticed that it has 8400k taps in DSD64. So when you play a DSD256 file natively, Roon upsamples to 34k taps. Currently HouseCurve is applying EQ from 30-4kHz. I guess I can lower the number of taps by lowering it to say 30-400Hz?

Has anyone else seen this problem?

2 Likes

@shankha
I’ve seen similar issues with high number of taps and overwhelming the processor.

Hi @Greg_Wilding, is House Curve generating filters with long duration without considering high sample rates like in DSD128 or 256?

See this post that explains it.

Very nice app at a great price. I have been able to use HouseCurve to generate convolution filters for three rooms thus far although I may redo two of the rooms as I learn more about the ins and outs of the app. For example removing my iPhone case and pointing the bottom of the iPhone directly at the speakers. I am also increase the number of measurements to at least 5 per room.

A few notes which might help others.

I was able to use the built in measurement sweeps by setting my Pro-Ject Stream Box S2 Ultra to “Bluetooth” and then connecting my iPhone. Worked perfectly.

I was able to use the built in measurement sweeps on my LG TV and soundbar by using AirPlay via the LG TV. Again, worked perfectly.

Thanks for this useful app. A great way to kill some time during the winter months :grin:

1 Like

I guess you could manually input db, freq and q into Roon DSP. Not elegant but should save on processing. Than again I don’t know enough on the subject if conv. Filters have an advantage over eq. Just guessing since HouseCurve only allows 20 filters. I could however hear an improvement importing Biquad into MiniDSP over Conv. Filters into Roon.

Yeah, HouseCurve is just using a fixed number of samples regardless of the rate (up to 96 KHz). I didn’t considered the upsampling to DSD use case. As @brian points out in the linked post, the tail end of the impulse is very likely zeros. Thanks for raising the issue, I’ll look into a better way to do it. I’m also open to suggestions :slight_smile:

As @Cenk_Isil mentions, using PEQ (IIR biquad filters) should use less CPU. It’s unfortunate you can’t load the PEQ parameters from a file.

1 Like

Would be wonderful if the tail end zeroes were removed.

In my experience (NUC7i3 with ROCK installed) it’s just the other way round regarding CPU usage.I. e. applying 10 or more corrections via Parametric EQ takes considerably more CPU than convolution.

While CPU usage of convolution is only dependent on the length of the correction file (I.e. taps /number of samples) and not on the number and complexity of filters used to create the correction file, parametric EQ takes more power with each additional filter specified.

1 Like

Roland again, something new I learn:) thank you.
I load the corrections onto MiniDSP with 96khz output. Airplay, with which I do the sweeps is 44.1 or 48, I think. Does it matter? I only correct up to 250-300 Hz. Oh also, does it matter with what sample rate my Umik 1’s calibration file was created?
thank you

1 Like

Hello Cenk,
I understand you‘re not using the DSP module inside Roon for the corrections, but use an external device from miniDSP, presumably to make use of the corrections for other sources as well (CD player etc.).

While I have no hands on experience with miniDSP I have been thinking about doing the same thing and done a lot of reading on the topic. As far as I have been able to find out, you can‘t load convolution files on most devices and on some you can load only very short ones with a tap length of 6144 samples, which is insufficient for room correction.

So your way to go is to load the biquad filter definitions generated by house curve into the miniDSP device. These are a specific format to describe the parametric EQ Settings (and avoid having to type everything in manually) and therefore should be sample rate independent - different from impulse response files used for convolution, which must be present in the sample rate of the stream that is to be convoluted.

Also the miniDSP device might be internally upsampling everything regardless of source format anyways. So there‘s no need to be worried about different sample rates during measurements and playback source formats.

The microphone calibration files for the UMIK also are samplerate independent. They are used to compensate for non-linearities in microphone sensitivity at different frequencies and in different positions (facing towards the speakers or 90 degrees to the ceiling).

Hello Roland,
Yes, I got the MiniDSP to be source independent. Soundcloud, Mixcloud and Bandcamp stream in Chromecast. I plug an old Google Puck into the MiniDSP Flex an forward the signal to the DAC. Yes, MiniDSP works in 96khz. I still ise Roon for Tidal.
Thank you for your explanations on PEQ.

Hello again Roland :slight_smile: If I have no low freq. dip in my room, and only bumps, am I right to assume that my subs should be close to the main speakers? My logic tells me that I wouldn’t have to worry about phase at all, and less about timing. Am I right? I’d just eq like that.
My MiniDSP is digital out only and I have no extra DAC for my Subs. So I sum the subs output with the speakers, and eq the result. Sonically, would it make a huge difference to invest into a DAC and cross the two over properly and apply eq after?
Thank you

1 Like