Obsequeium uses Perl, Apache, MySQL and Zinf. Without these components
Obs would not be possible. Currently the obs server only runs on Linux. If
you are interesting in porting it to other platforms, please let me know.
All the data about the music and the playlists are stored on the MySQL
server. The MP3s are stored on the local file system in seperate volumes.
A volume can simply be a directory where Obs can stash MP3 files.
Unfortunately obs does not check available disk space right now -- you'll
need to make sure it doesn't run a partition out of space. (This will
obviously need to get fixed soon)
The web interface for browsing the music database, creating playlist
and manageing the play queue are done via the web. In this case
perl scripts talk to the database to manage the data on the server.
Using the mod_perl plug-in for Apache SIGNIFICANTLY speeds up the
processing of the scripts.
The Obs server is a multithreaded application that talks to the
database server to find out what tracks are in the play queue. The
top 3 rows in the play queue are locked for caching purposes. (my
obs system at home has two 4 CD-ROM changers, and the obs server
manages the switching of the disks and caching tracks to the server.
Using the cache there is never an interruptiong of the music stream)
The obs server also responds to requests via port 4420. Connecting to
that port allows a client to give the 'next' command which moves
the play queue to the next track, and it allows the user to
submit tracks remotely (anyone with internet access can theoretically
submit tracks into any obs server. We'll need to tighten that up.)
Via the protocol any user can also download MP3 -- the Rio.pl script
downloads a playlist straight into the Rio player.
The playlist manager script is a bit too simple for it own good. In
order to move a track to the top of the playlist you need to
click the up button way too many times. We've got a new interface
prettier, intregrated and more functional) in the works. Stay tuned.