Internet DJ Console Homepage IDJC

website logo

The purpose of this page

Some system configuration needs to be done in order to be able to run IDJC. Fortunately it only needs to be done once and full details follow.

Configuring your system for JACK Audio Connection Kit

No JACK means no IDJC

I'm going to be talking about JACK Audio Connection Kit (or JACK) from now on and its sound server, jackd. Forget IDJC exists for the moment as the information on this page applies to all applications that require JACK in order to function.

JACK needs real-time privileges in order to run smoothly because of the small sized buffers that it uses to transfer audio. Using small buffers keeps the audio time delay (latency) to a minimum which is a good thing if you are listening to your voice being captured live but it does mean it's effectively running a just in time delivery system and does not want to be interrupted by the operating system effectively saying time's up I have to run these other apps.

By default the JACK sound server now requires real-time privileges in order to even start. Previous versions would not use real-time by default and audio data would be lost because of it.

Manually running jackd to see what happens
$ jackd -d alsa
jackd 0.118.0
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details


JACK is running in realtime mode, but you are not allowed to use realtime scheduling.
Please check your /etc/security/limits.conf for the following lines
and correct/add them:

  @audio          -       rtprio          100
  @audio          -       nice            -10

After applying these changes, please re-login in order for them to take effect.

You don't appear to have a sane system configuration. It is very likely that you
encounter xruns. Please apply all the above mentioned changes and start jack again!

What just happened here is jackd just failed to start because it considers your system's configuration to be wrong.

Let's get configuring

Add the two lines mentioned above to the file also mentioned above.

  • Ubuntu

    $ sudo echo "@audio   -   rtprio   100" >> /etc/security/limits.conf
    $ sudo echo "@audio   -   nice     -10" >> /etc/security/limits.conf
  • Debian

    $ su echo "@audio   -   rtprio   100" >> /etc/security/limits.conf
    $ su echo "@audio   -   nice     -10" >> /etc/security/limits.conf

Now that you have added all members of the audio group to the real-time privileges list lets make sure your user account has audio group membership. You can do this in the Ubuntu System menu by selecting Users and Groups from the Administration menu and clicking the Manage Groups button. Choose audio and make sure the check-box is selected.

You now need to log out of your desktop and log back in again for the changes to take effect.

Let's try starting jackd one more time.

$ jackd -d alsa
jackd 0.118.0
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

JACK compiled with System V SHM support.
loading driver ..
creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
control device hw:0
configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback

This time it has successfully started so you can now run IDJC.

Making a simple JACK configuration file
$ echo "/usr/bin/jackd -d alsa -r 44100 -p 256" > ~/.jackdrc

This will ensure that when jackd is started on demand that it will do so with a sample rate equalling that of CD audio and therefore most likely your entire music collection.

Making JACK use a particular sound card

It's a two step process of finding the names of all the sound cards and specifying which one to use to jackd.

$ cat /proc/asound/cards
 0 [Revolution71   ]: ICE1724 - M Audio Revolution-7.1
                      M Audio Revolution-7.1 at 0xd000, irq 19
 1 [nanoKONTROL    ]: USB-Audio - nanoKONTROL
                      KORG INC. nanoKONTROL at usb-0000:00:1d.0-2, full speed
$ jackd -d alsa -d "Revolution71 -r 44100 -p 256"
Enabling MIDI events
$ jackd -d alsa -r 44100 --midi raw

Only use the --midi option if you intend to use a MIDI device to control IDJC.

Finally

The program qjackctl can be used to start a JACK sound server. It has a nice graphical user interface and can generate a .jackdrc file as well.