Equalizer

Provided in this API equalizer supports:

  • fixed number of ten (10) bands;

  • four sample rates: 11025 Hz, 22050 Hz, 44100 Hz and 48000 Hz.

The center frequencies of bands are shown in table below.

Band Index

0

1

2

3

4

5

6

7

8

9

Frequency

31 Hz

62 Hz

125 Hz

250 Hz

500 Hz

1 kHz

2 kHz

4 kHz

8 kHz

16 kHz

Default gain of each band is -13 dB. To set the gains of all bands use structure equalizer_cfg. To set the gain of individual band use function equalizer_set_gain_info().

Application Example

Implementation of this API is demonstrated in the audio_processing/pipeline_equalizer example.

API Reference

Header File

Functions

esp_err_t equalizer_set_info(audio_element_handle_t self, int rate, int ch)

Set the audio sample rate and the number of channels to be processed by the equalizer.

Parameters
  • self – Audio element handle

  • rate – Audio sample rate

  • ch – Audio channel

Returns

  • ESP_OK on success

  • ESP_ERR_INVALID_ARG invalid arguments

esp_err_t equalizer_set_gain_info(audio_element_handle_t self, int index, int value_gain, bool is_channels_gain_equal)

Set the audio gain to be processed by the equalizer.

Parameters
  • self – Audio element handle

  • index – The position of center frequencies of equalizer. If channel is mono, the index range is [0, 9]; If channel is stereo and is_channels_gain_equal is true, the index range is [0, 9]; If channel is stereo and is_channels_gain_equal is false, the index range is [0, 19];

  • value_gain – The value of audio gain which in index

  • is_channels_gain_equal – If audio channel is stereo, the audio gain values of two channels are equal when is_channels_gain_equal is true, otherwise it means unequal.

Returns

  • ESP_OK on success

  • ESP_ERR_INVALID_ARG invalid arguments

audio_element_handle_t equalizer_init(equalizer_cfg_t *config)

Create an Audio Element handle that equalizes incoming data.

Parameters

config – The configuration

Returns

The audio element handler

Structures

struct equalizer_cfg

Equalizer Configuration.

+——————————————————–—+ | MONO | +——————————————————–—+ | Only Left channel/Only Right channel | +——————————————————–—+ |band0|band1|band2|band3|band4|band5|band6|band7|band8|band9| +——————————————————–—+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +——————————————————–—+

+——————————————————–—+——————————————————–—+ | DUAL | +——————————————————–—+——————————————————–—+ | Left channel | Right channel | +——————————————————–—+——————————————————–—+ |band0|band1|band2|band3|band4|band5|band6|band7|band8|band9|band0|band1|band2|band3|band4|band5|band6|band7|band8|band9| +——————————————————–—+——————————————————–—+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +——————————————————–—+——————————————————–—+

3) Different sample rates support different EQ frequency bands. 11025: {31, 62, 125, 250, 500, 1000, 2000, 3000, 4000, 5500} 22050: {31, 62, 125, 250, 500, 1000, 2000, 4000, 8000, 11000} 44100/48000: {31, 62, 125, 250, 500, 1000, 2000, 4000, 8000, 16000}

Note

1) This figure indicate the default eq gain of every band in current equalizer. 2) Every channel have 10 band to set.

Public Members

int samplerate

Audio sample rate. Supported samplerate: 11025, 22050, 44100, 48000, unit: Hz

int channel

Number of audio channels. Supported channel: mono, stereo

int *set_gain

Equalizer gain

int out_rb_size

Size of output ring buffer

int task_stack

Task stack size

int task_core

Task running in core…

int task_prio

Task priority

bool stack_in_ext

Try to allocate stack in external memory

Macros

EQUALIZER_TASK_STACK
EQUALIZER_TASK_CORE
EQUALIZER_TASK_PRIO
EQUALIZER_RINGBUFFER_SIZE
DEFAULT_EQUALIZER_CONFIG()

Type Definitions

typedef struct equalizer_cfg equalizer_cfg_t

Equalizer Configuration.

+——————————————————–—+ | MONO | +——————————————————–—+ | Only Left channel/Only Right channel | +——————————————————–—+ |band0|band1|band2|band3|band4|band5|band6|band7|band8|band9| +——————————————————–—+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +——————————————————–—+

+——————————————————–—+——————————————————–—+ | DUAL | +——————————————————–—+——————————————————–—+ | Left channel | Right channel | +——————————————————–—+——————————————————–—+ |band0|band1|band2|band3|band4|band5|band6|band7|band8|band9|band0|band1|band2|band3|band4|band5|band6|band7|band8|band9| +——————————————————–—+——————————————————–—+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +——————————————————–—+——————————————————–—+

3) Different sample rates support different EQ frequency bands. 11025: {31, 62, 125, 250, 500, 1000, 2000, 3000, 4000, 5500} 22050: {31, 62, 125, 250, 500, 1000, 2000, 4000, 8000, 11000} 44100/48000: {31, 62, 125, 250, 500, 1000, 2000, 4000, 8000, 16000}

Note

1) This figure indicate the default eq gain of every band in current equalizer. 2) Every channel have 10 band to set.