You are here

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

    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

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

    Cheers

    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

    I'm watching you Alex >:)

    Thanks for information.

    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

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

    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 < code > tag, but it didn't worked as I wanted...

    rncbc's picture

    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

    Ok, with log feature I discovered one interesting thing...
    Quitting the application, qjackctl executes a pre-shutdown script before jackd stop, and a pre-shutdown script after too!! I don't know if this issue is only on qjackctl from debian sid.
    Using start/stop from gui, every script works well.

    I'm also doing italian translation for the gui, could you include it?

    Thank you

    rncbc's picture

    Now, are you sure that "Post-shutdown scripts..." is never seen on the logs when you quit? You say that "Shutdown script..." which is about the pre-shutdown one, appear twice?? Weird.

    Re. regarding (it) translation, you're welcome! Send me your "qjackctl_it.ts" file in a email attachment and I'll be pleased to add it to the source code repository ASAP.

    Seeya

    Yes, as you describe I've 2 pre-shutdown scripts in the log:

    22:22:42.103 Statistics reset.
    22:22:46.227 Client deactivated.
    22:22:46.249 Shutdown script...
    22:22:46.250 pulse-into-jack pre-stop
    Executing "pre" action for pulse-into-jack
    Killing and storing applications connected to PulseAudio
    *** ***
    skype
    *** ***
    22:22:47.037 Shutdown script terminated successfully.
    22:22:47.037 JACK is stopping...
    jack main caught signal 15
    22:22:47.250 Shutdown script...
    22:22:47.251 pulse-into-jack pre-stop
    Nessun demone PulseAudio in esecuzione o non in esecuzione come demone di sessione.
    Executing "pre" action for pulse-into-jack
    Killing and storing applications connected to PulseAudio
    *** ***
    *** ***
    22:22:47.688 Shutdown script terminated successfully.
    22:22:47.688 JACK is stopping...
    received signal 15 during shutdown (ignored)
    22:22:47.889 Logging stopped --- lun mar 22 22:22:47 2010 ---

    As you can see, pulse-into-jack pre-stop is executed twice.
    Here's an extract from my Qjack.conf:

    [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

    I don't know if this problem is debian related.

    My translation isn't finished yet. I'll send you as soon as I complete it! I think in a few of days..

    rncbc's picture

    May you try with your pre-shutdown script in stub mode, that is doing nothing but printing its invocation mode ?

    I suspect you're bringing the jackd server down with pulseaudio, while on the pre-stop case and that just sounds like a race condition is lurking in there, as qjackctl will try to terminate jackd once again, right after the pre-shutdown script returns.

    Seeya

    I think no, jackd is not killed by pre-stop script.
    Here's a log of a simple start and stop using the gui buttons:

    13:20:14.724 Logging started --- mer mar 24 13:20:14 2010 ---
    13:20:14.739 Patchbay activated.
    13:20:14.762 Statistics reset.
    13:20:14.808 D-BUS: Service not available (org.jackaudio.service aka jackdbus).
    13:20:14.979 Startup script...
    13:20:14.980 pulse-into-jack pre-start
    13:20:14.983 ALSA connection graph change.
    Executing "pre" action for pulse-into-jack
    Killing and storing applications connected to PulseAudio
    *** ***
    skype
    *** ***
    13:20:15.781 Startup script terminated successfully.
    13:20:15.782 JACK is starting...
    13:20:15.782 /usr/bin/jackd -P70 -t5000 -dalsa -dhw:1 -r48000 -p128 -n2 -Xseq
    13:20:15.784 JACK was started with PID=7456.
    jackd 0.118.0
    Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
    jackd comes with ABSOLUTELY NO WARRANTY
    This is free software, and you are welcome to redistribute it
    under certain conditions; see the file COPYING for details
    JACK compiled with System V SHM support.
    loading driver ..
    apparent rate = 48000
    creating alsa driver ... hw:1|hw:1|128|2|48000|0|0|nomon|swmeter|-|32bit
    control device hw:1
    configuring for 48000Hz, period = 128 frames (2.7 ms), buffer = 2 periods
    ALSA: final selected sample format for capture: 32bit integer little-endian
    ALSA: use 2 periods for capture
    ALSA: final selected sample format for playback: 32bit integer little-endian
    ALSA: use 2 periods for playback
    13:20:15.987 Server configuration saved to "/home/revol/.jackdrc".
    13:20:15.993 Statistics reset.
    13:20:16.031 Client activated.
    13:20:16.032 Post-startup script...
    13:20:16.033 pulse-into-jack post-start
    Executing "post" action for pulse-into-jack
    Restarting stored applications connected to PulseAudio
    *** ***
    skype
    *** ***
    13:20:16.455 Post-startup script terminated successfully.
    13:20:16.457 JACK active patchbay scan...
    13:20:16.458 ALSA active patchbay scan...
    13:20:16.459 JACK connection change.
    13:20:16.460 ALSA connection change.
    13:20:16.661 JACK active patchbay scan...
    13:20:16.662 ALSA active patchbay scan...
    13:20:26.529 XRUN callback (1).
    **** alsa_pcm: xrun of at least 31.983 msecs
    13:20:27.921 XRUN callback (2).
    **** alsa_pcm: xrun of at least 31.301 msecs
    13:20:28.486 XRUN callback (1 skipped).
    13:20:28.514 Client deactivated.
    13:20:28.526 Shutdown script...
    13:20:28.527 pulse-into-jack pre-stop
    Executing "pre" action for pulse-into-jack
    Killing and storing applications connected to PulseAudio
    *** ***
    skype
    *** ***
    13:20:29.310 Shutdown script terminated successfully.
    13:20:29.310 JACK is stopping...
    jack main caught signal 15
    subgraph starting at PulseAudio JACK Sink timed out (subgraph_wait_fd=18, status = 0, state = Triggered, pollret = 0 revents = 0x0)
    13:20:34.113 ALSA connection graph change.
    13:20:34.131 ALSA active patchbay scan...
    13:20:34.182 JACK was stopped successfully.
    13:20:34.184 Post-shutdown script...
    13:20:34.185 pulse-into-jack post-stop
    Executing "post" action for pulse-into-jack
    Restarting stored applications connected to PulseAudio
    *** ***
    skype
    *** ***
    13:20:34.596 Post-shutdown script terminated successfully.

    Everything works well doing start/stop.

    The problem is when I start and quit the app, behaviour that can be seen on my previous post.
    What do you mean with "stub"? Something like "execute the scripts separately in a shell"?

    Thank you

    P.S.: this captcha is driving me crazy!! too difficult!!

    rncbc's picture

    Re. What do you mean with "stub"?
    erm, just printing a "post-stop" line would be fine, but don't take any other actions besides that.

    Re. captcha is driving me crazy
    if you register you'll get rid of the captcha :) even with that crazyness there's spam sneaking in, so i won't make it any easier :) sorry.

    [UPDATE] Would you mind checking out from current SVN TRUNK (qjackctl 0.3.6.1+) and test whether things are any different?

    Cheers

    I'm doing:

    :/usr/src$ svn co https://qjackctl.svn.sourceforge.net/svnroot/qjackctl/trunk qjackctl

    but I can't find ./configure script.
    So:

    :/usr/src$ cd qjackctl/
    :/usr/src/qjackctl$ autoconf
    :/usr/src/qjackctl$ ./configure
    checking for gcc... gcc
    checking for C compiler default output file name... a.out
    checking whether the C compiler works... yes
    checking whether we are cross compiling... no
    checking for suffix of executables...
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking how to run the C preprocessor... gcc -E
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking how to run the C++ preprocessor... g++ -E
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking whether gcc needs -traditional... no
    checking for Qt library version >= 4.1... yes
    checking for qmake... /usr/share/qt4/bin/qmake
    checking for moc... /usr/share/qt4/bin/moc
    checking for uic... /usr/share/qt4/bin/uic
    checking for lupdate... /usr/share/qt4/bin/lupdate
    checking for lrelease... /usr/share/qt4/bin/lrelease
    checking for main in -lm... yes
    checking for main in -lX11... yes
    checking for main in -lXext... yes
    checking for lroundf in -lm... yes
    checking for main in -ljack... yes
    checking for main in -lasound... yes
    checking for main in -lportaudio... no
    configure: WARNING: *** PortAudio library not found.
    checking for ANSI C header files... yes
    checking for sys/wait.h that is POSIX.1 compatible... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking fcntl.h usability... yes
    checking fcntl.h presence... yes
    checking for fcntl.h... yes
    checking sys/ioctl.h usability... yes
    checking sys/ioctl.h presence... yes
    checking for sys/ioctl.h... yes
    checking for unistd.h... (cached) yes
    checking poll.h usability... yes
    checking poll.h presence... yes
    checking for poll.h... yes
    checking signal.h usability... yes
    checking signal.h presence... yes
    checking for signal.h... yes
    checking jack/jack.h usability... yes
    checking jack/jack.h presence... yes
    checking for jack/jack.h... yes
    checking jack/statistics.h usability... yes
    checking jack/statistics.h presence... yes
    checking for jack/statistics.h... yes
    checking CoreAudio/CoreAudio.h usability... no
    checking CoreAudio/CoreAudio.h presence... no
    checking for CoreAudio/CoreAudio.h... no
    checking jack/midiport.h usability... yes
    checking jack/midiport.h presence... yes
    checking for jack/midiport.h... yes
    checking alsa/asoundlib.h usability... yes
    checking alsa/asoundlib.h presence... yes
    checking for alsa/asoundlib.h... yes
    checking for system... yes
    checking for jack_transport_query in -ljack... yes
    checking for jack_is_realtime in -ljack... yes
    checking for jack_get_xrun_delayed_usecs in -ljack... yes
    checking for jack_get_max_delayed_usecs in -ljack... yes
    checking for jack_midi_event_get in -ljack... yes
    checking for jack_port_get_aliases in -ljack... yes
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating qjackctl.pro
    config.status: creating qjackctl.spec
    config.status: creating qjackctl.desktop
    config.status: error: cannot find input file: `config.h.in'

    Please tell me how to checkout svn version!!

    rncbc's picture

    you need to create the configure script, following the instructions:

    make -f Makefile.svn

    seeya

    YEEEEEAAAHHH!!!
    Now everything's working perfectly!! Thank you so much!
    My translation is ready to go, I'm sending it to you through the standard mail of this site.

    Bye

    rncbc's picture

    Thanks, your contribution is now on svn trunk (qjackctl 0.3.6.2+)

    Cheers

    Hi, I'm trying to enter a guid string in the Interface field in qjackctl settings for the purpose of controlling the order of my 2 Audiofire12 sound cards (for reference http://sourceforge.net/mailarchive/message.php?msg_name=49A866F5.1010402...). I've tried entering the string "guid:0x1234567890;guid:0x0987654321" (for example) but it doesn't work. I've tried with quotes around it, without quotes, etc. still doesn't like it. However, it generates the command jackd -R -dfirewire -d "guid:0x1234567890;guid:0x0987654321" -r96000 -p16 n3 (again for example) in the log window and if copied and pasted into a terminal works fine. So I'm just wondering if you could tell me if there is a way to enter it in qjackctl?

    Thanks!

    Trev

    Any ideas?

    rncbc's picture

    I'm afraid I have none. Should you try with current SVN TRUNK (qjackctl 0.3.6.6) ? There has been a unrelated change that might affect this issue, but I doubt and can't really tell. I have no firewire device experience, nor had I when it was freebob. Have you asked on the FFADO fora?

    Cheers

    When i start the PC, alsa changes the correlation of sound cards:
    example:
    Boot 1:
    hw:0 E-MU 0404 | USB
    hw:1 UM-1
    hw:2 HDA ATI SB
    Boot 2:
    hw:0 UM-1
    hw:1 HDA ATI SB
    hw:2 E-MU 0404 | USB

    QJackCtl always starts the last used device by hw:number.
    Can you make it start the device by name instead of by hw:number or can we choose between the two?

    There is a solution for that problem by change the configuration files of linux, but a user space solution is better.

    rncbc's picture

    that's an ALSA configuration issue and can be fixed for good at the kernel module loading time. ie. something that you can make quite deterministically at /etc/modprobe.conf or /etc/modprobe.d or else depending on your distro.

    just make sure each one of the ALSA kernel modules get a proper index number when modprobe'd and from that moment after it will get always the same hw:number forever ;)

    for example, if you wish that your USB soundcard to always always addressed as hw:2, no matter which boot you're at, you should make for pre-loading the corresponding kernel module like this:

    modprobe snd-usb-audio index=2

    or, as should be inscribed in modprobe.conf style:

    options snd-usb-audio index=2

    cheers

    yPhil's picture

    > options snd-usb-audio index=2

    -Since the cards do have a name, is there a way to ensure that jackd is using the right card ?
    -In plain humans terms, that would be tell qjackctl "please, tell jackd to only use this sound card. And if it's not there for some reason, don't fall back on anything, insult me until I plug [MySoundCard] in" can I talk to him like that ? Is that a bit rude ? ;)

    Right now pulse audio is yelling away in the logs, and I'm starting to think of an exclusive setup : [PCintelSoundCard] and [pulse] OR [MySoundCard] and [jackd]

    pulseaudio[22353]: module.c: Failed to load module "module-alsa-card" (argument: "device_id="2" name="usb-Novation_DMS_XStation-00-XStation" card_name="alsa_card.usb-Novation_DMS_XStation-00-XStation" tsched=no ignore_dB=no card_properties="module-udev-detect.discovered=1""): initialization failed.

    Well it sures is confused with names too :)
    (I unplugged/plugged things for testing, I'm just saying)

    But for that I have to know how to make sure that the worlds won't collide, I really hope that this PCM name thing is reliable...

    I mean, it works, it works if I just :


    jackd -d alsa -d hw:XStation
    jackdmp 1.9.6
    (...)
    Acquire audio card Audio2
    creating alsa driver ... hw:XStation|hw:XStation|1024|2|48000|0|0|nomon|swmeter|-|32bit
    (...)

    and then


    jackd -d alsa -d hw:Intel
    jackdmp 1.9.6
    (...)
    Acquire audio card Audio0
    creating alsa driver ... hw:Intel|hw:Intel|1024|2|48000|0|0|nomon|swmeter|-|32bit

    -How can I make sure to retain this all along my audio session ? It seems that qjackctl, at some point, translates this name into the corresponding index, puts it in its

    InDevice=hw:N
    OutDevice=hw:N
    vars or in .jackdrc, and then the magic is broken :(

    EDIT Using the "Preset Name" feature, it works ; I'm not sure about the soundcard waltz but at least my other settings are retained.
    -To what files, or settings, do those labels correspond ?
    [Presets]
    DefPreset=STUDIO
    Preset1=STUDIO
    Say I want to export this whole config to another machine, patchbay and everything, how will this "STUDIO" be carried along ?

    rncbc's picture

    you can of course write it literally as hw:Intel or hw:XStation or whatever your card small-name is (the name between brackets as listed by /proc/asound/cards) in qjackctl/Setup.../Settings/Parameters Interface, Input Device or Output Device; you don't have to stick with the hw:N identification scheme whatsoever.

    seeya

    Hi,
    The latest qjackctl that comes with Ubuntu Lucid has bugs related to saving the application settings. Previous versions never lost my configuration, but I've now lost my full configuration multiple times with the new version. I setup my firewire audio settings, alsa settings, pre and post scripts, etc., and then it forgets it all randomly and reverts to the defaults. Incredibly annoying. I'm not sure if this is because of something they've done with Ubuntu or Ubuntu Studio, or if there have been changes in qjackctl itself.

    I've got a request too, which is that qjackctl should recognize if another instance is already running, and not start two instances. I'd like to have it startup, minimized and with jack off, every time I login, but it often starts two instances, one because it is setup as a startup application, and the second because it was remembered in the session.

    Oh, and why can't the connections, and messages windows get regular window close buttons? Having only minimize and maximize is super annoying when the main gui window is minimized. It would also be nice if we could turn off the auto-popup of the messages window. I do a lot of messing around with jack during development, and these constant message windows and red icons get annoying.

    Thanks a lot for the app though! I use it daily, and this criticism is only from many, many hours of use, so your tool has been very handy.

    Cheers,
    Jeff

    rncbc's picture

    Well, what can I say? It all looks like the ubuntu supplied qjackctl packages are utterly broken--my bet is that they have been built against an ancient libqt4 version and then delivered with a new one--just plain annoying business as usual Ubuntu SNAFU :)

    Have you (re)tried with my debs (see above) ?

    Byee

    Add new comment