Soundsync is a web and desktop app to manage every audio source and every audio output in your home from a single interface. Link any audio source to multiple speakers connected to any computers on your home network. Soundsync will keep the music synchronized between all of them.
- π Free to use
- πΈοΈ Work with any number of connected devices, audio sources, audio outputs and every link of your choosing
- πΆ Compatible with a lot of different audio sources (Spotify Connect with a premium account, Windows system audio ; coming soon: Airplay, UPnP)
- π Broadcast sound to any speaker connected to a computer (Windows, MacOS, Linux, RapsberryPi) or a web browser (Chrome only) and soon Chromecast and more
- π Group speakers together to synchronize them to the same audio source
- ποΈ Control everything from a web browser
- π Not linked to any external service, works offline, no account creation
Soundsync is still in an early stage. It's evolving quickly but there is still a lot to do. Here are some features that are being considered:
- Bluetooth on linux
- UPnP: gmrender-resurrect
- Updating info for Spotify sink from WebUI
- Allow changing the name of a peer from the webui
- Group of sinks
- Use waveform-data to show activity on webui
- Integration of media info on webui
- Synchronize sound with Philips Hue light bulbs
- Create a ready to use RaspberryPi image
- Is it Open-source ? Soundsync code is released under the Business Source License. It is not open-source but free to use as long as you don't use it for production work. It means you can use it at home, in your office but you cannot resell it or sell a service/product that directly use it. If you have special needs, contact me for a licence.
git submodule update --init --recursive
cd src/utils/opus_vendor
./autogen.sh
emconfigure ./configure --disable-extra-programs --disable-doc --disable-intrinsics --disable-hardening --disable-rtcd --disable-stack-protector
emmake make
cd ../
emcc -o opus_wasm.js -s EXPORT_ES6=1 -s MODULARIZE=1 -s SINGLE_FILE=1 -s EXPORT_NAME="Opus" -s USE_ES6_IMPORT_META=0 -s FILESYSTEM=0 -s EXPORTED_RUNTIME_METHODS="['setValue', 'getValue', 'AsciiToString']" -s EXPORTED_FUNCTIONS="['_malloc', '_free', '_opus_decoder_create','_opus_decode_float','_opus_decoder_destroy','_opus_encoder_create','_opus_encoder_destroy','_opus_encode','_opus_strerror']" -s ENVIRONMENT=node,web ./opus_vendor/.libs/libopus.a
- Speaker by Mestman from the Noun Project
- Slashed zero by Rflor from the Noun Project
- web browser by Iconstock from the Noun Project
- Computer by iconcheese from the Noun Project
- AirPlay by Michiel Willemsen from the Noun Project