Skip to content

Commit aa25ed8

Browse files
authoredJul 21, 2020
Merge pull request jaakkopasanen#181 from OscarDev/patch-1
Adds: clarity. Fixes: typos, punctuation, grammar
2 parents bce6622 + 7beed2f commit aa25ed8

File tree

1 file changed

+34
-34
lines changed

1 file changed

+34
-34
lines changed
 

‎README.md

+34-34
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ and follow instructions in [Usage](#usage) section.
55

66
## About This Project
77
AutoEQ is a project for equalizing headphone frequency responses automatically and it achieves this by parsing
8-
frequency response measurements and producing a equalization settings which correct the headphone to a neutral sound.
8+
frequency response measurements and producing equalization settings which correct the headphone to a neutral sound.
99
This project currently has over 2500 headphones covered in the
1010
[results](./results) folder.
1111
See [Usage](#usage) for instructions how to use the results with
@@ -36,7 +36,7 @@ AutoEQ produces settings for basically all types of equalizer apps.
3636
### Parametric Equalizers
3737
Parametric equalizers have filters with user adjustable gain, center frequency and quality Q. Keep in mind that
3838
parametric eq accuracy depends on the number of filters available. Usually 10 filters produce very good
39-
results but as little as 5 can be good enough. Parametric equalizer is typically the safe bet if you're system, app or
39+
results but as little as 5 can be good enough. Parametric equalizer is typically the safe bet if your system, app or
4040
player has that available.
4141

4242
All parametric equalizer except Peace require you to configure the filter parameters manually with the software user
@@ -156,8 +156,8 @@ error is then only 0.25 dB, hardly noticeable. Bigger problem is the potential n
156156
bands' center frequencies since there isn't really anything that can be done for those. See notes about
157157
[fixed band equalizers](#fixed-band-equalizers).
158158

159-
App starts in presets view so you need to click the left arrow in the top left corner to get to manual view. Here you
160-
can adjust the bands. Set each band level to closest value to what the equalization settings ask. Pre-computed results
159+
The app starts in the presets view so you need to click the left arrow in the top left corner to get to the manual view. Here you
160+
can adjust the bands. Set each band level to the closest value to what the equalization settings ask. Pre-computed results
161161
only support standard 10-band equalizers which have band center frequencies at 31, 63, 125, 250, 500, 1000, 2000, 4000,
162162
8000 and 16000 Hz. Q values are not adjustable so you don't have to worry about those even though they are given in the
163163
result settings.
@@ -191,7 +191,7 @@ Audio plugin hosts include:
191191
- [MenuBus](https://www.menubus.audio/versions) has a free version but is no longer actively developed.
192192
- [SoundSource](https://rogueamoeba.com/soundsource/) is in active development but not free.
193193
- [Hosting AU](http://ju-x.com/hostingau.html) with [BlackHole](https://github.com/ExistentialAudio/BlackHole) or
194-
[Soundflower](https://github.com/mattingalls/Soundflower) can be used as system wide AU plugin host.
194+
[Soundflower](https://github.com/mattingalls/Soundflower) can be used as a system wide AU plugin host.
195195

196196
EQ plugins include:
197197
- [Voxengo PrimeEQ](https://www.voxengo.com/product/primeeq/) is a parametric EQ plugin but is not free.
@@ -212,7 +212,7 @@ presets but can be created by passing parameters
212212
[Contact me](#contact) if you know good solutions for iOS.
213213

214214
#### EQE
215-
[EQE](https://github.com/rweichler/EQE) is a system wide parametric equalizer on iOS but requires a jailbreaking. Here
215+
[EQE](https://github.com/rweichler/EQE) is a system wide parametric equalizer on iOS but requires jailbreaking. Here
216216
are instructions on how to set it up: https://www.reddit.com/r/headphones/comments/dqbt81/psa_if_you_have_a_jailbroken_iphone_you_can/
217217

218218
### Hardware
@@ -225,11 +225,11 @@ practically any source.
225225
fancy graphical user interface but instead it is used from command line.
226226

227227
### Installing
228-
- Download [AutoEQ zip](https://github.com/jaakkopasanen/AutoEq/archive/master.zip) and exctract to a convenient
228+
- Download [AutoEQ zip](https://github.com/jaakkopasanen/AutoEq/archive/master.zip) and extract to a convenient
229229
location. Or just git clone if you know what that means.
230230
- Download and install 64-bit [Python3](https://www.python.org/getit/). Python 3.8 doesn't work yet. Make sure to check
231231
*Install Python 3 to PATH*
232-
- Install virtualenv. Run this on command prompt. Search `cmd` in Windows start menu.
232+
- Install virtualenv. Run this on command prompt. Search `cmd` in the Windows start menu.
233233
```bash
234234
pip install virtualenv
235235
```
@@ -252,7 +252,7 @@ source venv/Scripts/activate
252252
```bash
253253
pip install -r requirements.txt
254254
```
255-
- Verify installation. If everything went well, you'll see list of command line parameters autoeq accepts.
255+
- Verify installation. If everything went well, you'll see the list of command line parameters autoeq accepts.
256256
```bash
257257
python autoeq.py --help
258258
```
@@ -310,7 +310,7 @@ optional arguments:
310310
--fc FC Comma separated list of center frequencies for fixed
311311
band eq.
312312
--q Q Comma separated list of Q values for fixed band eq. If
313-
only one value is passed it is used for all bands. Q
313+
only one value is passed, it is used for all bands. Q
314314
value can be calculated from bandwidth in N octaves by
315315
Q = 2^(N/2)/(2^N-1).
316316
--ten_band_eq Shortcut parameter for activating standard ten band eq
@@ -321,7 +321,7 @@ optional arguments:
321321
multiple filter counts separated by "+". "5+5" would
322322
create 10 filters where the first 5 are usable
323323
independently from the rest 5 and the last 5 can only
324-
be used with the first 5. This allows to have muliple
324+
be used with the first 5. This allows to have multiple
325325
configurations for equalizers with different number of
326326
bands available. Not limited by default.
327327
--fs FS Sampling frequency for impulse response and parametric
@@ -384,12 +384,12 @@ optional arguments:
384384
treble frequencies. Treble frequencies can have
385385
different max gain and gain K. Defaults to 8000.0.
386386
--treble_max_gain TREBLE_MAX_GAIN
387-
Maximum positive gain for equalization in treble
387+
Maximum positive gain for equalization in the treble
388388
region. Defaults to 0.0.
389389
--treble_gain_k TREBLE_GAIN_K
390390
Coefficient for treble gain, affects both positive and
391391
negative gain. Useful for disabling or reducing
392-
equalization power in treble region. Defaults to 1.0.
392+
equalization power in the treble region. Defaults to 1.0.
393393
--show_plot Plot will be shown if this parameter exists, no value
394394
needed.
395395
```
@@ -425,11 +425,11 @@ python autoeq.py --input_dir="measurements/oratory1990/data/onear/Sony WH-1000XM
425425

426426
#### Using Sound Signatures
427427
AutoEQ provides a way to play around with different sound signatures easily. The use-cases include making headphones
428-
deviate from neutral target or making one headphone sound like another.
428+
deviate from the neutral target or making one headphone sound like another.
429429

430430
Equalizing Sennheiser HD 800 to sound like Sennheiser HD 650 using pre-computed results. Both have been measured by
431-
oratory1990 so we'll use those measurments. Pre-computed results include 4dB of bass boost for over-ear headphones and
432-
therefore we need to apply bass boost of 4dB here as well.
431+
oratory1990 so we'll use those measurements. Pre-computed results include 4dB of bass boost for over-ear headphones and
432+
therefore we need to apply a bass boost of 4dB here as well.
433433
```bash
434434
python autoeq.py --input_dir="measurements/oratory1990/data/onear/Sennheiser HD 800" --output_dir="my_results/Sennheiser HD 800 (HD 650)" --compensation="compensation/harman_over-ear_2018_wo_bass.csv" --sound_signature="results/oratory1990/harman_over-ear_2018/Sennheiser HD 650/Sennheiser HD 650.csv" --equalize --parametric_eq --max_filters=5+5 --ten_band_eq --bass_boost=4 --convolution_eq --fs=44100,48000
435435
```
@@ -458,14 +458,14 @@ frequency,raw
458458
20000,0.0
459459
```
460460
Then use it by providing the path to `--sound_signature` parameter. We'll set bass boost to 0dB because the sound
461-
signature already has significant bass boost. Of course it's possible to add bass boost on top of the sound signature
461+
signature already has a significant bass boost. Of course it's possible to add bass boost on top of the sound signature
462462
file if you want even more bass.
463463
```bash
464464
python autoeq.py --input_dir="measurements/rtings/data/onear/Audeze Mobius" --output_dir="my_results/Audeze Mobius (V-signature)" --compensation="measurements/rtings/resources/rtings_compensation_avg.csv" --sound_signature="my_data/v.csv" --equalize --parametric_eq --max_filters=5+5 --ten_band_eq --bass_boost=4.0
465465
```
466466

467467
## Results
468-
The main principle used by AutoEQ for producing the equalization function is to invert error curve. Error is the
468+
The main principle used by AutoEQ for producing the equalization function is to invert the error curve. Error is the
469469
difference between raw microphone data and the compensation (target) curve. If headphone's frequency response is 4 dB
470470
below the target at 20 Hz equalization function will have +4 dB boost at 20 Hz. In reality simply inverting the error is
471471
not sufficient since measurements and equalization have several problems that need to be addressed, see
@@ -478,12 +478,12 @@ Results provided in this project currently have all the headphone measurements f
478478
- [oratory1990](https://www.reddit.com/r/oratory1990)
479479
- [Reference Audio Analyzer](https://reference-audio-analyzer.pro/en/catalog-reports.php?sp_1=1&tp=1)
480480
- [Rtings](https://www.rtings.com/headphones)
481-
with the exception of Reference Audio Analyzer measurements done on SF1 system.
481+
with the exception of Reference Audio Analyzer measurements done on the SF1 system.
482482

483483
Results are organized by `source/target/headphone` so a Sennheiser HD 650 measured by Innerfidelity and tuned to a
484484
calibrated Harman target would be found in
485485
[innerfidelity/innerfidelity_harman_over-ear_2018/Sennheiser HD 650](./results/innerfidelity/innerfidelity_harman_over-ear_2018/Sennheiser%20HD%20650).
486-
Multiple measurements of a same headphone by a same measurement entity are averaged. All different measurements for
486+
Multiple measurements of the same headphone by the same measurement entity are averaged. All different measurements for
487487
averaging have been renamed with snXXX (serial number) or sample X in the end of the name to distinguish from the
488488
averaged data which has no suffixes in the name.
489489

@@ -503,8 +503,8 @@ This system is not an industry standard anymore because of the rigid pinnae.
503503
Reference Audio Analyzer have [three different measurement systems](https://reference-audio-analyzer.pro/en/stands.php)
504504
none of which seem to represent human hearing particularly well. The most recent HDM-X system is close to the Head
505505
Acoustics HMSII.3 systems but seems to suffer a bit more in the bass range. HDM1 is clearly worse than other systems
506-
and the measurements done on SF1 system are not included at all because that is a flat plate coupler. IEM measurements
507-
are done with a what looks like a tubing coupler and these don't look very accurate. Reference Audio Analyzer
506+
and the measurements done on the SF1 system are not included at all because that is a flat plate coupler. IEM measurements
507+
are done with what looks like a tubing coupler and these don't look very accurate. Reference Audio Analyzer
508508
measurements and results are a last resort.
509509

510510
All of the results use frequency response targets that were specifically developed for this project except oratory1990
@@ -550,24 +550,24 @@ Headphone.com are at `innerfidelity/resources/innerfidelity_compensation_sbaf-se
550550
`headphonecom/resources/headphonecom_compensation_sbaf-serious.csv`, respectively.
551551

552552
### Rtings Targets
553-
Rtings measured headphones have frequency response target made for this project. This treble average target is using an
553+
Rtings measured headphones have a frequency response target made for this project. This treble average target is using an
554554
average of frequency responses of all Rtings measured headphones in the treble range with small manual reduction of the
555555
9kHz peak and the Rtings native response below 2500 Hz without bass boost. Three different targets were compared in
556556
listening tests and the treble average target was found to sound the best. Other two were the Rtings native target curve
557557
and calibrated and uncalibrated versions of SBAF Serious target curve. Rtings uses the same measurement system as
558558
Innerfidelity uses so in theory the uncalibrated SBAF Serious target should work similarly with Rtings but listening
559559
tests found the treble average target to be slightly better. Rtings have
560560
[a very informative video](https://www.youtube.com/watch?v=HNEI3qLZEKo) about how they are doing the measurements and
561-
how did they came up with the target they use.
561+
how they came up with the target they use.
562562

563-
All of these Rtings targets retired when a new calibrated Harman targets were developed for Rtings measurements.
563+
All of these Rtings targets retired when new calibrated Harman targets were developed for Rtings measurements.
564564

565565
## Technical Challenges
566566
Simply inverting headphone frequency response deviation from target response does not usually produce sufficient
567567
results. Some problems are caused by imperfections in measurements, some are reliability issues and some are practical
568568
end-user problems. Rtings has a good [video on Youtube](https://www.youtube.com/watch?v=HNEI3qLZEKo) about measurement
569569
system challenges and solutions which is definitely worth checking out. Innerfidelity also has a very
570-
educational [video on Youtube](https://www.youtube.com/watch?v=SDRHFNfFCFU) about measurments and what constitutes as a
570+
educational [video on Youtube](https://www.youtube.com/watch?v=SDRHFNfFCFU) about measurements and what constitutes as a
571571
neutral sound. Main takeoffs are that bass and treble measurements are very inconsistent, neutral sound is not very well
572572
defined yet and on-ear headphones have big reliability problems in 8 to 9kHz range due to resonances which move when
573573
headphone placement is changed. Harman international has done some solid research into preferred headphone frequency
@@ -576,25 +576,25 @@ Innerfidelity (Summer 2018) and Headphone.com measurements.
576576

577577
There is very little that can be done for fighting bass inconsistencies because the same problems will be there whether
578578
equalization is used or not. Headphones simply have different bass responses on different listeners (heads). Therefore
579-
bass is taken as is in AutoEQ and equalized as if there was nothing wrong with it. You're mileage may wary. Luckily bass
579+
bass is taken as is in AutoEQ and equalized as if there was nothing wrong with it. Your mileage may vary. Luckily bass
580580
has smaller impact on music and having too much bass (especially sub-bass) doesn't create problems of the same magnitude
581581
as having too much treble.
582582

583583
Moving resonances around 8 to 9kHz may cause big problems if not taken into account. Spikes and dips in this range are
584584
of great amplitude and very narrow. If one equalizes these spikes and dips according to frequency response measurement
585-
in worst case scenario a spike will move in a place of dip when headphone is moved and therefore the spike is amplified
586-
significantly leading to very sharp and piercing sound signature. To counter these problems by default AutoEQ uses heavy
585+
in worst case scenario a spike will move in a place of dip when headphone is moved, and therefore the spike is amplified
586+
significantly, leading to a very sharp and piercing sound signature. To counter these problems by default AutoEQ uses heavy
587587
smoothing and limited positive gain above 6 to 8kHz. This way the equalization will follow a broader trend of the region
588588
and will not care so much about narrow spikes and dips. Also positive gain is limited to 0dB as an extra safety measure
589-
against amplifying moved spike. Suppressing a narrow dip even further is not an optimal thing to do but in practice has
589+
against amplifying spikes due to moving the headphone. Suppressing a narrow dip even further is not an optimal thing to do but in practice has
590590
little negative effect on the sound. Both of these measures will also alleviate upper treble measurement inconsistencies
591591
above 11 to 12 kHz.
592592

593593
A practical end-user problem is if too high positive gain is allowed which asks for equal amount of negative digital
594594
pre-amp to prevent clipping. This negative preamp will limit maximum volume produced by the system if there is no analog
595595
gain available. If a dedicated headphone amplifier is available or if the motherboard/soundcard can drive the headphones
596-
loud enough even when using high negative preamp larger `--max_gain` values can be uses. By default `--max_gain` is set
597-
to +6dB to not to cripple user's volume too much. Max gain will clip the equalization curve which produces sharp kinks
596+
loud enough even when using high negative preamp larger `--max_gain` values can be used. By default `--max_gain` is set
597+
to +6dB so as not to cripple the user's volume too much. Max gain will clip the equalization curve which produces sharp kinks
598598
in it. Sharp changes in equalization may produce unwanted equalization artifacts. To counter this AutoEQ rounds the
599599
corners whenever max gain clips the curve.
600600

@@ -604,8 +604,8 @@ AutoEQ has an optimizer to fit several peaking filters to the desired equalizati
604604
initialization and part mathematical optimization.
605605

606606
In the initialization phase peaks are detected from the target curve and a peaking filter is created to match the peak's
607-
height (gain) and location (frequency). This way the optimizer finds suitable number of filters to optimize. If bass
608-
region has no peaks and therefore is missing filters entirely, maximum of two filters will be added at 20 Hz and 60 Hz.
607+
height (gain) and location (frequency). This way, the optimizer finds a suitable number of filters to optimize. If the bass
608+
region has no peaks and therefore is missing filters entirely, a maximum of two filters will be added at 20 Hz and 60 Hz.
609609

610610
A way to limit the number of filters used is provided with `max_filters` parameter. If there are too many filters after
611611
initialization, some filters are removed. First filters with small gain (< 0.2 dB and < 0.33 dB) are removed. If there are too

0 commit comments

Comments
 (0)
Please sign in to comment.