Jump to content

Time sync info provided to plugins on busses is not latency compensated


foldaway

Recommended Posts

As the title suggests it looks like the time sync information provided to VST plugins on busses might not be latency compensated.

First noticed when using Cable guys - Shaper 3 plugin.  When this plugin is in a tracks fx chain, it is synced perfectly with the song time.  However when it's placed on a bus the track is routed to, it is no longer in sync.  The offset appears to be directly linked to the latency introduced through the tracks plugin chain.

To me this suggests that the results generated for VST2 GetTimeInfo calls from plugin (& the VST 3 equivalent) are not taking into account the plugin chain latency.

Also, seems unlikely to be plugin specific as the plugin doesn't know if it's on a bus or not!

I've attached as example project which demonstrates the problem, using SI-Drum Kit (VST2), Voxengo Latency Delay (VST2) & Cableguys Shaper 3 (VST3)

Look foward to hearing from one of the bakers.

Thanks

bus time sync latency compensation bug.zip

Link to comment
Share on other sites

I can't reproduce a problem with my own test project, simply routing the phase-inverted one of two nulling audio tracks through a bus with a PDC-inducing plugin on it and moving that plugin back and forth between the bus and the track.

I haven't yet tested with your project because I'll have to install the demo of ShaperBox and the Voxengo Delay and review what they're doing, but I see a couple  issues with the project at a glance that could be contributing:

- SI Drums is inserted in the audio track's FX bin; this is technically supported for backward compatibility with projects created before the Synth Rack was introduced, and there are some known issues with it. The preferred method is to insert the synth in the Synth Rack wiith the Input of the synth audio track set to the output of the synth.

- This issue may be peculiar to live MIDI-driven synths or even SI Drums, specifically, which tends to render transients a bit late to begin with.

Overall, the project is introducing too many variables to simply and clearly demonstrate whether PDC is working correctly on buses, including the use of three plugins, one of which is known to have poor timing, and two of which are 3rd-party and are altering that timing with unspecified custom settings.

 

 

Link to comment
Share on other sites

I installed the plugins, but the demo of ShaperBox isn't doing anything - possibly because I didn't want to install the 300MB of presets and other content. I can see that Voxengo is set to add 1000 samples of delay to the synth audio track, and I can hear that delay vs. the metronome when engaged, but with ShaperBox not doing anything, there's really nothing to hear.

EDIT: As I re-read the OP, it seems I may have misunderstood and this isn't even about PDC but more about tempo-syncing. Is that right? Also, as I read that Voxengo "Latency Delay introduces 10000 samples latency itself and delays the audio signal by 10000 minus the specified amount of samples or milliseconds, thus eliminating the unreported latency", the expected behavior of the test project becomes even harder to predict. I'll have to experiment with some other tempo synced plugin.

Edited by David Baay
Link to comment
Share on other sites

1 hour ago, David Baay said:

I installed the plugins, but the demo of ShaperBox isn't doing anything - possibly because I didn't want to install the 300MB of presets and other content. I can see that Voxengo is set to add 1000 samples of delay to the synth audio track, and I can hear that delay vs. the metronome when engaged, but with ShaperBox not doing anything, there's really nothing to hear.

EDIT: As I re-read the OP, it seems I may have misunderstood and this isn't even about PDC but more about tempo-syncing. Is that right? Also, as I read that Voxengo "Latency Delay introduces 10000 samples latency itself and delays the audio signal by 10000 minus the specified amount of samples or milliseconds, thus eliminating the unreported latency", the expected behavior of the test project becomes even harder to predict. I'll have to experiment with some other tempo synced plugin.

Hi David,

Thanks for your feedback.

Yes, it is about time syncing (/tempo syncing).

I included Voxengo Latency Delay as it was the simplest way I could think of simulating the latency of a large number of plugins.  Sorry, I should have mentioned this in my post!  The fact that the latency is adjustable also means its easy to see the effect in ShaperBoxs background oscilliscope.

I've attached a preset file for ShaperBox in case you want to use it in the demo project.  It should be included in the project as it was a custom preset but I'm guessing it wont load it in the demo.

Edited by foldaway
Link to comment
Share on other sites

1 hour ago, Glenn Stanton said:

might be time for the doctor. the plugin doctor... https://ddmf.eu/plugindoctor/

Thanks for the recommendation.  I had a quick read of the manual & while it looks really good for analysing audio performance, I can't see that it provides any view of time sync information from the host.  Which appears to be the source of the problem.

Link to comment
Share on other sites

I created a comparable project with Sonitus Delay delaying a track by one beat and nulling against the same audio manually offset by 1 beat. I then added CW's TS-64 Transient Shaper which adds a significant amount of plugin delay to the Sonitus-delayed track and confirmed the two tracks continued to null. I then moved Sonitus to the bus through which that track was outputting, and the project continued to null both before and after restarting playback. For good measure, I tried moving Transient shaper to the same bus and other buses and tracks, and the project continued to null as expected.

So I think this issue is either specific to ShaperBox or possibly involving the live synth which I'll test next.

EDIT: Did the same test using two nulling instances of Session Drummer (because two instances of SI Drums already weren't nulling well), and got the expected result regardless of where Sonitus Delay or Transient Shaper were located.

Edited by David Baay
  • Like 1
Link to comment
Share on other sites

7 minutes ago, David Baay said:

I created a comparable project with Sonitus Delay delaying a track by one beat and nulling against the same audio manually offset by 1 beat. I then added CW's TS-64 Transient Shaper which adds a significant amount of plugin delay to the Sonitus-delayed track and confirmed the two tracks continued to null. I then moved Sonitus to the bus through which that track was outputting, and the project continued to null both before and after restarting playback. For good measure, I tried moving Transient shaper to the same bus and other buses and tracks, and the project continued to null as expected.

So I think this issue is either specific to ShaperBox or possibly involving the live synth which I'll test next.

Thanks but I'm pretty sure you're just testing the PDC in your project, as none of these plugins has a sync based on the song position, which ShaperBox does.

It is specifically the song position information being relayed to the plugin that doesnt appear latency corrected on the bus.

Link to comment
Share on other sites

6 minutes ago, David Baay said:

Glad to help. Separate Synth  Audio and MIDI tracks should be okay as well, you just need to get the audio into synth track via the Input from the Synth Rack rather than the FX bin.

Yep, just tested and all good! 😁

Haven't touched Instrument tracks or the Synth Rack for a long time, as previously had a lot of problems but looks like they're great now.  Much relief 🙂

Thanks again.

Link to comment
Share on other sites

Alas, not quite out of the woods yet!

Some interesting additional notes;

Converting an audio + midi track into an instrument track, does not solve the problem...  Unless, I create a new instrument track routed to the same bus!  Definitely something strange going on here!

Creating a new instrument track via D&D from the plugin (/instrument) browser works as expected.

Even when song position sync is working correctly.  Playing a loop causes de-sync, which appears to be variable in nature!  nb. this happens even when Latency delay isn't enabled.

Link to comment
Share on other sites

There are still situations where MIDI timing can drift progressively out of sync by a few samples per iteration when looping at random points at certain tempos but it's usually avoided by looping exactly on bars/beats. I believe Jamstix uses song position so I might try experimenting with that later.

 

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...