From Fedora Project Wiki
m (changed category to draft documentation)
(pretty major overhaul)
Line 14: Line 14:


=== PulseAudio ===
=== PulseAudio ===
PulseAudio is an advanced sound server, intended to make audio programming as easy as possible, especially in Linux.  The idea behind its design (I THINK?!) is that an audio application needs only to output audio to PulseAudio, and PulseAudio will take care of the rest: choosing a particular device, and the output on that device, adjusting the volume, and so on.  PulseAudio even has the ability to use "networked sound," which allows two computers using PulseAudio to communicate as though they were one computer - either computer can input from or output to either computer's audio hardware just as easily as its own audio hardware.
PulseAudio is an advanced sound server, intended to make audio programming in GNU/Linux operating systems as easy as possible.  The idea behind its design is that an audio application needs only to output audio to PulseAudio, and PulseAudio will take care of the rest: choosing and controlling a particular device, adjusting the volume, working with other applications, and so on.  PulseAudio even has the ability to use "networked sound," which allows two computers using PulseAudio to communicate as though they were one computer - either computer can input from or output to either computer's audio hardware just as easily as its own audio hardware.  This is all controlled within PulseAudio, so no further complication is added to the software.


The Fedora Project's integration of PulseAudio as a vital part of the operating system has helped to ensure that audio applications can "just work" for most people under most circumstances.  This has made it much easier for users to carry out basic audio tasks.
The Fedora Project's integration of PulseAudio as a vital part of the operating system has helped to ensure that audio applications can "just work" for most people under most circumstances.  This has made it much easier for users to carry out basic audio tasks.
!!
<!--
<!--
Fernando Lopez-Lezcano:
I don't think that at this point applications can be written for the
I don't think that at this point applications can be written for the
pulse audio API. Lennart I think discourages it. AFAIK applications
pulse audio API. Lennart I think discourages it. AFAIK applications
Line 28: Line 27:
perhaps "shared access to the sound card". You would not want to program
perhaps "shared access to the sound card". You would not want to program
for PA (it is very complex, perhaps even more than ALSA as it is all
for PA (it is very complex, perhaps even more than ALSA as it is all
asynchronous and callback based).  
asynchronous and callback based).
 
Christopher Antila:
This is useful and interesting information, but I don't think it
belongs here.  I''m keeping it as a comment, in case somebody decides
to use it in the future.
-->
-->


=== JACK Audio Connection Kit ===
=== JACK Audio Connection Kit ===
JACK offers many of the same features as PulseAudio, but with an emphasis on allowing the settings required by professional audio applications.  As it always seems to be with computers, added features means added complexity: the user actively chooses various settings and modes, allowing for use in a wide variety of settingsProgramming with JACK is still easier than using ALSA, however, because it is not the software application's responsibility to correctly configure JACK, but the user's responsibility.  Thankfully, programs such as QjackCtl make it easy to choose the best settings for your setup.
The JACK sound server offers fewer features than other sound servers, but they are tailor-made to allow the functionality required by audio creation applications.  JACK also makes it easier for users to configure the options that are most important for such situations.  The server supports only one sample rate and format at a time, and allows applications and hardware to easily [[User:Crantila/FSC/Sound_Cards#Routing_and_Multiplexing|connect and multiplex]] in ways that other sound servers do notIt is also optimized to run with consistently low latencies.  Although using JACK requires a better understanding of the underlying hardware, the "QjackCtl" application provides a graphical user interface to ease the process.


Another benefit of JACK is the ability to "route" audio and MIDI signals from any JACK-aware source to any JACK-aware input (or "sink," as it's known).  QjackCtl offers a visual interface where these connections can be modified on the flyFurthermore, PulseAudio has the capability to both provide input to, and take output from, a JACK sound serverThis is not PulseAudio's default behaviour, but it can be configured easily by following [[User:Crantila/FSC/SoundServers/Pulse#Integrating PulseAudio with JACK|these instructions]].
=== Phonon ===
Phonon is a sound server built into the KDE Software Compilation, and is one of the core components of KDE.  By default on Fedora Linux, Phonon feeds output to PulseAudio, but on other platforms (like Mac OS X, Windows, other versions of Linux, FreeBSD, and any other system that supports KDE), Phonon can be configured to feed its output anywhereThis is its greatest strength - that KDE applications like Amarok and Dragon Player need only be programmed to use Phonon, and they can rely on Phonon to take care of everything elseAs KDE applications increasingly find their place in Windows and especially Mac OS X, this cross-platform capability is turning out to be very useful.


!!
== Using JACK ==
<!--
Hmmm, Jack offers a lot _less_ than pulse audio. It is just _different_.
It supports only one sample format, and only one sample rate at a time.
There are many restrictions on what you can do that are not part of PA.
On the other hand it allows applications to connect to each other, I
think PA cannot do that. And it is optimized to run with the lowest
possible latency.
-->


=== Phonon ===
!! What to say here depends on whether jack2 will be available with Fedora 14If it is, no need for CCRMA solutionIf it isn't, need for CCRMA solution. !!
Phonon is a sound server built into the KDE Software Compilation, and is one of the core components of KDE.  By default on Fedora Linux, Phonon feeds output to PulseAudio, but on other platforms (like Mac OS X, Windows, other versions of Linux, FreeBSD, and any other system that supports KDE), Phonon can be configured to feed its output anywhereThis is its greatest strength - that KDE applications like Amarok and Dragon Player need only be programmed to use Phonon, and they can rely on Phonon to take care of everything elseAs KDE applications increasingly find their place in Windows and especially Mac OS X, this cross-platform capability is turning out to be hugely advantageous.


== Using JACK ==
=== Installing and Configuring JACK ===
=== Installing JACK ===
<ol>
# From a terminal, run <code>sudo -c 'yum install jack-audio-connection-kit qjackctl'</code>, or use PackageKit or KPackageKit to install the "jack-audio-connection-kit" and "qjackctl" packages.
<li>Ensure that you have installed the Planet CCRMA at Home repositories.  For instructions, refer to [[User:Crantila/FSC/CCRMA/Everything#Installing_the_Repository|this section]].</li>
#* Note that the "qjackctl" package is optional, but it provides a graphical method to easily control JACK, and is highly recommended.
<li>Use PackageKit or KPackageKit to install the "jack-audio-connection-kit" and "qjackctl" packages, or run the following command in a terminal: <pre>sudo -c 'yum install jack-audio-connection-kit qjackctl'</code></li>
# Approve the installation.
<li>Review and approve the installation, making sure that it completes correctly.</li>
# Run QjackCtl from the KMenu or Applications menu
<li>Run QjackCtl from the KMenu or the Applications menu.</li>
# to start JACK, press "Start"; to stop it press "Stop."
<li>To start the JACK server, press the 'Start' button; to stop it, press the 'Stop' button.</li>
# Use the "Messages" button to see messages, usually errors or warnings.
<li>Use the 'Messages' button to see messages, which are usually errors or warnings.</li>
# Use the "Status" button to see various statistics.
<li>Use the 'Status' button to see various statistics about the currently-running server.</li>
<li>Use the 'Connections' button to see and adjust the connections between applications and audio hardware.</li>
</ol>


=== Further Configuration ===
JACK will operate without following this procedure, but users are strongly encouraged to follow these three steps, for security reasons.  They will help to allow optimal performance of the JACK sound server, while greatly reducing the risk that an application or user will accidentally or malicious take advantage of the capability.
JACK will operate without following this procedure, but for security reasons, users are strongly encouraged to follow these three steps.  They will help to allow optimal performance of the JACK sound server.
<ol>
# Add yourself, and anybody who uses JACK, to the "audio" group (for help see Fedora 12's Deployment Guide, Chapter 22... ?!)
<li>Add all of the users who will use JACK to the "audio" group.  For help with this, see the !!Fedora 14 Deployment Guide, Chapter 22!!</li>
# Planet CCRMA's version of JACK automatically enables real-time prioritiesTo make it safer, edit '/etc/security/limits.conf' so that the final lines read:
<li>The default installation automatically enables real-time priority to be requested by any user or processThis is undesirable, so we will edit it.
  <ol>
  <li>Open a terminal, and run the following command: <pre>sudo -c 'gedit /etc/security/limits.conf'</pre></li>
  <li>Be careful!  You're editing this important system file as the root user!</li>
  <li>Edit the last lines, so that they read:<pre>
   @audio - rtprio 99
   @audio - rtprio 99
   @audio - memlock 4194304
   @audio - memlock 4194304
   @audio - nice -10
   @audio - nice -10</pre></li>
# If you are not using PlanetCCRMA's JACK version, then write those lines in!
  </ol></li>
<li>


This additional configuration will help to ensure that JACK will always choose the right sound card.  If you have only one sound card, it is unnecessary.  If you have a USB sound card, then this method should not be used; rather, you should confirm that the right sound card is selected by QjackCtl every time that you start JACK.
With the default configuration of QjackCtl, it chooses the "default" sound card, which actually goes through the ALSA sound serverWe can avoid this, and use the ALSA drivers without the sound server, which will help JACK to maintain accurately low latencies.  The following procedure configures JACK to connect to the ALSA driver directly.
# Run 'cat /proc/asound/cards' to see a list of sound cards in your system, and choose the one you want by name
<ol>
## Identify the sound card that you wish to use.
<li>In a terminal, run the following command: <pre>cat /proc/asound/cards</pre></li>
## Look in the square brackets <code>[ ]</code> to see the name that you will need to use (for example, "SB").
<li>The command will output a list of sound cards in your system, similar to this:
# In QjackCtl, press the "Setup" button.
<pre>
# In the "Interface" field, input the name of your preferred sound card as <code>hw:SB</code>, where "SB" is replaced by the name in brackets of your preferred sound cardWhile it is possible to refer to the sound cards by number, they may not always receive the same number every time the computer is started.  Using the name in brackets will ensure that the same card is always selected.
0 [SB            ]: HDA-Intel - HDA ATI SB
 
                      HDA ATI SB at 0xf7ff4000 irq 16
=== Integrating PulseAudio with JACK ===
1 [MobilePre      ]: USB-Audio - MobilePre
In standard Fedora Linux systems, when JACK is started, it will take control of the audio devices from PulseAudio.  PulseAudio will not be able to input or output any audio signals while JACK is running.  This is fine for users who only occasionally use JACK, but for users who want to blend JACK and PulseAudio, or who frequently switch between the two, it is not acceptable.  The following instructions will help you to integrate JACK with PulseAudio: all of PulseAudio's input and output will be routed through JACK.
                      M Audio MobilePre at usb-0000:00:13.0-2
# In a terminal, run <code>sudo -c 'yum install pulseaudio-module-jack'</code>, or in PackageKit or KPackageKit, install the "pulseaudio-module-jack" package.
# Edit the file "/etc/pulse/default.pa" to add the following:
<pre>load-module module-jack-sink
load-module module-jack-source
</pre>
</pre>
#* These should be added underneath <code>#load-module module-alsa-sink</code>  
The left-most number is the sound card's number.  The portion in square brackets is the name (these cards are called "SB" and "MobilePre").</li>
                                                                                .wodniw lanimret a ni >edoc/<oiduaeslup llallik>edoc< gnitucexe yb oiduAaesluP tratseR #
<li>Identify your desired sound card in the list.  If it's not in the list, then it's not currently detected and configured by your system.</li>
 
<li>Open the "QjackCtl" application, and press the 'Setup' button.</li>
 
<li>In the "Interface" field, input the name of your preferred sound card with "hw:" in front.  For example, with the sound card information posted above, you might write <code>hw:MobilePre</code></li>
!!
<li>To save your settings, close "QjackCtl".</li>
<!--
</ol>
How to remove pulse audio:
 
If you use Planet CCRMA's jack it is no longer necessary to remove or
disable PA. While PA has been (and sometimes continues to be) a
pain :-), these days anything bad that happens with audio tends to be
blamed on PA whether that is the case or not :-)
 
Installing Jack:
 
When first starting qjackctl it will use "default" for the ALSA device
to use. That is usually a bad idea. The "default" device points by
default to the plughw layer of ALSA, which can do format conversion,
sample rate conversion, channel count conversion, etc, etc. You normally
don't want any of that when using Jack. You want Jack to use the "bare
metal" interface, which is the hw: interface.  


I see this is explained in "further configuration" below, I think it is
=== Using QjackCtl ===
crucial for getting the best performance out of jack.  
The QjackCtl application offers many more features and configuration options.  The patch bay is a notable feature, which lets users save configurations of the "Connections" window, and restore them later, to help avoid the lengthy set-up time that might be required in complicated routing and multiplexing situations.


[has the name of the group changed in fc12? I think it used to be
For more information on QjackCtl, you can refer to [http://www.64studio.com/manual/audio/jack this] web site.
jackuser or something like that, not audio]
 
I don't think USB is a special case, if you use its name in the
"Interface" field of qjackctl and the card is plugged in then it should
always work (of course, if it is unplugged it will not work... :-).  
 
Integrating Pulse Audio with Jack:
 
I think that in the standard Fedora version of Jack, which is based on
jack1, there is no negotiation between jack and PA - if PA is using the
sound card jack will not be able to start (and the error is not clear
unless you read the "Messages" pane carefully). In the case of Planet
CCRMA jack is based on jack2 and has the proper code compiled in so that
starting jack will make PA relinquish the sound card. That will
(should?) not happen with the standard Fedora jack. This will hopefully
be fixed in Fedora 14.  
 
Below "These should be added underneath #load-module module-alsa-sink "
there is a section of backwards spelled text (!?)
-->


== Integrating PulseAudio with JACK ==
== Integrating PulseAudio with JACK ==
# run 'yum install pulseaudio-module-jack'
The default configuration of PulseAudio yields control of the audio equipment to JACK when the JACK server starts.  PulseAudio will not be able to receive input or send output of any audio signals on the audio interface used by JACK.  This is fine for occasional users of JACK, but many users will want to use JACK and PulseAudio simultaneously, or switch between the two frequently.  The following instructions will configure PulseAudio so that its input and output is routed through JACK.
# edit '/etc/pulse/default.pa' to add:
<ol>
  load-module module-jack-sink
<li>Use PackageKit or KPackageKit to install the "pulseaudio-module-jack" package, or in a terminal run the following command: <pre>su -c 'yum install pulseaudio-module-jack'</pre></li>
  load-module module-jack-source
<li>Approve the installation and ensure that it is carried out properly.</li>
  ** I did it just underneath the commented-out #load-module module-alsa-sink, etc.
<li>You'll need to edit the PulseAudio configuration file to use the JACK module.
# Restart PulseAudio
  <ol>
## run 'killall pulseaudio' ????then 'pulseaudio &'????
  <li>Be careful! You will be editing an important system file as the root user!</li>
  -- OR --
  <li>Run the following command in a terminal: <pre>sudo -c 'gedit /etc/pulse/default.pa'</pre></li>
## Restart the computer
  <li>Add the following lines, underneath the line that says <code>#load-module module-alsa-sink</code>:
# Confirm that it works by opening QjackCtl
  <pre>load-module module-jack-sink
## The display should already say "Active"
load-module module-jack-source</pre></li>
## In the "Connect" window, on the 'Audio' tab, there should be PulseAudio devices on each side, and they should be connected to "system" on the other side.
  </ol></li>
# Open QjackCtl's "Setup" window, then go to 'Options' tab, then uncheck "Execute script after Shutdown: killall jackd", so that JACK remains running, for use with PulseAudio, after QjackCtl is closed.
<li>
# When PulseAudio starts JACK, it uses the the command found in '~/.jackdrc', and QjackCtl automatically updates that (if it doesn't then edit it yourself)
<li>Restart PulseAudio by running the following command in a terminal: <pre>killall pulseaudio</pre>  It will start again automatically.</li>
# If you use a very high sample rate, then PulseAudio uses a lot of CPU power
<li>Confirm that this has worked by opening QjackCtlThe display should confirm that JACK is "Active".</li>
 
<li>In the "Connect" window, on the "Audio" tab, there should be PulseAudio devices on each side, and they should be connected to "system" devices on the opposite sides.</li>
 
<li>Open QjackCtl's "Setup" window, then click on the "Options" tab.  Uncheck "Execute script after Shutdown: killall jackd".  If you did not make this change, then QjackCtl would stop the JACK server from running every time the program quits.  Since PulseAudio is still expecting to use JACK after that, you shouldn't do this any more.</li>
* must refer to kernel/system optimization section
<li>When PulseAudio starts JACK, it uses the command found in the <code>~/.jackdrc</code> file.  QjackCtl automatically updates this file when you change settings, but you may have to restart both PulseAudio and JACK in order to get the new changes to take effect.  If they refuse to take effect, you can edit that file yourself.</li>
<li>Be careful about using a very high sample rate with PulseAudio, since it will tend to use a lot of CPU power.</li>
</ol>

Revision as of 04:37, 27 July 2010

DocsProject Header docTeam1.png
Warning.png
This page is a draft only
It is still under construction and content may change. Do not rely on the information on this page.

Address: User:Crantila/FSC/Sound_Servers

How Computers Deal with Hardware Devices

One of the techniques consistently used in computer science is abstraction. Abstraction is the process of creating a generic model for something (or some things) that are actually unique. The "driver" for a hardware device in a computer is one form of dealing with abstraction: the computer's software interacts with all sound cards in a similar way, and it is the driver which translates the universal instructions given by the software into specific instructions for operating that hardware device. Consider this real-world comparison: you know how to operate doors because of abstracted instructions. You don't know how to open and close every door that exists, but from the ones that you do know how to operate, your brain automatically creates abstracted instructions, like "turn the handle," and "push the door," which apply with all or most doors. When you see a new door, you have certain expectations about how it works, based on the abstract behaviour of doors, and you quickly figure out how to operate that specific door with a simple visual inspection. The principle is the same with computer hardware drivers: since the computer already knows how to operate "sound cards," it just needs a few simple instructions (the driver) in order to know how to operate any particular sound card.

How Linux Deals with Audio: ALSA

In Linux, the core of the operating system provides hardware drivers for most audio hardware. The hardware drivers, and the instructions that other software can use to connect to those drivers, are collectively called "ALSA," which stands for "Advanced Linux Sound Architecture." ALSA is the most direct way that software applications can interact with audio and MIDI hardware, and it used to be the most common way. However, in order to include all of the features that a software application might want to use, ALSA is quite complex, and can be error-prone. For this and many other reasons, another level of abstraction is normally used, and this makes it easier for software applications to take advantage of the features they need.

Sound Servers

Sound servers are software applications that run "in the background," meaning they are rarely seen by users. They are used to provide another level of abstraction - essentially to automatically take care of certain aspects of using ALSA, thereby making it easier for software applications to use the audio hardware. The three sound servers discussed in this guide have distinctly different goals, provide distinctly different features and capabilities, and should not be viewed as though one is universally better than the others.

PulseAudio

PulseAudio is an advanced sound server, intended to make audio programming in GNU/Linux operating systems as easy as possible. The idea behind its design is that an audio application needs only to output audio to PulseAudio, and PulseAudio will take care of the rest: choosing and controlling a particular device, adjusting the volume, working with other applications, and so on. PulseAudio even has the ability to use "networked sound," which allows two computers using PulseAudio to communicate as though they were one computer - either computer can input from or output to either computer's audio hardware just as easily as its own audio hardware. This is all controlled within PulseAudio, so no further complication is added to the software.

The Fedora Project's integration of PulseAudio as a vital part of the operating system has helped to ensure that audio applications can "just work" for most people under most circumstances. This has made it much easier for users to carry out basic audio tasks.

JACK Audio Connection Kit

The JACK sound server offers fewer features than other sound servers, but they are tailor-made to allow the functionality required by audio creation applications. JACK also makes it easier for users to configure the options that are most important for such situations. The server supports only one sample rate and format at a time, and allows applications and hardware to easily connect and multiplex in ways that other sound servers do not. It is also optimized to run with consistently low latencies. Although using JACK requires a better understanding of the underlying hardware, the "QjackCtl" application provides a graphical user interface to ease the process.

Phonon

Phonon is a sound server built into the KDE Software Compilation, and is one of the core components of KDE. By default on Fedora Linux, Phonon feeds output to PulseAudio, but on other platforms (like Mac OS X, Windows, other versions of Linux, FreeBSD, and any other system that supports KDE), Phonon can be configured to feed its output anywhere. This is its greatest strength - that KDE applications like Amarok and Dragon Player need only be programmed to use Phonon, and they can rely on Phonon to take care of everything else. As KDE applications increasingly find their place in Windows and especially Mac OS X, this cross-platform capability is turning out to be very useful.

Using JACK

!! What to say here depends on whether jack2 will be available with Fedora 14. If it is, no need for CCRMA solution. If it isn't, need for CCRMA solution. !!

Installing and Configuring JACK

  1. Ensure that you have installed the Planet CCRMA at Home repositories. For instructions, refer to this section.
  2. Use PackageKit or KPackageKit to install the "jack-audio-connection-kit" and "qjackctl" packages, or run the following command in a terminal:
    sudo -c 'yum install jack-audio-connection-kit qjackctl'</code></li>
    <li>Review and approve the installation, making sure that it completes correctly.</li>
    <li>Run QjackCtl from the KMenu or the Applications menu.</li>
    <li>To start the JACK server, press the 'Start' button; to stop it, press the 'Stop' button.</li>
    <li>Use the 'Messages' button to see messages, which are usually errors or warnings.</li>
    <li>Use the 'Status' button to see various statistics about the currently-running server.</li>
    <li>Use the 'Connections' button to see and adjust the connections between applications and audio hardware.</li>
    </ol>
    
    JACK will operate without following this procedure, but users are strongly encouraged to follow these three steps, for security reasons.  They will help to allow optimal performance of the JACK sound server, while greatly reducing the risk that an application or user will accidentally or malicious take advantage of the capability.
    <ol>
    <li>Add all of the users who will use JACK to the "audio" group.  For help with this, see the !!Fedora 14 Deployment Guide, Chapter 22!!</li>
    <li>The default installation automatically enables real-time priority to be requested by any user or process.  This is undesirable, so we will edit it.
       <ol>
       <li>Open a terminal, and run the following command: <pre>sudo -c 'gedit /etc/security/limits.conf'
  3. Be careful! You're editing this important system file as the root user!
  4. Edit the last lines, so that they read:
      @audio - rtprio 99
      @audio - memlock 4194304
      @audio - nice -10
  • With the default configuration of QjackCtl, it chooses the "default" sound card, which actually goes through the ALSA sound server. We can avoid this, and use the ALSA drivers without the sound server, which will help JACK to maintain accurately low latencies. The following procedure configures JACK to connect to the ALSA driver directly.
    1. In a terminal, run the following command:
      cat /proc/asound/cards
    2. The command will output a list of sound cards in your system, similar to this:
       0 [SB             ]: HDA-Intel - HDA ATI SB
                            HDA ATI SB at 0xf7ff4000 irq 16
       1 [MobilePre      ]: USB-Audio - MobilePre
                            M Audio MobilePre at usb-0000:00:13.0-2
      
      The left-most number is the sound card's number. The portion in square brackets is the name (these cards are called "SB" and "MobilePre").
    3. Identify your desired sound card in the list. If it's not in the list, then it's not currently detected and configured by your system.
    4. Open the "QjackCtl" application, and press the 'Setup' button.
    5. In the "Interface" field, input the name of your preferred sound card with "hw:" in front. For example, with the sound card information posted above, you might write hw:MobilePre
    6. To save your settings, close "QjackCtl".

    Using QjackCtl

    The QjackCtl application offers many more features and configuration options. The patch bay is a notable feature, which lets users save configurations of the "Connections" window, and restore them later, to help avoid the lengthy set-up time that might be required in complicated routing and multiplexing situations.

    For more information on QjackCtl, you can refer to this web site.

    Integrating PulseAudio with JACK

    The default configuration of PulseAudio yields control of the audio equipment to JACK when the JACK server starts. PulseAudio will not be able to receive input or send output of any audio signals on the audio interface used by JACK. This is fine for occasional users of JACK, but many users will want to use JACK and PulseAudio simultaneously, or switch between the two frequently. The following instructions will configure PulseAudio so that its input and output is routed through JACK.

    1. Use PackageKit or KPackageKit to install the "pulseaudio-module-jack" package, or in a terminal run the following command:
      su -c 'yum install pulseaudio-module-jack'
    2. Approve the installation and ensure that it is carried out properly.
    3. You'll need to edit the PulseAudio configuration file to use the JACK module.
      1. Be careful! You will be editing an important system file as the root user!
      2. Run the following command in a terminal:
        sudo -c 'gedit /etc/pulse/default.pa'
      3. Add the following lines, underneath the line that says #load-module module-alsa-sink:
        load-module module-jack-sink
        load-module module-jack-source
    4. Restart PulseAudio by running the following command in a terminal:
      killall pulseaudio
      It will start again automatically.
    5. Confirm that this has worked by opening QjackCtl. The display should confirm that JACK is "Active".
    6. In the "Connect" window, on the "Audio" tab, there should be PulseAudio devices on each side, and they should be connected to "system" devices on the opposite sides.
    7. Open QjackCtl's "Setup" window, then click on the "Options" tab. Uncheck "Execute script after Shutdown: killall jackd". If you did not make this change, then QjackCtl would stop the JACK server from running every time the program quits. Since PulseAudio is still expecting to use JACK after that, you shouldn't do this any more.
    8. When PulseAudio starts JACK, it uses the command found in the ~/.jackdrc file. QjackCtl automatically updates this file when you change settings, but you may have to restart both PulseAudio and JACK in order to get the new changes to take effect. If they refuse to take effect, you can edit that file yourself.
    9. Be careful about using a very high sample rate with PulseAudio, since it will tend to use a lot of CPU power.