Internet DJ Console README.
Written by and copyright Stephen Fairchild.
IDJC is released under the terms of the GNU General Public License.
Project began 25th March 2005.

...

What is IDJC?

Internet DJ console is a free software application for people wanting to make radio shows on the internet.  I wrote it with the home hobbyist in mind.

What formats are available?

Internet DJ console supports live streaming in Ogg or MP3 formats to Shoutcast and Icecast servers.  It also has a record facility that does both Ogg and MP3.  Multiple bitrates are supported.

What are it's main features?

Two main media players.  A jingles/interlude player (interlude fills the background with music when you are not playing anything).  A basic crossfader.  A stream shut-off timer (just in case you forget).  DJ Alarm (an alarm tone to alert you when the music is about to stop).  Mute buttons that enable you to preview the songs you might want to play without affecting the stream/recording.  The aux input facilitates the connection of other JACK audio applications to IDJC.  IDJC outputs two audio streams.  The second that appears on the rear speaker terminals of the soundcard is intended for the listeners and can be used for a truly live show.  A VOIP feature allows the taking of calls on and off-air (telephone icons).  IDJC can announce the tracks you are playing to IRC (internet relay chat) using the X-Chat plugin (supplied). 

...

Dependancies:
     
Please make sure you have the following on your system before attempting to compile Internet DJ Console.  If you lack some of the recommended options, functionality will be reduced, and you will get nagged a lot.

	Python				(required)
        eyeD3				(required)
        Jack Audio Connection Kit 	(required)
        PyGTK				(required)
        libshout			(needed for live streaming)
        FLAC				(highly recommended)
        LAME				(highly recommended needed for mp3 streaming)
        MPlayer				(recommended if you like music)
        vorbis-tools			(highly recommended)

...

Compilation instructions (please read through at least once before typing in the commands):


Untar the source tarball and cd into the source tree:

	$ tar xzvf idjc-VERSION.tar.gz
        $ cd idjc-VERSION
        
The following line may be familiar to you.  It is used to generate the Makefile.  To use the default configuration you would type:

	$ ./configure
	
You may specify optimisation flags on this same line such as in my case CFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer".  This obviously only applies to athlon-xp based systems.  You can also specify -prefix="/usr", which is a common option to choose.  Using optimisation will reduce the amount of CPU usage of the mixer.

Now type make.

        $ make
 
The next command needs to be run as root.
 
 	# make install

Now to launch IDJC (not as root).
 
 	$ idjc

If you choose to run IDJC locally from the source tree instead, rather than install it, you can so as follows:

	$ make local
        $ ./idjc

You only need to run make local once, which will also do the make phase as well.  It will reconfigure certain files that contain information on where the various components are.  If you choose to "make install" afterwards, you will need to type "make" again or the installation will have ties back into the source tree which will cause problems when you delete it.

Problems:

If idjc didn't start it was probably because the JACK sound server is not currently running or is not configured to start automatically.  To configure JACK to automatically start you need to type something like this:

	$ echo "/usr/bin/jackd -d alsa -r 44100 -p 2048" >~/.jackdrc

Now when you start IDJC the JACK sound server will start automatically with the settings specified in the quotes.  Note that the correct and full path to jackd must be specified.  If it didn't work try typing "which jackd" in a console and change the text as appropriate.

Should you choose to start JACK manually instead you can do so like this:

	$ jackd -d alsa -r 44100 -p 2048

In order to start JACK it is important that no other applications or sound servers are using the sound card.  Sound servers should be set to auto-idle if at all possible, else disabled.

If you are still having problems starting JACK, try removing the -p 2048.  Basically the higher this number is, the fewer audio dropouts (called buffer X-runs) you are likely to experience, but at the cost of latency.  Not all values for p are likely to work.

Problems:

If you just ran IDJC and were disappointed to discover that most of the server window is greyed out and you can't therefore do any streaming this is because libshout was not found on your system when you ran ./configure.  To fix this you need to install libshout and rerun ./configure and do make and make install again.  It would be a good idea to install all of the dependancies if you want all of the features to work.

For those of you experiencing audio dropouts called buffer X-runs in JACK parlance try increasing the setting for -p when starting jackd.  Valid values would appear to be powers of 2 so 128, 256, 512, 1024, 2048.  Ideally get a linux expert to compile you a realtime capable kernel then you can start JACK in realtime mode instead.  With the ideal kernel (ck-sources) in realtime mode I can get super low latency and reliable operation with a -p setting of just 32 samples.  Using the ck-sources kernel with JACK, out of realtime mode, will actually degrade performance.

Other langauges:

Currently both the english and german (deutsche) language are supported by IDJC.  Which langauge to use is determined by the LANG environment variable.  If LANG is not currently set by default on your system to run IDJC in german you could type something like this:

	$ LANG="de_DE" idjc

This will only work if the de_DE locale is compiled on your system, which is probably is.  Note that LANG is a system-wide environment variable recognised by many programs.
