jackd - JACK Audio Connection Kit sound server
jackd [options] -d backend
[backend-parameters]
jackd --help
jackd is the JACK audio server daemon, a low-latency audio
server. Originally written for the GNU/Linux operating system, it also
supports Mac OS X and various Unix platforms. JACK can connect a number of
different client applications to an audio device and also to each other.
Most clients are external, running in their own processes as normal
applications. JACK also supports internal clients, which run within the
jackd process using a loadable "plugin" interface.
JACK differs from other audio servers in being designed from the
ground up for professional audio work. It focuses on two key areas:
synchronous execution of all clients, and low latency operation.
For the latest JACK information, please consult the web site,
<http://www.jackaudio.org>.
- -d, --driver backend
[backend-parameters ]
-
Select the audio interface backend. The current list of supported backends
is: alsa, coreaudio, dummy, freebob,
oss sun portaudio and sndio. They are not all
available on all platforms. All backend-parameters are
optional.
- -h, --help
-
Print a brief usage message describing the main jackd options. These
do not include backend-parameters, which are listed using the
--help option for each specific backend. Examples below show how to
list them.
- -m, --no-mlock
- Do not attempt to lock memory, even if --realtime.
- -A device, -A
device%p, -A device%c
-
(Linux-only) A simplified way to add additional audio I/O hardware to an
instance of JACK. This argument is actually just a wrapper around the -I
(internal client) version, requiring only the name of the ALSA
"card" to be used. The name should NOT include any ALSA
device access prefix (e.g. "hw:" or "plughw:") but can
include a subdevice. If %p is added to the device name, it will be made
available for playback only. If %c is added to the device name, it will be
made available for capture (recording) only. If neither %p nor %c is
added, it will be made available (if possible) for both capture and
playback. Although device names may be visible in various places on your
system, the file /proc/asound/cards shows them inside square braces.
Examples:
-A SB (adds playback and capture for the "SB" device)
-A Codec,1%c (adds capture (recording) for the 2nd subdevice of the
"Codec" device)
-A MT1a2%p (adds playback the 1st subdevice of the "MT1a2" device)
The use of -A CARD is actually equivalent to -I foo:zalsa_in/-dhw:CARD
and -I CARD:zalsa_out/-dhw:CARD.
The use of -A CARD%p is actually equivalent to -I CARD:zalsa_out/-dhw:CARD.
The use of -A CARD%c is actually equivalent to -I CARD:zalsa_in/-dhw:CARD
Note that this option (like -I) can be used regardless of the backend used,
so even if you do not use the ALSA backend, you can still add
ALSA-supported devices to an instance of JACK.
- -I, --internal-client
client-spec
-
Load client-name as an internal client. May be used multiple times.
The form of client-spec can be any of the following:
client-path
client-name:client-path
client-name:client-path/init-string
client-path/init-string
The first form will cause jackd to attempt to load the client from a shared
object named "client-path" with appropriate suffixes appended.
If "client-path" is absolute, jackd will use that (adding a
platform appropriate suffix for a shared object). If it is not absolute,
jackd will look for "client-path" (with an appropriate suffix)
in the same location that drivers and other JACK add-ons are located.
The second form provides "client-name" as the desired name for the
client once loaded, in addition to the "client-path".
The third form provides an "init-string" in addition to a client
name and path, which will be passed to the client's initialization
function.
The final form does not specify the client name, but does include the path
to the client's shared object file and an initializations string.
When invoking JACK from the shell, remember to quote the argument to -I if
it includes spaces.
- -M, --midi-bufsize [
event-count ]
- Specify the size of the buffer used for MIDI ports. Units are "MIDI
events per process() cycle", where an event occupies up to 4 bytes
(as most common MIDI events do). The default buffer size is 2048 bytes,
which is about 500 MIDI events. Typical values for event-count will
range from 10 to about 1000. Be aware that using very high values along
with a large number of ports may cause JACK to fail to start because of
the amount of memory that would be required.
- -n, --name
server-name
- Name this jackd instance server-name. If unspecified, this
name comes from the $JACK_DEFAULT_SERVER environment variable. It
will be "default" if that is not defined.
- -p, --port-max
n
- Set the maximum number of ports the JACK server can manage. The default
value is 256.
- --replace-registry
-
Remove the shared memory registry used by all JACK server instances before
startup. This should rarely be used, and is intended only for occasions
when the structure of this registry changes in ways that are incompatible
across JACK versions (which is rare).
- -R, --realtime
-
Use realtime scheduling (default = true). This is needed for reliable
low-latency performance. On many systems, it requires jackd to run
with special scheduler and memory allocation privileges, which may be
obtained in several ways.
- -r, --no-realtime
-
Do not use realtime scheduling.
- -P, --realtime-priority
int
- When running --realtime, set the scheduler priority to
int.
- --silent
- Silence any output during operation.
- -S, --sync
-
This option does nothing in this implementation of JACK, but exists for
command-line compatibility with JACK2 and possibly other versions.
- -T, --temporary
- Exit once all clients have closed their connections.
- -t, --timeout
int
-
Set client timeout limit in milliseconds. The default is 500 msec.
- -X, --slave-driver
driver-name
-
Asks the server to load the "slave" driver given by
driver-name. Slave drivers can provide builtin-access to other
devices and protocols; the primary slave-driver at this time is the
"alsa_midi" one which provides bridging on Linux between native
ALSA MIDI and JACK MIDI.
- -Z, --nozombies
-
Prevent JACK from ever kicking out clients because they were too slow. This
cancels the effect any specified timeout value.
- -C, --timeout-thres
time
-
Stop processing clients if JACK cannot complete the process cycle in time
(typically caused by CPU overloading or misbehaved clients). The optional
time argument specifies the number of milliseconds, during which
consectutive process cycles must fail before JACK gives up (if the
argument is not given, it defaults to 250). Processing will resume on the
next change to the port graph (i.e. a port is added, removed, connected or
disconnected)
- -u, --unlock
-
Unlock libraries GTK+, QT, FLTK, Wine.
- -v, --verbose
- Give verbose output.
- -c, --clocksource (
h(pet) | s(ystem) )
- Select a specific wall clock (HPET timer or the system clock). Asking for
the now removed cycle-counter timer usiung -c c will result in the
use of the system clock.
- -V, --version
- Print the current JACK version number and exit.
- -C, --capture [
name ]
- Provide only capture ports, unless combined with -D or -P. Parameterally
set capture device name.
- -d, --device
name
-
The ALSA pcm device name to use. If none is specified, JACK will use
"hw:0", the first hardware card defined in
/etc/modules.conf.
- -z, --dither
[rectangular,triangular,shaped,none]
- Set dithering mode. If none or unspecified, dithering is off. Only
the first letter of the mode name is required.
- -D, --duplex
- Provide both capture and playback ports. Defaults to on unless only one of
-P or -C is specified.
- -h, --help Print a
brief usage message describing only the
- alsa backend parameters.
- -M, --hwmeter
-
Enable hardware metering for devices that support it. Otherwise, use
software metering.
- -H, --hwmon
-
Enable hardware monitoring of capture ports. This is a method for obtaining
"zero latency" monitoring of audio input. It requires support in
hardware and from the underlying ALSA device driver.
When enabled, requests to monitor capture ports will be
satisfied by creating a direct signal path between audio interface input
and output connectors, with no processing by the host computer at all.
This offers the lowest possible latency for the monitored signal.
Presently (March 2003), only the RME Hammerfall series and
cards based on the ICE1712 chipset (M-Audio Delta series, Terratec, and
others) support --hwmon. In the future, some consumer cards may
also be supported by modifying their mixer settings.
Without --hwmon, port monitoring requires JACK to read
audio into system memory, then copy it back out to the hardware again,
imposing the basic JACK system latency determined by the --period
and --nperiods parameters.
- -i, --inchannels
int
-
Number of capture channels. Default is maximum supported by hardware.
- -n, --nperiods
int
-
Specify the number of periods of playback latency. In seconds, this
corresponds to --nperiods times --period divided by
--rate. The default is 2, the minimum allowable. For most devices,
there is no need for any other value with the --realtime option.
Without realtime privileges or with boards providing unreliable interrupts
(like ymfpci), a larger value may yield fewer xruns. This can also help if
the system is not tuned for reliable realtime scheduling.
For most ALSA devices, the hardware buffer has exactly
--period times --nperiods frames. Some devices demand a
larger buffer. If so, JACK will use the smallest possible buffer
containing at least --nperiods, but the playback latency does not
increase.
For USB audio devices it is recommended to use -n 3.
Firewire devices supported by FFADO (formerly Freebob) are configured
with -n 3 by default.
- -o, --outchannels
int
-
Number of playback channels. Default is maximum supported by hardware.
- -P, --playback [
name ]
- Provide only playback ports, unless combined with -D or -C. Optionally set
playback device name.
- -p, --period
int
-
Specify the number of frames between JACK process() calls. This value
must be a power of 2, and the default is 1024. If you need low latency,
set -p as low as you can go without seeing xruns. A larger period
size yields higher latency, but makes xruns less likely. The JACK capture
latency in seconds is --period divided by --rate.
- -r, --rate
int
- Specify the sample rate. The default is 48000.
- -S, --shorts
-
Try to configure card for 16-bit samples first, only trying 32-bits if
unsuccessful. Default is to prefer 32-bit samples.
- -s, --softmode
-
Ignore xruns reported by the ALSA driver. This makes JACK less likely to
disconnect unresponsive ports when running without --realtime.
- -X, --midi seq
-
Provide bridging between ALSA MIDI and JACK MIDI (using the ALSA sequencer
system). All ALSA MIDI clients and MIDI hardware that exist when jackd
starts will be represented by JACK MIDI ports.
The "seq" argument has been retained from older versions of JACK,
in part to provide for the possibility of alternate implementations.
- -C, --capture
int
- Specify number of capture ports. The default value is 2.
- -P, --playback
int
- Specify number of playback ports. The default value is 2.
- -r, --rate
int
- Specify sample rate. The default value is 48000.
- -p, --period
int
- Specify the number of frames between JACK process() calls. This
value must be a power of 2, and the default is 1024. If you need low
latency, set -p as low as you can go without seeing xruns. A larger
period size yields higher latency, but makes xruns less likely. The JACK
capture latency in seconds is --period divided by
--rate.
- -w, --wait
int
- Specify number of usecs to wait between engine processes. The default
value is 21333.
-
-i, --audio-ins int
- Number of capture channels (default: 2)
-
-o, --audio-outs int
- Number of playback channels (default: 2)
-
-I, --midi-ins int
- Number of midi capture channels (default: 1)
- -O, --midi-outs
int
- Number of midi playback channels (default: 1)
-
-r, --rate int
- Sample rate (default: 48000)
- -p, --period
int
- Frames per period (default: 1024)
- -n, --num-periods
int
- Network latency setting in no. of periods (default: 5)
- -l, --listen-port
int
- The socket port we are listening on for sync packets (default: 3000)
- -f, --factor
int
- Factor for sample rate reduction (default: 1)
- -u, --upstream-factor
int
- Factor for sample rate reduction on the upstream (default: 0)
- -c, --celt
int
- sets celt encoding and number of kbits per channel (default: 0)
- -b, --bit-depth
int
- Sample bit-depth (0 for float, 8 for 8bit and 16 for 16bit) (default:
0)
- -t, --transport-sync
int
- Whether to slave the transport to the master transport (default:
true)
- -a, --autoconf
int
- Whether to use Autoconfig, or just start. (default: true)
- -R, --redundancy
int
- Send packets N times (default: 1)
- -e, --native-endian
int
- Don't convert samples to network byte order. (default: false)
- -J, --jitterval
int
- attempted jitterbuffer microseconds on master (default: 0)
- -D, --always-deadline
int
- always use deadline (default: false)
- -r, --rate
int
- Specify the sample rate. The default is 48000.
- -p, --period
int
- Specify the number of frames between JACK process() calls. This
value must be a power of 2, and the default is 1024. If you need low
latency, set -p as low as you can go without seeing xruns. A larger
period size yields higher latency, but makes xruns less likely. The JACK
capture latency in seconds is --period divided by
--rate.
- -n, --nperiods
int
- Specify the number of periods in the hardware buffer. The default is 2.
The period size (-p) times --nperiods times four is the JACK
buffer size in bytes. The JACK output latency in seconds is
--nperiods times --period divided by --rate.
- -w, --wordlength
int
- Specify the sample size in bits. The default is 16.
- -i, --inchannels
int
- Specify how many channels to capture (default: 2)
- -o, --outchannels
int
- Specify number of playback channels (default: 2)
- -C, --capture
device_file
- Specify input device for capture (default: /dev/dsp)
- -P, --playback
device_file
- Specify output device for playback (default: /dev/dsp)
- -b, --ignorehwbuf
boolean
- Specify, whether to ignore hardware period size (default: false)
- -r, --rate
int
- Specify the sample rate. The default is 48000.
- -p, --period
int
- Specify the number of frames between JACK process() calls. This
value must be a power of 2, and the default is 1024. If you need low
latency, set -p as low as you can go without seeing xruns. A larger
period size yields higher latency, but makes xruns less likely. The JACK
capture latency in seconds is --period divided by
--rate.
- -n, --nperiods
int
- Specify the number of periods in the hardware buffer. The default is 2.
The period size (-p) times --nperiods times four (assuming 2
channels 16-bit samples) is the JACK buffer size in bytes. The JACK output
latency in seconds is --nperiods times --period divided by
--rate.
- -w, --wordlength
int
- Specify the sample size in bits. The default is 16.
- -i, --inchannels
int
- Specify how many channels to capture (default: 2)
- -o, --outchannels
int
- Specify number of playback channels (default: 2)
- -C, --capture
device_file
- Specify input device for capture (default: /dev/audio)
- -P, --playback
device_file
- Specify output device for playback (default: /dev/audio)
- -b, --ignorehwbuf
boolean
- Specify, whether to ignore hardware period size (default: false)
- -c --channel
- Maximum number of channels (default: all available hardware channels)
- -i --channelin
- Maximum number of input channels (default: all available hardware
channels)
- -o --channelout
- Maximum number of output channels (default: all available hardware
channels)
- -C --capture
- Whether or not to capture (default: true)
- -P --playback
- Whether or not to playback (default: true)
- -D --duplex
- Capture and playback (default: true)
- -r --rate
- Sample rate (default: 48000)
- -p --period
- Frames per period (default: 1024). Must be a power of 2.
- -n --name
- Driver name (default: none)
- -z --dither
- Dithering mode (default: none)
- -r, --rate
int
- Specify the sample rate. The default is 44100.
- -p, --period
int
- Specify the number of frames between JACK process() calls. This
value must be a power of 2, and the default is 1024. If you need low
latency, set -p as low as you can go without seeing xruns. A larger
period size yields higher latency, but makes xruns less likely. The JACK
capture latency in seconds is --period divided by --rate.
Note that this value is mostly advisory when aucat server is running and
may be updated internally.
- -n, --nperiods
int
- Specify the number of periods in the hardware buffer. The default is 2.
The period size (-p) times --nperiods times four (assuming 2
channels 16-bit samples) is the JACK buffer size in bytes. The JACK output
latency in seconds is --nperiods times --period divided by
--rate. Note that this value is mostly advisory when aucat server
is running and may be updated internally.
- -w, --wordlength
int
- Specify the sample size in bits. The default is 16.
- -i, --inchannels
int
- Specify how many channels to capture (default: 2)
- -o, --outchannels
int
- Specify number of playback channels (default: 2)
- -d, --device
device_file
- Specify device for capture and playback (default: NULL)
- -b, --ignorehwbuf
boolean
- Specify, whether to ignore hardware period size (default: false)
Print usage message for the parameters specific to each
backend.
- jackd -d alsa --help
jackd -d coreaudio --help
jackd -d net --help
jackd -d dummy --help
jackd -d firewire --help
jackd -d freebob --help
jackd -d oss --help
jackd -d sun --help
jackd -d portaudio --help
jackd -d sndio --help
Run the JACK daemon with realtime priority using the first ALSA
hardware card defined in /etc/modules.conf.
- jackstart --realtime --driver=alsa
Run the JACK daemon with low latency giving verbose output, which
can be helpful for trouble-shooting system latency problems. A reasonably
well-tuned system with a good sound card and a low-latency kernel can handle
these values reliably. Some can do better. If you get xrun messages, try a
larger buffer. Tuning a system for low latency can be challenging. The JACK
FAQ, http://jackit.sourceforge.net/docs/faq.php has some useful
suggestions.
- jackstart -Rv -d alsa -p 128 -n 2 -r 44100
Run jackd with realtime priority using the
"sblive" ALSA device defined in ~/.asoundrc. Apply shaped
dithering to playback audio.
- jackd -R -d alsa -d sblive --dither=shaped
Run jackd with no special privileges using the second ALSA
hardware card defined in /etc/modules.conf. Any xruns reported by the
ALSA backend will be ignored. The larger buffer helps reduce data loss.
Rectangular dithering will be used for playback.
- jackd -d alsa -d hw:1 -p2048 -n3 --softmode -zr
Run jackd in full-duplex mode using the ALSA hw:0,0 device
for playback and the hw:0,2 device for capture.
- jackd -d alsa -P hw:0,0 -C hw:0,2
Run jackd in playback-only mode using the ALSA hw:0,0
device.
- jackd -d alsa -P hw:0,0
JACK is evolving a mechanism for automatically starting the server
when needed. Any client started without a running JACK server will attempt
to start one itself using the command line found in the first line of
$HOME/.jackdrc if it exists, or /etc/jackdrc if it does not.
If neither file exists, a built-in default command will be used, including
the -T flag, which causes the server to shut down when all clients
have exited.
As a transition, this only happens when $JACK_START_SERVER
is defined in the environment of the calling process. In the future this
will become normal behavior. In either case, defining
$JACK_NO_START_SERVER disables this feature.
To change where JACK looks for the backend drivers, set
$JACK_DRIVER_DIR.
$JACK_DEFAULT_SERVER specifies the default server name. If
not defined, the string "default" is used. If set in their
respective environments, this affects jackd unless its --name
parameter is set, and all JACK clients unless they pass an explicit name to
jack_client_open().
http://www.jackaudio.org
The official JACK website with news, docs and a list of JACK clients.
http://jackaudio.org/email
The JACK developers' mailing list. Subscribe, to take part in development of
JACK or JACK clients. User questions are also welcome, there is no
user-specific mailing list.
http://www.jackosx.com/
Tools specific to the Mac OS X version of JACK.
http://www.alsa-project.org
The Advanced Linux Sound Architecture.
Please report bugs to
http://trac.jackaudio.org/
Architect and original implementor: Paul Davis
Original design Group: Paul Davis, David Olofson, Kai Vehmanen,
Benno Sennoner, Richard Guenther, and other members of the Linux Audio
Developers group.
Programming: Paul Davis, Jack O'Quin, Taybin Rutkin, Stephane
Letz, Fernando Pablo Lopez-Lezcano, Steve Harris, Jeremy Hall, Andy Wingo,
Kai Vehmanen, Melanie Thielker, Jussi Laako, Tilman Linneweh, Johnny
Petrantoni, Torben Hohn.
Manpage written by Stefan Schwandter, Jack O'Quin and Alexandre
Prokoudine.