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:
... from this commandline(*):
... to achieve this target:
(*) 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 !
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:
(*) 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: