ECE671 - DSP in Embedded Systems
The Stereo AV Equalizer


Team Members
Gerald Jochum
Bhegin Ntagazwa
Maurice Farah
Professor
S. Ganesan

 


//GJBN_proj.c 3 FIR filters: Lowpass, Highpass, bandpass
#include "DSK6713_AIC23.h"
Uint32 fs=DSK6713_AIC23_FREQ_48KHZ;
#define DSK6713_AIC23_INPUT_MIC 0x0015
#define DSK6713_AIC23_INPUT_LINE 0x0011
Uint16 inputsource=DSK6713_AIC23_INPUT_LINE;
#define LEFT 1
#define RIGHT 0

union{
Uint32 uint;
short channel[2];
}
AIC23_data;

#include "hp5kf48.cof"
#include "hbp350t5kf48.cof"
#include "hlp350f48.cof"
int effect=0;
#define BUF_SIZE_D 8000
float gain = 0.5;
#define BUF_SIZE 2000
short hold, L_input, R_input,L_output,R_output,L_delayed,R_delayed;
short buflength = 1000;
short L_buffer[BUF_SIZE_D ];
short R_buffer[BUF_SIZE_D ];
int j = 0;
short sL, sR;
float gain_H = 0.5;
float gain_M = 0.5;
float gain_L = 0.5;
short lockright=0;
int yn_L, yn_LH, yn_LM, yn_LL, yn_R, yn_RH, yn_RM, yn_RL;
short LH_dly[N], LM_dly[N], LL_dly[N];
short RH_dly[N], RM_dly[N], RL_dly[N];
short dly[N];

interrupt void c_int11(){
short i;
i=0;

effect =0;
if(DSK6713_DIP_get(0)==0 ) effect +=1;
if(DSK6713_DIP_get(1)==0 ) effect +=2;
if(DSK6713_DIP_get(2)==0 ) effect +=4;
if(DSK6713_DIP_get(3)==0 ) effect +=8;

AIC23_data.uint = input_sample();
L_input = AIC23_data.channel[LEFT];
R_input = AIC23_data.channel[RIGHT];

if (effect <= 7) {
DSK6713_LED_on(0);
DSK6713_LED_off(1);
DSK6713_LED_off(2);
DSK6713_LED_off(3);
L_delayed = L_buffer[j];
R_delayed = R_buffer[j];
L_output = L_input + L_delayed;
R_output = R_input + R_delayed;
if (effect == 0) {
L_output = L_input;
R_output = R_input;
}
if (effect == 2) {
L_buffer[j] = L_input;
R_buffer[j] = R_input;
}
if (effect == 3) {
L_buffer[j] = L_input + L_delayed*gain;
R_buffer[j] = R_input + R_delayed*gain;
}
if (effect == 2) {
if(++j >= BUF_SIZE)
j = 0;
} else {
if(++j >= BUF_SIZE_D)
j = BUF_SIZE_D - buflength;
}
if (effect == 4) {
hold = L_output;
L_output = R_output;
R_output = hold;
}
if (effect == 5) L_output=0;
if (effect == 6) R_output=0;
if (effect == 7) {
L_output=0;
R_output=0;
}
if (lockright==1)R_output = R_input;
AIC23_data.channel[LEFT] = L_output;
AIC23_data.channel[RIGHT] = R_output;
output_sample(AIC23_data.uint);
}
else DSK6713_LED_off(0);

if (effect >= 8) {
DSK6713_LED_on(3);
LH_dly[0] = L_input;
LM_dly[0] = L_input;
LL_dly[0] = L_input;
RH_dly[0] = R_input;
RM_dly[0] = R_input;
RL_dly[0] = R_input;

yn_L =0;
yn_R =0;
yn_LH =0;
yn_LM =0;
yn_LL =0;
yn_RH =0;
yn_RM =0;
yn_RL =0;

for (i = 0; i< N; i++){
yn_LH +=( hhp[i]*LH_dly[i]);
yn_LM +=( hbp[i]*LM_dly[i]);
yn_LL +=( hlp[i]*LL_dly[i]);
yn_RH +=( hhp[i]*LH_dly[i]);
yn_RM +=( hbp[i]*LM_dly[i]);
yn_RL +=( hlp[i]*LL_dly[i]);
}
yn_L = (yn_LH *gain_H) + (yn_LM *gain_M) + (yn_LL *gain_L);
yn_R = (yn_RH *gain_H) + (yn_RM *gain_M) + (yn_RL *gain_L);

for (i = N-1; i > 0; i--){
LH_dly[i] = LH_dly[i-1];
LM_dly[i] = LM_dly[i-1];
LL_dly[i] = LL_dly[i-1];

RH_dly[i] = RH_dly[i-1];
RM_dly[i] = RM_dly[i-1];
RL_dly[i] = RL_dly[i-1];
}
sL=yn_L;
sR=yn_R;
AIC23_data.channel[LEFT] = sL;
AIC23_data.channel[RIGHT] = sR;
output_sample(AIC23_data.uint);
return;
}
}

void main(){
short i;
for(i=0 ; i L_buffer[i] = 0;
R_buffer[i] = 0;
}

for (i=0; i LH_dly[i] = 0;
LM_dly[i] = 0;
LL_dly[i] = 0;
RH_dly[i] = 0;
RM_dly[i] = 0;
RL_dly[i] = 0;
}
comm_intr();
while(1);
}

 

© 2011 Copyright Maurice Farah. All rights reserved.