Skip to content

Commit 9891b64

Browse files
committed
mp3 support
1 parent 4e50204 commit 9891b64

File tree

2 files changed

+20
-34
lines changed

2 files changed

+20
-34
lines changed

examples/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
- [adc-serial](adc-serial) - Stream Analog input to Serial
66
- [file_raw-a2dp](file_raw-a2dp) - Stream Row File from SD card to A2DP Bluetooth
77
- [file_raw-serial](file_raw-serial) - Stream Raw File from SD card to Serial
8+
- [file_mp3-a2dp](file_mp3-a2dp) - Stream MP3 File from SD card to A2DP Bluetooth using the ESP8266Audio library
89
- [i2s-a2dp](i2s-a2dp) - Stream I2S Input to A2DP Bluetooth
910
- [i2s-serial](i2s-serial) - Stream I2S Input to Serial
Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include <SPI.h>
22
#include <SD.h>
3-
#include "AudioFileSourceSPIFFS.h"
4-
#include "AudioFileSourceID3.h"
3+
#include "AudioFileSourceSD.h"
54
#include "AudioGeneratorMP3.h"
65
#include "AudioOutputWithCallback.h"
76
#include "BluetoothA2DPSource.h"
@@ -10,55 +9,41 @@
109
using namespace sound_tools;
1110

1211
const int sd_ss_pin = 5;
13-
String fileName = "";
12+
const char* fileName = "/audio.mp3";
1413
BluetoothA2DPSource a2dp_source;
15-
AudioFileSourceSPIFFS *file;
16-
AudioFileSourceID3 *id3;
14+
AudioFileSourceSD *file;
1715
AudioGeneratorMP3 *mp3;
1816
AudioOutputWithCallback *out;
1917

2018
// callback used by A2DP to provide the sound data
2119
int32_t get_sound_data(Channels* data, int32_t len) {
22-
return out.read(data, len);
20+
return out == nullptr ? 0 : out->read(data, len);
2321
}
2422

25-
// finds a mp3 file
26-
bool findMp3File() {
27-
File dir, root = SPIFFS.open("/");
28-
while ((dir = root.openNextFile())) {
29-
if (String(dir.name()).endsWith(".mp3")) {
30-
if (file->open(dir.name())) {
31-
fileName = String(dir.name());
32-
break;
33-
}
34-
}
35-
dir = root.openNextFile();
36-
}
37-
return fileName.length() > 0;
38-
}
3923

4024
// Arduino Setup
4125
void setup(void) {
4226
Serial.begin(115200);
4327
audioLogger = &Serial;
4428

45-
// start the bluetooth
46-
Serial.println("starting A2DP...");
47-
a2dp_source.start("MyMusic", get_sound_data);
48-
4929
// Setup Audio
50-
SPIFFS.begin(sd_ss_pin);
51-
file = new AudioFileSourceSPIFFS();
30+
file = new AudioFileSourceSD();
5231
mp3 = new AudioGeneratorMP3();
53-
out = new AudioOutputWithCallback(1024,5);
32+
out = new AudioOutputWithCallback(512,5);
5433

55-
// Find first MP3 file in SPIFF and play it
56-
if (findMp3File()) {
57-
id3 = new AudioFileSourceID3(file);
58-
mp3->begin(id3, out);
59-
Serial.printf("Playback of '%s' begins...\n", fileName.c_str());
34+
// Open MP3 file and play it
35+
SD.begin(sd_ss_pin);
36+
if (file->open(fileName)) {
37+
38+
// start the bluetooth
39+
Serial.println("starting A2DP...");
40+
a2dp_source.start("MyMusic", get_sound_data);
41+
42+
// start to play the file
43+
mp3->begin(file, out);
44+
Serial.printf("Playback of '%s' begins...\n", fileName);
6045
} else {
61-
Serial.println("Can't find .mp3 file in SPIFFS");
46+
Serial.println("Can't find .mp3 file");
6247
}
6348
}
6449

@@ -68,6 +53,6 @@ void loop() {
6853
if (!mp3->loop()) mp3->stop();
6954
} else {
7055
Serial.println("MP3 done");
71-
delay(1000);
56+
delay(10000);
7257
}
7358
}

0 commit comments

Comments
 (0)