Backend for the Harmony music player
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bootstrap
musicservice
vendor
.gitignore
.travis.yml
LICENSE
Procfile
README.md
controls.go
dao.go
handlers.go
main.go
routes.go

README.md

Harmony Music Player - Web app

This is the backend for the harmony music player, located at my website.

Harmony music player was created to scratch a personal itch : playing music from all available sources seamlessly, without disconnects like:

  • licensing restrictions of different platforms - spotify does not have good bollywood music, Saavn does not have good classic rock etc.
  • having audio-only tracks - if you want to watch the video, open up youtube separately.
  • alternatively, maintain a local media library - take pains to discover new music, then download it, and carry it in a hard disk. No cross-device music!
  • Music discovery - have separate platforms for music discovery, with their own restrictions. In recommending related tracks, nothing beats Youtube - but there is no music player there (no Youtube red in India).
  • Track metadata - something like MonkeyRok in MediaMonkey - a dashboard with video, related tracks, artist information - there are different platforms for this - youtube, last.fm, songmeanings but no unified interface.

So I built Harmony to provide that unified interface - all music sources, all metadata sources, and total portability of music. It is still very much a task in progress, but it has become my default media player now.

Features :

  • Search and add, or remove tracks from the playlist
  • See recommended tracks on the right sidebar, click on any track to add to playlist
  • Click the love icon to add a track to add it to your media library.
  • Click again to remove.
  • never ending playlist - Harmony automatically adds a random track from your media library if the playlist ends.
  • Pause, backward and forward supported.
  • State persistence - the track, paused/playing state and the seek all restore when you relaunch Harmony.
  • Library in the cloud - access your Harmony from any device, just by logging in.
  • Currently only youtube as a music source is supported.

Features in the pipeline:

  • More music sources - soundcloud, local mp3 files etc
  • better search feedback - give search results (say top 5) and option to enqueue one of them.
  • Mobile app
  • Download tracks for offline listening (via dropbox)
  • Custom playlists to organise tracks instead of a global playlist.

Known Bugs:

  • random state inconsistencies, esp when buffering tracks.
  • high response time when starting, due to Heroku's dyno sleeping.

Stuff used to make this: