musescore / musescore/MuseScore
Add per-note playback start/duration offset properties
@jessjwilliamson is already working on this.
Since Aug 12, 2026.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
Problem
There is currently no way to nudge the audio playback timing of an individual note without changing its notated position or duration. Anyone wanting subtle expressive timing (rubato, swing feel on a single note, fixing an awkward MIDI-imported note that plays slightly early/late) has to resort to workarounds — tiny tuplets, extra tempo changes, or editing the exported audio afterwards — none of which are practical or non-destructive.
Proposed solution
Add two new per-note properties, editable from the Properties panel → Play section:
- Start offset — shifts when the note starts sounding during playback, in ticks.
- Duration offset — shifts how long the note sounds during playback, in ticks.
Both offsets only affect the audio rendering of the note (NoteRenderer). The note's actual tick position, duration, and notation/engraving are completely unaffected — this is purely a playback-timing adjustment, similar in spirit to existing per-voice playback toggles (playbackVoice1..4).
Scope
- Two new
Pidproperties (PLAYBACK_START_OFFSET,PLAYBACK_DURATION_OFFSET), stored per-note and saved/loaded with the score (MSCX read/write). - Two new spin boxes in the Note "Play" section of the Properties panel (range: -1920..+1920 ticks).
- Exposed on the plugins API (
Note.playbackStartOffset/Note.playbackDurationOffset) for scripting use cases. - No change to layout/engraving; no change to existing file compatibility (new optional properties default to 0).
Additional notes
I have a working implementation of this and would like to submit a PR for it. Happy to adjust naming/scope based on maintainer feedback before doing so.
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.