Skip to content

AutoEQ CLI

The autoeq binary optimizes parametric EQ filters to flatten a speaker or headphone’s frequency response. It can fetch measurements directly from spinorama.org or read local CSV files.

Optimize a speaker from spinorama.org (7 filters, COBYLA):

Terminal window
autoeq --speaker "KEF R3" --version asr --measurement CEA2034

Optimize headphone from a local CSV with 5 filters and a custom target curve:

Terminal window
autoeq --curve headphone.csv --target harman-over-ear-2018.csv --loss headphone-score -n 5

Use Differential Evolution for a global search:

Terminal window
autoeq --speaker "Genelec 8030C" --version asr --measurement CEA2034 --algo autoeq:de -n 7

Use --speaker, --version, and --measurement together:

Terminal window
autoeq --speaker "Yamaha NS-10M" --version asr --measurement CEA2034

For CEA2034 measurements, optionally choose which curve to optimize against (default: Listening Window):

Terminal window
autoeq --speaker "JBL M2" --version asr --measurement CEA2034 --curve-name "On Axis"

Provide a frequency-response file with --curve. Columns: frequency,spl:

Terminal window
autoeq --curve my-speaker.csv

Add a custom target curve with --target (same format):

Terminal window
autoeq --curve my-speaker.csv --target target-curve.csv
FlagDefaultDescription
-n / --num-filters7Number of IIR biquad filters
--min-db1.0Minimum filter gain (dB)
--max-db3.0Maximum filter gain (dB)
--min-q1.0Minimum Q factor
--max-q3.0Maximum Q factor
--min-freq60Minimum filter frequency (Hz)
--max-freq16000Maximum filter frequency (Hz)
--sample-rate48000Output filter sample rate (Hz)

Select with --loss:

ValueUse case
speaker-flat (default)Flatten speaker response to 0 dB
speaker-scoreOptimize Harman/Olive preference score (adds bass boost)
headphone-flatFlatten headphone response toward a target
headphone-scoreTarget Harman headphone curve
drivers-flatMulti-driver loudspeaker crossover optimization

Select with --algo. Use --algo-list to see all options.

ValueTypeNotes
nlopt:cobyla (default)LocalFast, reliable for ≤10 filters
autoeq:deGlobal (DE)More thorough; use with --strategy
nlopt:isresGlobalSlower but explores wide parameter space
nlopt:nelder-meadLocalGood for fine-tuning

For Differential Evolution, configure the search strategy with --strategy (default: currenttobest1bin). List available strategies with --strategy-list.

Control filter structure with --peq-model. Default: pk (all peak filters).

ModelStructure
pkAll peak/bell filters
ls-pk-hsLowshelf + peaks + highshelf
hp-pk-lpHighpass + peaks + lowpass
freeAny filter type per band

List all models with --peq-model-list.

Named presets set all optimizer parameters at once. Individual flags override:

PresetDescription
quickFast result, fewer evaluations
balancedGood quality/speed tradeoff
max-qualityMaximum optimization effort
scoreOptimized for speaker preference score
Terminal window
autoeq --speaker "KEF R3" --version asr --measurement CEA2034 --preset balanced

By default, autoeq prints optimized PEQ filters to stdout in a human-readable format.

Save a plot of the result (requires plotly_static feature):

Terminal window
autoeq --speaker "KEF R3" --version asr --measurement CEA2034 --output result.png

Set --seed for deterministic optimization:

Terminal window
autoeq --curve speaker.csv --algo autoeq:de --seed 42