Arduino Audio Filter


hi everybody,

well i've been trying build audio filter on arduino, takes in input mp3 song (thru 3.5mm jack on d arduino), filter out different frequency ranges bass (<400hz), vocals (400hz - 5khz) , treble (>5khz).

the input audio signal after giving dc offset fed adc of arduino.

at first, thought maybe go 3 filters, low pass, high pass , band pass. thought of using arduino process signal directly using fft or algorithm.

the problem i'm not able program it. please me in getting fft identify , differentiate these frequencies.

btw, posted similar earlier, sorry that.
http://www.arduino.cc/cgi-bin/yabb2/yabb.pl?num=1278851609

i littl ehel on subject.

ive coded aruino accept audio input , output using 1 of pwm pins @ high rate changing regester values.

my next step manipulate data. want able filter input output iether bandwidth set digitally in code, or 1 single frequency.

ive been reading fft, have yet find native arduino.

ive been thinkin designing own code measure incoming signal , compare previous samples determin peek , trough of wave, calculate time between these waves determin frequency. seems slow, , time ive done alagarithm late decide wether signal should filtered or not.

here code runing on arduino atm.
code: [select]
#define cbi(sfr, bit) (_sfr_byte(sfr) &= ~_bv(bit))      //analogread settings
#define sbi(sfr, bit) (_sfr_byte(sfr) |= _bv(bit))      //analogread settings

// vars altered interrupt
volatile boolean f_sample;
volatile byte badc1;
volatile byte ibb;



void setup()
{

 // set adc prescaler  to 64 19khz sampling frequency
 cbi(adcsra, adps2);
 sbi(adcsra, adps1);
 sbi(adcsra, adps0);




 sbi(admux,adlar);  // 8-bit adc in adch register
 sbi(admux,refs0);  // vcc reference
 cbi(admux,refs1);
 cbi(admux,mux0);   // set input multiplexer channel 0
 cbi(admux,mux1);
 cbi(admux,mux2);
 cbi(admux,mux3);


 // timer2 pwm mode set fast pwm
 cbi (tccr2a, com2a0);
 sbi (tccr2a, com2a1);
 sbi (tccr2a, wgm20);
 sbi (tccr2a, wgm21);

 cbi (tccr2b, wgm22);

 // timer2 clock prescaler : 1
 sbi (tccr2b, cs20);
 cbi (tccr2b, cs21);
 cbi (tccr2b, cs22);

 // timer2 pwm port enable
 sbi(ddrb,3);                    // set digital pin 11 output

 cbi (timsk0,toie0);              // disable timer0 !!! delay off now
 sbi (timsk2,toie2);              // enable timer2 interrupt
 
}





void loop()
{
 while (!f_sample) {         // while f_sample = 0, waiting input
 }
 f_sample=false;

 ocr2a=badc1;                // output audio pwm port (pin 11)


}


isr(timer2_ovf_vect) {

 portb = portb  | 1 ;


     badc1=adch;                    // adc channel 0
     f_sample=true;

ibb++;                          // short delay before start conversion
ibb--;
ibb++;
ibb--;    

sbi(adcsra,adsc);               // start next conversion

}

thanks, phil.


Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > Arduino Audio Filter


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums