Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
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!
I was able to load the Sony WH-1000XM4 127 band GEQ into the Wavelet App. One funny thing is that when you import a file, it goes into the list and then you have to search for it and select it. I was confused at first because I assumed that importing the file would automatically select it. Nope, it is a 2 step process.
[/SPOILER]
To answer your question, there are 2 ways:
1. Follow my guide in the beginning of this thread.
Where you select a PEQ profile you like to use, and run it against AutoEQ.
2. A quick and dirty way....is to follow my other guide here.
Which won't require any coding.
Although I haven't compared the two method against each other, so I can't say to the effectiveness of one vs another.
This is a Graphic Equalization (GEQ) guide based on Amir's excellent headphone reviews!
If you're looking for Parametric Equalization (PEQ) guide, see my previous post.
Inspiration for this thread:
1. I wanted a way to import Amir's PEQ profiles into Android app 'Wavelet' (which only supports GEQ profiles).
2. I realized that 'AutoEQ' (the algorithm I need to make this happen) can also generate a 10-band GEQ profile, which means I can "convert" Amir's PEQ into GEQ.
What's another name for Graphic Equalizer (GEQ)?
- Also known as "Fixed Band Equalizer", but in this guide I'll only use "Graphic Equalizer" (GEQ) to keep things simple.
What are the frequencies that a typical 10-band GEQ profile uses?
By default, it supports 2 functions:
1. 9-band GEQ (default frequencies are 75,150,300,600,1200,2400,4800,9600,19200), which you can use to manually enter filters into.
2. A database of over +3196 headphone with pre-calculated GEQ profiles. If you select a popular headphone, like Sennheiser HD800S, from this list (inside Wavelet), the application looks at this database, and automatically loads the following file into your phone's storage/memory. In reality, this is a 127-band GEQ profile, which is much more accurate than a 10-band GEQ. How do I know? Well, if the app allows you to manually import a similar profile, then the app must do the same by default.
How did I convert Amir's PEQ profile to a compatible format to be imported into Wavelet?
1. Using my created PEQ profile for each headphone. Ex: Hifiman HE400i 2016
2. Import into 'Peace'. I chose 'Peace' instead of 'Equalizer APO' because 'Peace' has a much better resolution graph, which I'll need for the next steps.
This shows a smallest possible resolution image, for demonstration purposes.
3. I opened this chart on my 4k resolution monitor, in order to capture the best possible resolution. Took a screenshot as a 'PEQ.png"
4. Opened the "WebPlotDigitizer" website, which allows anyone to digitize a graph and export the data points as x-y coordinates.
5. In WebPlotDigitizer, File>Open Image, loaded "PEQ.png"
6. Selected "2D (X-Y) Plot", hit "Align Axes", hit "Proceed", select points X1 (on bottom left at 10hz), X2 (on bottom right 20000hz), Y1 (on bottom left at -15dB), and Y2 (on top left at 15dB) points of the graph.
Example:
Which of course, correspond to the points on the graph.
9. Hit "OK", then change "Foreground Color" from "Blue" to "Green" (because the website needs to understand what's the colour of the main plot). Hit "Done"
10. Change 'Algorithm Averaging Window':
X: 2
Y: 2
Note:
Default was 10, which is the sampling frequency.
If you run it with 10, the algorithm collects ~381 data points.
To increase your sampling rate, I first tried "1", which resulted in ~3119 data points. But later I ran into an issue where duplicate entries prevented 'AutoEQ' code from running (and only fixable until you remove those duplicate entries).
So I decided to stick with "2", which gave me ~1363 data points. When later running AutoEQ, it runs mostly fine, but sometimes it reports 1 data point (which is like 0.07% error rate) that is duplicate. I used Excel's "Remove Duplicates" function to remove any. I believe this sampling frequency becomes acceptable to use.
It's probably overkill... but I want the best possible accuracy.
11. Now that the algorithm found the data points, we need to export this into .CSV (or .txt works as well). Hit "View Data", then "Download .CSV".
I saved to Desktop for now.
12. Hit "Close", then File> "Save Project", hit "Download Project File (.tar)". I wanted to do this, because I could load the file next time I come back to WebPlotDigitizer, without repeating my steps, and for a backup.
13. Now, we need to install 'AutoEQ'. I followed the steps to install the required dependencies, in Windows 10.
How to use 'AutoEQ' to generate the necessary files?
In Windows 10, cmd:
Let me break down the code: 1. python autoeq.py
This runs the script 2. --input_dir="my_input/"
I first created a 'my_input" in the "C:\Users\user\AutoEq\" folder.
From the "compensation" directory, I copied the file called "zero.csv" and pasted into "C:\Users\user\AutoEq\my_input". File "Zero.csv" is simply the flat frequency compensation curve. In other words, it's just frequency and '0' gain for all frequencies. We need this file, since the algorithm needs to know what preference curve you're running it against.
3. --compensation="my_data/Hifiman HE400i 2016/Hifiman HE400i 2016.csv"
I first created a directory for each headphone in the "C:\Users\user\AutoEq\my_data" folder. Then I placed the "Hifiman HE400i 2016.csv" which is the csv file I got from 'WebPlotDigitizer' earlier.
Each time I ran this script, I change the directory and csv filename.
4. --output_dir="my_results/Hifiman HE400i 2016"
Each time I ran this script, I change the final directory, such that the resulting files are not mixed up with other headphones.
5. --equalize
This will run the algorithm in order to create the 127-band GEQ profile, which is formatted properly for direct import into 'Wavelet'.
6. --treble_f_lower 18000 --treble_f_upper 20000
This was recommended by jaakkopasanen. The reason was:
Without this code, my final generated GEQ had different gain for each peak, which was wrong. The addition of this code fixed the issue.
7. --fixed_band_eq --fc=32,64,125,250,500,1000,2000,4000,8000,16000 --q=1.414214
I added this code in order to generate a '10-band GEQ profile'.
You can see the 10-band frequencies I mentioned earlier.
Read my post #13 to understand the calculation to find "q-factor of 1.41214".
What's the end result of this?
In the "my_results/Hifiman He400i 2016" directory, the following files get generated:
We can delete 'readme.md', 'zero.csv', and 'zero.png', as they serve no purpose for us.
1. "zero FixedBandEQ.txt" which is the the 10-band GEQ profile that can be imported into any app that supports GEQ profiles:
First of all, the format doesnt matter, since we won't be using this 'Equalizer APO' format, since this data will be entered into other apps.
Sometimes you'll see gain values like 0.0, -0.0, 0.1, or -0.1.
I'm guessing that the accuracy of the algorithm is allowing such fluctuations, but in reality the gain is just '0'. So feel free to ignore those, and assume '0'.
We can extract the 10-band values visually...
Frequency (hz), then gain (db):
If the software asks for a preamp, apply -4.3 dB. Otherwise, not all software will require this value, as some software can do this for you automatically.
2. "zero GraphicEQ.txt", which is the "Wavelet" only compatible format. This is a 127-band GEQ profile.
As you can see, it's just Frequency and Gain, 127 times.
How to import the 127-band GEQ profile into Wavelet?
1. Wavelet documentation says you can manually import the 127-band GEQ profile.
2. Here's a guide from a user @ t$$ on post #40.
Are you sure this 127-band GEQ profile is accurate enough? In other words, how does it compare with the original Amir's PEQ profile?
That was my first question as well.
1. I opened the 127-band GEQ profile into 'Equalizer APO', so I can visually see it on a graph. Then scaled to an appropriate size.
2. I opened Amir's PEQ profile into 'Peace', and scaled to the same vertical scale. (I used a screenshot tool to see how many pixels between 15dB scale).
3. To compare the 2 files, I used "Gimp" application for Windows. Since I know my vertical scale was correct (from previous step), I just positioned the images such that they overlap and one image had 50% transparency.
Here's the results:
The green line comes from the original 'Peace' app.
The black line comes from the overlaid 'Equalizer APO' app.
As you can see, the accuracy is impeccable.
I think it's safe to say, this was a success.
Are you really sure they're the same?
Here's another random headphone I tested (Philips Fidelio X2HR).
As you can see, they overlap perfectly. There's no doubt.
_____________________ UPDATE:
Added 31-band GEQ profile.
A lot of professional equipment uses 31-band GEQ profiles with frequencies: 20,25,31.5,40,50,63,80,100,125,160,200,250,315,400,500,630,800,1000,1250,1600,2000,2500,3150,4000,5000,6300,8000,10000,12500,16000,20000
To do this, I had to re-run the code for the 31-bands and using q=4.472136 (as I've explained on post #13).
See what I mean by 0.0, -0.0, 0.1, -0.1?
Let's clean it up:
_____________________ How to upgrade Foobar2000's (for Windows) 18-band non-standard GEQ (with +-1dB gain adjustments), to a 31-band standard GEQ (with +-0.1db gain adjustments)?
By default, Foobar2000 comes with 18-band GEQ (with +-1dB gain adjustments) with frequencies 55,77,110,156,220,311,440,622,880,1200,1800,2500,3500,5000,7000,10000,14000,20000.
2 problems are... A) these 18-band GEQs are non-standard and are less frequently used as 10 or 31 band and B) they only allow +-1dB increments, which is non-standard as everyone uses +-0.1dB increments, for more accuracy.
1. Get the free addon "Graphic Equalizer" from https://www.foobar2000.org/components/view/foo_dsp_xgeq
2. Download, save .zip to desktop
3. Foobar2000, file, preferences, components, select "install" button, select .zip from desktop, "apply", it will restart Foobar
4. To adjust GEQ, go to View, 'Graphic Equalizer', you'll see the 31-band GEQ (with +-0.1db gain adjustments).
Note: The original GEQ is still there, just under View, DSP, Equalizer.
_____________________ How to change VLC (for all platforms) default 10-band non-standard GEQ to a standard 10-band GEQ?
By default, VLC comes with a 10-band GEQ profile, with frequencies 60,170,310,600,1000,3000,6000,12000,14000,16000
But this is non-standard and won't match with the typical ISO standard with frequencies 32,64,125,250,500,1000,2000,4000,8000,16000.
To fix this, go to:
1. Preferences
2. Show "All" settings (on the bottom left)
3. Select "Audio" Tab, then "Filters" sub-tab, then "Equalizer" Tab
4. Disable the option "Use VLC frequency bands".
Now you can use the typical 10-band GEQ with frequencies 32,64,125,250,500,1000,2000,4000,8000,16000
_____________________ Disclaimer:
I'm not in any way affiliated with @jaakkopasanen , AutoEq, or Wavelet.
This was my own idea and I planned to accomplish this project with the available free tools.
I see value in 'Wavelet' as a one-stop-app for automatic EQ'ing of headphones (which is how apps should function like), so I decided to generate a way to import into Wavelet.
My guide allows everyone to import Amir's EQ profiles into Wavelet, which wasn't simple to do (unless you did what I did, haha).
I'm sharing my work for the benefit of others who seek to use Amir's headphone PEQ values, but cannot, since software doesn't allow PEQ.
Now, you can enter Amir's GEQ profiles into your favorite GEQ software, as well as import directly into 'Wavelet'.
_____________________
Amir's Headphone GEQ profiles (sorted A-Z):
Each Headphone shows:
- 10-band GEQ profile. 1st line is Preamp, then Frequency (hz) and Gain (db). Import into your favorite app.
- 31-band GEQ profile. 1st line is Preamp, then Frequency (hz) and Gain (db). Import into your favorite app.
- 127-band GEQ profile. Import into Wavelet app.
Are we sure Wavelet doesnt import the convolution filters from Auto EQ (Ive never tried so I assume youve seen the import file is some kind of text file , not a .wav? )
Are we sure Wavelet doesnt import the convolution filters from Auto EQ (Ive never tried so I assume youve seen the import file is some kind of text file , not a .wav? )
I'm sure since I worked out the import format together with the Wavelet developer. Wavelet expect a 127 point EqualizerAPO GraphicEq string with the exact frequencies AutoEq produces.
I'm sure since I worked out the import format together with the Wavelet developer. Wavelet expect a 127 point EqualizerAPO GraphicEq string with the exact frequencies AutoEq produces.
Thanks for the guide. I'm trying to use Wavelet with a USB-C headphone dongle, but app says no music is playing and when I enable legacy mode and apply Auto EQ for my headphone, the sound doesn't change.
Just go to the review of the Clear and copy amir's eq settings from the roon screen grab. Alternatively, check out oratory1990 for them, again, just type the freq, amplitude and q values into ROON. https://www.dropbox.com/s/hqb9zjsvc2nu5zc/Focal Clear.pdf?dl=0
Just go to the review of the Clear and copy amir's eq settings from the roon screen grab. Alternatively, check out oratory1990 for them, again, just type the freq, amplitude and q values into ROON. https://www.dropbox.com/s/hqb9zjsvc2nu5zc/Focal Clear.pdf?dl=0
You could take a very long way round the houses and use something to create a convolved wav file from these eq settings then import that into the roon convolved eq settings. Or the better option which is copying amir's eq that he did in roon into ROON peq manually . This means you have exactly what Amir had in a couple of minutes. Just don't forget to add either a 5db preamp reduction or similar in headroom settings.
Although, I don't know where to store them (perhaps dropbox? or this forum?). But this forum doesnt attach .WAV files directly, which means .ZIP will need to used.
Thanks. I read the paper, but I think I was tripping/focusing over/on the math too much. But with the foundation provided by the paper, and these two YouTube videos (particularly the second):
&
I think I'm understanding it now.
I'm just curious as to how these are saved into WAV files and how it's all put together to make EQ adjustments. Let me take a stab and you can tell me how wrong I am, LOL:
A known/stadardized audio source/file/pattern is played, the output is recorded and saved as a WAV/audio file. This audio (output) file represents what the "system" (e.g., headphones/speakers) had output/generated/"played" with its own flaws/deficiencies baked in. (Q: Would the "system" also include the DAC and/or amp used?) The WAV file is then loaded into the DSP software and it analyzes the recorded audio from the first step, and based off the known/standardized input, calculates the affect (i.e., altered frequency response) the "system" (e.g., headphones/speakers) had on the input. The DSP software then generates and applies EQ (Q: anything done regarding timing?) adjustments so the output would/should match the known input by compensating for the "system's affect(s)".
In summary the DSP (software) is characterizing the "blackbox"/unknown system (e.g., headphones/speakers) by comparing a know input to a(n) recorded/observed output and combining/convolving the two to make a correction (e.g., EQ)? (Regarding convolution: or maybe the correct statement would be the convolution is the recorded output?)
I would also throw the usual disclaimer here about graphic equalizer: it's not possible to implement all frequency response features with them. Especially the 10-band eq is limited due to the high bandwidth of the filters. If Amir has a filter at 6 kHz, it's not compatible with 10-band eq because it sits right in between the 4 and 8 kHz filters.
Let me first say, awesome post @sweetchaos . For me more so for the hows and whys. After reading some things I am going to fire the AutoEQ VM back up and redo some things.
I spent a huge chunk of yesterday getting AutoEQ working (pip, python versions, the vm env, dependencies, something else I'm forgetting I think - oh ya, pandas, whatever that is - were as they say, a "royal pita" -lol . But thanx to stackoverflow and other support sites for said dependencies, I prevailed). Then playing with variations of equalization produced for my new Audeze Euclid, with peq constrained to the filter count limits of the E1DA PowerDAC V2 DSP (the only [ahem] portable [lol] hp amp I have with the balls to drive the demanding Euclid with authority in the bass region) ... I can see how AutoEQ coupled with WebPlotDigitizer might change my life.
That said for me it just reinforced that "I dont like the Harman (or really, any generally accepted) target" rather than giving me some sort of epiphany in appreciation of it. I spent a good deal of time manually altering filter settings AutoEQ gave me. I'm going to give --sound_signature a try; not to simulate another hp's signature but rather to alter a target to my preference so I dont have to fiddle afterwards.
Moreso however in that regard I have some questions I'd like to pose to you Jaakko and why I replied to the above post, that are OT to this post having to do with use cases pertaining to the PowerDAC V2. What is your forum of choice where you spend your most time, where I can discuss my particular use cases? I will go there and post my questions. (Hope this tag when replying to your reply reaches you.) Thanx!