Very briefly,
Make sure your copies of mpg123 and ogg123 (the latter from the vorbis-tools package) work properly.
Note: mpg321 is not the same as mpg123, and has poor support for HTTP streaming of MP3 files - if you're on Debian Linux, try using update-alternatives to select the real mpg123 if you're having problems with MP3 sound quality.
If you want support for a volume control, compile up
hmix (a copy of which can be found in the ../util/ directory) and put it on the
path so that it's accessible to the running application
server.
Download and install the Erlang RFC4627/JSON/JSON-RPC module
by darcs get http://www.lshift.net/~tonyg/erlang-rfc4627/,
compiling it, and making sure it's available on your Erlang
path (e.g. by symlinking it into your
/usr/lib/erlang/lib directory, or by copying
the *.beam files into the Erlang Jukebox's
ebin directory).
Type make. If all goes well, try make
run, which will start the application in an
interactive Erlang shell. Running make daemon
will start the application running in the
background. Running make stop will shut down a
running jukebox.
The application is usually accessible on port 8888 (see httpd.conf if you want to change this), so once it's running, you should see the main user interface at
The first thing you'll need to do is add a root URL for the application to spider. Visit the configuration interface at
http://localhost:8888/config.html
Enter a URL
(e.g. http://mymachine/path/to/my/iTunes%20Folder/)
in the field next to the "Add root" button, and click on the
button. The system will start scanning the directory hierarchy
beneath the URL you entered.
When it's done, the URL will appear in the "All roots" section of the display. Click the "Save changes to disk" button to cause the server to save a snapshot of the current index to the disk.
execv(3) and
kill(2). The execdaemon.erl module provides an
Erlang wrapper around execdaemon.c's functionality.
.m3u playlist, moving a track around
in the queue, removing a track from the queue, skipping the
remainder of the currently-playing track, and pausing and
unpausing the current player process.
queue module. Each entry in
a track queue consists of an ID, a track URL, and optionally a
username associated with the entry. The track queue structure,
and its contained track structures, are the core structures
used in communication between the user interface and the
server side of the application.
hmix to
query and adjust mixer settings.
The user interface is constructed around static HTML pages which load static Javascript files from the server. The javascript files in turn access JSON-RPC services on the server using XmlHttpRequest.
initClient() as a window onLoad
callback. When client.js is loaded, the first thing it does is
build a proxy to the (non-configuration) server-side
functionality of the application.
The configuration tool is similar in construction to the main user interface, but is much simpler. It provides an interface to adding, removing and rescanning root URLs (with the functionality implemented by trackdb.erl, v.s.) and to saving a snapshot of the current in-memory database to the disk.