NAME

jukebox - play selected music continuously in random order


SYNOPSIS

  jukebox [options] [--] [selector...]
  options:
    -h, --help            - Show the help message then exit
    -V, --version         - Show the version message then exit
    -d, --debug           - Print debug messages
    -a, --all             - Select everything (not just your favourites)
    -j, --strict          - Search for selectors only in "Jukebox" tags
    -m, --mandatory       - Search treating all selectors as mandatory
    -n, --list            - Just list matching tracks (don't play them)
    -x, --extra           - Show artist/album/title as well (implies -n)
    -e, --elide           - Suppress duplicate artist/albums (implies -x)
    -v, --withtags        - Include tags when listing tracks (implies -x)
    -s, --sequential      - Play tracks sequentially, then stop
    -c, --continuous      - Play continuously (even if -s)
    -i, --nouser          - No user interaction between tracks
    -g, --gap seconds     - Inter track gap (in seconds)
    -f, --playlist file   - Play tracks from a playlist file
    -r, --root dir[:dir]* - Override default music directory (/mnt/music:/mnt/spare)
    -t, --tocglob tocglob - Override default tocfile glob (00*.toc)
    -p, --player player   - Override default music players (wav=play,mp3=mpg321 -q,ogg=ogg123 -q,flac=flac -sdc % | play -t wav -)
    -u, --unlink          - Unlink playlist (see -f) after reading it
    -T, --tagstats        - List known selectors/categories/tags
    -P, --perl            - Perl junkie (perl re in search criteria)


DESCRIPTION

jukebox plays selected music continuously in a random order. By default, jukebox only plays your favourite tracks (see below). If the -a option is supplied, any tracks might be played.

If selectors are supplied, jukebox plays matching tracks. For a track to match, it must:

  - match all of the selectors that start with '+',
  - match none of the selectors that start with '-', and
  - match at least one of the ordinary selectors.

Searches are case and accent insensitive. Phrases can be quoted with single or double quotes (courtesy of the shell).

jukebox searches tocfiles for selectors in:

  - "Artist:", "Title:" and "Jukebox:" (and any other) headers,
  - track titles, and
  - track specific "[Jukebox: ...]" tags.

Your favourite tracks are defined to be those that are tagged with your login name. The default selector is your login name.

The -j option causes jukebox to ignore artist names and album and track titles. The search for selectors only looks at ``Jukebox:'' headers and track specific ``Jukebox:'' tags. This searches for tracks by category rather than by name.

The -m option causes all selectors to be treated as mandatory. This has the same effect as adding a '+' character to the start of every selector that does not already start with a '+' or '-' character.

The -f option plays tracks listed in a playlist file rather than using selectors to search for tracks. The format of the playlist is one filename per line (just like the output of the -n option). The -u option causes this file to be deleted after it is read.

The -s option plays the selected tracks in order, and then stops. This can be used to play a single album. If only a single track is selected, then the -s option is assumed. Adding the -c option repeats the in order selection continuously rather than stopping. This can be used to drive the neighbours mad while you're on holiday.

After each track is played, the user is asked whether or not they wish to continue. If there is no answer within two seconds, jukebox continues with the next track. If the user enters 'n' quickly enough, jukebox will terminate. The -i option causes this interaction to be suppressed, so jukebox will continue until it is killed by external means. The -g option causes a pause between tracks.

The -n option just prints the selected tracks without playing them. The -x option adds the artist, album and track titles to this output. The -e option suppresses duplicate artists and album titles from this output (the fields are present but empty). This reduces network traffic. The -v option adds a field containing each track's jukebox tags. This is to aid remote robot clients that need more information for compiling playlists. The -e and -v options imply the -x option and the -x option implies the -n option.

The -t, -r and -p options override various default values. The argument to the -r option can contain a colon separated list of directories to select tracks from multiple places.

The -P option allows perl ``regular expressions'' in the search criteria.

The -T option lists all categories used in all tocfiles (after the ``Jukebox:'' header or in track specific ``[Jukebox: ...]'' tags). After each category there are four numbers:

  - the number of albums that match the category,
  - the number of individual tracks that explicitly match the category,
  - the total number of tracks that match (inherited or explicit), and
  - the number of selected tracks that match the criteria.

Here's an example set of jukebox tags but feel free to classify tracks however you see fit.

  rock rockabilly glam punk black metal thrash surf garage pub grunge seattle
  jazz ragtime bebop bigband swing boogiewoogie dixieland free acid funk jive
  blues delta stlouis louisiana chicago downhome gutbucket stomp prewar dirty
  reggae ska dub ragamuffin rap gansta pranks
  techno rave hiphop triphop trance club house dance eurotechno eurohouse
  eurodance tribal urban gogo gabber hi-nrg newbeat freestyle anime gfunk
  industrial breakbeat hardcore drill grindcore ghettotech biphop idm
  country western bluegrass americana texmex christian rodeo yodeling square
  honkytonk bakersfield outlaw queercore riotgrrl doowop
  pop britpop boyband girlband rnb bubblegum jpop synthpop skiffle anti twee
  alternative indie newage newwave darkwave fusion crossover nova gothic
  classical symphonies operas operettas arias cantatas fugues canons
  concertos chamber sonatas musique-concrete divas counter tenors oratorios
  madrigals motets serenades preludes waltzes ballet suites
  folk shanties filk ballad torchsong gospel ccm
  avantgarde primus booty chanson jam terror negerpunk polskpunk
  space cult psychedelic madchester shoegazing
  disco soul motown muzak crooners lounge barbershop karaoke
  childrens nursery rhymes lullabies holiday
  military march tattoo ballroom

  world european african asian indian australian pacific american
  usa english british canadian oz aboriginal celtic irish welsh
  french spanish portuguese italian german tibetan chinese japanese
  hawaiian cajun latin carribean andean brazillian cuban arabic
  egyptian pakistani hindustani continental goa algerian tuvan gypsy
  armenian azerbaijani greek iranian iraqi israeli kurdistani kyrgyztani
  lebanese turkish

  bossanova calypso candombe carnatic chacha conjunto corrido fado
  flamenco junkanoo mariachi merengue norteno ranchero rhumba salsa
  samba tango tejano vallenato zydeco taiko afrobeat afropop hi-life
  mquanga juju soukous township qawwali rai polka rebetiko gamelan
  zarzeula klezmer chazzanut

  male female vocal instrumental spoken poetry acappella chant choral
  acoustic electric electronic power ambient microtonal noise fractal

  tv radio movie theatre showtunes dancehall musical cabaret
  vaudeville broadway soundtracks themes

  string guitar piano brass woodwind drum bass percussion

  gregorian medieval romantic renaissance baroque contemporary
  traditional modern early late recent new progressive
  neo mod post retro revival

  solo duet trio quartet band choir orchestra

  north south east west central

  live studio

  20s 30s 40s 50s 60s 70s 80s 90s 00s

  awesome excellent good fair bad crap weird

  comedy novelty happy depressing disturbing death relaxing

  political protest class gender race war peace

  hard soft easy loud quiet fast slow hot cool smooth explicit

  driving cooking gardening meditating housework washingup party


SIGNALS

When jukebox receives a SIGTERM signal, it sends a SIGTERM signal to any player processes and then exits. This stops the jukebox.

When jukebox receives a SIGUSR1 signal, it sends a SIGSTOP or SIGCONT signal to any player processes. This pauses and continues the current track.

When jukebox receives a SIGUSR2 signal, it sends a SIGTERM signal to any player processes. This skips to the next track.


EXAMPLES

Play your favourite tracks

  jukebox

List your favourite tracks

  jukebox -n

Create a playlist file of Eric Clapton tracks

  jukebox -n 'eric clapton' > eric.play

Play tracks from a playlist file

  jukebox -f - < eric.play

List all known tags and a histogram of their use

  jukebox -T -a

Play a single album in order, then stop

  jukebox -s +"janis joplin" +'cheap thrills'

Play a single song over and over and over again

  jukebox -c 'night and day'

Play female jazz singers of the 1940's (two versions)

  jukebox -j +female +vocal +jazz +40s
  jukebox -jm female vocal jazz 40s

Play anything but the Wiggles

  jukebox -- -wiggles


NOTE

If there is a jukebox network server running, then it is impolite to use jukebox directly. Use jukeboxc (in command line or graphical mode) instead.


NOTE

The long options are only available if the value of the juke_opts variable in /etc/jukebox.conf is ``long''. This is because the standard perl module, Getopt::Long, requires the presence of a ``--'' argument before any arguments that begin with ``+'' because it thinks they are options (unless $POSIXLY_CORRECT is set in the environment). Since it is expected that this program will receive many command line arguments that begin with ``+'', the default is to only handle single letter options via the Getopt::Std module. Note that, with either short or long options, ``--'' must be used whenever there are search terms that begin with ``-'' because these really do look like options.


FILES

  /etc/jukebox.conf - System wide configuration file
  ~/.jukeboxrc      - User specific configuration file


SEE ALSO

  rip(1), riptrack(1), mktoc(1), toc2names(1), toc2tags(1),
  cdr(1), cdrw(1), burn(1), burnw(1), cdbackup(1), mp3backup(1),
  jukebox(1), jukeboxc(1), jukeboxc.jar(1), jukeboxd(8),
  jukeboxd-init.d(8), jukebox.conf(5),
  http://raf.org/jukebox/Jukebox-HOWTO


AUTHOR

raf <raf@raf.org>