QjackCtl and Pulseaudio for IDJC

Configuration guide for basic JACK audio to test using IDJC for icecast/shoutcast broadcast.

QjackCtl & Pulseaudio for Internet DJ Console

This article is to show basic QjackCtl setup to get JACK started and run IDJC.

See part 2 (link to at end of this article) for other options better suited for reliable regular use

Confirmed working 15 November 2017 on Ubuntu Studio 16.04.03 LTS 64-bit
Ubuntu Studio is no longer recommended since April 2020 when support for QjackCtl was dropped and articles posted to Ubuntu Forum were deleted
I would now recommend users try AVLinux, or contact me at linuxmusicians.com (nikgnomicradio)

Most other Linux distributions will have same packages available for similar setup:

  • pulseaudio – v6.0 or higher required for additional Aux connection; earlier versions only support one Pulseaudio link to JACK
  • pulseaudio-jack – required for creating Pulseaudio connections to JACK
  • pulseaudio-utils – needed for terminal commands pactl and pacmd to control Pulseaudio
  • pavucontrol – (Pulseaudio Volume Control) preferred method to control Pulseaudio levels and preferences
  • jack2 – preferred as it uses D-Bus for Pulseaudio and JACK to share an audio device


1.1 QjackCtl Setup

Interface: select your sound device for JACK

Frames/Period: 1024 is safe working value for most sound devices. Lower value will reduce latency delay but may increase x-run errors

Sample Rate: 48000Hz is native JACK rate, but 44100Hz may work better on some hardware

Periods/Buffer: Usually 2 is fine for built-in sound devices or 3 for USB devices

Other tabs – Advanced; Options and Display – not covered here

Enable D-Bus Interface: must be enabled for sharing audio devices with Pulseaudio

Enable JACK D-Bus Interface: enabled

D-Bus allows JACK to share an audio device with Pulseaudio
If JACK cannot be started with D-Bus, additional setup work will be required (see JACK can live without D-Bus)

Save settings when done with button on Settings tab

1.2 Start JACK in QjackCtl

Jack input and output ports will be loaded with default connections:

If JACK fails to start, errors are displayed or connections do not match image above, open QjackCtl “Messages” to view text log for troubleshooting


1.3 Add Pulseaudio Aux connection to JACK

Optional – skip this step if you don’t want/need extra connection

Run this terminal command:

pactl load-module module-jack-sink client_name = Aux_In


Test audio connections from sources in Pulseaudo
Playback from Pulseaudio to JACK can be routed to either Pulseaudio JACK Sink or Aux_In

1.4 Clear JACK connections before starting IDJC

This is required for IDJC Leaving any connections is likely to cause echo/feedback problems

Click Disconnect All in Qjackctl Connections window



1.5 Start IDJC

Connections from PulseAudio JACK Sink and Aux_In to IDJC, and IDJC to PulseAudio JACK Source require manual connection when IDJC is started for first time.
Connections are saved in IDJC profile to reconnect correctly

QjackCtl Connections window can be expanded to check or modify connections


IDJC menu Jack Ports section can also be used to check or modify connections

There is also additional package Patchage, with better graphical view of JACK connections, included in Ubuntu Studio


Use IDJC red or green phone buttons to hear a call. Only green (on-air) phone will show on stream level meters.

Sound to Aux channels will show on IDJC Ch3 and Ch4 input meters, and on stream level meters if IDJC Aux button is on


This is simple method to test and setup IDJC
To configure start of JACK automatically for regular use (and less possibility of user error) see part 2

thanks to

jimmy daz3d, timfromtang, freemanjack, muddymuddymudman, fairport and everyone at Linux Migration Group

 

wow nik

lovely job.

meant to get back to have a look but been so bloody busy just forgot.

i like it great work man

 
   

I have completely rewritten this to try a very basic minimal method to get first look at idjc in JACK,
now has 2 more parts linked to add extra options for regular use and less possibility of user error.