`juce7` technical preview branch

Are you aware of any hosts that properly support these plugins?

  • Carla seems to load Synthv1 correctly, although modifying the theme of the plugin also updates the theme of the entire Carla application.
  • Qtractor behaves in the same way as Carla. The Synthv1 editor works, but setting a new theme on the plugin reskins the entire app.
  • REAPER 6.60 fares less well - I see the same keyboard-handling issue there, and in addition the host window becomes completely unresponsive after loading the synthv1 editor.
  • Ardour 6.9 can’t load the Synthv1 editor at all (the log shows “[ERROR]: failed to instantiate LV2 GUI” each time I try to open the UI). I can’t load the editors for LSP LV2, Dragonfly Reverb LV2, or B.Oops LV2 plugins either, although Calf LV2 UIs and Dragonfly Reverb VST UIs do work. Maybe my install of Ardour is broken somehow.

Like Synthv1, I’m pretty sure that Qtractor and Carla both use QT for their UI. I suspect that these hosts are accidentally sharing some state with the plugin, causing the weird theming behaviour. It may also be that some keyboard-handling component is shared with the host, allowing keyboard input to work in these hosts, but not in non-QT-based hosts.

At the moment, I’m inclined to say that this bug is on Synthv1’s side. I’ll investigate further if you have reason to believe that these plugins should work in a non-QT-based host.

Yes, host transport should be supported. I also tried out Bsequencer LV2 in BespokeSynth built from the juce7 branch, and it seemed to respond correctly to the host time information. Changing the tempo in Bespoke caused Bsequencer’s playhead indicator to move at different speeds, and I verified that it produced MIDI notes on its control output. That said, playback only seemed to work the first time I changed the “Mode” control to “Host-controlled playback”. Changing it to a different mode and back broke playback. I’m not sure exactly why that is - a breakpoint in preparePortsForRun still gets hit, indicating that timing information is being written to the plugin’s control input. Perhaps there’s a bug in the plugin?

In the case of stepseq.lv2, it looks like the plugin is receiving an empty event stream for some reason. I haven’t managed to get to the bottom of this yet - I’ll update here once I know what’s going wrong.