Releases: schreibfaul1/ESP32-audioI2S
V3.4.4
V3.4.3
The output sample rate is no longer fixed, but depends on the audio source. If the DAC requires 48 kHz, this can be activated in Audio.h (#define SR_48K).
All decoders are now classes.
If there is more than one embedded image in a FLAC file, it is now output correctly.
e.g.
CoverImage: segment 00, pos 00000224, len 00007308
CoverImage: segment 01, pos 00007536, len 00005873
Streams are played back correctly even if the FLAC frame is larger than the OGG frame, http://amp.cesnet.cz:8000/cro-jazz.flac
char* null pointers are intercepted to prevent a crash.
If an ID3 header is unexpectedly sent during a chunked HLS aac stream, it is recognised and skipped, https://dd782ed59e2a4e86aabf6fc508674b59.msvdn.net/live/S97044836/tbbP8T1ZRPBL/playlist_audio.m3u8
Several issues with "chunked data transfer" have been resolved.
fix compiler warnings -Warray-bounds= and no trivial copy-assignment
V3.4.2
new event management
used "functional callbacks" instead "weak" compiler bindings
old
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);
}
...
...new
void my_audio_info(Audio::msg_t m) {
Serial.printf("%s: %s\n", m.s, m.msg);
}
void setup() {
Audio::audio_info_callback = my_audio_info;
...
...
}V3.4.1
http range request ist enabled
This allows the jump within a file if the server accepts ranges
3.4.0
OPUS-HYBRID-MODE activated
C unique pointer introduced
better sync. lyrics
3.3.2
OPUS Hybrid Mode is activated, stations such as
https://st01.sslstream.dlf.de/dlf/01/low/opus/stream.opus?aggregator=web
work now,
The mode is displayed as info: (CELT_ONLY, SILK_ONLY, HYBRID)
Memory leak in VORBIS decoder fixed
Better 48KHz I2S output through cubic interpolation (Catmull-Rom)
ESP32-P4 support
Adruino Version > V3.0.0
PSRAM must be activated
The I2S signal is resampled to 48 KHz stereo 16bps
last release without PSRAM
The appropriate ESP32-Arduino version is 3.2.1.
#include "Arduino.h"
#include "src/Audio.h"
#include "WiFi.h"
#define I2S_DOUT 25
#define I2S_BCLK 27
#define I2S_LRC 26
String ssid = "***";
String password = "***";
Audio audio;
void audio_info(const char* info) {
Serial.printf("%s\n", info);
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid.c_str(), password.c_str());
while (WiFi.status() != WL_CONNECTED) {delay(500); Serial.print("."); }
Serial.println("connected");
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
audio.setVolume(21); // default 0...21
audio.connecttohost("https://liveradio.swr.de/sw282p3/swr1bw/");
}
void loop() {
audio.loop();
vTaskDelay(1);
}V3.2.0
ESP32-P4 ready
3.1.0
Only supports Arduino versions from V3 and therefore no longer supports an internal DAC
