On 02/07/15 15:38, Paul Davis wrote:
jack_transport is not intended to act as a the time
master.
Well, comparing example-clients/transport_client.c and
tools/transport.c, I'd say the one big difference between the two is
that tools/transport.c (aka jack_transport) can act as a *simple*
timebase master...
providing BBT information requires some kind of tempo
map. This is
beyond the scope of jack_transport.
Sure, if I need a more sophisticated tool,
I'll use one (or write one
myself).
Thankfully, jack provides a lot of small command line tools for simple
tasks.
That's what I also expected from jack_transport. And with jack2 the same
jack_transport does work as a timebase master (with a "trivial" tempo map).
But the real issue here is a completely different one:
Does jack_set_timebase_callback() also require jack_set_process_callback()?
jack_transport (which is shipping with jack1) assumes that
jack_set_process_callback is not required -- which matches jack2's behavior.
But for jack1 the timebase callback is only called, when I add a process
callback (just return 0;).
Either jack1/libjack0 is wrong to also require the process callback, or
transport.c is wrong to assume that it's not needed (because it does not
process audio).
AFAIUI
jackaudio.org/api does not clearly say that the process callback
must be non-NULL to become a timebase master, although I could see why
it might in fact be necessary (for a certain implementation).
Tobias