Package: autoeq
AutoEqAutoEq is a tool for equalizing headphone frequency responses automatically, and it achieves this by parsing
frequency response measurements and producing equalization settings which correct the headphone to a neutral sound.
AutoEq provides methods for reading data, equalizing it to a given target
response and saving the results for usage with equalizers. It's possible to use different target
curves, apply tilt for making the headphones brighter/darker and adding a bass boost. It's even possible to make one
headphone sound (roughly) like another headphone. For more info about usage seeUsage.AutoEqGithub pagealso serves as a database for headphone frequency response
measurements, pre-computed results and has documentation about different equalizers and how the implementation works.Updates4.1.2Fixed Room Eq Wizard CSV export parsingAdded Moondrop Free DSP PEQ optimizer configFixed reading windows-1252 encoded CSV filesFixed graphic eq optimization producing wildly different results from the equalizer target4.1.1Updated changelog4.1.0Addedgain_rangeoption tooptimize_fixed_band_eq()for limiting gain of each filter to maximum distance from the equalization target4.0.0BREAKING changes included!SeveralFrequencyResponseclass methods renamed and arguments renamed or droppedImproved duplicate frequency checkAll kwargs inreset()default toFalseRenamedread_from_csv()asread_csv()andwrite_to_csv()aswrite_csv()Dropped Rockbox support (has been added to webapp)Movedgenerate_frequencies()toutils.pyMoved_tilt()toutils.pyaslog_tilt()Changed all mentions of "compensation" to "target"Renamedsmoothen_fractional_octave()assmoothen()Removed iterations from smoothingMoved_sigmoid()toutils.pyaslog_f_sigmoid()Movedlog_log_gradient()toutils.pyaslog_log_gradient()Renamedplot_graph()asplotChangedplot()kwargsshowandclosetoshow_figandclose_fig, respectivelyChanged plot colors to match webappAdded missing default values toprocess()kwargsRemoved some CLI arguments3.0.1Updated dependencies.3.0.0Added--input-file,--max-slopeand--sound-signature-smoothing-window-sizeparameters.Fixed crashing with non-standard sized compensation and measurement data.Fixed parametric eq optimizer producing filters outside of specified frequency range.Fixed parametric eq optimizer crashing without any free optimizeable parameters.Added defaul values for some args in parametric eq optimizer.Added more parametric eq optimizer configs.Introduced API breaking naming changes.2.2.0Added--preampparameter.2.1.1Fixed README in PyPi package.2.1.0Fixed dependencies for Apple Silicon and added--treble-boostparameter.2.0.0Restructured the project and published in PyPi. Source code moved underautoeqdirectory and
command line usage changed frompython autoeq.pytopython -m autoeqwith underscores_replaced with hyphens-in the parameter names.Parametric eq optimizer reworked. The new optimizer supports shelf filters, has a powerful configuration
system, run 10x faster, has limits for Fc, Q and gain value ranges and treats +10 kHz range as average value instead of
trying to fix it precisely.InstallingAutoEq requires Python 3 and should work with any decently recent version of Python 3.pipinstallautoeqYou may need to installlibsndfileOn Windows you may need to installMicrosoft Visual C++ Redistributable for Visual Studio 2015, 2017, and 2019UsageAutoEq has command line interface in addition to Python methods. Seepython -m autoeq --helpfor arguments.The full functionality with file input and output can be used withbatch_processing:fromautoeq.batch_processingimportbatch_processing

batch_processing(input_dir='path/to/measurements',output_dir='path/to/results',new_only=False,standardize_input=False,compensation='path/to/target.csv',parametric_eq=True,fixed_band_eq=True,ten_band_eq=True,parametric_eq_config='8_PEAKING_WITH_SHELVES',fixed_band_eq_config='10_BAND_GRAPHIC_EQ',convolution_eq=True,fs=44100,bit_depth=16,phase='minimum',f_res=10,bass_boost_gain=6,bass_boost_fc=105,bass_boost_q=0.7,treble_boost_gain=0,treble_boost_fc=10000,treble_boost_q=0.7,tilt=None,sound_signature=None,max_gain=12,thread_count=0)The main functionalities of AutoEq are infrequency_responsewhich implementsFrequencyResponseclass. Parametric
equalizer optimization and frequency response computations are implemented inpeq.fromautoeq.frequency_responseimportFrequencyResponsefromautoeq.constantsimportPEQ_CONFIGSharman_target=FrequencyResponse.read_csv('path/to/Harman over-ear 2018.csv')fr=FrequencyResponse.read_csv('path/to/measurement.csv')fr.interpolate()# Creates standard logarithmic sampling when no argument is passedfr.center()# Centers the frequency response around 0 dBfr.compensate(harman_target)# Creates target and error data for the FRfr.smoothen()# Smoothens the FR data and errorfr.equalize(concha_interference=True)# Creates equalization targetpeqs=fr.optimize_parametric_eq(PEQ_CONFIGS['8_PEAKING_WITH_SHELVES'],44100)forfiltinpeqs[0].filters:print(f'{filt.gain:.2f}db,{filt.fc:.2f}Hz,{filt.q:.2f}Q')