Closed ddprog closed 3 months ago
The example does not work on mp3/flac files on an ESP32-S3-N16R8 with PSRAM, but it works fine on an ESP32 (mp3 only). Plays one file and "audioHeader reading timeout". I can't figure out what the reason is.
Configuration for ESP32-S3-N16R8:
platformio.ini
platform = espressif32 board = esp32-s3-devkitc-1-n16r8v framework = arduino upload_port = COM9 monitor_port = COM9 upload_speed = 921600 monitor_speed = 115200 lib_deps = https://github.com/schreibfaul1/ESP32-audioI2S/
main.cpp
#include "Arduino.h" #include "Audio.h" #include "FS.h" #include "SD.h" #include "WiFi.h" #include <vector> // Digital I/O used #define SD_CS 10 #define SPI_MOSI 11 #define SPI_MISO 13 #define SPI_SCK 12 #define I2S_DOUT 18 #define I2S_BCLK 4 #define I2S_LRC 5 String ssid = "***"; String password = "***"; void listDir(fs::FS &fs, const char *dirname, uint8_t levels); // proto std::vector<char *> v_audioContent; Audio audio; const char audioDir[] = "/flac"; void listDir(fs::FS &fs, const char *dirname, uint8_t levels) { Serial.printf("Listing directory: %s\n", dirname); File root = fs.open(dirname); if (!root) { Serial.println("Failed to open directory"); return; } if (!root.isDirectory()) { Serial.println("Not a directory"); return; } File file = root.openNextFile(); while (file) { if (file.isDirectory()) { Serial.print(" DIR : "); Serial.println(file.name()); if (levels) { listDir(fs, file.path(), levels - 1); } } else { Serial.print(" FILE: "); Serial.print(file.name()); Serial.print(" SIZE: "); Serial.println(file.size()); v_audioContent.insert(v_audioContent.begin(), strdup(file.path())); } file = root.openNextFile(); } Serial.printf("num files %i", v_audioContent.size()); Serial.println(""); root.close(); file.close(); } void vector_clear_and_shrink(vector<char *> &vec) { uint size = vec.size(); for (int i = 0; i < size; i++) { if (vec[i]) { free(vec[i]); vec[i] = NULL; } } vec.clear(); vec.shrink_to_fit(); } // optional void audio_info(const char *info) { Serial.print("info "); Serial.println(info); } void audio_id3data(const char *info) { // id3 metadata Serial.print("id3data "); Serial.println(info); } void audio_eof_mp3(const char *info) { // end of file Serial.print("eof_mp3 "); Serial.println(info); if (v_audioContent.size() == 0) { vector_clear_and_shrink(v_audioContent); // free memory return; } const char *s = (const char *)v_audioContent[v_audioContent.size() - 1]; Serial.printf("playing %s\n", s); audio.connecttoFS(SD, s); v_audioContent.pop_back(); } void setup() { pinMode(SD_CS, OUTPUT); digitalWrite(SD_CS, HIGH); SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI); SPI.setFrequency(1000000); Serial.begin(115200); SD.begin(SD_CS); WiFi.disconnect(); WiFi.mode(WIFI_STA); WiFi.begin(ssid.c_str(), password.c_str()); while (WiFi.status() != WL_CONNECTED) delay(1500); audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT); audio.setVolume(21); // default 0...21 listDir(SD, audioDir, 1); if (v_audioContent.size() > 0) { const char *s = (const char *)v_audioContent[v_audioContent.size() - 1]; Serial.printf("playing %s\n", s); audio.connecttoFS(SD, s); v_audioContent.pop_back(); } } void loop() { audio.loop(); }
log file
ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x44c load:0x403c9700,len:0xbd8 load:0x403cc700,len:0x2a80 entry 0x403c98d0 Listing directory: /flac FILE: 02-John_O'Callaghan___Betsie_Larkin_-_Save_This_Moment_(Gareth_Emery_remix).flac SIZE: 60334536 FILE: 03-Kyau___Albert_-_Be_There_4_U_(Mat_Zo_remix).flac SIZE: 58474850 FILE: 04-Menno_De_Jong_-_Turtle_Paradise_(original_mix).flac SIZE: 65916183 FILE: 05-W_W_vs_Wezz_Devall_-_Phantom_(original_mix).flac SIZE: 45157943 FILE: 06-Jochen_Miller_-_Troucid_(original_mix).flac SIZE: 54484847 FILE: 07-Ferry_Corsten_-_Feel_It_(radio_edit).flac SIZE: 26545918 FILE: 08-Lange_Presents_LNG_-_Harmony_Will_Kick_You_In_The_Ass_(Lange_mix).flac SIZE: 51053818 FILE: 09-Timur_Shafiev_-_Thank_You_(feat_Dasha_-_Dallaz_Project_remix).flac SIZE: 67713251 FILE: 10-Orjan_Nilsen_-_Mjuzik_(original_mix).flac SIZE: 59545703 FILE: 11-Ronski_Speed_Presents_Sun_Decade_-_U_Got_Me_(feat_Emma_Lock_-_club_mix).flac SIZE: 37668791 FILE: 12-Arty_-_The_Wall_(feat_Tania_Zygar_-_radio_edit).flac SIZE: 32183389 FILE: 13-Right_Face_-_Deep_Impression_(Adam_Nickey_remix).flac SIZE: 64598077 FILE: 14-Juventa_-_Dionysia_(Skytech_remix).flac SIZE: 58282307 FILE: 15-Impulsive_Drive_-_Blue_Skies_(Bjorn_Akesson_remix).flac SIZE: 63369679 FILE: 16-Galen_Behr_vs_Hydroid_-_Carabella_(Galen_Behr_vs_Orjan_Nilsen_remix_-_classic_bonus_track).flac SIZE: 59560626 num files 15 playing /flac/02-John_O'Callaghan___Betsie_Larkin_-_Save_This_Moment_(Gareth_Emery_remix).flac info PSRAM found, inputBufferSize: 638965 bytes info buffers freed, free Heap: 249392 bytes info Reading file: "/flac/02-John_O'Callaghan___Betsie_Larkin_-_Save_This_Moment_(Gareth_Emery_remix).flac" info FLACDecoder has been initialized, free Heap: 244960 bytes , free stack 5584 DWORDs info Content-Length: 60334536 info FLAC maxBlockSize: 4096 info FLAC maxFrameSize: 14856 info FLAC sampleRate: 44100 info FLAC numChannels: 2 info FLAC bitsPerSample: 16 info total samples in stream: 20988289 info audio file duration: 475 seconds id3data VENDOR_STRING: reference libFLAC 1.2.1 20070917 id3data Album=A State Of Trance Radio Top 15: May 2011 id3data Artist=John O'Callaghan & Betsie Larkin id3data Genre=Trance id3data Title=Save This Moment (Gareth Emery Remix) id3data DATE=2011 id3data TRACKNUMBER=02 info Audio-Length: 60325386 info stream ready info syncword found at pos 0 info Channels: 2 info SampleRate: 44100 info BitsPerSample: 16 info BitRate: 93798 info Closing audio file "02-John_O'Callaghan___Betsie_Larkin_-_Save_This_Moment_(Gareth_Emery_remix).flac" eof_mp3 02-John_O'Callaghan___Betsie_Larkin_-_Save_This_Moment_(Gareth_Emery_remix).flac playing /flac/03-Kyau___Albert_-_Be_There_4_U_(Mat_Zo_remix).flac info buffers freed, free Heap: 249284 bytes info Reading file: "/flac/03-Kyau___Albert_-_Be_There_4_U_(Mat_Zo_remix).flac" info FLACDecoder has been initialized, free Heap: 244880 bytes , free stack 5488 DWORDs info End of file "02-John_O'Callaghan___Betsie_Larkin_-_Save_This_Moment_(Gareth_Emery_remix).flac" [481291][E][Audio.cpp:3096] processLocalFile(): audioHeader reading timeout
This issue is stale because it has been open for 30 days with no activity.
This issue was closed because it has been inactive for 14 days since being marked as stale.
The example does not work on mp3/flac files on an ESP32-S3-N16R8 with PSRAM, but it works fine on an ESP32 (mp3 only). Plays one file and "audioHeader reading timeout". I can't figure out what the reason is.
Configuration for ESP32-S3-N16R8:
platformio.ini
main.cpp
log file