1
1
#include < SPI.h>
2
2
#include < SD.h>
3
- #include " AudioFileSourceSPIFFS.h"
4
- #include " AudioFileSourceID3.h"
3
+ #include " AudioFileSourceSD.h"
5
4
#include " AudioGeneratorMP3.h"
6
5
#include " AudioOutputWithCallback.h"
7
6
#include " BluetoothA2DPSource.h"
10
9
using namespace sound_tools ;
11
10
12
11
const int sd_ss_pin = 5 ;
13
- String fileName = " " ;
12
+ const char * fileName = " /audio.mp3 " ;
14
13
BluetoothA2DPSource a2dp_source;
15
- AudioFileSourceSPIFFS *file;
16
- AudioFileSourceID3 *id3;
14
+ AudioFileSourceSD *file;
17
15
AudioGeneratorMP3 *mp3;
18
16
AudioOutputWithCallback *out;
19
17
20
18
// callback used by A2DP to provide the sound data
21
19
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);
23
21
}
24
22
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
- }
39
23
40
24
// Arduino Setup
41
25
void setup (void ) {
42
26
Serial.begin (115200 );
43
27
audioLogger = &Serial;
44
28
45
- // start the bluetooth
46
- Serial.println (" starting A2DP..." );
47
- a2dp_source.start (" MyMusic" , get_sound_data);
48
-
49
29
// Setup Audio
50
- SPIFFS.begin (sd_ss_pin);
51
- file = new AudioFileSourceSPIFFS ();
30
+ file = new AudioFileSourceSD ();
52
31
mp3 = new AudioGeneratorMP3 ();
53
- out = new AudioOutputWithCallback (1024 ,5 );
32
+ out = new AudioOutputWithCallback (512 ,5 );
54
33
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);
60
45
} else {
61
- Serial.println (" Can't find .mp3 file in SPIFFS " );
46
+ Serial.println (" Can't find .mp3 file" );
62
47
}
63
48
}
64
49
@@ -68,6 +53,6 @@ void loop() {
68
53
if (!mp3->loop ()) mp3->stop ();
69
54
} else {
70
55
Serial.println (" MP3 done" );
71
- delay (1000 );
56
+ delay (10000 );
72
57
}
73
58
}
0 commit comments