Issue with pre-loaded set-list

Hi @brad

I’m having playback issue when a song is pre-loaded in a setlist. Playing, some notes are just out of sync, delayed, I mean not following my fingers, something like (to make it clearer) off quantized.

The same song loaded as single session doesn’t give any problem, all notes play correctly as played. Any idea why it happens?

PS: with the pre-loaded setlist my laptop’s memory reaches 53%, so don’t think it’s a RAM issue.

Thank you!

Hi Mistheria,

I can’t think of any reason or mechanism by which pre-loading a setlist would cause note latency/delay/jitter - especially if you’re not getting audio dropouts (since the MIDI processing is integrated with audio processing and a stall in audio processing is the only way MIDI could also be stalled).

Does this happen with just one plugin? How much out of sync is it?

One thing to try and diagnose this:

  1. Go to Options -> Diagnostics and turn on Log MIDI In Events and Log VST MIDI Events
  2. Reproduce the problem
  3. From the Tools menu, choose Open Settings Folder
  4. Close Cantabile

From the folder opened in step 3, open the file “log.txt” in a text editor. You should see log entries for both the incoming MIDI events and the MIDI events hitting the plugin. From the time stamps you should be able to determine how much latency and compare it to when set list preload is turned off.

Brad

Hi @brad thanks for the info. I’ll try to isolate the problem because it doesn’t happen always, that’s always the worse thing in any issue. I noticed it, for instance, on some harpsichord parts for which I use Pianoteq and in some lead parts for which I use OPX-Pro II, but it happens only in some songs, not others. Maybe a combination of plugins causes the issue…? I’ll scroll the set-list again and check where the problem happens and run the diagnose method that you suggested. I’ll keep you posted…

1 Like

Hi @brad believe it or not, it’s what it happens. I followed your diagnostic process suggestion but it’s quite heavy to get the timing, it’s a long list of notes and don’t know how you mean to compare them since I’m playing them, there is not a reference time to compare to.

So, please can you investigate somehow? Thanks.

Hi @Mistheria,

I mean generate one log file when the problem is happening (preload on) and another when it’s not (preload off) and see if the time deltas between notes arriving at MIDI in and hitting the plugin are different.

The first step would be to do the above comparison. If you can send me two log files, one where the problem is happening and one where it’s not I’ll check it out for you.

Brad

Hi @brad here attached the log file, please analyze it. The issue is there (pre-loaded setlist)…log.zip (30.5 KB)

Here’s the log file without issue (not pre-loaded setlist) log-no-issue.zip (9.8 KB)

Hi @Mistheria,

Thanks for sending this through. I’ve looked at the logs and the timings between the two look almost identical.

To explain, here’s what I’ve found. Firstly, you’re running and audio cycle of 512 samples at 48Khz - so each audio cycle is about 10milliseconds. Also note that because of the logging the times logged will actually be a little slower than when logging is disabled - ie: the logging will be making this worse than normal, but it still all looks OK to me.

Here’s how a typical note event looks in the log:

00056084      103   [34516:2]: MidiDeviceIn - Ch:01 Note On:     E5 ( 76) @   0
00056084        0   [34516:2]: MidiInjector - Ch:01 Note On:     E5 ( 76) @   0
00056089        5   [33576:2]: VST Plugin- Pianoteq 6 (64-bit) (0x00000004FA7969A0) - MIDI: 49608270 [90 4b 00 00] @ 368

To explain the numbers:

  1. The first column (56084) is the absolute time in milliseconds since Cantabile started
  2. The second column (eg: 103) is the elapsed time since the previous line (ie: column 1 current line minus column 1 from the previous line)
  3. The [bracketed] numbers are thread id and logging level - ignore these for this
  4. The rest of the line is what happened.

Looking at the above example,

Line 1: Cantabile first received the MIDI event at time 56084
Line 2: it was immediately injected into Cantabile’s audio engine
Line 3: the event hits the pianoteq plugin 5 milliseconds later (see column 2)

This is all as expected when using a 10 millisecond audio cycle. Scrolling through both log files all events are averaging about 3-10 milliseconds between Cantabile receiving the event and it getting passed to the plugin.

All that’s to say, as best I can tell Cantabile’s audio/MIDI processing pipeline is working as expected.

My next suspicion would be something about the plugin is not rendering notes as quickly as possible. That would seem very odd to me and I can’t think of a reasonable explanation off hand, but to eliminate this as a possibility - does this only happen with PianoTeq or does it happen with other plugins too?

I know PianoTeq has a CPU Overload Protection option - perhaps try turning that off?

image

Also, I’d try turning off either PianoTeq’s multi-core rendering or Cantabile’s multi-core support, they might be fighting against each other.

Finally, it’s interesting that this only happens when pre-loaded set list is enabled. Do you have other instances of PianoTeq in other songs/racks? Perhaps this is an issue with PianoTeq when multiple instances are loaded (even if only one is currently activated).

Brad