The term "JACK" is mentioned often in context without actually discussing it in detail and it is difficult to understand JACK's depth and importance within other discussions. This page hopes to alleviate this situation. = General Overview = Simply stated, [[http://jackaudio.org/|JACK]] is a recursive acronym for JACK Audio Connection Kit which is a [[http://en.wikipedia.org/wiki/Sound_server|sound server]] (and more!) that will serve audio to applications that request it. But merely calling JACK a "sound server" belies its other powerful, pervasive aspects and capabilities. Indeed, JACK provides the audio backbone for Linux audio and all serious audio distributions not only include it, but have come to rely on it. == Connectivity == But JACK will not only serve sound in a unilateral direction, it also allows interconnection of audio and midi between "JACK-aware" applications. For example, this means that you can take sound from an application, route it into a second application and then route it back into the first application. Thankfully, there are [[http://jackaudio.org/applications|many "JACK-aware" applications]], and the list is growing. It is also worth noting that some applications rely on JACK and will not start unless JACK is already running. == Low Latency == Since JACK was developed for professional audio work it makes all these connection with extremely low [[http://en.wikipedia.org/wiki/Latency_(audio)|latency]] (the time between when I sound is created and when it is heard). This is critical for serious audio work because it can become impossible to properly sync or multi-track audio if the latency is too great. The ability to leverage the [[https://help.ubuntu.com/community/UbuntuStudio/RealTimeKernel|real-time kernel]] also facilitates achieving lower latencies. == Transport Control == Additionally, an often overlooked (or unmentioned) feature of JACK is to act as a transport control. This function allows one applications to be designated as a master transport that will control the starting and stopping of other applications. For example, if Ardour is set as the transport master, starting Ardour will also start the Hydrogen drum machine. == Audio Backends == Various audio back ends are available for JACK to use including: * ALSA * PortAudio * CoreAudio * FreeBOB * FFADO * OSS == JACK over the Net == Lastly, JACK can also send data over a network or internet via [[http://trac.jackaudio.org/wiki/WalkThrough/User/NetJack|NetJack]]. Although this requires JACK to be built against the [[http://www.celt-codec.org/|CELT codec]]. = Usage Overview = == Starting JACK == To use JACK we must start ''jackd'', the jack [[http://en.wikipedia.org/wiki/Daemon_%28computer_software%29|daemon]] (background process). This can be effect with the [[https://help.ubuntu.com/community/UsingTheTerminal|Command Line Interface (CLI)]] or using a [[http://en.wikipedia.org/wiki/Graphical_user_interface|graphical user interface (GUI)]], in this case ''qjackctl''. Note, [[http://packages.ubuntu.com/search?searchon=names&keywords=jackd|jackd]] should not be confused with [[http://packages.ubuntu.com/search?suite=default§ion=all&arch=any&searchon=names&keywords=jack|jack]], which is a cd ripper and encoder application. === CLI === ''jackd'' can be started from the CLI in a rather succinct manner which also establishes the configuration at the same time. An example is: {{{ jackd -R -P4 -dalsa -r44100 -p512 -n4 -D -Chw:0 -Phw:0 }}} See the [[http://manpages.ubuntu.com/manpages/gutsy/man1/jackd.1.html|Ubuntu jackd manpage]] for a list of the expansive options. Despite the large amount of options, it can be very easy to start JACK from the CLI with the correct options and is regularly started in this manner, although it is possible that most users will want to use a GUI. === qjackctl === A GUI is available to start the ''jackd'' daemon, which makes using JACK more accessible especially to newer users. The interface can be seen below: {{attachment:JACK-1.png}} ''qjackctl'' is fairly comprehensive and not only provides access to the start and transport controls, but also provides immediate access to the Connect (connection) and Setup (configuration) buttons. For more information about starting and using JACK via ''qjackctl'' see the [[UbuntuStudio/JackQuickStart|JackQuickStart]] page. == Configuring JACK == JACK configuration can be accessed in ''qjackctl'' by selecting the Setup key. This provides a graphical dialogue box for editing various JACK options. {{attachment:JACK-2.png}} This has several benefits over starting JACK with options from the CLI, including the ability to save and recall option settings by name and showing the latency for the current option settings. See the [[HowToJACKConfiguration]] page for more information. == Connections via JACK == Making connections via JACK can be effected in ''qjackctl'' by selecting the Connect key. This provides a graphical dialogue box for making audio and midi connections with JACK. {{attachment:JACK-3.png}} See the HowToQjackCtlConnections page for more information. = Other Reference Material = [[http://www.linuxjournal.com/node/1004080|Dave Phillips Intro Article in Linux Journal]] - Another well written article by Dave Phillips, this time highlighting JACK.