Samuel Mokrani
/
USBAudio_micro
USBAudio example using a microphone
main.cpp
- Committer:
- samux
- Date:
- 2011-12-20
- Revision:
- 5:b49b6a8ca111
- Parent:
- 4:bef3b485f22e
- Child:
- 6:be128039be16
File content as of revision 5:b49b6a8ca111:
#include "mbed.h" #include "USBAudio.h" // frequency: 8 kHz #define FREQ 8000 // 1 channel: mono #define NB_CHA 1 // length of an audio packet: each ms, we receive 48 * 16bits ->48 * 2 bytes. as there is one channel, the length will be 48 * 2 * 1 #define AUDIO_LENGTH_PACKET (FREQ/500) * NB_CHA USBAudio audio(FREQ, NB_CHA, 0xaac0, 0xa734); AnalogIn mic(p20); DigitalOut p(p19); // length of buffer = AUDIO_LENGTH_PACKET/2 because we are handling int16 and not bytes. int16_t buf[AUDIO_LENGTH_PACKET/2]; int main() { double mic_mean = 0.0; double mic_value; // compute average value of the microphone. We can then center the audio signal sent to the computer for (int j = 0; j < 1000; j++) { mic_value = (mic.read_u16() >> 3); mic_mean = (mic_mean*j + mic_value)/(j+1); } while (1) { // read 8 micro samples for (int i = 0; i < AUDIO_LENGTH_PACKET/2; i++) { buf[i] = (mic.read_u16() >> 3) - mic_mean; if (i != AUDIO_LENGTH_PACKET/2) { wait_us(110); } } // send audio.write((uint8_t *)buf); } }