Cantabile and external clock sync

I’m struggling with Cantabile’s external midi clock sync (Cantabile Performer as slave) and wondering if anyone has any advice.

Background: My band recently switched to a centralized midi clock sent from Playback. Even though it works on Cantabile most of the time, some of my VSTs occasionally run completely wrong tempos. Today Omnisphere’s arpeggiator was going at completely the wrong speed even though its LFOs (in the same Omnisphere instance!) were correctly tempo-locked. Other times I’ve faced the opposite (LFOs not synced, but arps working fine). This never happens when Cantabile’s transport is set to Metronome, and sometimes external sync works flawlessly—even for the same song. The problems are unfortunately intermittent and unpredictable.

Working theory: My best guess is that many VSTs don’t react well to sudden tempo changes, but when Cantabile transport is externally synced, it sends a slightly different tempo on every audio cycle (e.g., 75.9934 instead of 76). I think Playback might also jump the tempo and song position at song changes in a chained sequence of songs without sending any Transport Stop or Start messages, and I think this might cause some VSTs to miss tempo changes.

My questions: (Answers or guesses at any of these are welcome.)

  1. Has anyone seen the above before? Is this a well-known issue with a well-known fix?

  2. Is there any way to tell Cantabile to round tempos to the nearest whole or half bpm when sending them to plugins (e.g., in the ProcessContext struct sent to VST process() calls)?

  3. Is there any way to create a binding that changes the transport source to Metronome in case of emergency (and not stop the transport but leave it running at the Metronome-defined tempo from whatever song position it was already at)?

  4. Is there any way to script modifications to MIDI clock messages before Cantabile sends them to all the plugins (e.g., to insert MIDI Stop/Start messages, etc.)? I’m willing to roll my own plugin, but my understanding is that Cantabile doesn’t consume MIDI clock messages produced by plugins, or even loopback ports, so I’m not sure how that could be done.

Thanks for any guidance.

–Kevin