qTunes rev-160

The main class is the QTunes Server, which parses the configuration file specified on the command line.


org.qtunes.auth The "auth" package contains the API interface to authorize user actions - managing logins, sessions etc.
org.qtunes.auth.spi An implementation of the "auth" package API
org.qtunes.console (old code, to be removed) control qtunes via a console
org.qtunes.core The "core" package defines a Service and it's Context.
org.qtunes.core.util The "core.util" package has some useful utility methods
org.qtunes.daap This package serves the DAAP and DACP protocols, allowing qTunes to a) serve remote copies of iTunes with streaming music, and b) allow the local Player to be controlled by the Apple Remote on an iPhone.
org.qtunes.db The "db" package defines the API for the database, which stores the tracks and playlists
org.qtunes.db.spi.simple An implementation of the "database" package.
org.qtunes.ff The "ff" package groups the set of all file formats parsed by QTunes - MP3, MP4 etc.
org.qtunes.ff.spi.mp3 The "ff.spi.mp3" package reads and write the MP3 File Format, including providing an AudioInputStream
org.qtunes.ff.spi.mp4 The "ff.spi.mp4" package reads (and will one day write) the MP4 file format.
org.qtunes.main The "main" package contains the main classes for QTunes run as an application
org.qtunes.player The "player" package defines the API for the music player
org.qtunes.player.spi The "player.spi" package has an implementations of the "player" API
org.qtunes.replaygain The "replaygain" package has classes to normalize an audio track to a specific volume, and to manage a simple database of stored normalizations
org.qtunes.scanner The "scanner" package searches the disk for new tracks parseable with the "ff" packages, and inserts them into the database
org.qtunes.speaker The "speaker" package defines the API for a speaker - an output device for a music player
org.qtunes.speaker.spi.airport The "speaker.spi.airport" package manages using an Apple Airport device as a speaker, via the AirTunes protocol
org.qtunes.speaker.spi.javasound The "speaker.spi.javasound" package wraps the Java Sound API as a speaker
org.qtunes.tagger The "tagger" package is a command line application that can normalize, edit tag and rename MP3 (and one day Mp4) files, using JavaScript to control the tags
org.qtunes.telnetd (old package)
org.qtunes.web The "web" package defines the abstract API for a Web Server
org.qtunes.web.spi.simple The "web.spi.simple" package defines a very simple implementation of the "web" package - a simple web server
org.qtunes.web.spi.sun The "web.spi.sun" package wraps the web server supplied with Sun Java 6 in the API defined by the "web" package.
org.qtunes.webplayer The "webplayer" package defines and implements a web interface to QTunes
org.qtunes.zeroconf The "zeroconf" package defines an abstract API for the ZeroConf network discovery protocol
org.qtunes.zeroconf.spi.jmdns The "zeroconf.spi.jmdns" package is an implementation of the "zeroconf" package that uses the JmDNS API


The main class is the QTunes Server, which parses the configuration file specified on the command line. This is an easily understood format, and mostly all it does is specify which Services to load and what their properties are. The various subclasses of Service interface (eg org.qtunes.scanner.Scanner, org.qtunes.daap.DaapServer, org.qtunes.webplayer.WebPlayer) actually do the work.

Each Service has its own package, and the "spi" packages provide implementations, or sometimes multiple alternate implementations, of an abstract Service API