• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

A new EQ tool for sound correction based on equal-loudness contours

Quick Waipa

Member
Joined
Sep 17, 2025
Messages
6
Likes
10
I’d like to introduce a free tool I developed for more natural and musical sound correction of PC audio.
It’s based on my own approach that incorporates equal-loudness contours, and it has the following key features:
  • Blends a flat target response with curves derived from equal-loudness contours, aiming for a more musically satisfying correction
  • Maintains clarity and forwardness even at 100% correction (doesn’t sound muddy or recessed)
  • Can be applied system-wide on PC through software such as Equalizer APO

Here’s the project page with the GitHub download, theoretical background, and usage guides:
SONUS CORRECT

I’d greatly appreciate any feedback from this community—measurements, listening impressions, or suggestions for improvement are all very welcome.
 
I admire the substantial effort taken as I'm interested in the topic. However, I found I had to dig fairly deep through the GIT to get an overview of how to hook this into a DSP chain?

Perhaps a short How-To (in English) would be worthwhile? (sorry if I missed it)
 
I admire the substantial effort taken as I'm interested in the topic. However, I found I had to dig fairly deep through the GIT to get an overview of how to hook this into a DSP chain?

Perhaps a short How-To (in English) would be worthwhile? (sorry if I missed it)
I agree, I’m mainly interested in headphone use and it is more difficult to ~properly~ measure these so I would hope to use online-sourced frequency response data. I’ll have to see how feasible it is to import these to REW (lacking polarity information).

That being said, there was a more accessible english guide linked on the site https://note.com/waipa/n/n66fa3f48836a
 
I admire the substantial effort taken as I'm interested in the topic. However, I found I had to dig fairly deep through the GIT to get an overview of how to hook this into a DSP chain?

Perhaps a short How-To (in English) would be worthwhile? (sorry if I missed it)
Thank you very much for your constructive feedback.
I want to create a clearer “User Guide” and articles for English-speaking readers so that more people can try this tool.
 
I bump this, sounds interesting.
Can you give us your subjective listening impressions using the software @Quick Waipa ? Maybe a comparison with traditional room EQ?
 
I bump this, sounds interesting.
Can you give us your subjective listening impressions using the software @Quick Waipa ? Maybe a comparison with traditional room EQ?
Thank you for your comment.
In terms of auditory impression, compared to conventional room EQ using simple flat targets,
・The sound projects forward more
・It sounds clearer
・It sounds more musical
These are the impressions.

In other words, the flat target used in conventional room correction tends to emphasize the midrange and suppress the presence range relative to the typical listener's listening environment. This often results in a “muddy, recessed, accurate but dull” impression. However, the room correction tool I developed can theoretically create a target curve that closely approximates the typical listener's environment. As a result, the soundstage becomes more appealing and musical, even with room correction applied.
Furthermore, the degree to which the listening environment is aligned with that of a typical listener can be freely adjusted without relaxing the correction.
 
1762584354967.png

When I tried generating the files, it showed this on the command console and stopped.
What should I do @Quick Waipa ?
I'm using Windows 10 and Python 3.14.
 
Thank you for trying out the tool!
There may be an issue with the format of your input data (FR data in CSV format). Please verify that it follows the format below:
・No headers or additional columns
・Input data contains only frequency and gain (any extra data like phase will cause errors)
Example:
100, -3
200, -2
300, -1

Example causing an error:
100, -3, 1
200, -2, 2
300, -1, 3

We apologize for the inconvenience caused by the restrictive input format of this homemade tool. Please feel free to ask any questions if you continue to encounter issues.
 
Programmatically, isn't it possible to skip lines where field-cnt is not N, where N=2?
 
・No headers or additional columns
・Input data contains only frequency and gain (any extra data like phase will cause errors)
This worked! REW added text info into the output files. Deleted everything except the numbers, and the issue is gone.
Time to setup and do a listening test :)
 
I have a question about the preamp gains. There are 2 preamp modules in your example config.txt.
One of the modules is meant for "fri_diff" and corrects EQ imbalance. I get that.
The other one makes me scratch my head a bit. Your guide says it's for "Calculating the Ratio of EQ Data Between Artificial Flat Target and Natural Flat Target".
I set them up accordingly, and Equalizer APO shows there's clipping. Should I worry about that?
1762597735322.png
 
I have a question about the preamp gains. There are 2 preamp modules in your example config.txt.
One of the modules is meant for "fri_diff" and corrects EQ imbalance. I get that.
The other one makes me scratch my head a bit. Your guide says it's for "Calculating the Ratio of EQ Data Between Artificial Flat Target and Natural Flat Target".
I set them up accordingly, and Equalizer APO shows there's clipping. Should I worry about that?
View attachment 488904

I'm glad to hear things are going well!
Due to the correction, peaks may occasionally exceed 0dB in certain frequency bands. While this shouldn't cause any issues, if it bothers you, try lowering the overall gain on the preamp so it doesn't exceed 0dB.
 
Tried reading the documentation but I couldn't make much out of it.
Equal loudness concept is familiar to me but I've always read about it in the field of achieving similar tonal balance at different volume levels.

Is this what your program is trying to achieve? Because reading about it didn't give me this impression. Pardon me for the naive question, surely stemming from my ignorance.
 
Tried reading the documentation but I couldn't make much out of it.
Equal loudness concept is familiar to me but I've always read about it in the field of achieving similar tonal balance at different volume levels.

Is this what your program is trying to achieve? Because reading about it didn't give me this impression. Pardon me for the naive question, surely stemming from my ignorance.
Thank you for your question.
As you pointed out, I understand that the concept of the equal loudness contour is frequently used in scenarios involving loudness level adjustment, including the establishment of loudness normalization standards.

My tool does not utilize the equal loudness contour in that manner; instead, it employs it for generating target curves in room correction.
Simply put, by setting the EQ to a target curve that follows the equal loudness contour (which I call the natural flat target), it sounds biologically natural and flat across all frequency ranges to the human ear. This alone can make the sound slightly too sharp. However, by skillfully blending this with a conventional target curve mechanically set flat across all frequencies (which I call the artificial flat target), my tool's core theory enables theoretically “pleasing to the ear” room correction without relying solely on engineering intuition.

My guess is that this room correction sounds better than conventional artificial flat targets because in studios, adjustments closer to a natural flat target are made based on engineering judgment to match the listener's listening environment. In fact, most songs flooding the market today have a slope that follows the equal loudness contour.

If you have any other questions, feel free to ask.
 
Back
Top Bottom