openAVproductions / openAV-Luppp

Luppp is a live performance tool, created by OpenAV productions.
http://openavproductions.com/luppp
GNU General Public License v3.0
258 stars 45 forks source link

luppp broadcasts bpm to jacktransport but where is the start/stop option ? #89

Closed genesis66 closed 10 years ago

genesis66 commented 10 years ago

Great job with luppp. anyway I am trying to sync luppp with external software (seq24, qtractor, or whatever), but I can't figure out how to do. I can see bpm changing in jack transport when changing tempo in luppp, but I might have miss something on how to really sync it and so start and stop jack transport from luppp ? Even if I launch 2 luppp concurrent sessions, it won't sync one with the other...

harryhaaren commented 10 years ago

@genesis66 : the feature you're looking for would be called "jack transport timebase master", however this is not as simple as providing JACK with a BPM.

There are multiple issues:

  1. Providing JACK with the appropriate information (quite possible, I've been refactoring the internal time-handling code to be suited to broadcast this info to JACK)
  2. Ensuring the "eco-system" works with the timebase info transmitted: Luppp is a looping tool without a timeline: so each "scene" could A) be mapped to a part of a timeline, or B) time could run continuously.

A) Time mapped to a timeline: given other JACK clients need to respond to the timebase by Luppp, which now "repositions on the fly", and should not cause a glitch in output: many DAW clients are NOT capable of this, as they need to access the hard-disk to retrieve audio data. B) Time runs continously, regardless of what "scene" Luppp is playing. Degrades usefulness of Timebase support severly.

Although I'd love to support A), glitches in output based on what clients are used at that time is un-acceptable: this is a live performance tool, and glitches in output is something that isn't tolerated at all.

B) is currenly partly achieved by broadcasting BPM (allowing Jalv to send BPM to LV2 effects which use it, like ArtyFX Masha).

I'm interested in your opinion on the above, and am open to discussing how we can best implement timebase-control. I do see a need to allow more flexibility of timebase with other apps, however it is unclear how we can best support this.

Cheers, -Harry

genesis66 commented 10 years ago

As far as I can see, luppp already seems to act as a time master, if I launch luppp and say qjackctl, I can see the tempo info changing in qjackctl everytime I move the tempo knob in luppp (starting at 120 by default when I launch luppp). Without considering the timeline, for me it's just a matter of acting as "jack time master" and then sending the start/stop signal to all "jack time clients". I would like to use luppp with other looping softwares, such as seq24, but right now (seq24 set as a "time slave"), but to do so we need luppp to provide a start/stop feature. It seems to me that luppp somehow sends the tempo informations to jack, but don't really act as a time master, because if I get luppp tempo set to 94 (for instance) and seq24 set to 120, when seq24 is stopped, qjackctl shows 94, but if I start seq24, qjackctl shows alternatively 94...120...94...120. as if it was receiving 2 master signal in the same time. My opinion is that, if we wan't luppp to be usable with all other jack based softwares, we need a simple start/stop features. Luppp doesn't need to handle the timeline, it just need to send jack the start/stop signal and the tempo info as a time master.

harryhaaren commented 10 years ago

Update on this topic: i've implemented a small "test" client for JACK transport, and things are looking good. I need to verify the implementation of the test client (using unit tests to ensure no regressions occur), after which I will refactor the Luppp internal time-management code to work like the test client.

I hope to get this working soon, however it is a delicate and time-consuming bug/feature to fix/implement.

Cheers, -Harry

genesis66 commented 10 years ago

Great news Harry. I am sure jack transport integration would give a boost to this already wonderfull software. I really love the interface and the simplicity of luppp. It's the best solution for live performance in the linux world, I used Giada before, but it's not very confortable to use in live session. If I can help testing the jack transport client, let me know. I will be happy to contribute soon giving back a part of my next live session concert "pay" Cheers Stephane