Ubuntu – GUI-less music player with auto-updating library

mediamusicsoftware-recommendation

I've reached the point where I want to write my own music player (it comes to us all). However, all the things I want to do are UI-based; it would be daft for me to have to reimplement managing a library, reading ID3 tags, creating playlists, and so on. Therefore, what I'm looking for is a music player which doesn't present a UI (or can have that UI hidden) so that I can implement my own entirely custom UI without having to build all the infrastructure as well. This "underlying" music player might be a curses interface with a remote control socket protocol; it might be a library with Python bindings; it might be a Gtk app which takes an option to not present its GUI and can be controlled over D-Bus… I don't know.

Things I non-negotiably want this "back end" to do:

  1. Be remote-controllable from a Python program. (As mentioned, I'm open to lots of methods of remote control; a socket, D-Bus, a CLI tool, whatever)
  2. maintain a library of music – that is, scan my music for metadata and be able to address music by that metadata (so I can search for "beatles" and find tracks, not just those which match on the filename)
  3. monitor a folder for changes and load those changes (new files, altered files, deleted files) into the library without having to be told to do so
  4. let me provide my own GUI (hence the need for remote-controllability)

Things I'd really, really, really like but which aren't strictly necessary:

  1. Ubuntu sound menu integration
  2. Be packaged for Ubuntu already and in Software Centre

I've looked at a few alternatives and rejected them, but I might be wrong: if I'm wrong about any of these, do please correct me.

  • cmus: cannot monitor the library for changes (needs to be prodded with update command). Also, AFAICT the remote control is primarily to make the curses interface do things; it's hard-to-impossible to use the remote control to say "give me a list of all songs matching 'beatles'"
  • mpd (and some client): cannot monitor the library for changes (needs to be prodded with "update" command)
  • moc: cannot monitor the library for changes
  • banshee (and banshee's back end, Nereid (?)): as far as I can tell, can't be controlled by a Python program: I'd need to write my new front end in C#
  • rhythmbox, guayadeque, audacious, quodlibet, clementine, noise, beatbox, deadbeef, gmusicbrowser, xnoise: can't turn the GUI off and replace it with my own

So, I'm looking either for explanations of how to do what I want with the above, or suggestions for alternative tools that I could use instead of those!

Best Answer

XMMS2 Install xmms2

This command line player is a further development from XMMS. It comes with many features such as:

  • play your music.
  • manage your music library
  • use collections to help you organise your music as you like
  • allow you to control it using a variety of clients.
    from the XMMS2 Wiki

There also is a lot of information on how to develop a client for XMMS2.


Another source of information on how things could be done in Python is the Exaile project.