Try it
musicsaur -Music Synchronization And Uniform Relaying
Update 08/09/2016: Version 1.5 released!
Want to sync up your music on multiple computers? This accomplishes exactly that - using only a simple program and a browser. Simply run the program, and open up a browser on each computer you want to sync up - that's it!
This program is powered by the excellent howler.js library from goldfire. Essentially all the client computers sync their clocks and then try to start a song at the same time. Any dissimilarities between playback are also fixed, because the clients will automatically seek to the position of the server.
Tested on Android, Windows phone, Windows, OS X, and Linux.
Setup
If you don't want to install anything, just download the compiled version. Otherwise, read on ->.
git clone https://github.com/schollz/musicsaur.git
cd musicsaur
go get ./...
go build
Then copy the configuration file
cp config-go.cfg config.cfg
and edit line #5 with your music folders. Then simpily use
./musicsaur
to start up the server!
I suggest using ffmpeg
as it will make syncing much faster. Installation is easy:
sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install ffmpeg
Some notes
- If you don't hear anything, the client is probably trying to synchronize. The browser automatically mutes when it goes out of sync to avoid the headache caused by mis-aligned audio. You can see synchronization progress in your browser console.
- If you still dont' hear anything, and you're using Chrome browser on Android you need change one of the flags in chrome to allow audio without gestures. To do this, copy and paste this into your Chrome browser:
chrome://flags/#disable-gesture-requirement-for-media-playback
- If you want to play music from a Raspberry Pi, just type this command (works on headless):
xinit /usr/bin/midori -a http://W.X.Y.Z:5000
OR
xinit /usr/bin/luakit -u http://W.X.Y.Z:5000
Screenshot
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
History
- 08/09/2016: Version 1.5 Release
- 03/11/2016: Version 1.4 Release
- 12/26/2015: Version 1.3 Release
- 12/19/2015: Version 1.2 Release
- 12/18/2015 (evening): Version 1.1 Release
- 12/18/2015 (morning): Version 1.0 Release
Credits
- James Simpson and Goldfire studios for their amazing howler.js library
- Zach Simpson for his paper on simple clock synchronization
- Everyone on the /r/raspberry_pi and /r/python threads for great feature requests and bug reports!
- ClkerFreeVectorImages and OpenClipartVectors for the Public Domain vectors
- mholt for the invaluable
Caddy
- tcolgate for the
mp3
package - bobertlo for the
go-id3
package - BurntSushi for their
toml
library