PlayMP3FromSPIFFSToDAC.ino 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma mark - Depend ESP8266Audio and ESP8266_Spiram libraries
  2. /*
  3. cd ~/Arduino/libraries
  4. git clone https://github.com/earlephilhower/ESP8266Audio
  5. git clone https://github.com/Gianbacchio/ESP8266_Spiram
  6. Use the "Tools->ESP32 Sketch Data Upload" menu to write the MP3 to SPIFFS
  7. Then upload the sketch normally.
  8. https://github.com/me-no-dev/arduino-esp32fs-plugin
  9. */
  10. #include <M5Stack.h>
  11. #include <WiFi.h>
  12. #include "SPIFFS.h"
  13. #include "AudioFileSourceSPIFFS.h"
  14. #include "AudioFileSourceID3.h"
  15. #include "AudioGeneratorMP3.h"
  16. #include "AudioOutputI2S.h"
  17. AudioGeneratorMP3 *mp3;
  18. AudioFileSourceSPIFFS *file;
  19. AudioOutputI2S *out;
  20. AudioFileSourceID3 *id3;
  21. void setup()
  22. {
  23. M5.begin();
  24. M5.Power.begin();
  25. WiFi.mode(WIFI_OFF);
  26. SPIFFS.begin();
  27. delay(500);
  28. M5.Lcd.setTextFont(2);
  29. M5.Lcd.printf("Sample MP3 playback begins...\n");
  30. Serial.printf("Sample MP3 playback begins...\n");
  31. // pno_cs from https://ccrma.stanford.edu/~jos/pasp/Sound_Examples.html
  32. file = new AudioFileSourceSPIFFS("/pno-cs.mp3");
  33. id3 = new AudioFileSourceID3(file);
  34. out = new AudioOutputI2S(0, 1); // Output to builtInDAC
  35. out->SetOutputModeMono(true);
  36. mp3 = new AudioGeneratorMP3();
  37. mp3->begin(id3, out);
  38. }
  39. void loop()
  40. {
  41. if (mp3->isRunning()) {
  42. if (!mp3->loop()) mp3->stop();
  43. } else {
  44. Serial.printf("MP3 done\n");
  45. delay(1000);
  46. }
  47. }