Files
klubhaus-doorbell/libraries/audio-tools/examples/examples-communication/snapcast/snapclient-i2s/snapclient-i2s.ino
2026-02-12 21:00:02 -08:00

64 lines
1.6 KiB
C++

/**
* @file send-receive.ino
* @author Phil Schatzmann
* @brief Receive audio sent by snapcast on an ESP32 and output to i2s.
* I was testing with ffmpeg -i http://stream.srg-ssr.ch/m/rsj/mp3_128 -f s16le -ar 48000 /tmp/snapfifo
* More examples can be found at https://github.com/pschatzmann/arduino-snapclient/tree/main/examples
* @version 0.1
* @date 2023-09-25
*
* @copyright Copyright (c) 2022
*/
/**
* @brief SnapClient with Opus decoder: I2S OUtput
* @author Phil Schatzmann
* @copyright GPLv3
*/
#include "AudioTools.h"
#include "SnapClient.h"
#include "AudioTools/AudioCodecs/CodecOpus.h"
#define ARDUINO_LOOP_STACK_SIZE (10 * 1024)
OpusAudioDecoder opus;
I2SStream out;
WiFiClient wifi;
SnapTimeSyncDynamic synch(172, 10); // optional configuratioin
SnapClient client(wifi, out, opus);
void setup() {
Serial.begin(115200);
// login to wifi -> Define values in SnapConfig.h or replace them here
WiFi.begin(CONFIG_WIFI_SSID, CONFIG_WIFI_PASSWORD);
Serial.print("Connecting to WiFi ..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
}
// print ip address
Serial.println();
Serial.println(WiFi.localIP());
// setup I2S to define custom pins
auto cfg = out.defaultConfig();
cfg.pin_bck = 14;
cfg.pin_ws = 15;
cfg.pin_data = 22;
//cfg.buffer_size = 512;
//cfg.buffer_count = 6;
out.begin(cfg);
// Define CONFIG_SNAPCAST_SERVER_HOST in SnapConfig.h or here
// client.setServerIP(IPAddress(192,168,1,38));
// start snap client
client.begin(synch);
}
void loop() {
client.doLoop();
}