Why should you use Moosic?
Command Line Power
Moosic is a great music player for you if you are a command-line junkie. One of the most important guiding principle behind Moosic's design is to allow the user to easily and completely control the playing of large lists of songs with shell commands. This means that Moosic can be controlled automatically through shell scripts, or controlled remotely through an SSH connection.
Sophisticated and Dynamic Playlist Rearrangement
Moosic lets you combine simple operations in powerful ways to create and rearrange the list of songs to be played. Besides such usual operations as sorting, shuffling, and reversing, songs can be moved around within the queue (either one at a time or in a group), inserted at a specific position in the queue, or filtered out according to a regular expression. One of my favorite features is the "stagger" family of commands, which allow you to create a song queue that alternates regularly (round-robin fashion) between several different groups of songs.
Unlimited Song Format Support
Moosic is completely file format neutral. It can play music in any file format, as long as you have a low-level player program (like mpg123 or ogg123) that can play individual songs in that format. When you have a music collection that includes many different file formats, you should be able to freely mix songs into a playlist without worrying about the file formats of the different songs.
If you configure it correctly, Moosic can even manage and play songs that aren't stored on the local hard disk (or other mounted filesystem), such as songs that are streamed from the Web and referenced with a URL. You just need a consistent way to reference the alternate song source and a program that can play songs from that source, and then you can set up a Moosic handler for it.
User Interface Flexibility
Moosic doesn't limit you to the command-line. Its flexible client-server model allows developers to create any sort of user interface to control and query the server. Since the XML-RPC protocol is used to communicate with a Moosic server, a Moosic client can be easily written in just about any programming language a developer could want and on virtually any platform in existence.
For example, the GNOME Moosic Applet provides a basic, but useful interface for GNOME and PerlPanel users.
moosicWebGUI is an excellent web-based interface for Moosic. It was written by Eckhard Licher.
Ampache can optionally use Moosic as its back-end for playing music.
If you are interested in writing a Moosic client with PHP, you will probably be interested in the API wrapper for PHP written by Sven Salzwedel, called PHPMoosicLib.
Steffen Wurm wrote moosicWatch, another web-based interface to Moosic, but it no longer seems to be available. It was implemented in PHP, and used Sven Salzwedel's wrapper class. Jayson Cofell has taken this code and developed it a bit more.
If you want to write a Moosic client in Perl, you'd probably be interested in the library interface written by Florian Ragwitz (a friend of Sven Salzwedel): Audio::Moosic. This Perl module needs LWP::Protocol::http::SocketUnix (by the same author) in order to communicate with a local Moosic server through a Unix socket.
Many other music players are inextricably bound to their GUI. In my opinion, this is poor design. Common wisdom dictates that it is always a bad idea to bind interface to implementation too tightly, since doing so severely restricts flexibility. Playing music is something that you experience primarily with your ears, not your eyes, so the GUI for your music player should be optional. Practically speaking, I would find it very annoying to have to kill my music player just because I want or need to restart the X11 server.