QT >= 3.2.1 is required.

If you are using CVS or a CVS tarball, run

./autogen.sh

Type

./configure

If you have the mpeg3 library, the path to the location of the lib must
be given to configure as a parameter;

./configure --with-mpeg3includes=/path/to/includes --with-mpeg3lib=/path/to/lib

--with-mpeg3lib can be omitted if the library is in /usr/lib or /usr/local/lib

The homemade external control unit is no longer supported as of DJPlay 0.4.0

Also, building as root is no longer required.

make

The first time around, a set of Qt plugins will be built. 
These will not be installed into your Qt designer. If you wish to use them in your own projects, feel free to cioy then to your plugins/ directory.

After DJPlay has built, type

make install

to install DJPlay to /usr/local/bin.

To install to a different location, use --prefix=/your/install/prefix as an
argument to configure.

DJPlay uses libxml2 to allow you to edit icecast/ices2 configuration files.
These files are kept in ~/icesconfig and DJPlay can be automatically configured
to use them. For this to work, the ices executable must be in your PATH.

If you own a Hercules DJ Console, it will be autodetected. For this to work, you must have libusb installed.
You also need to heve the planetCCRMA@home package, or you need to modify udev/hotplug to allow access to /proc/bus/usb or /dev/bus/usb, respectively.

The planetCCRMA@home kernels and utilities are strongly recommended, because they give your system the realtime capability that Jack and DJPlay depend on for low latency audio.

Some files are placed in /usr/share/djplay. These are controller map files, which map controllers to DJPlay internal functions.

The format of these is as follows:

<byte offset> <mask> <controller>

Each line consists of 3 integers. The first is a byte offset into the binary message received from the control unit. The second is the 8-bit value to mask it with, and the third is the controller id to send to djplay for this value.

Within limits, this can be used to remap controllers, as long as they are of the same type.

Read the code for more information.

