The Djukebox system is made up of a set of distributed components:
For a functional installation, you need to run at least one of each of these components.
The only catch is that there can only be one database.
A basic system looks like this:
+----------+
|MP3 Server|\
+----------+ ---
/ || \ __(
/ || +-------+ (
/ +--------+ / -|djtella|----( G
/ |Database|- / +-------+ \ n
/ +--------+ ) u
/ // \\ ( t
/ // \\ ) e
+-------------+ +-----------+ / l
|Stereo Server| |Info Server| ( l
+-------------+ +-----------+ ) a
\\ // / N
\\ // ( e
+------+ \ t
|Client| (
+------+
The database is PostgreSQL.
I choose Postgres over MySQL for a number of reasons. These Include:
The database stores all kinds of stuff. The major structure is that it likes to classify tracks by artist-album-song. It manages multiple encodings of the same song, as well as multiple copies of the same encoding. There is support for other formats (besides MP3) as well.
It works by reading a list of directories to scan from /etc/djukebox.conf. It will poll these directories for differences periodically so all you have to do is add music and the system will eat it up.
There are plans to add seek functionality to djstereod as well so you can rewind (or fast forward) the currently playing track.
Right now djinfod just allows you to query the list of available artists, albums from an artist, and tracks from an album. More advanced search functionality is planned.
The Ripper has a 'hungry' mode where it will try to eat as many cd's as you can throw at it, given available disk space, encoding all the while to make more.
The Ripper can also add the tracks to the system for immediate consumption as it finishes them. It stops just short of being able to play the cd while it is ripped.
It responds to gnutella searches and routes gnutella traffic. You can then download search results.
The other cool thing about djtella is that it uses the same djstreamd interface to the jukebox that djstereod does. This means that you only need one djtella instance for an entire djukebox installation. File downloads are streamed from the mp3 host on demand, then proxied through djtella to some happy gnutella user somewhere.
This makes it easy to develop a variety of user interfaces, each suited to a different task.
Currently the only usable client is the mod_perl based one. This client provides an easily accessable interface to the whole system. With the mod_perl client running on one of your machines all you need is a machine with a web browser to control the system.