You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AI-assisted (disclosure block included as described in AGENTS.md)
Current Behavior
Note
AI-authored disclosure (alphatab-ai-authored-v1)
Portions of this content were authored by an AI agent. The agent has read AGENTS.md and the human submitter accepts responsibility for
compliance with the rules in that document.
A let-ring passage imported from MusicXML — a <words>LetRing</words> direction followed by <dashes> — is drawn correctly but is not audible.
The notation is right: the "Let Ring" label and its dashed extension appear over the passage, exactly as expected. But on playback every note still stops at its own written length, so nothing rings on. An arpeggio that should pile up into a chord instead comes out as four separate, disconnected notes.
The same passage written in alphaTex with {lr} sounds correct — each note sustains to the end of the span — so the notation and the audio disagree only on the MusicXML side.
Taking four quarter notes across one 4/4 bar, all inside one let-ring span, and reading the note lengths out of the generated MIDI:
source
notation shows "let ring"
MIDI note lengths (ticks)
MusicXML, <words>LetRing</words> + <dashes>
yes
960, 960, 960, 960
alphaTex {lr} on each note
yes
3840, 2880, 1920, 960
The alphaTex row is what let ring should sound like: the first note runs to the end of the bar, the second to the end of the bar, and so on. The MusicXML row is just four ordinary quarter notes.
Expected Behavior
A <words>LetRing</words> + <dashes> span should make the notes it covers ring on in playback, the way alphaTex {lr} and Guitar Pro let-ring already do — the notes should sustain past their written length until the span ends, not just be labelled as let-ring in the notation.
The MusicXML support matrix lists direction → dashes (if preceeded by words LetRing) as ✅ Supported for Model, Reading, Render, Audio and Tex. Reading and Render do work; Audio is the part that does not, which is why I am reporting this as a bug rather than asking for a new feature.
Steps To Reproduce
Load the MusicXML below — four quarter notes on open strings in one 4/4 bar, wrapped in a <words>LetRing</words> + <dashes type="start"> … <dashes type="stop"> span.
Generate the MIDI (or press play in a browser) and look at how long each note lasts.
Observe that the "Let Ring" marking is drawn over the bar, but every note ends after its own quarter-note length instead of ringing on.
The above is the real printEnvironmentInfo() output from the environment where the snippet was run.
Platform
Node.js (where the reproduction above was run and verified)
Anything else?
Where this showed up in practice: I generate MusicXML from guitar tabs and read it back with alphaTab. Because the notation looks completely correct, this one is easy to miss — the score shows the let-ring marking, and only listening reveals that nothing sustains.
Worth mentioning in case it is the same area: palm mute written per-note as <play><mute>palm</mute></play>does change the sound — on a two-note test the marked note comes back 160 ticks instead of 960 — so per-note playback markings are getting through. It is the <words> + <dashes> span form that is drawn but not heard. I have not found any MusicXML spelling of let ring that produces audible sustain.
Is there an existing issue for this?
I have read the contribution rules
AI authorship
AI-assisted (disclosure block included as described in AGENTS.md)
Current Behavior
Note
AI-authored disclosure (
alphatab-ai-authored-v1)Portions of this content were authored by an AI agent. The agent has read
AGENTS.md and the human submitter accepts responsibility for
compliance with the rules in that document.
A let-ring passage imported from MusicXML — a
<words>LetRing</words>direction followed by<dashes>— is drawn correctly but is not audible.The notation is right: the "Let Ring" label and its dashed extension appear over the passage, exactly as expected. But on playback every note still stops at its own written length, so nothing rings on. An arpeggio that should pile up into a chord instead comes out as four separate, disconnected notes.
The same passage written in alphaTex with
{lr}sounds correct — each note sustains to the end of the span — so the notation and the audio disagree only on the MusicXML side.Taking four quarter notes across one 4/4 bar, all inside one let-ring span, and reading the note lengths out of the generated MIDI:
<words>LetRing</words>+<dashes>{lr}on each noteThe alphaTex row is what let ring should sound like: the first note runs to the end of the bar, the second to the end of the bar, and so on. The MusicXML row is just four ordinary quarter notes.
Expected Behavior
A
<words>LetRing</words>+<dashes>span should make the notes it covers ring on in playback, the way alphaTex{lr}and Guitar Pro let-ring already do — the notes should sustain past their written length until the span ends, not just be labelled as let-ring in the notation.The MusicXML support matrix lists
direction→dashes (if preceeded by words LetRing)as ✅ Supported for Model, Reading, Render, Audio and Tex. Reading and Render do work; Audio is the part that does not, which is why I am reporting this as a bug rather than asking for a new feature.Steps To Reproduce
<words>LetRing</words>+<dashes type="start">…<dashes type="stop">span.Output on 1.8.4:
Link to jsFiddle, CodePen, Project
No hosted example — the snippet above is self-contained and needs no score file.
Version and Environment
The above is the real
printEnvironmentInfo()output from the environment where the snippet was run.Platform
Node.js (where the reproduction above was run and verified)
Anything else?
Where this showed up in practice: I generate MusicXML from guitar tabs and read it back with alphaTab. Because the notation looks completely correct, this one is easy to miss — the score shows the let-ring marking, and only listening reveals that nothing sustains.
Worth mentioning in case it is the same area: palm mute written per-note as
<play><mute>palm</mute></play>does change the sound — on a two-note test the marked note comes back 160 ticks instead of 960 — so per-note playback markings are getting through. It is the<words>+<dashes>span form that is drawn but not heard. I have not found any MusicXML spelling of let ring that produces audible sustain.