# Internet DJ Console Homepage IDJC

##

#### Deciding if this is a good idea

The following list contains valid reasons for going to the trouble of installing IDJC from source.

- IDJC is absent from the repository.
- The repository version is ancient but functional.
- The repository version has features removed for fear of legal action.
- The repository version has a minimum set of features generally.
- The repository version is broken.

#### Removing old versions

It's a good idea to remove any old versions of IDJC at this point.

#### Installing dependencies

The following software is required to build IDJC or is used by IDJC at run-time. There should be similarly named binary packages in your package management system for all of these of which you typically want the library development packages whose names carry the -dev or -devel suffix.

Project name | Version | Comment
--- | --- | ---
libshout-idjc / libshout | 2.4.6+ | Required—libshout-idjc is needed for streaming aac(+) and mp2 formats otherwise libshout is recommended
Python | 3.9+ | Required—probably installed already
mutagen | 1.44+ | Required
Jack Audio Connection Kit | 0.116.0+ | Required—need library and server
PyGObject | 3.36+ | Required
vorbis-tools | 1.2.0+ | Required
libsndfile | 1.0.12+ | Required
libsamplerate | 0.1.4+ | Required
GLib2 | 2.0.0+ | Required
libebur128 | 1.2.4 | Required—for loudness metering
mpg123 | 1.13+ | Recommended—for mp2/mp3 playback
TwoLAME | 0.3+ | Recommended—for streaming/recording in the mp2 format
Lame | 3.97+ | Recommended—for streaming/recording in the mp3 format
FFmpeg | 5+ | Recommended—for mp4/m4a, ape, mpc, aac(+), webm
FLAC | 1.1.3+ | Recommended—for FLAC playback, recording, and streaming
Speex | 1.2rc1+ | Recommended—for Speex playback and streaming
Opus | 1.0+ | Recommended—for Opus playback and streaming

For Ubuntu 23.10 users the following command installs the dependencies.

    $ sudo apt install build-essential libc6-dev libglib2.0-dev jackd2 libjack-jackd2-dev libvorbis-dev libsamplerate0-dev libsndfile1-dev python-gi-dev libmpg123-dev libavcodec-dev libavformat-dev libtwolame-dev libmp3lame-dev libflac-dev python3-mutagen libspeex-dev libswscale-dev python3-gi-cairo libebur128-dev libshout-dev pipewire-jack

If during the execution of the above command you are asked whether to configure your system for jack/realtime I suggest you choose yes if you intend to use the pre-pipewire jack 1 or 2 implementations and choose no if going the pipewire route or if running in a virtual environment.

The following line ensures you have a working python commmand. If it is unavailable to install at least check that /usr/bin/python opens an appropriate version of python e.g. version 3.11, not python 2.7.

    $ sudo apt install python-is-python3

#### Optional: Using libshout-idjc (a requirement for streaming aac and mp2)

Click the relevant link above to download the libshout-idjc source code, then in a console type the following.

    $ cd Downloads
    $ tar xzvf libshout-idjc-[version].tar.gz
    $ cd libshout-idjc-[version]/
    $ ./configure CFLAGS="-O2" --prefix=/usr --libdir=/usr/lib64
    $ make
    $ sudo make install
    $ sudo ldconfig

Some distributions primarily keep 64 bit libraries in a directory called lib64 and if that is the case the libdir directive may be necessary (green italic text above and further down the page).

Note that prefix is set to /usr due to some Linux distributions not having a nicely configured /etc/ld.so.conf file.

#### Building IDJC from source

There are two options available to you. One is to get the official release (recommended), the other is to obtain the development sources which are only casually tested.

##### Option 1: Build the latest official release

Navigate to https://sourceforge.net/projects/idjc/.

Hit the big green Download button and wait for the download to finish. Make a note of the version number.

    $ cd Downloads
    $ tar xzvf idjc-[version].tar.gz
    $ cd idjc-[version]/
    $ ./configure CFLAGS="-O2" --prefix=/usr --libdir=/usr/lib64
    $ make
    $ sudo make install

##### Option 2: Build from the development sources

Install the additional build dependencies. For Ubuntu 23.10 that would be the following line.

    $ sudo apt install git-core autoconf libtool-bin autopoint imagemagick

Then type the following.

    $ git clone git://idjc.git.sourceforge.net/gitroot/idjc/idjc
    $ cd idjc/
    $ ./bootstrap
    $ ./configure CFLAGS="-O2" --prefix=/usr --libdir=/usr/lib64
    $ make
    $ sudo make install

For systems that don't have sudo configured, use the following form instead.

    su -c "make install"

#### Finally

At this stage it's installed but see the First run section to help iron out potential system configuration problems.