jaakkopasanen / AutoEq

Automatic headphone equalization from frequency responses
MIT License
12.87k stars 2.47k forks source link

AutoEq.app website displays different EQ results on different devices/browsers #718

Closed zanyninja closed 6 months ago

zanyninja commented 8 months ago

Hello.

When using the AutoEq.app website on my iPad using Safari, I get different recommended EQ settings from the ones that I get on my Windows laptop (using both Chrome and Edge) and my Android phone (using Chrome). This happens with all headphones. Profile settings are exactly the same between systems/browsers. This is a bug I assume?

While I'm here, just a quick question - the recommended EQ settings on your GitHub results page (which we'd refer to before you launched the AutoEq.app website) are quite different from the AutoEq.app website recommended EQ settings (using the default profile). Which EQ settings are "better"? (I know it's a dumb question, but I'm new to all this, don't want to tinker with profile settings before I know what I'm doing.)

Lastly, I want to say the AutoEq project is very fascinating and useful. I'm just dipping my toe in the audiophile world, and have found AutoEq to be an amazing resource. Thank you for all the work you put into it!

jaakkopasanen commented 8 months ago

Can you provide some screenshots from different browsers showing different results?

X6205 commented 8 months ago

I have similar experience.. For my Sennheiser HD 599 headphones are values on AutoEQ.app Oratory1990 different than values here in text files of Oratory1990.

jaakkopasanen commented 8 months ago

That's to be expected. The precomputed parametric equalizer results in Github have 5+5 filters, where the first 5 have low shelf + 4 peaking and the last 5 are high shelf + 4 peaking. This is done in order to serve both 5 band parametric equalizers and 10 band equalizers at the same time since users cannot make any changes to these. In autoeq.app the default is low shelf + high shelf + 8 peaking. Kind of similar but the Github results are optimized in two phases, the last 5 filters build on top of the first five, and therefore the filter parameters end up being different.

X6205 commented 8 months ago

Well.. which files do you recommend then? ParametricEQ for E-APO downloaded from AutoEQ website or files from this repository? Same applies also for convolution EQ files, they are different.

https://github.com/jaakkopasanen/AutoEq/tree/master/results/oratory1990/over-ear/Sennheiser%20HD%20599

jaakkopasanen commented 8 months ago

From the website. And I also do recommend adjusting at least bass and treble boosts to taste, but of course feel free to play with the other parameters.

jaakkopasanen commented 8 months ago

The results in Github are basically there for legacy reasons.

zanyninja commented 8 months ago

Can you provide some screenshots from different browsers showing different results?

Android Chrome first, then iPad Safari - 10 band followed by 31 band graphic equalizer, for the Sony MDR-7506.

Interestingly, on the iPad the 31 band EQ brings up different results each time (or shuffles between a few different sets of results each time). Might apply to other EQs - I haven't tested all the EQs thoroughly.

Android chrome 1 Android chrome 2 Android chrome 3 Android chrome 5Android chrome 4 iPad safari 1 iPad safari 2 iPad safari 3 iPad safari 4

jaakkopasanen commented 8 months ago

Most peculiar. I tried on 5 different browsers and two different devices. Exactly the same results for 10-band graphic eq. I can't help but suspect that there's something different in the advanced parameters. Could I get screen shots of those too?

zanyninja commented 7 months ago

Sorry for the late reply. The advanced parameters are the same - screenshots below. Now I’m getting somewhat different results between different Android devices too (just got a new phone). Strange…

Android 1 Android 2 iPad 1

jaakkopasanen commented 7 months ago

Thanks! Truly mind boggling. I have a Mac at work, I'll test on that if I get different results. Would help tremendously debugging.

Unless you can get me the HTTP request payloads and responses from the browser's developer console (network tab). If you don't know what this mean, ignore for now.

jaakkopasanen commented 7 months ago

I was able to reproduce this on Chrome and 31-band graphic eq. Randomly I'm getting two alternative results. I checked the request payloads and they are exactly the same. The issue is not with the device or browser but fully on server side. Seems liked the PEQ optimizer is not deterministic.

zanyninja commented 7 months ago

Thanks! Truly mind boggling. I have a Mac at work, I'll test on that if I get different results. Would help tremendously debugging.

Unless you can get me the HTTP request payloads and responses from the browser's developer console (network tab). If you don't know what this mean, ignore for now.

Yeah that was a little beyond my capabilities I’m afraid 🙂

But glad you’ve identified the problem now 👍

Burrito78 commented 7 months ago

31 band eq is broken for me on latest Safari 17.1. Apple M2, Sonoma 14.1.1 (23B81)

Bildschirmfoto 2023-11-12 um 02 26 38

jaakkopasanen commented 7 months ago

One problem with the 31 band eq is that the optimization time is limited to 500 ms and that is not enough to find the optimzal set of parameters for 31 bands. That doesn't explain why we're getting different result each time.

jaakkopasanen commented 7 months ago

I changed the fixed band equalizer optimizer to limit the gains close to the target. This doesn't fix the issue of results changing but at least won't now produce completely useless results.

jaakkopasanen commented 6 months ago

I added some debugging and noticed that when different results are given, the PEQ optimizer goes through different number of optimization iterations, but the start state is the same. This means there is some slight undeterministic component in the optimizer, perhaps numerical instability, and that's not something I can affect. Therefore I'm going to call this one closed as the 31-band equalizer works reasonably well, the slight variation in results is not very detrimental and I cannot do anything to stabilize the behavior further.

Thanks to everyone who helped me debug this!