jackd - JACK Audio Connection Kit sound server
jackd [
options]
-d backend [
backend-parameters]
jackd --help
jackd is the JACK audio server daemon that allows JACK client programs to
process and route audio and MIDI data in a synchronous, sample-accurate and
low-latency manner. Originally written for the GNU/Linux operating system, it
also runs on various Unix platforms, Mac OS X and MS Windows. 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.
The name JACK makes a reference to the classical way of patching audio
connections with physical audio jack cables. JACK is also a recursive acronym,
that is an abbreviation which is part of itself.
JACK
Audio
Connection
Kit.
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, firewire,
oss sun and portaudio. 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.
-
-a, --autoconnect modechar
- Select how to handle self connect requests. They can be
ignore or fail, on all port or just external ones. Use the --help
option to know your system specific options. The default is to not
restrict self connect requests.
- -m, --no-mlock
- Do not attempt to lock memory, even if --realtime.
-
-n, --name server-name
- Name this jackd instance server-name. If
unspecified, this name comes from the $JACK_DEFAULT_SERVER
environment variable. (default: "default")
-
-p, --port-max n
- Set the maximum number of ports the JACK server can manage.
(default: 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. 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. (default: true)
- -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.
- -T, --temporary
- Exit once all clients have closed their connections.
-
-t, --timeout int
-
Set client timeout limit in milliseconds. In realtime mode the client
timeout must be smaller than the watchdog timeout (5000 msec). (default:
500)
- -Z, --nozombies
-
Prevent JACK from ever kicking out clients because they were too slow. This
cancels the effect any specified timeout value, but JACK and its clients
are still subject to the supervision of the watchdog thread or its
equivalent.
-
-C, --internal-session-file
internal-session-file
-
Load internal clients and connections from internal-session-file.
Each line of this configuration file starts with a command. The following
commands are available:
l(oad) client-name lib-name client-args
With this command an internal JACK client will be instantiated.
client-name and lib-name cannot contain spaces. The rest of
the line will be interpreted as client-args and sent to the client
library.
c(on) source-port destination-port
With this command a source port will be connected to a destination port.
source-port and destination-port cannot contain spaces.
Comments are allowed, they start with #.
An example configuration could look like the following:
l inprocess1 inprocess
l amp1 jalv http://lv2plug.in/plugins/eg-amp
c amp:out system:playback_1
- -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, System timer).
- -V, --version
- Print the current JACK version number and exit.
-
-C, --capture [ name ]
- Provide only capture ports, unless combined with -D or -P.
Optionally 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. (default: true)
-
-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: maximum supported by hardware)
- -I, --input-latency
- Extra input latency (frames). (default: 0)
-
-n, --nperiods int
-
Number of periods of playback latency. In seconds, this corresponds to
--nperiods times --period divided by --rate. The
default is 2, the minimum allowed. 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: maximum supported by hardware)
- -O, --output-latency
- Extra output latency (frames). (default: 0)
-
-P, --playback [ name ]
- Provide only playback ports, unless combined with -D or -C.
Optionally set playback device name.
-
-p, --period int
-
Number of frames between JACK process() calls. This value must be a
power of 2. 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. (default: 1024)
-
-r, --rate int
- Sample rate. (default: 48000)
- -S, --shorts
-
Try to configure card for 16-bit samples first, only trying 32-bits if
unsuccessful. (default: 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|raw]
-
Which ALSA MIDI system to provide access to. Using raw will provide a
set of JACK MIDI ports that correspond to each raw ALSA device on the
machine. Using seq will provide a set of JACK MIDI ports that
correspond to each ALSA "sequencer" client (which includes each
hardware MIDI port on the machine). raw provides slightly better
performance but does not permit JACK MIDI communication with software
written to use the ALSA "sequencer" API.
- -c, --channels
- Maximum number of channels. (default: 2)
- -i, --inchannels
- Maximum number of input channels. (default: 2)
- -o, --outchannels
- Maximum number of output channels. (default: 2)
- -C, --capture
- Whether or not to capture. (default: true)
- -P, --playback
- Whether or not to playback. (default: true)
- -D, --monitor
- Provide monitor ports for the output. (default: false)
- -D, --duplex
- Capture and playback. (default: true)
- -r, --rate
- Sample rate. (default: 44100)
- -p, --period
- Frames per period, must be a power of 2. (default: 128)
- -d, --device
- CoreAudio device name. (default: none)
- -I, --input-latency
- Extra input latency (frames). (default: 0)
- -O, --output-latency
- Extra output latency (frames). (default: 0)
- -l, --list-devices
- Display available CoreAudio devices. (default: false)
- -H, --hog
- Take exclusive access of the audio device. (default: false)
- -L, --async-latency
- Extra output latency in asynchronous mode (percent).
(default: 100)
- -G, --grain
- Computation grain in RT thread (percent). (default: 100)
- -s, --clock-drift
- Whether or not to compensate clock drift in dynamically
created aggregate device. (default: false)
-
-C, --capture int
- Number of capture ports. (default: 2)
-
-P, --playback int
- Number of playback ports. (default: 2)
-
-r, --rate int
- Sample rate. (default: 48000)
-
-p, --period int
- Number of frames between JACK process() calls. This
value must be a power of 2. 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. (default: 1024)
-
-w, --wait int
- Number of usecs to wait between engine processes. (default:
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 or not to slave the transport to the master
transport. (default: true)
-
-a, --autoconf int
- Whether or not 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
- Sample rate. (default: 48000)
-
-p, --period int
- Number of frames between JACK process() calls. This
value must be a power of 2. 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. (default: 1024)
-
-n, --nperiods int
- Number of periods in the hardware buffer. 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. (default: 2)
-
-w, --wordlength int
- Sample size in bits. (default: 16)
-
-i, --inchannels int
- Number of capture channels. (default: 2)
-
-o, --outchannels int
- Number of playback channels. (default: 2)
-
-C, --capture device_file
- Input device for capture. (default: /dev/dsp)
-
-P, --playback device_file
- Output device for playback. (default: /dev/dsp)
-
-b, --ignorehwbuf boolean
- Whether or not to ignore hardware period size. (default:
false)
-
-e, --excl boolean
- Request exclusive and direct access to the sound device.
This avoids mixing and automatic audio conversion in the OSS driver, and
the extra latency that comes with that. (default: false)
- -I, --input-latency
- Extra input latency (frames). (default: 0)
- -O, --output-latency
- Extra output latency (frames). (default: 0)
-
-r, --rate int
- Sample rate. (default: 48000)
-
-p, --period int
- Number of frames between JACK process() calls. This
value must be a power of 2. 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. (default: 1024)
-
-n, --nperiods int
- Number of periods in the hardware buffer. 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. (default: 2)
-
-w, --wordlength int
- Sample size in bits. (default: 16)
-
-i, --inchannels int
- Number of capture channels. (default: 2)
-
-o, --outchannels int
- Number of playback channels. (default: 2)
-
-C, --capture device_file
- Input device for capture. (default: /dev/audio)
-
-P, --playback device_file
- Output device for playback. (default: /dev/audio)
-
-b, --ignorehwbuf boolean
- Whether or not 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)
- -I, --input-latency
- Extra input latency (frames). (default: 0)
- -o, --channelout
- Maximum number of output channels. (default: all available
hardware channels)
- -O, --output-latency
- Extra output latency (frames). (default: 0)
- -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, must be a power of 2. (default: 1024)
- -n, --name
- Driver name. (default: none)
- -z, --dither
- Dithering mode. (default: none)
-
-d, --device name
-
The Firewire device name to use. If none is specified, JACK will try
to use "hw:0". To get a list of available Firewire devices, see
ffado-test. It's recommended to use the GUID of a Firewire device
to rule out any ambiguities. Once the GUID of the device is known
("ffado-test ListDevices"), it can be used like
-dguid:0xff2584e39b078a2e to tell JACK which interface to use.
Sometimes resetting the Firewire bus can help ("ffado-test
BusReset") if there is any problem. (default: hw:0)
-
-p, --period int
-
Number of frames between JACK process() calls. This value must be a
power of 2. 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. (default: 1024)
-
-n, --nperiods int
-
Number of periods of playback latency. Value must be greater or equal 2. In
seconds, this corresponds to --nperiods times --period
divided by --rate. (default: 3)
-
-r, --rate int
- Sample rate. (default: 48000)
-
-C, --capture [ name ]
- Provide only capture ports, unless combined with -D or -P.
Optionally set capture device name.
-
-P, --playback [ name ]
- Provide only playback ports, unless combined with -D or -C.
Optionally set playback device name.
- -D, --duplex
- Provide both capture and playback ports. This option is the
default behaviour and can normally be omitted. -D can not be combined with
-P or -C.
- -I, --input-latency
- Extra input latency (frames). (default: 0)
- -O, --output-latency
- Extra output latency (frames). (default: 0)
- -v, --verbose
-
libffado verbose level. (default: 3)
- -X, --snoop
-
Snoop Firewire traffic. (default: false)
-
-h, --help Print a brief usage message describing
only the
-
firewire backend parameters.
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 oss --help
jackd -d sun --help
jackd -d portaudio --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. Please consult the JACK
FAQ for more 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().
Defining
$JACK_NO_AUDIO_RESERVATION will bypass audio device reservation
via session bus (DBus). This can be useful if JACK was compiled with DBus
support but should run on a headless system.
$JACK_PROMISCUOUS_SERVER enables an alternate way of handling the various
shared resources (Unix sockets, semaphores, ...). In this mode, the generated
names will not contain the user id anymore, and the permissions of those
resources will be relaxed, allowing clients from different users to talk with
the same server. Moreover, on platforms that support it (all POSIX variants),
if set to a valid Unix group name or id, the permissions will be restricted to
that group, so only members of that group will be able to launch clients that
talk to this server. Important note: it must be set with the same value for
both server and clients to work as expected.
<
http://www.jackaudio.org/>
The official JACK website with news, docs and a list of JACK clients.
<
http://www.github.com/jackaudio/>
The official JACK github code repository. Pull requests are welcome.
<
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org>
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.
<
http://www.ffado.org/>
The Free Firewire Audio Drivers (FFADO) Site.
<
irc.freenode.net#jack>
Join the JACK community with your favourite IRC client.
Please report bugs as issues to the corresponding repository:
<
http://www.github.com/jackaudio/>
Architect and original implementer: 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, Stéphane 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, Alexandre Prokoudine and
Thomas Brand.
Create a PDF file from this manpage:
- man -t jackd | ps2pdf - > jackd.pdf