jaakkopasanen / AutoEq

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

Varying Results - Old vs New + ( #305

Closed BeyondNetero closed 3 years ago

BeyondNetero commented 3 years ago

Tin HiFi P1 - A First image is a generated result several months ago. Tin HiFi P1 - B Second image is newly generated.

Settings are the same - Max filters 100 + 100, compensated to zero.csv. Not sure about max gain, but new one is 21db.

Notice there is a huge peak of about 8db around 8KHz on image B on the other hand the dips on about 10K has been reduced vs image A.

Was the algorithm changed that's why results are different? Also, is there anyway to solve those huge narrow spikes/dips? it looks like the program applies good compensation on the sub 10KHz but above 10KHz it just smooths out the compensation and not have the narrow adjustments.

jaakkopasanen commented 3 years ago

The algorithm was improved to better handle the dips in the headphone's frequency response. The 10 kHz range management was also changed to smoothen more because the measurements are not very reliable up there so they shouldn't be used to create precise eq. See this Reddit post for more info https://www.reddit.com/r/headphones/comments/l9g1f4/avoiding_dips_when_equalizing_headphones/?utm_medium=android_app&utm_source=share

jaakkopasanen commented 3 years ago

More specifically smoothing starts earlier now with IEMs since their measurements start to get unreliable earlier than with headphones.

BeyondNetero commented 3 years ago

Hi Jaakkopasanen, thank you for answering.

With that said, is there a manual way to make a zero compensation setting manually in excel with the data measurements and load them to say Equalizer APO? since it's just text. I want to do some form of experiments.

Also, thanks for the great work here, I'm able to use these EQ settings on my phone with Wavelet.

jaakkopasanen commented 3 years ago

What do you want to achieve here? The naive version of equalizer frequency response is target - measurement. Youccould lload bboth in excel andddo tthe subtraction there. I suppose you can turn that into a EqualizerApo GraphicEQ with some query replaces in text editor such as notepad++. Also take a close look at AutoEq parameters, you might find something useful there.

BeyondNetero commented 3 years ago

Hi,

I was wondering if I could do like a 1:1 adjustment like for every variance because of how the measurements csv looks like and how Equalizer APO works with just inputting gain adjustments without Q values. Does doing this introduce some sort of phase shift?

jaakkopasanen commented 3 years ago

@BeyondNetero I don't follow. Would you care to elaborate or rephrase your question?

BeyondNetero commented 3 years ago

So the measurements look like this - image and the GraphicEQ.txt generated that is used for Equalizer APO looks like this - image Is it possible to make my own GraphicEQ.txt to make a 1:1 adjustment for the measurement above for zero compensation?

To elaborate, is the measurement above based on a compensation target? if not, that means it's based on zero compensation correct? so can I make my own adjustments like GraphicEQ.txt for each frequency measurement like above to target for zero compensation?

Currently, the program does calculations that smooths out the adjustment, I'm asking if I can make the raw adjustments per frequency measured for GraphicEQ.txt manually without using the algorithm.

Please let me know if I explained better :)

jaakkopasanen commented 3 years ago

Multiply each raw column value with -1. Save the file as csv and open it in notepad++. Do search and replace to replace comma (,) with space and another to replace line feed (\n) with semicolon and space. Finally add the GraphicEQ prefix to the file.

Somethingllike that.

BeyondNetero commented 3 years ago

So for example the measurement of Oratory1990 for a particular headphone is measured in relation to zero/flat, meaning the db values in column B aren't in relation to a target like the harman curve or the diffusion field?

jaakkopasanen commented 3 years ago

Measurements in AutoEq are not compensated. You should never use zero.csv as targets with these.

If you want to use them with a this manual process, you need to open the target in excel and subtract the measurement from the target. Remove other columns except frequency and the subtraction and do the search replaces in text editor. Or you could just open existing result and use the error column.

BeyondNetero commented 3 years ago

Thank you for confirming.

What do you mean by "You should never use zero.csv as targets with these."? I thought this was used to generate results with no compensation using the command lines?

For example if I use this command line - python autoeq.py --input_dir="measurements/oratory1990/data" --output_dir="my_results/oratory1990/flat" --compensation="compensation/zero.csv" --equalize --parametric_eq --ten_band_eq

This should mean that all my equalization results won't have any compensation, correct?

jaakkopasanen commented 3 years ago

That's how you would do it but you should never do it. There's never a case where you'd want to use flat frequency response with measurements done on a system that mimics human hearing.

BeyondNetero commented 3 years ago

Yes, this is what I saw other people say but this is the tuning that works a lot for me, I can't stand headphones/IEMs tuned to like the diffused field or Harman targets. Some of the songs I listen to become very fatiguing.

Also have you heard of Sonarworks Reference 4? It works similarly to your project but I think their target is always zero compensation for speakers and headphones based on their marketing and is used by professionals in the music industry even some speaker manufacturers have competing technologies and that is what I want to imitate but they don't have a wide database for headphones. I tried researching what the specific targets are for Sonarworks and can't find specific info, if you know please share any knowledge you have or links regarding this and/or other studies.

jaakkopasanen commented 3 years ago

Instead of using flat target you might want to add a couple of filters to equalizer apo. Such like Fc = 3500 Hz, Q = 0.63 and set the gain to what sounds good. Similar story with high shelf filter at 10 kHz (leave the default slope / Q).

I haven't used Sonarworks but based on what I've read, they are using their own target for headphones which very similar to Harman target but not quite.

BeyondNetero commented 3 years ago

Thank you, Jaakko but the tuning I am doing already works for me, I can't boost the highs at all since some of the music I listen to will become very fatiguing. I think the 3KHz+ range is usually harmonics that isn't the first harmonic so it might brighten up some things not sure how I'd feel about that but I will try and experiment.

Where can I find the information about the Sonarworks headphone response target?

jaakkopasanen commented 3 years ago

I meant that you should apply negative gain for both of these filters. Equalize to Harman target and then reduce the treble with negative gain on these filters to get to a desirable results.

I'm sure google will find you the thread posts if you put a bit of effort into it. I don't recall where I read about the Sonarworks. Probabaly Head-Fi / Reddit / Audiosciencereview.

BeyondNetero commented 3 years ago

Thanks once again, Jaakko 😁 I hope you are doing well.