• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. 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!

AutoEQ Usage and/or Enhancement Requests

m8o

Senior Member
Forum Donor
Joined
Jan 28, 2019
Messages
348
Likes
224
EDIT: @jaakkopasanen Before spending time on this wordy opening post, I believe I may have figured out how to achieve my desired result today simply by creating my own compensation targets. Please see post #2 below for that. I'm about to try it anyway in a few seconds. So I should know if it works shortly. ;)

EDIT: it partially works. Please see my comment under "Re-Edit: " at the bottom Post #2 below in this thread. Hope you can shed some insight into that. Is there is a way now to get only cuts / negative PEQ parameters output by AutoEQ?

In the "List of Amir's Headphone GEQ filters" thread Jaakko replied "I think I prefer ASR over all others" when I asked him "What is your forum of choice where you spend your most time, where I can discuss my particular use cases?" ... I'm therefore opening this thread to first pose my question. But then if of particular interest to others, to further serve as a place that others can communicate with him to discuss his AutoEQ product and pose usage assistance and/or enhancement requests.

@jaakkopasanen As mentioned in the thread cited above, here is a description of my use case. Perhaps it is presently achievable with the capabilities and input parameters and/or files of AutoEQ today. If so, I would much appreciate if you can describe how. If not, hoping you can consider the request and possibly add it to your backlog or equivalent, should you keep one of those, as a future enhancement of AutoEQ...

Take the following AutoEQ generated set of PEQ parameters for my Audeze Euclid, based on the measurement made by Crinacle, turned into data points by WebPlotDigitizer:

Code:
### Parametric EQs
In case of using parametric equalizer, apply preamp of **-5.0dB** and build filters manually
with these parameters. The first 8 filters can be used independently.
When using independent subset of filters, apply preamp of **-5.1 dB**.

| Type    | Fc       |    Q | Gain    |
|:--------|:---------|:-----|:--------|
| Peaking | 32 Hz    | 0.38 | 4.0 dB  |
| Peaking | 190 Hz   | 0.44 | -1.6 dB |
| Peaking | 516 Hz   | 0.98 | 1.5 dB  |
| Peaking | 2152 Hz  | 1.33 | -7.2 dB |
| Peaking | 3044 Hz  | 2.51 | 3.3 dB  |
| Peaking | 3262 Hz  | 1.07 | 5.0 dB  |
| Peaking | 7902 Hz  | 3.67 | -5.8 dB |
| Peaking | 10964 Hz | 1.68 | 2.3 dB  |
| Peaking | 4814 Hz  | 5.86 | -2.3 dB |
| Peaking | 5382 Hz  | 6.53 | 2.7 dB  |

... from this commandline(*):
Code:
$ python3.8 autoeq.py --input_dir="INPUT" --output_dir="OUTPUT" --compensation="measurements/crinacle/resources/crinacle_harman_in-ear_2019v2_wo_bass.csv" --equalize --parametric_eq --max_filters=8+2 --max_gain=9 --show_plot  --treble_f_lower=9000 --treble_f_upper=13500 --bass_boost=9.5

... to achieve this target:
audeze_euclid.png

(*) I call this "v5" successful equalization, out of the many many more passes I had made than just 5. A couple of notes regarding why I used some of the parameters vs. others I could have and had used prior.

A1. I perhaps like Oratory's target curve the most. But as this was generated from a measurement made by Crinacle, I thought using his target would be advisable, especially in the "over 8K" range where it is said error is high. {?}

A2. As that compensation file doesn't have elevated bass, I used the --bass-boost parameter to best closely match the native measured response to the equalization. Which in turn minimizes equalizations needed up to about 1KHz.

That is all background & context to my question and/or issue. Here are the actual questions:

I also like to use my E1DA PowerDAC v2, which has a seven band PEQ. And -no- preamp capability. (perhaps tho that point is moot? as it being a sort of "digital hpeq", it doesn't need that, as 0dBFS be that with or without PEQ === maximum analog output ?)

No matter whether I use a compensation/target curve that includes a rise in bass, and/or the the --bass-boost parameter,

B1. I've never been able to get AutoEQ to give me set of parameters where 20-40 Hz is at 0db, (plus also maybe 11 - 20KHz) (i.e., with everything adjusted (lowered) by -4dB in this example I'm using to focus our discussion.)

B2. Thereby not needing to use up one or two of the limited parametric parameters out of the seven available to me to adjust those two frequency extremes.

B3. So that more are available to use in the midrange to treble where they are really needed.

B4. Said another way, if in the table above, the algorithm that calculates that entire set of PEQ were to 'lock' 20 - 40 Hz [and/or 10-20KHz too] to 0dB, the above table of parameters could drop the 32Hz and 10964Hz values. Leaving me with needing only 8 in this set of output parameters. I could instead have told the program to only calculate 7, it would have closely enough matched the target error curve, and it would have done a "good enough" job using the 7 parameters that the E1DA PowerDAC V2 give me.

But, as it is now, with 2 PEQ filters 'lost' to the two extremes, 5 PEQ filters simply are not enough to do an accurate enough job at successfully eq'ing the Audeze Euclid.

B5. Further, in that the PowerDAC v2 does not have a Preamp making it impossible to provide that -5.0dB or -5.1dB stated is needed, this would have a beneficial side-effect that most of the filter parameters AutoEQ outputs would consist mostly if not solely of negatives / cuts. And a negative (-) Preamp feature would not be necessary. (Again tho as cited above, not sure if that has any significance with this unusual fully digital hpeq)

Now, while probably already obvious to you Jaakko but perhaps not to other readers who may feel compelled to jump in with an answer ... It's not as simple as subtracting 4dB from every parameter. All the "high Q" filters, that create a small boost or cut in the frequency response ontop of a wideband (Q < 1.41 or even 1) parameter creating a large increase or cut in frequency response, won't do much at all when the resulting filter value would be at or near 0dB. And inflection points to create 'elbows' in U or inverted U bell shaped response curves would now be necessary, where it is not necessary now when they currently cross 0dB.

So, I believe, but correct me if I am wrong, the "curve matching algorithm" that is calculating the parameters necessary to match the red error curve and create an inverse would now need to:

C1. Drop parameters that are now boosts when they are at or near 0dB in the midrange.

C2. And the supposition is... Where there are now no parameters where the curve has an inflection from curving negative to curving positive because that curve now crosses 0dB, so that is therefore already acting as an "implied node" to cause the curve from inflecting from a negative bell shape to a positive bell shape ...

C3. ... AutoEQ would now need to adjust the parameter nodes it uses to create those inflection points.


ALTERNATE APROACH?

Is there a way to have AutoEQ when generating everything -- or after generation to manually call the grapher phython script with startup parameters -- so that it uses the <equalization name>.CSV output file but only draws the two [thick + thin] green equalization curves, instead of all eight curves?

The PowerDAC v2 has a really helpful and user friendly feature in the HPToy app they provide (not sure if you already know that product and all the following...) that one can load a graph as the background, reposition the x/y up/down/left/right plus shrink/expand it so that the graph plot's dB Y values and log frequencies X values of the equalizations will overlay the active PEQ UI perfectly. Then one can use their fingers on their phone to pretty perfectly manually match/overlay the 7 PEQ parameters to the graph. Then pretty much none of what I described above would be necessary.

This is exactly what I did with my iSine20. Instead of AutoEQ ... Either someone measured the frequency response adjustment curve of the Cipher cable, or the Reveal Plug-in used in Roon, or maybe is was even KMann himself who offered the curve up -- but point being the equivalent of the thin green curve AutoEQ produces was available out there in the forums and google -- which I used as a background in the parametric EQ UI in HPToy, and drew a compensation curve ... which worked phenomenally well.

I could use the graph I included in this thread above, as is. But that is -so- busy with all 8 curves drawn on it, if used on my 5" phone screen in the E1DA HPToy app, it would prove incredibly difficult to use. If however the graph includes just the two green lines, it would be perfect.

Is this supported now? Can you provide a commandline to call one of the existing .py scripts so that a graph is generated with only one or both the green PEQ lines?

MUCH THANX @jaakkopasanen !
 
Last edited:
OP
M

m8o

Senior Member
Forum Donor
Joined
Jan 28, 2019
Messages
348
Likes
224
Actually, I just had an epiphany while using WebPlotDigitizer so that I can use AutoEQ as is today and achieve my desire: to have AutoEQ output equalization parameters without either a) any (+) boost in the bass region, or b) any boost at all, where all values are negative / below 0dB...

In the case of a) Referring to this image as an example, where 4.80 is the highest raw value in the 20 - 40 Hz region, if I were to subtract that from all values in the raw column, wouldn't I be creating a compensation target where 20 - 40 Hz === 0 dB? And then AutoEQ would always be giving me parametric equalizations without any boost / (+) equalization needed in the lowest bass region?

In the case of b) Likewise if I don't every want AutoEQ to give me any (+) values, only cuts, where in the dataset (not pictured) the maximum raw value is at 3130.86 Hz with a value of 9.76, I can just create a compensation target file with 9.76 subtracted from every raw value?

If so, I guess all was not for naught... as I just needed to 'talk it out'. :)

adjusted_target_data_points--bass_at_0dB.png



EDIT: I tested this and ah yes... it's a beautiful thing. Worked exactly as expected!

RE-EDIT: Actually, at the time I wrote the above I had only tested the compensation file where 20 - 40 Hz is at 0dB. When I tested the file I made where the upper-mid is at zero dB, it did not work as expected. I expected only negative peq values; where 0dB would be the highest PEQ parameter output a little over 3KHz. But instead it produced the exact same peq parameters as when I used the compensation file I made where 20 - 40 Hz is at 0dB. I can't understand that one.

Hope you can shed some insight into this? Is there a way now to get only cuts / negative PEQ parameters output by AutoEQ? Thanx in advance.
 
Last edited:

tifune

Major Contributor
Forum Donor
Joined
Jan 18, 2020
Messages
1,085
Likes
769
Sorry to bring back this old one, but when I tried to find AutoEQ settings for Euclid your post is all that came up. Are the PEQ settings above what you settled on, or did you actually get a full GEQ file generated that you're happy with? If so, willing to share? :)
 
OP
M

m8o

Senior Member
Forum Donor
Joined
Jan 28, 2019
Messages
348
Likes
224
Sorry to bring back this old one, but when I tried to find AutoEQ settings for Euclid your post is all that came up. Are the PEQ settings above what you settled on, or did you actually get a full GEQ file generated that you're happy with? If so, willing to share? :)
No. I gave up on AutoEQ for a number of reasons...
( this is many months old, so trying to remember everything )

- wildly differing results in a number of ways by changing the upper limit frequency

- inability to tell AutoEQ to never use gain, only cuts. Biggest reason being when you have a DSP that has say 6 or 7 filters, but you need 8 or 9, you can get an implied bass and treble gain by only doing midbass, midrange and lower treble cuts. So thereby get 2 extra filters for bass and treble (hope you understand what I mean) and get the 8 or 9 filters you need to match a target. This is critical to address all the peaks and cuts of the Euclid.

- when I tell it to use let's say 10 filters (be that as 6+4 or 7+3 or 4+6 or whatever) the output is whatever the hell AutoEQ wants to do

- second to biggest reason for me, no support for use of a shelving filter for bass or treble (and if it had it, would need to support specification of the corner frequency and Q, as the DSPs I use all have that)

- Euclid has massive peaks and cuts in its frequency response calling for large high Q filters, but even if I raised the maximum gain (or cut) from its default of 6dB, autoEq output wasn't doing it.

- but biggest reason being, the results were never satisfying. Never sounded right. I'm always tweaking. Always trying new AutoEQ input parameters. But never happy.
*see below*

As the author of AutoEQ said directly to me when I asked him that this forum is the place I should make my post to engage for feedback / conversation / discussion / whatever you wanna call it or that it may be, but then summarily ignored me and never engaged in conversation, plus all of above (and other things I didn't spend the time writing) I walked away.

What I started to do is measure my Euclid live using pink noise, averaged for 6 seconds or more, using my Terrasonde Audio Toolbox 3C, and sending the output to my Laptop to graph in the TerraLink application, and I EQ the output in real time and match a target curve I can overlay on the graph, be that source via my DAP or Equalizer APO; however I choose to wire it up and use as my source and DSP. Done this way I get tonality from the Euclid that perfectly matches -my- Euclid's actual measurements (not reverse engineered from the two measurements of the two reviewers I could find, which also didn't match each other in the peaks and cuts of the response) and sounds right.

And... I should also mention I found the Euclid diverges from any Harman or my favorite the Oratory target by so much that trying to match to it results in an over-EQ'ed presentation that looses all its character, i.e. that which makes the Euclid unique and what it excels at, with the midrange sucked out and really recessed. So my PEQs i use now and like only follow the loosely, and some peaks and troughs in the natural response still remain.

I actually owe someone a reply on Head-fi of some of the PEQs I settled on using real time measurements. Keep an eye out for it in the active Euclid thread on that forum in days to come.

(Typed on my phone. Pardon any and all typos.)
 
Last edited:
Top Bottom