For Arduino Due
Auto SDAudio Example:
This example demonstrates how to play *.wav files from SD Card using interrupts.
#include <SPI.h>
#include <SD.h>
File myFile;
uint8_t channelSelection = 2;
void DACC_Handler(void) {
loadBuffer();
}
void setup() {
Serial.begin(115200);
if (!SD.begin(10)) {
Serial.println("SD init failed!");
return;
}
Serial.println("SD ok");
Serial.println("Analog Audio Begin");
}
void loop() {
if (Serial.available()) {
char input = Serial.read();
switch (input) {
case '3': channelSelection = 0; break;
case '4': channelSelection = 1; break;
case '5': channelSelection = 2; break;
case '6': Serial.println("OK"); break;
}
}
}
void playAudio(char *audioFile) {
if (myFile) {
myFile.close();
}
myFile = SD.open(audioFile);
if (myFile) {
myFile.seek(44);
loadBuffer();
}
}
void loadBuffer() {
if (myFile) {
if (myFile.available()) {
myFile.read((
byte*)aaAudio.
dacBuffer, MAX_BUFFER_SIZE);
} else {
myFile.read((
byte*)aaAudio.
dacBuffer16, MAX_BUFFER_SIZE * 2);
for (int i = 0; i < MAX_BUFFER_SIZE; i++) {
}
}
} else {
myFile.close();
dacc_disable_interrupt(DACC, DACC_IER_ENDTX);
}
}
}
void setSampleRate(uint32_t sampRate=0, bool stereo=false)
uint8_t dacBuffer[MAX_BUFFER_SIZE]
void disableDAC(bool withinTask=false)
uint16_t dacBuffer16[MAX_BUFFER_SIZE]
void begin(uint8_t enADC, uint8_t enDAC, uint8_t _useI2S=0)
void feedDAC(uint8_t dacChannel=0, uint32_t samples=MAX_BUFFER_SIZE, bool startInterrupts=false)