geekuillaume / soundsync

Virtual cables between any audio source and any speaker in your home
https://soundsync.app
Other
840 stars 36 forks source link
audio javascript multi-room music nodejs synchronization web

Connect virtual cables between any audio source and any audio output

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 devices on your home network. Soundsync will keep the music synchronized between all of them.

Quick start

Download and install Soundsync for you operating system on every device in your home you want to use.

Windows

Download

MacOS

Download

Linux

Download (.deb for Ubuntu/Debian)

Download (.pacman for Archlinux)

Linux ARM (Raspberry)

Download (.deb for Ubuntu/Debian/Raspbian)

Now go to https://soundsync.app/ to control every Soundsync install on your home network.

Download last development version

Want to try the latest features and help with debugging? Download the latest build! Each commit will generate a new installer with the latest version of the code (but the version number won't be increased).

Need help? Have new ideas? Want to contribute?

Join the Discord server!

Project status

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:

FAQ

Development

To start Soundsync from the source code you'll need NodeJS and Git installed and then:

git clone https://github.com/geekuillaume/soundsync
cd soundsync
npm install
npm run build
npm run start

You can also use the command npm run start:electron to activate the Electron integrations (Systray icon, error tracking).

Building opus

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 -s INITIAL_MEMORY=10MB \
-s MAXIMUM_MEMORY=10MB \
-O3 \
-o audio/opus_wasm.js \
-s EXPORT_ES6=1 \
-s MODULARIZE=1 \
-s EXPORT_NAME="Opus" \
-s USE_ES6_IMPORT_META=0 \
-s FILESYSTEM=0 \
-s NODEJS_CATCH_REJECTION=0 \
-s NODEJS_CATCH_EXIT=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_encode_float','_opus_strerror']" \
-s ENVIRONMENT=node,web \
./opus_vendor/.libs/libopus.a

Attributions