AnsweredAssumed Answered

Trouble with the Multiband Graphic Equalizer SDK on ADZS-BF561-EZLITE

Question asked by chris_k. on Jul 25, 2013
Latest reply on Aug 13, 2013 by chris_k.

Hello Community,

 

i'm using the Multiband Graphic Equalizer SDK from the Analog Devices Website (http://www.analog.com/en/dsp-software/bf_audpp_00/sw.html) for my bachelor thesis university project (DJ Battlemixer), with the ADSZ-BF561-EZLITE board.

 

The SDK is running on core A, while core B does some I²C stuff to read some potentiometers and buttons.

I have three potentiometers for the equlizer, which is running as 3 band EQ, to controll the gains of the three frequency bands.

 

After successfully implementing the SDK, the equalizer sounds good as long as i don't move the potentiometers, no matter which position they are.

When i turn a potentiometer the Equalizer produces a little "klick" at some potentiometer positions. This happens on all three potentiometers for the three equalizer bands.

 

The potentiometers work fine, i've tryed them as volume controls and there was no discontinuity. I also changed the blocksize the equalizer is working with, from really small blocks to much to big blocks and it changed nothing.

I changed the size of the equalizer instance memory as well and it changed nothing with the klicksounds.

 

 

I'm initializing the equalizer like listed below:

 

adi_eq_audpp_mem_t memory_blocks;

 

adi_eq_audpp_instance_t* instance = 0;

 

adi_eq_audpp_config_t configuration = {};

 

adi_eq_audpp_audio_data_t *input_pcm_data1[1] = {EQ_L_input_buffer1}; //EQ_L_input_buffer1 is global int array

 

adi_eq_audpp_audio_data_t *output_pcm_data1[1] = {EQ_L_output_buffer1}; //EQ_L_output_buffer1 is global int array

 

// use same equalizer configuration for all channels

configuration.num_channels = 2;

configuration.sample_rate = 44100;

configuration.num_bands = 3;

int gains[3] = {0, 0, 0}; //goes from -1200 to+1200

configuration.gains = &gains[0];

 

//single graphic equalizer instance

memory_blocks.state.fast.prio0 = instance_memory;

 

//create equalizer instance

instance = adi_eq_audpp_create(&memory_blocks);

 

// calls adi_eq_audpp_init() and checks the return code

adi_eq_audpp_return_code_t initialise_result = ADI_EQ_AUDPP_SUCCESS;

initialise_result = adi_eq_audpp_init (instance, &configuration);

 

//development: check for init-error

if(initialise_result != ADI_EQ_AUDPP_SUCCESS)

{

    initialise_result = ADI_EQ_AUDPP_SUCCESS; //set breakpoint here!

}

 

 

I'm using the equalizer like listed below:

 

process_result = adi_eq_audpp_process(instance, 220, input_pcm_data1, output_pcm_data1, &module_status);

if(process_result != ADI_EQ_AUDPP_SUCCESS)

{

       process_result = ADI_EQ_AUDPP_SUCCESS; //set breakpoint here!

}

 

 

And i'm reconfiguring the equalizer like listed below, while R_CH0, R_CH1, R_CH2 are global char variables (8bit) which imply the potentiometer position, generated by core B:

 

gains[0] = (R_CH2 - 128) * 9; //bass

gains[1] = (R_CH1 - 128) * 9; //middle

gains[2] = (R_CH0 - 128) * 9; //high

 

adi_eq_audpp_reconfigure(instance, ADI_EQ_AUDPP_GAINS, &configuration);

 

 

My block-by-block processing works fine when i take out the equalizer part, with the equalizer part there are no klicksounds when i don't turn the potentiometers.

 

Does anyone know if i'm doing something wrong?  Is this a known issue of the Multiband Graphic Equalizer SDK? Is there some way of workaround for this?

 

 

Thaks's in advance!

 

Chris

Outcomes