Update README.md
Update documentation
This commit is contained in:
committed by
GitHub
Unverified
parent
30d2e54dab
commit
b5aca242b6
44
README.md
44
README.md
@@ -3,29 +3,30 @@
|
|||||||
### Synchronous Multiroom audio streaming client for [Snapcast](https://github.com/badaix/snapcast) ported to ESP32
|
### Synchronous Multiroom audio streaming client for [Snapcast](https://github.com/badaix/snapcast) ported to ESP32
|
||||||
|
|
||||||
## Feature list
|
## Feature list
|
||||||
- Opus and PCM decoding currently supported
|
- Opus, FLAC and PCM decoding currently supported
|
||||||
- Wifi setup from menuconfig
|
- Wifi setup from menuconfig or through espressif Android App "SoftAP Prov"
|
||||||
- Auto connect to snapcast server on network
|
- Auto connect to snapcast server on network
|
||||||
- Buffers up to 150 ms on Wroom modules
|
- Buffers up to 800ms on Wroom modules
|
||||||
- Buffers more then enough on Wrover modules
|
- Buffers more then enough on Wrover modules
|
||||||
- Multiroom sync delay controlled from Snapcast server 400ms - 2000ms
|
- Multiroom sync delay controlled from Snapcast server (user has to ensure not to set this too high on the server)
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
I have continued the work from @badaix and @bridadan towards a ESP32 Snapcast
|
I have continued the work from @badaix, @bridadan and @jorgenkraghjakobsen towards a ESP32 Snapcast
|
||||||
client. Currently it support basic features like multirum sync, network
|
client. Currently it support basic features like multiroom sync, network
|
||||||
controlled volume and mute. For now it only support Opus and PCM 16bit/48Khz
|
controlled volume and mute. For now it only support Opus, FLAC and PCM 16bit
|
||||||
audio streams and the synchornization part is still being worked on.
|
audio streams with sample rates up to 48Khz maybe more, I didn't test.
|
||||||
|
|
||||||
Please check out the task list and feel free to fill in.
|
Please check out the task list and feel free to fill in.
|
||||||
|
|
||||||
I have used the Infineon MA12070P Multi level Class D combined coded/amp due to
|
I dropped the usage of ADF completely but copied stripped down, needed components to this project.
|
||||||
its superior power effecienty on a high supply rail. It allows battery power
|
This was necessary because ADF was using flac in closed source precompiled library
|
||||||
system with good playback time at normal listen level and still have the power
|
which made it impossible to get good results for multiroom syncing. IDF's I2S driver was also copied
|
||||||
to start the party.
|
to project's components and adapted. Originally it wasn't possible to pre load DMA buffers with audio
|
||||||
|
samples and therefore no precise sync could be achieved.
|
||||||
|
|
||||||
### Codebase
|
### Codebase
|
||||||
|
|
||||||
The codebase is split into components and build on vanilla ESP-IDF. I still
|
The codebase is split into components and build on ESP-IDF v4.3. I still
|
||||||
have some refactoring on the todo list as the concept has started to settle and
|
have some refactoring on the todo list as the concept has started to settle and
|
||||||
allow for new features can be added in a structured manner. In the code you
|
allow for new features can be added in a structured manner. In the code you
|
||||||
will find parts that are only partly related features and still not on the task
|
will find parts that are only partly related features and still not on the task
|
||||||
@@ -33,17 +34,28 @@ list.
|
|||||||
|
|
||||||
Components
|
Components
|
||||||
- MerusAudio : Low level communication interface MA12070P
|
- MerusAudio : Low level communication interface MA12070P
|
||||||
|
- flac : flac audio cider/decoder full submodule
|
||||||
- opus : Opus audio coder/decoder full submodule
|
- opus : Opus audio coder/decoder full submodule
|
||||||
- rtprx : Alternative RTP audio client UDP low latency also opus based
|
- rtprx : Alternative RTP audio client UDP low latency also opus based
|
||||||
- lightsnapcast : Port of @bridadan scapcast packages decode library
|
- lightsnapcast : o Port of @bridadan scapcast packages decode library
|
||||||
|
o player module, which is responsible for sync and low level I2S control
|
||||||
|
- libmedian: Median Filter implementation. Many thanks to @accabog https://github.com/accabog/MedianFilter
|
||||||
- libbuffer : Generic buffer abstraction
|
- libbuffer : Generic buffer abstraction
|
||||||
- esp-dsp : Submodule to the ESP-ADF done by David Douard
|
- esp-dsp : Submodule to the ESP-ADF done by David Douard
|
||||||
- dsp_processor : Audio Processor and I2S low level interface including sync
|
- dsp_processor : Audio Processor
|
||||||
buffer
|
- audio-board : taken from ADF, stripped down to strictly necessary parts for usage with Lyrat v4.3
|
||||||
|
- audio-hal : taken from ADF, stripped down to strictly necessary parts for usage with Lyrat v4.3
|
||||||
|
- audio-sal : taken from ADF, stripped down to strictly necessary parts for usage with Lyrat v4.3
|
||||||
|
- esp-peripherals : taken from ADF, stripped down to strictly necessary parts for usage with Lyrat v4.3
|
||||||
|
- custom-driver : modified I2S driver from IDF v4.3 which supports preloading DMA buffers with valid data
|
||||||
|
|
||||||
The snapclient functionanlity are implemented in a task included in main - but
|
The snapclient functionanlity are implemented in a task included in main - but
|
||||||
will be refactored to a component in near future.
|
will be refactored to a component in near future.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Todo: following does not apply to this fork
|
||||||
|
|
||||||
Sync concept has been changed start 2021 on this implementation and differ a
|
Sync concept has been changed start 2021 on this implementation and differ a
|
||||||
bit from the way original snap clints handle this.
|
bit from the way original snap clints handle this.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user