musescore / musescore/MuseScore
Feature request: query VST3 plugin latency and apply plugin delay compensation
@RomanPudashkin is already working on this.
Since Jul 31, 2026.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
Your idea
MuseScore hosts third party VST3 instruments but never asks them how much latency they introduce, and does not shift the rest of the mix to match. As a result, any VST instrument that uses internal look-ahead (it reads a little ahead in time before producing sound) plays out of time with the rest of the score, and the user has no way to correct it.
The request is for MuseScore to read the plugin reported latency (VST3 exposes it through IAudioProcessor::getLatencySamples()) and apply plugin delay compensation, delaying the other tracks by the largest plugin latency so a look-ahead instrument stays in sync. This is standard behaviour in DAWs and in the other major notation apps; MuseScore is currently the exception.
Problem to be solved
Concrete example (plectrum instruments): a VST for plectrum instruments such as bandurria, lute or mandolin wants to play long notes as tremolo automatically. Whether a note should be a tremolo depends on its duration, but a plugin only learns how long a note is as it plays, so to trigger the tremolo sample from the very start of a long note it must look slightly ahead and therefore report some latency. In Dorico, Sibelius and Finale this works because the host compensates; in MuseScore that instrument would simply sound late and out of sync with the other staves, so the technique is not usable there today.
Prior art
- Every major DAW (Cubase, Logic, Reaper, Studio One, Pro Tools) implements plugin delay compensation from the latency each plugin reports.
- Dorico, built on the Steinberg audio engine, compensates plugin latency during playback.
- The VST3 SDK exposes the value through
IAudioProcessor::getLatencySamples(); a host reads it after activation and can re-read it when the plugin signals a latency change.
Additional context
No response
Checklist
- This request follows the guidelines for reporting issues
- I have verified that this feature request has not been logged before, by searching the issue tracker for similar requests
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.