[LV2] LV2 vs. Ardour: unexpected time.Position events and time.frames values

Sven Jaehnichen sjaehn at jahnichen.de
Sat Oct 26 12:34:59 PDT 2019


Hi Robin,

Am 26.10.19 um 19:52 schrieb Robin Gareus:
> On 10/26/19 6:40 PM, Sven Jaehnichen wrote:
>> I used two separate atom input ports.
> Why two? A single atom port can handle all data.
> And yes it's a known issue. Ardour5 does not support multiple atom ports.

The weird thing, it (now) works with 2 atom ports in Ardour5 after I 
filtered out all events with ev->time.frames > n_samples. At least on my 
systems. Although I read and experienced before that it should not work. 
Still wonder why.

>> #2 Putting both "atom:supports time:Position" and "atom:supports
>> midi:MidiEvent" into a single atom input port seemed to work fine.
>> But I accidentally found out that no time.Position events were
>> received by the plugin from Ardour in this case
> This is odd. It works just fine here. Maybe compare to [1], [2].
> Keep in mind that Ardour only notifies the plugin about changes. There
> is no constant stream of messages.
>
> [1] https://x42-plugins.com/x42/x42-stepseq-8x8
> [2] https://github.com/x42/stepseq.lv2/blob/master/src/stepseq.c#L147

The source code of you stepseq helped me a lot to learn about LV2 MIDI 
for the development of B.SEQuencer. Thank you.

But there is a major difference between x42-stepseq and B.SEQuencer. 
B.SEQuencer uses a MIDI input signal to start / stop the step sequencer 
and to pitch the MIDI signal.

If I use a single atom input port without midi, it works like yours and 
it receives time_position events (speed, bpm, ...) from any host I 
tested. Fine.

If I add "atom:supports midi:MidiEvent" to the same port, it receives 
midi events and time_positon events using jalv (fine too) but it only 
receives midi events using Ardour. Therefore I came back to the idea 
with two atom input ports.

Best wishes
Sven



More information about the Devel mailing list