A music player based on search and tagging, with a terminal UI, for Linux, written in Common Lisp.
Branch: master
Clone or download
ahefner Merge pull request #5 from vindarel/master
README: build instructions, doc, screenshot.
Latest commit c84a0a4 Sep 6, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
extra/web Less debugging noise. Sep 16, 2011
src Don't hang in sb-ext:exit Aug 31, 2018
.gitignore
INSTALL Shuffletron version 0.0.4: Fix file numbering during id3 scan, build … Jan 8, 2010
LICENSE Split shuffletron into different files, add a .gitignore and TODO. Nov 23, 2010
Makefile
NEWS Seek command now understands relative timespecs (prefix with +/-) Apr 13, 2011
README.md README: build instructions, doc, screenshot. Sep 1, 2018
TODO Ogg/FLAC support. Jan 7, 2012
build-ccl.lisp
build-cl-launch.sh Add script to build shuffletron-bin via cl-launch. Apr 20, 2015
build-sbcl.lisp Fix Makefile to accomodate our new confederacy of tiny source files. Apr 8, 2011
id3-utf16.diff
img-search.png
load-ccl.lisp
shuffletron Multiple library support via --profile argument. Apr 10, 2010
shuffletron.asd

README.md

Shuffletron is a music player based on search and tagging, with a terminal UI, for Linux, written in Common Lisp.

Shuffletron is a text-mode music player oriented around search and tagging. Its principle of operation is simple: search for songs, then play them.

Build

First make the binary for your Lisp:

make shuffletron-bin  # sbcl
# make shuffletron-ccl
# make shuffletron-ccl64

Install the binary and link the libraries:

sudo make install

Run it via the script:

./shuffletron

Dependencies

On Debian, you first need a Lisp implementation. In doubt, install SBCL:

apt install sbcl

You need those dependencies for Flac and Ogg support:

 apt install libflac-dev
 apt install libvorbis-dev

Alternatively you could remove the related mixalot packages in the shuffletron.asd:

:depends-on (:osicat :mixalot :mixalot-mp3 :mixalot-vorbis :mixalot-flac)

Usage

Searches are performed by typing a / followed by the search string.

If ID3 tags are present, songs after a search are presented in the following form:

Artist, [Album,] [Track:] Title

If ID3 information on the artist and title is not available, the filename is printed instead.

In the leftmost column is some subset of the letters 'f', 'a', 'b', and 't'. These indicate which fields matched the query string, as follows:

f: Filename
a: Artist
b: Album
t: Title

Successive searches refine the result of previous searches, and the prompt indicates the number of items you're currently searching within. If there had been more than 50 matches, they would not be printed by default, but you could use the show command at any time to print them.

Following this is a column of numbers, starting from zero. These allow you to choose songs to play as comma (or space) delimited numbers or ranges of numbers. If the song is already in the queue, the number is highlighted in bold white text. Here, I decide to play song 8 then 0-3 by entering this at the prompt:

9 matches> 8, 0-3

The currently playing song is interrupted, and the chosen songs are added to the head of the playback queue. To see the contents of the queue, use the 'queue' command:

9 matches> queue
     (0)  Chromeo, She's In Control, 10: Ah Oui Comme Ca
     (1)  "........................"  1: My And My Man
     (2)  "........................"  2: Needy Girl
     (3)  "........................"  3: You're So Gangsta

Notice that the prompt changed from "library>" to "9 matches>" after our initial search. Also note that the queue command doesn't disrupt the current search results (this is why numbering in the queue listing is surrounded with parentheses, to indicate that entering numbers for playback does not refer to them).

To add songs to the queue without interrupting the current song, prefix the song list with + (to append) or pre (to prepend).

The queue can be cleared with the clear command, and the skip command skips the current song and advances to the next song in the queue. The next command is similar, but differs when looping is enabled: 'next' retains the current song at the end of the queue so it will play again, 'skip' does not.

The loop command toggles looping mode. In looping mode, songs are returned to the end of the queue when they finish playing, or when they are bypassed using the 'next' command.

When you've completed a search, a single blank line moves backward through the search history, eventually returning to the "library>" prompt.

If you've imported a large library, the ID3 tags may not have been scanned. In this case, the program will suggest that you run the scanid3 command. Scanning ID3 tags can be very time consuming, as each file must be opened and read from. Once scanned, ID3 information is remembered by caching it in the ~/.shuffletron/id3-cache file, so you only need to do this the first time you run the program. ID3 tags of new files are scanned automatically when the program starts unless there are more than 1,000 new files.

Additional help topics:

help commands
help examples
help alarms

Licence

MIT