[pulseaudio-discuss] Better JACK Configurability

Tanu Kaskinen tanuk at iki.fi
Wed Mar 20 11:28:50 PDT 2013


I added a GSoC idea to the wiki[1]. I'll copy it here for comments - is
there anything that should be changed?

=== Better JACK Configurability ===

'''Problem statement:''' [[http://jackaudio.org/|JACK]] is a sound
server for so called "pro audio" use cases, such as music production or
live performances. Many people want to run !PulseAudio on top of JACK,
so that JACK has direct access to the sound card and !PulseAudio
accesses the sound card through JACK. When running !PulseAudio on top of
JACK, the default configuration creates one two-channel sink (i.e.
output device) and one two-channel source (i.e. input device) for JACK
inside !PulseAudio. If the user wants something different, the only way
to change the configuration is to edit the configuration file by hand,
which isn't particularly user-friendly. Furthermore, the configuration
parameters are very limited: only the number of channels per device can
be changed, and it's not possible to have different number of channels
for input and output. (Actually, to be more accurate, it is possible to
have different number of channels for input and output, if you load
module-jack-sink and module-jack-source manually instead of relying on
module-jackdbus-detect, but then you lose the convenience that
module-jackdbus-detect provides.)

Things that users might want to configure:
 * channels for input and output separately
 * disabling input or output altogether
 * multiple input or output devices
 * modes for quickly switching between several configurations

'''Suggested solution:''' The set of parameters that
module-jackdbus-detect supports should be expanded to cover the given
use cases. As the responsibilities of module-jackdbus-detect grow beyond
bare detection, it might make sense to rename the module to simply

The switchable modes should be implemented as card profiles. Currently,
the JACK code doesn't implement a card object, so one task is to
implement a "JACK card".

To achieve user-friendliness, there should be a GUI for changing the
settings. Just implementing the JACK card with a good default set of
profiles would go a long way, because the existing GUIs already support
changing card profiles.

Implementing only the JACK card would probably make this project too
small to fill the whole summer, so there could be some extra GUI options
added for JACK: for example, the "auto-connect" option could be exposed
in a GUI (maybe separately for each device or card profile). It's a
simple boolean option that is already supported, but changing the option
value requires editing the configuration file by hand. Adding new
run-time-editable configuration options is far from trivial: the GUI
code needs to be written, the client API needs to be extended, the IPC
protocol needs to be extended and persistent storage for the options
needs to be implemented.

'''Contacts:''' Tanu

'''Necessary background:''' C for !PulseAudio code. C++ for pavucontrol
code (the preferred GUI application to modify is pavucontrol).

'''Potential mentors:''' Tanu

[1] http://www.freedesktop.org/wiki/Software/PulseAudio/GSoC2013


More information about the pulseaudio-discuss mailing list