I'd like to suggest two new tools. I find myself using them frequently
whenever I'm dealing with sets of outputs / inputs of different
latencies, or sometimes when I'm using software that adds noticeable
(i.e. >= 15ms) latency.
I think it would be best to add them as standard JACK tools because:
- They perform a very basic task.
- JACK has almost no latency-related tools AFAIK.
- They demonstrate the power of JACK's latency API and could serve
as [non-trivial] examples for devs trying to understand it.
What do you think? I've attached a patch with both tools. If they get
included, I'll write documentation about its usage and the latency API
in general. Below is a summary of what they do:
## jack_lsync
Synchronizes a set of ports for playback or capture, by inserting
appropriate delays to compensate for latency. Example:
Suppose you have one output `playback_1` with 20ms output latency, and
another output `playback_2` with 50ms output latency:
jack_lsync -a2 &
jack_connect lsync:output_1 playback_1
jack_connect lsync:output_2 playback_2
lsync will insert a 30ms delay on the first output, giving you two
outputs of 50ms latency. Instead of connecting to the original outputs,
you'd connect to `lsync:input_1` and `lsync:input_2` respectively.
## jack_lset
Corrects the reported latency of a port. Example: to increment the
playback latency of `port` by 30ms:
jack_lset 30ms &
jack_connect lset:output_1 port
Then connect everything to `lset:input_1` instead of `port`.
Clients should ideally set the correct latency at their ports, or
provide an option (as with -I and -O) for users to set them. This is not
the case in practice, and there are also a number of legitimate reasons
why users may want to correct latency externally.
Hello,
at some point I am getting the following errors from JACK
Jun 9 11:57:19 001-can1-plumber jackd[21110]: shm registry full
Jun 9 11:57:19 001-can1-plumber jackd[21110]: Cannot create shared memory
segment of size = 422
Jun 9 11:57:19 001-can1-plumber jackd[21110]: JackShmMem::new bad alloc
Jun 9 11:57:19 001-can1-plumber jackd[21110]: Cannot open client
Jun 9 11:57:19 001-can1-plumber jackd[21110]: Cannot create new client
Max locked memory for this process is set to 134217728 while launching JACK
via systemd.
It effectively causes JACK to hang.
I am using 1.9.10 (commit 1ed50c92) on ubuntu 16.04.
The configure flags are --clients=500 --ports-per-application=4 (I am not
reaching 500 clients limit when that occurs, they are around 250).
JACK is started with dummy driver, and --port-max set to 2000.
What is the reason for hitting SHM limit? Can I overcome this in any way?
m.
Hello,
I am compiling JACK2 from commit 7de15e7a (the same as shipped with Ubuntu
14.04). I need to set --clients to quite high value, and I have found out
that setting --clients=512 causes jackd to segfault while --clients=500 is
fine.
Is that a bug or limitation by design?
Marcin
Hi,
I'm writing a jack midi port for incudine, a common lisp based
realtime audio system. Midi in is already working, but for midi out I
couldn't find information about what kind of time should be supplied
to jack_midi_event_write. Is it in absolute or relative frames?
If it is relative to the current frame/block boundary:
I tested the received time values (using jack_midi_event_get) with
randomly generated midievents sent from pd over a2jmidi and got time
values between 0 and 42 with a jackd setting of 1024 frames/period and
2 periods. I would expect values between 0 and 1023, or is there some
misunderstanding on my side? Could this be due to a2jmidid?
--
Orm
Hello,
I need to make custom build of JACK that will reside in /opt/myjack
Now I have to use LD_LIBRARY_PATH because without one I get errors like this
/opt/myjack/bin/jack_lsp: error while loading shared libraries:
libjack.so.0: cannot open shared object file: No such file or directory
I would like to use -rpath linker flag, but I found no clean way to use it.
I tried to set LDFLAGS and other env vars but waf keeps ignoring it.
Any advice?
Marcin
Hi.
I've been sinking lots of time in trying to get ALSA to work with a
SGTL5000 (Teensy Audio Adapter) in Raspbian on a Raspberry Pi 3. I have the
complete documentation for how to manually set up the audio chip, and
sufficient documentation on how to manually set up the Pi's ARM I2S
peripheral. The ALSA solution is generalized for any kind of hardware you
could want, is something I don't really want to know, at all, in my life,
and seems just far too complex when I have detailed guides for both the
audio chip and the CPU. The one combination of ALSA platform, machine and
codec drivers that I've managed to get sound from plays more than 2x too
fast and will not open with JACK.
So, I'm reading about the JACK API, wondering about simply writing a C
program to configure and write to the Pi's built-in I2S FIFOs, without even
telling ALSA that I'm doing it; but I see that all JACK clients should use
callback functions. Still, audio input from JACK into a program using the
API is a regular thing, right? So how complicated might it be to set up
such a client that gets audio input from JACK and writes that to the chip's
I2S FIFO? My timing will be controlled by the audio chip, the Pi chip will
be a slave to it. So as long as my program writes to the transmit FIFO fast
enough, and waits if the FIFO is full, I think I don't need to worry about
synchronizing JACK exactly to the audio chip's clock... right?
I'm just a little fuzzy on this timing part.
Thanks for any clarification.
-Chuckk
--
http://www.badmuthahubbard.com
Anyone have an idea why jack1 displays xruns like this on my system
(for a long time already, not a recent issue)?
**** alsa_pcm: xrun of at least -1386461.056 msecs
The system is Archlinux with jack 0.124.1.
--
Joakim
What about aliases ?
Dnia Czwartek, 12 Maja 2016 08:22 Hanspeter Portner <ventosus(a)airpost.net> napisał(a)
> On 12.05.2016 06:27, aledez0 wrote:
> > is there any way to list the connections by how there are in the project file
> > instead of by alphabetical order?
>
> YES (theoretically)
>
> There is a way, by means of the metadata api [1] via the metadata key
> 'http://jackaudio.org/metadata/order' [2], but the trio of JACK client,
> server and patchbay must support this for it to work.
>
> * the client sets the order of its ports via 'jack_set_property'
> * the server stores the metadata in a database
> * the patchbay reads the metadata to order ports accordingingly
>
> NO (practically)
>
> * only few clients and patchbays support this yet
> * JACK1 implements the metadata API, JACK2 still does NOT
>
> > in mixbus 3 once you have named the tracks
> > they don't show up in the connection window in the order they are in the
> > project window.
>
> [1] http://jackaudio.org/api/group__Metadata.html
> [2] https://github.com/drobilla/jackey/blob/master/jackey.h
> _______________________________________________
> Jack-Devel mailing list
> Jack-Devel(a)lists.jackaudio.org
> http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org