I use XMMS as a replacement for my CD player. I used to listen to my CDs when I'm trying to catch sleep, until I noticed track switching is really fast and easy with .oggs/.mp3s.
My current XMMS rigging involves following:
- The player program itself...
- ...with a gigantic playlist, to which all of my relevant music files eventually get added to... These days I also use small separate playlists, for collections of songs. There's also GJay which is handy.
- Linux utility called "hotkeys" that handles the multimedia keyboard - play, pause, stop, track changes, volume control, everything when I'm sitting by the computer.
- LIRC plugin and the IR remote control that came with my TV card.
- XMMS InfoPipe plugin (written by yours truly). This is used to display the song information on the webcam page, and to use LIRC plugin to say the track titles with Festival speech synthesizer.
- XMMS CrossFade plugin to make song transitions smooth.
This is just about the best sound setup I've come across so far. For most of the time, the player itself is invisible, either by screen saver or buried under other apps on the screen. (I don't care much of visualizations - just too much distraction, thank you...) Song changing works just fine and the crossfades are configurable. The "alphabetic keyboard" on the remote doesn't work well enough for song picking (I have a full keyboard on my cell phone for SMSing, thanks for asking =) so the only practical way is to use song flipping with back/forward buttons, but otherwise the setup is just fine. And with a press of the "Info" button, it says the song name. Great when you can't look at the screen in the middle of the night!
Some basic information
XMMS originated as x11amp. x11amp was closed source, but otherwise pretty nice player - people liked it better than mpg123, which was one of the few players at the time (and all GUI players used it as the actual player, with varying degree of work) and x11amp was also a bit lighter than mpg123. Later on, x11amp was GPLed and became known as XMMS - sponsored by 4front technologies. Currently, the lead programmer is Peter Alm.
XMMS borrows a lot of ideas from Winamp. The skin format is precisely the same; Winamp skins work "out of box" with XMMS and vice versa. XMMS plugin interface resempled closely an older version of Winamp, but I think they are now substantially different.
Personally, I think XMMS is better than Winamp, because of some small factors: I think the Ogg Vorbis playing works better (no idea why Winamp keeps non-working with this!), playlist management is much better (I still don't get the logic behind Winamp's playlists!) and when I move the mouse cursor over XMMS it won't flicker like it would be its last day or something =)
There are couple of things I dislike, for example, ID3/Ogg comment editing isn't perfect (only ID3 v1, Ogg comment editing doesn't support any more fields than that, too)... Oh, yeah, and I wish the plugins would get more information from the song than just the "title" and file name. I used to critique the playlist manager, but apparently it is possible to move multiple tracks and resize the window after all... (thanks, seunghun).
Home page: http://www.xmms.org/
Developer's perspective
Having developed some plugins for XMMS, I can say XMMS is, from inside, a pretty cool thing and very well engineered. Too bad there's no much developer documentation - the only reference I have had is /usr/include/xmms/*.h.
Plugin development is pretty easy: Just #include your friendly plugin.h, define a structure that holds pointers to your functions, compile that as a shared library, and put that to appropriate plugin directory. Several types of plugins are supported: Input and Output plugins for different file formats and kinds of output devices, Effect plugins to satisfy your need of cheesy and not-so-cheesy sound enhancements, Visualization plugins for eye candy, and finally General plugins for things like remote control systems and information retrieval...
XMMS also provides API for remotely controlling the player and getting information (which is just what XMMS InfoPipe does =), configuration data management, and such.
XMMS uses GTK+ as its preferred user interface library, by the way...