mirror of
https://github.com/pschatzmann/arduino-audio-tools.git
synced 2024-09-21 18:37:28 +00:00
mp3 support
This commit is contained in:
parent
4e50204744
commit
9891b64fd8
@ -5,5 +5,6 @@
|
||||
- [adc-serial](adc-serial) - Stream Analog input to Serial
|
||||
- [file_raw-a2dp](file_raw-a2dp) - Stream Row File from SD card to A2DP Bluetooth
|
||||
- [file_raw-serial](file_raw-serial) - Stream Raw File from SD card to Serial
|
||||
- [file_mp3-a2dp](file_mp3-a2dp) - Stream MP3 File from SD card to A2DP Bluetooth using the ESP8266Audio library
|
||||
- [i2s-a2dp](i2s-a2dp) - Stream I2S Input to A2DP Bluetooth
|
||||
- [i2s-serial](i2s-serial) - Stream I2S Input to Serial
|
@ -1,7 +1,6 @@
|
||||
#include <SPI.h>
|
||||
#include <SD.h>
|
||||
#include "AudioFileSourceSPIFFS.h"
|
||||
#include "AudioFileSourceID3.h"
|
||||
#include "AudioFileSourceSD.h"
|
||||
#include "AudioGeneratorMP3.h"
|
||||
#include "AudioOutputWithCallback.h"
|
||||
#include "BluetoothA2DPSource.h"
|
||||
@ -10,55 +9,41 @@
|
||||
using namespace sound_tools;
|
||||
|
||||
const int sd_ss_pin = 5;
|
||||
String fileName = "";
|
||||
const char* fileName = "/audio.mp3";
|
||||
BluetoothA2DPSource a2dp_source;
|
||||
AudioFileSourceSPIFFS *file;
|
||||
AudioFileSourceID3 *id3;
|
||||
AudioFileSourceSD *file;
|
||||
AudioGeneratorMP3 *mp3;
|
||||
AudioOutputWithCallback *out;
|
||||
|
||||
// callback used by A2DP to provide the sound data
|
||||
int32_t get_sound_data(Channels* data, int32_t len) {
|
||||
return out.read(data, len);
|
||||
return out == nullptr ? 0 : out->read(data, len);
|
||||
}
|
||||
|
||||
// finds a mp3 file
|
||||
bool findMp3File() {
|
||||
File dir, root = SPIFFS.open("/");
|
||||
while ((dir = root.openNextFile())) {
|
||||
if (String(dir.name()).endsWith(".mp3")) {
|
||||
if (file->open(dir.name())) {
|
||||
fileName = String(dir.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
dir = root.openNextFile();
|
||||
}
|
||||
return fileName.length() > 0;
|
||||
}
|
||||
|
||||
// Arduino Setup
|
||||
void setup(void) {
|
||||
Serial.begin(115200);
|
||||
audioLogger = &Serial;
|
||||
|
||||
// start the bluetooth
|
||||
Serial.println("starting A2DP...");
|
||||
a2dp_source.start("MyMusic", get_sound_data);
|
||||
|
||||
// Setup Audio
|
||||
SPIFFS.begin(sd_ss_pin);
|
||||
file = new AudioFileSourceSPIFFS();
|
||||
file = new AudioFileSourceSD();
|
||||
mp3 = new AudioGeneratorMP3();
|
||||
out = new AudioOutputWithCallback(1024,5);
|
||||
out = new AudioOutputWithCallback(512,5);
|
||||
|
||||
// Find first MP3 file in SPIFF and play it
|
||||
if (findMp3File()) {
|
||||
id3 = new AudioFileSourceID3(file);
|
||||
mp3->begin(id3, out);
|
||||
Serial.printf("Playback of '%s' begins...\n", fileName.c_str());
|
||||
// Open MP3 file and play it
|
||||
SD.begin(sd_ss_pin);
|
||||
if (file->open(fileName)) {
|
||||
|
||||
// start the bluetooth
|
||||
Serial.println("starting A2DP...");
|
||||
a2dp_source.start("MyMusic", get_sound_data);
|
||||
|
||||
// start to play the file
|
||||
mp3->begin(file, out);
|
||||
Serial.printf("Playback of '%s' begins...\n", fileName);
|
||||
} else {
|
||||
Serial.println("Can't find .mp3 file in SPIFFS");
|
||||
Serial.println("Can't find .mp3 file");
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,6 +53,6 @@ void loop() {
|
||||
if (!mp3->loop()) mp3->stop();
|
||||
} else {
|
||||
Serial.println("MP3 done");
|
||||
delay(1000);
|
||||
delay(10000);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user