#pragma mark - Depend ESP8266Audio and ESP8266_Spiram libraries
/*
cd ~/Arduino/libraries
git clone https://github.com/earlephilhower/ESP8266Audio
git clone https://github.com/Gianbacchio/ESP8266_Spiram

Use the "Tools->ESP32 Sketch Data Upload" menu to write the MP3 to SPIFFS
Then upload the sketch normally.
https://github.com/me-no-dev/arduino-esp32fs-plugin
*/

#include <M5Stack.h>
#include <WiFi.h>

#include "AudioFileSourceSD.h"
#include "AudioGeneratorWAV.h"
#include "AudioOutputI2S.h"

AudioGeneratorWAV *wav;
AudioFileSourceSD *file;
AudioOutputI2S *out;

void setup() {
    M5.begin();
    M5.Power.begin();
    WiFi.mode(WIFI_OFF);
    delay(500);

    M5.Lcd.setTextFont(2);
    M5.Lcd.printf("Sample WAV playback begins...\n");
    Serial.printf("Sample WAV playback begins...\n");

    // pno_cs from https://ccrma.stanford.edu/~jos/pasp/Sound_Examples.html
    file = new AudioFileSourceSD("/pno-cs.wav");
    out  = new AudioOutputI2S(0, 1);  // Output to builtInDAC
    out->SetOutputModeMono(true);
    wav = new AudioGeneratorWAV();
    wav->begin(file, out);
}

void loop() {
    if (wav->isRunning()) {
        if (!wav->loop()) wav->stop();
    } else {
        Serial.printf("WAV done\n");
        delay(1000);
    }
}