I’m new to DSP and I have to do an audio equalizer in c++.
I did a lot of research about it and tried some stuff in the last month, but I’m a little overwhelmed with all those informations and it’s not working yet.
I decided to start over and for now, all I got is a function which fills the audio buffer with a sin wave (1kHz). And I’m trying to apply a filter with those values to it.
<Filter>
<Bands num-bands="28">
<band0 freq="31.25" width="7.23625" gain="0" />
<band1 freq="39.3725" width="9.1171" gain="0" />
<band2 freq="49.6063" width="11.4868" gain="0" />
<band3 freq="62.5" width="14.4725" gain="0" />
<band4 freq="78.7451" width="18.2342" gain="0" />
<band5 freq="99.2126" width="22.9737" gain="0" />
<band6 freq="125" width="28.945" gain="0" />
<band7 freq="157.49" width="36.4684" gain="0" />
<band8 freq="198.425" width="45.9473" gain="0" />
<band9 freq="250" width="57.89" gain="0" />
<band10 freq="314.98" width="72.9368" gain="0" />
<band11 freq="396.85" width="91.8946" gain="0" />
<band12 freq="500" width="115.78" gain="0" />
<band13 freq="629.961" width="145.874" gain="0" />
<band14 freq="793.701" width="183.789" gain="0" />
<band15 freq="1000" width="231.56" gain="6" />
<band16 freq="1259.92" width="291.747" gain="0" />
<band17 freq="1587.4" width="367.579" gain="0" />
<band18 freq="2000" width="463.12" gain="0" />
<band19 freq="2519.84" width="583.495" gain="0" />
<band20 freq="3174.8" width="735.157" gain="0" />
<band21 freq="4000" width="926.24" gain="0" />
<band22 freq="5039.68" width="1166.99" gain="0" />
<band23 freq="6349.6" width="1470.31" gain="0" />
<band24 freq="8000" width="1852.48" gain="0" />
<band25 freq="10079.4" width="2333.98" gain="0" />
<band26 freq="12699.2" width="2940.63" gain="0" />
<band27 freq="16000" width="3704.96" gain="0" />
</Bands>
</Filter>
So here are my questions :
In which domain should I apply the filter ? I started in the frequency domain, but this blog (here and here) shows me that it’s not the best and only solution.
Which kind of filter should I use ? I’m lost with all those high pass, low pass, peaking, shelving filters; and I don’t know which one to choose.
I only found “tutorial” to create a filter which modify only one frequency / band. Is it possible to create a filter that is a sum of multiples filters ? Or applying multiples filters in series to the signal ?
Feel free to ask if I forgot something that might help to understand my problem.
Thanks for your time.
PS : Sorry if this post is not very specific, but I want to clear that out before posting specifics problems or code.