QjackCtl 0.3.6 - Full D-Busification!

Awe! Times they are a-changing although Bob Dylan has no D-Business here. The old and cutie gooey for JACK just got one turn around the verge of bit-rotting. This time it brings full JACK D-Bus support, or almost. It also adds D-Bus access for most GUI actions which some might find pretty handy for keyboard shortcut binding from your desktop environment of choice. However, if babies health is your top concern you can just turn this D-Bus thing off and play with the Old times ;) Ahem...

QjackCtl 0.3.6 is now released!

More details in the change-log, below.

Website:

http://qjackctl.sourceforge.net

Project page:

http://sourceforge.net/projects/qjackctl

Downloads:

  • source tarball:
    qjackctl-0.3.6.tar.gz
  • source package (openSUSE 11.2):
    qjackctl-0.3.6-2.rncbc.suse112.src.rpm
  • binary packages (openSUSE 11.2):
    qjackctl-0.3.6-2.rncbc.suse112.i586.rpm
    qjackctl-0.3.6-2.rncbc.suse112.x86_64.rpm
  • binary packages (Ubuntu 8.04):
    qjackctl_0.3.6-1.rncbc.ubuntu804_i386.deb
    qjackctl_0.3.6-1.rncbc.ubuntu804_amd64.deb
  • binary packages (Ubuntu 9.10):
    qjackctl_0.3.6-1.rncbc.ubuntu910_i386.deb
    qjackctl_0.3.6-1.rncbc.ubuntu910_amd64.deb
  • Weblog (upstream support):

    http://www.rncbc.org

    License:

    QjackCtl is free, open-source software, distributed under the terms of the GNU General Public License (GPL) version 2 or later.

    Change-log:

  • Make sure socket names are unique on each side of the Patchbay (another patch from Dominic Sacre, thanks).
  • A bunch of primitive D-Bus interface slots have been added, allowing shortcut access to most of main applications actions like toggling Messages, Status, Connections, Patchbay widget pop-ups, reset stats, transport and so on. New bindings are given eg. via dbus-send --system / org.rncbc.qjackctl.(main, messages, status, connections, patchbay, setup, about, reset, rewind, backward, play, pause, forward). (from an original idea from Sebastian Gutsfeld, thanks).
  • Patchbay snapshot now tolerates JACK client port strings that have more than one semi-colon in it, honoring just the first one exactly as everywhere else eg. Connections. (a glitch as reported by Geoff Beasley while using a2jmidid).
  • Most modal message dialog boxes (eg. critical errors) are now replaced by system tray icon bubble messages where available (mitigating feature request #2936455).
  • Comply with jackd >= 0.118.0 which now runs in real-time mode by default; use of -R is now deprecated from the jackd command line interface options; use -r to run in non-real-time-scheduling.
  • A man page has beed added.
  • Got rid of a pretty old and never really useful "jackd-realtime" server path option--actually, it was only seen available on the now defunct old Mandrake Linux distro.
  • D-Bus support, as provided by org.jackaudio.service aka jackdbus, is now being introduced and used wherever available and whenever enabled. Configuring, starting, stopping and logging the JACK back-end server through the "infamous" jackdbus service is now being seamlessly exploited.
  • Global configuration state is now explicitly saved/committed to disk when Setup dialog changes are accepted and applied.
  • Server name command line option added (-n, --server-name).
  • Single application instance restriction option added (X11).
  • Setup for the netjack (slave) "net" driver has now sample-rate and frames per buffer (period size) settings disabled and/or ignored, as those are pretty much auto-detected by default; also, a new "netone" backend driver option has been introduced (as suggested by Torben Hohn).
  • Czech (cs) translation added (by Pavel Fric).
  • Fixed some main window keyboard shortcuts. Escape key now closes Connections, Patchbay, Status and Messages widgets as usual (bug #2871548).
  • Fixed glitch on configure portaudio support, specially when the library is not detected as available.
  • Cheers && Enjoy.

    Comments

    Comment viewing options

    Select your preferred way to display the comments and click "Save settings" to activate your changes.

    Detected bad line in russian translation file.

    At the "translations/qjackctl_ru.ts", string 1550:
    "alsa" is translated to "ALSA"

    This mismatch broke QJackCtl to use alsa driver after other one used (net, netone,...).
    It seems there was russian humor... or experiment???

    rncbc's picture

    Re: Detected bad line in russian translation file.

    Please, report to the russian translator (see TRANSLATORS file).

    Cheers

    Um, no :)

    That should be reported to developer who made localizable things that should not be localizable ;)

    Seriously, if it can be broken, then it will be broken :) It's just a matter of time.

    rncbc's picture

    Um, wha?

    I'm watching you Alex >:)

    Thanks for information.

    Thanks for information.

    Perhaps a bug??

    Using latest version from Debian Sid repository, I'm trying to use pre/post script feature tu integrate pulseaudio into jack. When I simply use the Start/Stop button from gui every script stage is nicely esecuted:
    Execute script on Startup
    Execute script after Startup
    ..starting the server
    Execute script on Shutdown
    Execute script after Shutdown
    ..stopping the server

    Rather when I quit the app the 'Execute script after Shutdown' is not executed :-(
    Can someone confirm this behaviour??

    rncbc's picture

    Re: Perhaps a bug??

    What script is this you wish to run after (jackd) shutdown and which version is that of QjackCtl?

    Re: Perhaps a bug??

    my Qjack.conf:
    [Splitter]
    AudioConnectView\sizes=203, 95, 214
    MidiConnectView\sizes=34, 20, 34
    AlsaConnectView\sizes=34, 20, 34
    PatchbayView\sizes=34, 20, 34

    [Settings]
    Server=jackd
    Realtime=true
    SoftMode=false
    Monitor=false
    Shorts=false
    NoMemLock=false
    UnlockMem=false
    HWMon=false
    HWMeter=false
    IgnoreHW=false
    Priority=70
    Frames=128
    SampleRate=48000
    Periods=2
    WordLength=16
    Wait=21333
    Chan=0
    Driver=alsa
    Interface=hw:1
    Audio=0
    Dither=0
    Timeout=5000
    InDevice=
    OutDevice=
    InChannels=0
    OutChannels=0
    InLatency=0
    OutLatency=0
    StartDelay=0
    Verbose=false
    PortMax=256
    MidiDriver=seq
    realtime\Server=jackd
    realtime\Realtime=true
    realtime\SoftMode=false
    realtime\Monitor=false
    realtime\Shorts=false
    realtime\NoMemLock=false
    realtime\UnlockMem=false
    realtime\HWMon=false
    realtime\HWMeter=false
    realtime\IgnoreHW=false
    realtime\Priority=70
    realtime\Frames=128
    realtime\SampleRate=48000
    realtime\Periods=2
    realtime\WordLength=16
    realtime\Wait=21333
    realtime\Chan=0
    realtime\Driver=alsa
    realtime\Interface=hw:1
    realtime\Audio=0
    realtime\Dither=0
    realtime\Timeout=5000
    realtime\InDevice=
    realtime\OutDevice=
    realtime\InChannels=0
    realtime\OutChannels=0
    realtime\InLatency=0
    realtime\OutLatency=0
    realtime\StartDelay=0
    realtime\Verbose=false
    realtime\PortMax=256
    realtime\MidiDriver=seq
    mix_light\Server=jackd
    mix_light\Realtime=true
    mix_light\SoftMode=false
    mix_light\Monitor=false
    mix_light\Shorts=false
    mix_light\NoMemLock=false
    mix_light\UnlockMem=false
    mix_light\HWMon=false
    mix_light\HWMeter=false
    mix_light\IgnoreHW=false
    mix_light\Priority=70
    mix_light\Frames=1024
    mix_light\SampleRate=48000
    mix_light\Periods=2
    mix_light\WordLength=16
    mix_light\Wait=21333
    mix_light\Chan=0
    mix_light\Driver=alsa
    mix_light\Interface=hw:1
    mix_light\Audio=0
    mix_light\Dither=0
    mix_light\Timeout=5000
    mix_light\InDevice=
    mix_light\OutDevice=
    mix_light\InChannels=0
    mix_light\OutChannels=0
    mix_light\InLatency=0
    mix_light\OutLatency=0
    mix_light\StartDelay=0
    mix_light\Verbose=false
    mix_light\PortMax=256
    mix_light\MidiDriver=seq
    mix_hard\Server=jackd
    mix_hard\Realtime=true
    mix_hard\SoftMode=false
    mix_hard\Monitor=false
    mix_hard\Shorts=false
    mix_hard\NoMemLock=false
    mix_hard\UnlockMem=false
    mix_hard\HWMon=false
    mix_hard\HWMeter=false
    mix_hard\IgnoreHW=false
    mix_hard\Priority=70
    mix_hard\Frames=2048
    mix_hard\SampleRate=48000
    mix_hard\Periods=4
    mix_hard\WordLength=16
    mix_hard\Wait=21333
    mix_hard\Chan=0
    mix_hard\Driver=alsa
    mix_hard\Interface=hw:1
    mix_hard\Audio=0
    mix_hard\Dither=0
    mix_hard\Timeout=5000
    mix_hard\InDevice=
    mix_hard\OutDevice=
    mix_hard\InChannels=0
    mix_hard\OutChannels=0
    mix_hard\InLatency=0
    mix_hard\OutLatency=0
    mix_hard\StartDelay=0
    mix_hard\Verbose=false
    mix_hard\PortMax=256
    mix_hard\MidiDriver=seq

    [History]
    ServerComboBox\Item1=jackd
    ServerComboBox\Item2=jackdmp
    ServerComboBox\Item3=jackstart
    ServerComboBox\Item4=jackd-realtime
    InterfaceComboBox\Item1=hw:1
    InterfaceComboBox\Item2=(default)
    InterfaceComboBox\Item3=hw:0
    InterfaceComboBox\Item4=plughw:0
    InterfaceComboBox\Item5=/dev/audio
    InterfaceComboBox\Item6=/dev/dsp
    InDeviceComboBox\Item1=(default)
    InDeviceComboBox\Item2=hw:0
    InDeviceComboBox\Item3=plughw:0
    InDeviceComboBox\Item4=/dev/audio
    InDeviceComboBox\Item5=/dev/dsp
    OutDeviceComboBox\Item1=(default)
    OutDeviceComboBox\Item2=hw:0
    OutDeviceComboBox\Item3=plughw:0
    OutDeviceComboBox\Item4=/dev/audio
    OutDeviceComboBox\Item5=/dev/dsp
    StartupScriptShellComboBox\Item1=pulse-into-jack pre-start
    PostShutdownScriptShellComboBox\Item1=pulse-into-jack post-stop
    XrunRegexComboBox\Item1=xrun of at least ([0-9|\\.]+) msecs
    MessagesLogPathComboBox\Item1=qjackctl.log
    ServerConfigNameComboBox\Item1=.jackdrc
    StartupScriptShellComboBox\Item2="pulse-into-jack pre 2> /dev/null; killall pulseaudio;"
    PostStartupScriptShellComboBox\Item1=pulse-into-jack post-start
    ShutdownScriptShellComboBox\Item1=pulse-into-jack pre-stop
    PostShutdownScriptShellComboBox\Item2="kill -s KILL `pidof pulseaudio`; pulseaudio -nF /etc/pulse/default.pa 2> /dev/null; pulse-into-jack post; "
    PostStartupScriptShellComboBox\Item2="pulseaudio -D --realtime -n -F /home/revol/jackd.pa 2> /dev/null; pulse-into-jack post; "
    PostStartupScriptShellComboBox\Item3="pulse-into-jack post; pulseaudio -D --realtime -n -F /home/revol/jackd.pa 2> /dev/null; pacmd set-default-sink jack_out; pacmd set-default-source jack_in"
    PostStartupScriptShellComboBox\Item4="pulse-into-jack post; pulseaudio -D --realtime -n -F /home/revol/jackd.pa 2> /dev/null; pacmd set-default-sink jack_out"
    PostStartupScriptShellComboBox\Item5="pulse-into-jack post; pulseaudio -D --realtime -n -F /home/revol/jackd.pa 2> /dev/null; pacmd set-default-sink jack_out # && [ -f /tmp/okskype ] && skype &"
    PostStartupScriptShellComboBox\Item6="pulse-into-jack post; pulseaudio -D --realtime -n -F /home/revol/jackd.pa 2> /dev/null # && [ -f /tmp/okskype ] && skype &"
    PostStartupScriptShellComboBox\Item7=pulse-into-jack post #pulseaudio -D --realtime -n -F /home/revol/jackd.pa 2> /dev/null # && [ -f /tmp/okskype ] && skype &
    ActivePatchbayPathComboBox\Item1=/home/revol/.patchbay
    StartupScriptShellComboBox\Item3="pulse-into-jack pre; killall pulseaudio;"
    PostShutdownScriptShellComboBox\Item3="pulse-into-jack post; "
    StartupScriptShellComboBox\Item4="pulse-into-jack pre; pulseaudio --kill 2> /dev/null"
    PostShutdownScriptShellComboBox\Item4="sleep 1; pulseaudio -n -F /etc/pulse/default.pa 2> /dev/null; pulse-into-jack post; "
    StartupScriptShellComboBox\Item5="pulse-into-jack pre; pulseaudio --kill 2> /dev/null # rm /tmp/okskype 2> /dev/null; killall skype && touch /tmp/okskype"
    PostShutdownScriptShellComboBox\Item5="pulseaudio -n -F /etc/pulse/default.pa 2> /dev/null; pulse-into-jack post; "
    StartupScriptShellComboBox\Item6="pulse-into-jack pre # rm /tmp/okskype 2> /dev/null; killall skype && touch /tmp/okskype; pulseaudio --kill 2> /dev/null"
    PostStartupScriptShellComboBox\Item8=pulseaudio -D --realtime -n -F /home/revol/jackd.pa 2> /dev/null # && [ -f /tmp/okskype ] && skype &
    StartupScriptShellComboBox\Item7="rm /tmp/okskype 2> /dev/null; killall skype && touch /tmp/okskype; pulseaudio --kill 2> /dev/null"
    StartupScriptShellComboBox\Item8="rm /tmp/okskype 2> /dev/null; killall skype && touch /tmp/okskype; pulseaudio --kill"
    ShutdownScriptShellComboBox\Item2="pulse-into-jack pre;"
    PostShutdownScriptShellComboBox\Item6="kdialog --passivepopup \"ok\" 500; pulseaudio -n -F /etc/pulse/default.pa 2> /dev/null; pulse-into-jack post; "
    PostShutdownScriptShellComboBox\Item7="kdialog --passivepopup \"ok\" 500; pulseaudio 2> /dev/null; pulse-into-jack post; "
    PostShutdownScriptShellComboBox\Item8="pulseaudio; kdialog --passivepopup \"ok\" 5; pulse-into-jack post; "
    ShutdownScriptShellComboBox\Item3="pulse-into-jack pre; killall pulseaudio;"
    ShutdownScriptShellComboBox\Item4="pulse-into-jack pre; pulseaudio --kill"
    ShutdownScriptShellComboBox\Item5="pulse-into-jack pre; pulseaudio --kill;"
    ShutdownScriptShellComboBox\Item6="pulse-into-jack pre; pulseaudio --kill #killall skype 2> /dev/null;"
    ShutdownScriptShellComboBox\Item7="pulse-into-jack pre #killall skype 2> /dev/null; pulseaudio --kill;"
    ShutdownScriptShellComboBox\Item8="killall skype 2> /dev/null; pulseaudio --kill;"

    [Geometry]
    qjackctlMessagesForm\x=352
    qjackctlMessagesForm\y=567
    qjackctlMessagesForm\width=846
    qjackctlMessagesForm\height=243
    qjackctlMessagesForm\visible=false
    qjackctlStatusForm\x=711
    qjackctlStatusForm\y=716
    qjackctlStatusForm\width=563
    qjackctlStatusForm\height=236
    qjackctlStatusForm\visible=false
    qjackctlConnectionsForm\x=676
    qjackctlConnectionsForm\y=635
    qjackctlConnectionsForm\width=544
    qjackctlConnectionsForm\height=282
    qjackctlConnectionsForm\visible=true
    qjackctlPatchbayForm\x=338
    qjackctlPatchbayForm\y=468
    qjackctlPatchbayForm\width=803
    qjackctlPatchbayForm\height=369
    qjackctlPatchbayForm\visible=false
    qjackctlMainForm\x=936
    qjackctlMainForm\y=827
    qjackctlMainForm\width=300
    qjackctlMainForm\height=102
    qjackctlMainForm\visible=false

    [Program]
    Version=0.3.6

    [Presets]
    DefPreset=realtime
    Preset1=mix_hard
    Preset2=mix_light
    Preset3=realtime

    [Options]
    StartJack=true
    StartupScript=true
    StartupScriptShell=pulse-into-jack pre-start
    PostStartupScript=true
    PostStartupScriptShell=pulse-into-jack post-start
    ShutdownScript=true
    ShutdownScriptShell=pulse-into-jack pre-stop
    PostShutdownScript=true
    PostShutdownScriptShell=pulse-into-jack post-stop
    StdoutCapture=true
    XrunRegex=xrun of at least ([0-9|\\.]+) msecs
    XrunIgnoreFirst=false
    ActivePatchbay=true
    ActivePatchbayPath=/home/revol/.patchbay
    MessagesLog=false
    MessagesLogPath=qjackctl.log
    BezierLines=false
    TimeDisplay=0
    TimeFormat=0
    MessagesFont="Bitstream Vera Sans,10,-1,5,50,0,0,0,0,0"
    MessagesLimit=true
    MessagesLimitLines=1000
    DisplayFont1="Bitstream Vera Sans,12,-1,5,75,0,0,0,0,0"
    DisplayFont2="Bitstream Vera Sans,10,-1,5,50,0,0,0,0,0"
    DisplayEffect=true
    DisplayBlink=true
    JackClientPortAlias=0
    ConnectionsIconSize=0
    ConnectionsFont="Bitstream Vera Sans,10,-1,5,50,0,0,0,0,0"
    QueryClose=false
    KeepOnTop=false
    SystemTray=true
    StartMinimized=true
    DelayedSetup=false
    ServerConfig=true
    ServerConfigName=.jackdrc
    ServerConfigTemp=false
    QueryShutdown=false
    AlsaSeqEnabled=true
    AliasesEnabled=false
    AliasesEditing=false
    LeftButtons=true
    RightButtons=true
    TransportButtons=true
    TextLabels=false
    BaseFontSize=0
    DBusEnabled=true
    Singleton=true

    [Defaults]
    PatchbayPath=/home/revol/.patchbay

    [Patchbays]
    Patchbay1=/home/revol/.patchbay
    My script:
    #!/bin/bash
    which pacmd &> /dev/null
    [ $? -eq 1 ] && echo "pacmd not present in your PATH, please install pulseaudio-utils" && exit 1

    STORE_FILE="/tmp/pulse-into-jack-apps"
    PRE_POST="`echo $1 | cut -f1 -d "-"`"
    START_STOP="`echo $1 | cut -f2 -d "-"`"

    pre() {
    LISTA_APPZ=`pacmd list-clients |grep application.process.binary|grep -o -e "\"[A-Za-z0-9]*\""|sed 's/\"//g'|sed -e 's/\n/\ /g'`
    echo -e "Executing \"pre\" action for pulse-into-jack\nKilling and storing applications connected to PulseAudio"
    echo -ne $LISTA_APPZ" " > $STORE_FILE
    echo -e "\n *** ***"
    echo $LISTA_APPZ
    echo -e " *** ***"
    kill -s KILL `pidof $LISTA_APPZ` 2> /dev/null
    }

    post() {
    echo -e "Executing \"post\" action for pulse-into-jack\nRestarting stored applications connected to PulseAudio"
    [ -f $STORE_FILE ] && echo -e "\n *** ***" && cat $STORE_FILE && echo -e "\n *** ***"
    if [ "x`cat $STORE_FILE|sed 's/ //g' 2> /dev/null`" != "x" ]
    then
    cat $STORE_FILE|sed 's/\ / \&\n/g' > $STORE_FILE"tmp" && rm $STORE_FILE
    . $STORE_FILE"tmp" 2> /dev/null
    rm $STORE_FILE"tmp"
    fi
    }

    case $1 in
    "pre-start")
    pre
    kill -s KILL `pidof pulseaudio` 2> /dev/null
    ;;
    "pre-stop")
    pre
    kill -s KILL `pidof pulseaudio` 2> /dev/null
    ;;
    "post-start")
    pulseaudio -D --realtime -n -F /etc/pulse/jackd.pa 2> /dev/null &
    post
    ;;
    "post-stop")
    # pulseaudio 2> /dev/null &
    post
    ;;
    *)
    echo -e "Usage:\npulse-into-jack pre-start # To kill and store apps connected to PulseAudio\npulse-into-jack post-start # To restart stored apps, then start pulseaudio in Jack environment\npulse-into-jack pre-stop # To kill and store apps connected to PulseAudio\npulse-into-jack post-stop # To restart stored apps, then start pulseaudio with default settings"
    exit 1
    ;;
    esac

    exit 0

    If I start/stop server everything works well, but when I quit the app, post-shutdown script isn't executed.,
    qjackctl --version
    Qt: 4.5.3
    QjackCtl: 0.3.6

    Sorry for unformatted code, I used..

    Sorry for unformatted code, I used < code > tag, but it didn't worked as I wanted...

    rncbc's picture

    Re: Perhaps a bug??

    please, try enabling message file logging (see Setup.../Options/Logging) then show here that last portion of the written log just when you quit qjackctl.

    seeya

    Comment viewing options

    Select your preferred way to display the comments and click "Save settings" to activate your changes.

    Post new comment

    The content of this field is kept private and will not be shown publicly.
    • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
    • Lines and paragraphs break automatically.

    More information about formatting options

    By submitting this form, you accept the Mollom privacy policy.