Hi all

I have an ADAU1701 operated in selfboot mode. I wish to (among others) to create a parametric EQ, where the gain and frequency can be controlled by 2 potentiometers.

I am unable to find the correct building blocks in Sigma Studio 3.15.

The potmeters should adjust the gain from -12 to +12dB and the frequency from 30 to 120Hz respectively.

Hello Thomas,

Each parametric filter requires a set of five

coefficients(numbers which form delayed forward and feedback gains which give the filter its response). The coefficient values are based upon the desired frequency, bandwidth and boost -- but the complex formulas involved make these coefficients look nothing like their input info. If you're curious, see General 2nd-Order Filters [Analog Devices Wiki] for these calculations. In any event, the formulas are too much for a ADAU1701 to calculate on-the-fly in a self-boot situation. Thus,implementing a parametric EQ usually requires a microcontroller to lookup and/or calculate the coefficients when its user adjusts its controls. A -1701 with such external control can easily handle ten or more bands of parametric EQ.However, your requirements are for only a limited (bass) frequency range. If you're willing to accept some compromises, you can take advantage of SigmaStudio's ability to pre-calculate the coefficients for all possible settings -- these get stored in the ADAU1701's parameter memory for recall as needed. To do this, use the

General Second-Order Index Selectable Filter.It allows you to specify multiple responses which at runtime are called up by an integer number you apply to its index input pin. Set up your potentiometers to control this index, and you can pick any of these curves at runtime.An example to show how this works: We can make 64 curves of frequencies in eight steps from 30 to 120 Hz, and 3dB boosts from -12 to +12 dB:

The index for each response is shown in the table below. Note there's no "flat" (zero boost) curves since we can bypass the filter instead -- this saves eight indexes in this example. Remember, this is actually just one filter with 64 pre-stored coefficient sets, any one of which the index calls up. Indexes in the flat (bypass) row simply copy their -3 dB neighbors, they are really don't-cares.

Armed with this wonderful filter, all we need to do is make your frequency and boost pots control the index appropriately, and bypass the filter when zero boost is selected. The frequency pot advances the index by eight to get to the next set of indexes -- as you turn the pot up, the associated logic needs to .output 0, 8, 16, 24... The boost pot goes from 1 to 8. Add them together to obtain the total index. The bypass should operate whenever the boost pot is centered. There's many ways to build this needed logic, the way I came up with is shown below. I tested it on the ADAU1701MINIZ eval board, which unfortunately has only one pot -- thus I substituted up-down pushbutton control for the frequency pot and let the board's lone pot adjust the boost. Whenever you get involved with pots (Aux ADC inputs), lookup tables and integer indexes, you need to convert between integer and decimal formats -- if you're unfamiliar with these formats, see What are the number formats for SigmaDSP?

Download the project file so you can see the contents of the lookup tables which take care of the boost and bypass logic. With four Aux ADCs, you can run two parametric bands each with frequency and boost adjustments -- just double the recipe. Have fun building up your EQ!

Best regards,

Bob