Shuffletron is a music player for Linux. It runs in the terminal, with a textual interface, and has support for search, labelling files using arbitrary tags, a queue, and an alarm clock mode. It is designed to let you spend more time playing music and less time clicking around a GUI: the tagging features help organize and make note of interesting songs, and the search features allow quickly finding specific songs when you want to hear them. It starts up quickly and copes well with tens of thousands of files. It is written in Common Lisp (but don't let that put you off). For audio, MP3 playback, and ID3 parsing, it uses my Mixalot suite of libraries. Here's what it looks like in action:

Update 3/19/10: The Shuffletron source code now lives at github. The 0.0.5 version in progress has some useful new features, notably a random play command, and commands for tagging/untagging all songs in the selection. Also, a bug where dates were printed correctly has been fixed. Behavior of blank lines has been changed to function as the "back" command rather than resetting the selection (I might revert this if it proves more annoying than useful). There's also code for a status bar which displays the current artist/title at the top of the terminal, currently disabled.

Update 7/6/09: Shuffletron 0.0.4 is released. Only one superficial change to the player (numbers printed when scanning new ID3 tags were wrong), but fixes a bug in libmpg123 that caused crashes on certain files. Thanks to Leslie Polzer for identifying this issue. All binary releases (both 32 and 64 bit) include their own copy of libmpg123 now.

Update 7/5/09: Shuffletron 0.0.3 is released. New binaries should solve the problems encountered with the previous release. New features include:

Thanks go to Alex Charlton, Robert Lieberman, and Leslie Polzer for reporting issues with the previous binaries, and Luis Oliveira and Stelian Ionescu for assistance with CFFI and Osicat issues.

The current version of Shuffletron is 0.0.4. It requires libmpg123, and installing the program rlwrap is strongly recommended. Binary releases include their own copy of the libmpg123 library.

Binary releases are available for the following platforms:

Compiling from source requires SBCL or a recent version of the Clozure CL compiler (SBCL is recommended). Compiling a binary follows the standard make / make install process and uses the implementation's respective application delivery support to produce an executable. Clozure CL users may have to edit build-ccl.lisp to tweak the ASDF search path.

If building from source on a 32-bit x86 machine, please see the INSTALL file for special instructions pertaining to the mpg123 library.

The code is released under an MIT-style license. Report bugs to Andy Hefner <ahefner at gmail dot com>