#include <SD.h>
#include <SPI.h>
#include <Audio.h>
#define CS_PIN 5 // Chip select pin for SD card
#define BUZZER_PIN 25 // Pin connected to the speaker/buzzer
File root;
AudioFileSourceSD *file;
AudioOutputI2S *output;
AudioFileSourceID3 *id3;
void setup() {
Serial.begin(115200);
if (!SD.begin(CS_PIN)) {
Serial.println("SD card initialization failed!");
while (true);
}
Serial.println("SD card initialized.");
file = new AudioFileSourceSD("/example.wav");
id3 = new AudioFileSourceID3(file);
output = new AudioOutputI2S();
output->SetPinout(26, 22, 25); // BCLK, LRCLK, DATA
AudioConnection patch(id3, output);
id3->registerMetadataCB(metadataCB, NULL);
Serial.println("Playing...");
id3->seek(0);
}
void loop() {
// Nothing to do here, playback is handled by the hardware
}
void metadataCB(void *cbData, const char *type, bool isUnicode, const char *string) {
Serial.print(type);
Serial.print(": ");
if (isUnicode) {
Serial.print((const char *)string);
} else {
Serial.print((char *)string);
}
Serial.println();
}