Tim E. Real | 18 Nov 05:04 2014

Notifications timing

Our app uses inter-thread messaging to safely time, to the RT thread, 
 critical modifications, instead of using say non-blocking atomic-safe 
 lists and so on.

I read Jack1 notifies the client from the RT thread, and Jack2 uses a 
 separate notification thread.

So it seems with Jack1, say inside a port connect callback, we /could/ 
 directly modify our local structures (routing lists) which our process 
 callback depends on, without delay and safe and since it's all done 
 in the same thread.

But with Jack2, what is the situation?
If the above operation is not a good idea with Jack2, how can we avoid
 delay associated with say, messaging another thread just to have that thread
 message our RT audio thread to do some safe modifications? (We do this now.)
Dangerous that our process callback might come along and attempt to use
 our local structures before we 'handled' the notification in another thread?
Will the process callback 'interrupt' the notification thread or occur very 
 (too) close to it?

Thanks for any clarification.
pauldavisthefirst | 18 Nov 04:33 2014

[jackaudio/jack1] 83cd6c: Add memset to clear buffer to unparse uuid into.

  Branch: refs/heads/master
  Home:   https://github.com/jackaudio/jack1
  Commit: 83cd6c8493c0aeae80bf404395ccbf40ec2e5529
  Author: Hanspeter Portner <dev <at> open-music-kontrollers.ch>
  Date:   2014-11-11 (Tue, 11 Nov 2014)

  Changed paths:
    M libjack/metadata.c

  Log Message:
  Add  memset to clear buffer to unparse uuid into.

- jack_remove_properties and jack_get_properties both search the metadata database for matching UUID string.
- However, they both fail at finding any matching UUIDs ever.
- The UUID string in the database are correctly created on a previously cleared buffer (e.g. memset to 0).
- The temporaty UUID string in the search routines however are not created on a cleared buffer, the end of the
buffer thus may contain anything.
- As in the matching routine the complete UUID strings are compared (with size JACK_UUID_STRING_SIZE),
there will never be a matching air, even if their valid part do match.

  Commit: 268a22822bc2f89641b75d5ce1fac9a153e05c1b
  Author: pauldavisthefirst <paul <at> linuxaudiosystems.com>
  Date:   2014-11-17 (Mon, 17 Nov 2014)

  Changed paths:
    M libjack/metadata.c

(Continue reading)

Matthew Logan | 14 Nov 17:54 2014

Proper JACK Build tools?

Hello, I have one week to get Jack running properly on Win 8.1 and fix those client-close freezes that are still irritating.  I have more than a decade of experience designing audio engines for the likes of Sonic Foundry in their professional audio editing tools, so technically, I am up to the task.  But where I am withering is setting up the tool chain to actually dig into the task

I’ve got a branch set up from JACK via git, and the docs in in suggest Code::Blocks 10.05 and MinGW/SJLJ – is that still a requirement?  I have both installed, but I must be missing some configuration magic, because when I try to build JackLib I get an error message suggesting the compiler is not configured properly.


This morning I am working on trying to Install the MinGW version of Code::Blocks 10.05 and see if I can at least get a build going with that, even it the SJLJ thing fails that will get me moving.  But I could sure use some advice from someone who has built JACK recently for Windows – otherwise I am going to have to flail around the continuum of tool possibilities until I stumble on the right combination.

Jack-Devel mailing list
Jack-Devel <at> lists.jackaudio.org
Athanasios Silis | 14 Nov 01:26 2014

connecting jack between a linux audio master and a windows slave

Hi all,
i'm attempting to connect a slave jack running on windows 7 64bit and a jack master running on linux ubuntu studio 14.04 64bit.
jack is verified to be 1.9.10 on both sides. 
firewall is also completely open between windows and linux

jack master is running on alsa and with netjack2 also running. other linux pc's connect without a problem to this jack master. 

but jack slave running from windows does not show up on master jack... what can I assume is wrong?
mtu have not been tampered with.

jack slave on windows states:

C:\Program Files (x86)\Jack>jackd.exe -R -dnetone
jackdmp 1.9.10
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2014 Grame.
jackdmp 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
Drivers/internals found in : C:\Windows
Drivers/internals found in : C:\Windows
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
InitTime : multimedia timer resolution set to 1 milliseconds
MMCSS API not used...
NetOne driver started
netjack_poll not implemented
Waiting aborted
Initing net driver fails...
Jack-Devel mailing list
Jack-Devel <at> lists.jackaudio.org
Leonardo Gabrielli | 11 Nov 16:17 2014

output disconinuity: is it always a Jack XRUN?

Dear Jack devels,
I recorded for 1 hour a sine tone generator under JACK. I spotted two 
points in the resulting recording where a phase discontinuity occurs. My 
tone generator is based on a Chamberlin resonant filter, and I'm sure it 
works well for prolonged time (for the remaining 2h the signal is 
perfect). The recording was done at the analog output.

Question is: are these discontinuities undoubtedly a sign of XRUN? The 
console seem not to report any. Could it be something else?

In my understanding, when an XRUN occurs ALSA will go on reading the 
previous buffer.

Matt Flax | 9 Nov 13:11 2014

xruns and server effects

Hi there,

I was wondering for both Jack1 and Jack2 ...

If a client xruns, does this effect the output to the underlying audio 
driver or are they autonomous ?
If a client xruns, does this effect the other clients, or are they in 
their own threads ?

Łukasz Kidziński | 3 Nov 08:36 2014

USB MIDI keyboard Akai LPK, jackd

I got Akai LPK25 and I am trying to make it working on my Ubuntu. I tried to follow a tutorial http://terokarvinen.com/2014/usb-midi-keyboard-on-linux-akai-lpk25-professional. I have no knowledge about jack and other applications involed so let me write everything since I don't know where to look for the problem. I posted the problem here http://askubuntu.com/questions/544672/usb-midi-keyboard-akai-lpk-jackd and they suggested to aks you here.

When I run

    zynjacku &

I get errors

    Cannot connect to server socket err = No such file or directory
    Cannot connect to server request channel
    jack server is not running or cannot be started
    Failed to connect to JACK.
    Failed to initialize zynjacku engine

I figured I may need to run the jackd server first so I installed it and ran

    jackd -sRp 70 -d alsa -d hw:1 -r 44100 -H -z s

but I still can't make zynjacku running and get

    flex scanner jammed

If I run zynaddsubfx and aconnectgui I manage to get signal from the keyboard (the indicator at the bottom gets blue) but I can't hear anythnig.

I tried to manually send some signal to jackd by `ecasound` and it reaches the jackd server but again I can't hear any sound.

I have totally no experience with jackd so that's why my trials are that random. Thanks in advance for your help.

If I run `jackd -sRp 70 -d alsa -d hw:1 -r 44100 -H -z s`, I get

    no message buffer overruns
    JACK server starting in realtime mode with priority 10
    Acquire audio card Audio0
    creating alsa driver ... hw:0|hw:0|1024|2|44100|0|0|hwmon|swmeter|-|32bit
    Failed to open server

Thank you very much in advance,

Łukasz Kidziński
Jack-Devel mailing list
Jack-Devel <at> lists.jackaudio.org
Jonathan Woithe | 2 Nov 23:22 2014

Re: [FFADO-devel] firewire err:incompatible libffado

Hi Feiko

[The original message in jack-devel was posted with subject "wrong FFADO
version 2.2.9999-2573"]

On Sun, 02 Nov 2014 19:42:04 +0100, DivParts wrote:
> I got something strange the jack server wont start and say wrong FFADO 
> version 2.2.9999-2573.
> the version from jackd is 1.9.8

This means that the FFADO API provided by the version of libffado being used
by jackd does not match what jackd expects.  There are a number of possible
reasons for this.  Even so, this issue should have been taken care of
automatically by FFADO's build system.  Perhaps there's a corner case on
your system which is producing the wrong answer.

Could you please post:

 - the name and version of the distribution you are using

 - a brief description of the steps you went through to install jackd and/or
   FFADO if these were not supplied by your distribution.  In particular I
   notice that the FFADO version is a snapshot of our development trunk so
   presumedly you compiled FFADO yourself.

 - the output produced by "ffado-diag", so we can see exactly what is in
   your system.

Please follow up to ffado-devel: this is almost certainly a FFADO build
issue and has nothing directly to do with JACK.

> my focusrite pro24 seems to work in the FFADO mixer but my FW led is not 
> lit up on the front of the focusrite unit.

The ffado-mixer is independent of JACK.  In other words, Jackd does not need
to be running in order to use the mixer.

DivParts | 2 Nov 19:42 2014

wrong FFADO version 2.2.9999-2573

hi there,

I got something strange the jack server wont start and say wrong FFADO 
version 2.2.9999-2573.
the version from jackd is 1.9.8

my focusrite pro24 seems to work in the FFADO mixer but my FW led is not 
lit up on the front of the focusrite unit.


Met vriendelijke groet,

Feiko van de Velde
Cédric Schieli | 2 Nov 17:59 2014

Multi-user desktop integration

Hi all,

Nowadays it's quite easy to make PulseAudio and Jack work together, mostly thanks to the dbus api, but as soon as a second user enters the scene, by means of the user switcher applet, it's once again an inferior user experience as compared to what a PulseAudio-only system gives. Generally the second user will get no sound at all, other problems arise when the second user wants to make use of some Jack applications...

So I've been working lately on making it easier to use Jack as the default sound system on a shared workstation, with PulseAudio as a helper for desktop sounds. I've investigated 3 solutions which I'll present here.

In all cases it was necessary to have a system-wide Jack server launched at boot time. First problem: there is no session dbus available at boot time. There are basically 3 ways of solving this:
1. use the system dbus instead by faking the DBUS_SESSION_BUS_ADDRESS. This will require some modification of system policies to allow the owning of the org.freedesktop.ReserveDevice1.Audio0 name
2. launch a session bus, which will be used only for this purpose
3. hack Jack to allow bypassing the whole thing
I've chosen 3, the formers do no really reserve anything anyway as the buses are not connected to each other. By passing the JACK_NO_AUDIO_RESERVATION environment variable I can now disable the audio_acquire/audio_release callbacks.

The first solution that comes to mind is to make this system-wide server run in promiscuous mode, so I've exported JACK_PROMISCUOUS_SERVER globally (in /etc/environment). Problem: for this to work, the server and every single Jack application (including the pulse-jack bridge) must be running with a 0000 umask, which sounds a bit scary to me. So I've hacked a little enhancement to the promiscuous mode which makes it possible to pass the name or gid of a group through the JACK_PROMISCUOUS_SERVER variable. In that case, the sockets, shared memory segments and semaphores have their permissions tightened so only members of that group will get access to them. More importantly, it is not needed anymore to fiddle with the umask, even if no group is given.
With that in place, and after having changed the default PulseAudio configuration (/etc/pulse/default.pa) to statically load the pulse-jack bridge, each user session has its shiny desktop sounds working, and every user is able to run Jack applications whenever they want.

One (big) con is that as everybody share the same Jack server the graph may easily become incomprehensible (jack_keyboard, jack_keyboard-01, jack_keyboard-02, all belonging to different users...). Also, if a user start the Jack transport, it will be started for all users !

That's where the two other solutions comes into play (they really are to variants of the same solution).
The idea is to have a main system-wide Jack server in charge of the hardware driver, and a second per-user Jack server launched through dbus api, connected by some way to the former, and handling the connections with the various Jack applications of that user session.

This can easily be implemented by using NetJack bound to the loopback interface.
In this solution, the promiscuous mode is not necessary anymore. The netmanager have to be loaded in the main server at boot time, bound to the address, with the auto-connect feature enabled. The default.pa should use jackdbus-detect and a .config/jack/conf.xml must be put in each user's HOME so the net driver is loaded when a Jack server is spawned by the user.

Now, each user will only see his/her own applications in the graph, but the Jack transport is still unique across the NetJack network. Another problem is the overhead introduced by NetJack.

To address these, I've hacked a new JackProxyDriver which is similar to the JackNetDriver, but only uses plain Jack API to talk to its upstream server so the overhead is reduced to its minimum.
In this solution, the promiscuous mode is again necessary, but only for the main server. The per-user server will run in normal mode toward its clients, and will use a promiscuous connection to talk to the main server. The .config/jack/conf.xml must be changed to load the proxy driver.

Now that I'm happy with the state of my shared desktop I've sent two pull request for all the bits described above. https://github.com/jackaudio/jack2/pull/77 contains the reservation bypass and the promiscuous mode enhancement, https://github.com/jackaudio/jack2/pull/78 contains the JackProxyDriver.

If someone is interested to try it out, I've setup a PPA (currently only for 14.04) with a jackd2 package based on KXStudio's one.

Comments and suggestions are welcome.


Jack-Devel mailing list
Jack-Devel <at> lists.jackaudio.org
Happy | 31 Oct 16:28 2014

cross compiling jack2 library for ARMv6

I use a BMC2708 GNU compiler under Ubuntu 14.04 64 bit on a x64 based
system. I have successfully cross compiled the alsa-lib for the
Raspberry PI (with arm-linux-gnueabi-gcc) on this system and and
compiled a program which runs fine on the RPI using ALSA with the
provided tools (https://github.com/raspberrypi/tools.git). 

Now I wish to do the same and compile an application using Jack against
the Jack library (and thereafter run this on the PI with JACK2
installed). Any guidance how to cross-compile a jack2 library for ARMv6
on the x64 system so that I can link the application to the resulting
Jack ARMv6 library?