Skip to content

Selecting a Decoder

Phil Schatzmann edited this page Nov 16, 2023 · 31 revisions

Define the Decoder on the Server

First you need to define the codec or audio format that snapcast is using in /etc/snapserver.conf. Supported values are flac, ogg, opus and pcm.

codec = pcm

is selecting pcm the data will be provided as pcm.

The default sample rate of 48000 is a bit high for pcm, so I suggest to adjust it as well e.g. with

sampleformat = 44100:16:2

Define the Decoder for the Arduino Client

You need to install the necessary decoder library first! (See the urls below). Then you can use them in your Arduino sketch as follows:

WAV

// codecs
WAVDecoder pcm;
// setup client
WiFiClient wifi;
I2SStream out;
SnapClient client(wifi, out, opus);

Opus

#include "AudioCodecs/CodecOpus.h"   // https://github.com/pschatzmann/arduino-libopus.git

// codecs
OpusAudioDecoder opus;
// setup client
WiFiClient wifi;
I2SStream out;
SnapClient client(wifi, out, opus);

FLAC

#include "AudioCodecs/CodecFLAC.h"   // https://github.com/pschatzmann/arduino-libflac.git

// codecs
FLACDecoder flac;
// setup client
WiFiClient wifi;
I2SStream out;
SnapClient client(wifi, out, flac);

OGG Vorbis

#include "AudioCodecs/CodecVorbis.h" //https://github.com/pschatzmann/arduino-libvorbis-idec

// codecs
VorbisDecoder ogg;
// setup client
WiFiClient wifi;
I2SStream out;
SnapClient client(wifi, out, ogg);
Clone this wiki locally