My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Links

Khövsgöl

Lean and Mean

  • Simple two-pane user interface: your current playlist is on the left and your library is on the right, and you can drag and drop between them.
  • Yes, you can even drag from your playlist to your library. In Khövsgöl your saved playlists appear as "custom compilations" in your library, which you can edit in-place.
  • Switch between multiple styles for viewing each pane: group by albums, by artists, by years, etc.

At first glance, Khövsgöl is yet another easy-to-use, fast, flexible music player and library/playlist organizer that can handle even very large music libraries with ease. If you're a demanding minimalist -- like the author -- you will love Khövsgöl.

Sharing

But then you realize that internally the "server" runs separately from the user interface, and can stream music to clients, even if they are not running Khövsgöl. Thus, Khövsgöl lets you:

  • Listen to other people's music on the local network. You can either play music independently from their server, or "plug in" to whatever somebody else is listening to. You can DJ for each other!
  • Have a single server running which all other users can use to play music. All the users need to do it run in client mode. This is great for offices, where people can pool all their music into the central server and listen from all of it.

Pronunciation of "Khövsgöl"

Khövsgöl is the name of a beautiful lake in Mongolia, one of the sources of Siberia's Lake Baikal. One hopes that the purity of its waters will cleanse bloat and detritus from this software.

For the lazy, just say "HOOVS-gool." Easy!

The Khalkh Mongolian pronunciation of the word is as follows: kh is pronounced like the ch in "Bach". The ö vowel is somewhere between a Mid-Western American oo in "booth" and a o in "oar". The final l is a breathy sound, like the Welsh ll. It's pronounced somewhere between an English dark l and a whispered th.

(I'm referring to common English pronunciation only because this description is in English, the contemporary lingua franca of open source software. I apologize if this pronunciation guide is less helpful to native speakers of other languages!)

Technology

Khövsgöl can stream music over the network using PulseAudio or EsoundD for clients that have those audio systems, or an internally implemented RTP for clients that don't. The RTP receiver that can run separately from the client, so you can listen to network music without Khövsgöl running (and on headless machines). Additionally, Khövsgöl lets you plug into an IceCast server, so you can broadcast Internet radio, thus escaping the confines of your local network. We even support JACK for professional audio production.

There are other nifty technological touches:

  • Advertise and discover Khövsgöl servers on the local network using Zeroconf (which Apple calls Bonjour)
  • Desktop integration: pop-up notifications for track changes, Ubuntu's music menu, Unity's launcher, GNOME's keyboard media keys
  • Rich web client for easy remote access (not done yet...)
  • Command line client for easy remote access
  • Scrobbles to Last.fm
  • Works as an MPRIS server (version 1.0 and 2.0)
  • Flexible GStreamer-based media backend
  • Built for GTK+ version 3, but falls back gracefully to GTK+ version 2

Developers, Developers, Developers, Developers

As an open source project, Khövsgöl makes it easy for developers to integrate with it or reuse its parts. It's designed to be very hackable!

  • Written in Python (2.7), GPL licensed.
  • Khövsgöl server has a well-documented, RESTful, JSON-speaking URI-space, so it's easy to create your own user interface. It's a more flexible alternative to MPD and XMMS2.
  • Simple plugin API. By design, plugins are allowed to do anything they want.

Please learn from and reuse our code, created with some hard-earned experience:

  • Our custom multi-threaded, minimalist REST server and client named "Nap" (get it? have a rest!); includes a simple implementation of URI templates; mimics Prudence's RESTful API for easy routing
  • Neat tricks with GStreamer (look, ma, no hands!)
  • Magic fallback from GTK+3 to GTK+2 (happy Python duck-typing and monkey-patching)
  • Python modules to make threading and thread pools a piece of cake; mimics Java's Executor model and Futures
  • Generic, thread-safe signals in Python
Powered by Google Project Hosting