Skip to content

fix(rendering): compute beaming bounds for beats without notes - #2993

Merged
Danielku15 merged 1 commit into
developfrom
feature/issue-2976
Oct 29, 2026
Merged

Danielku15 merged 1 commit into
developfrom
feature/issue-2976

Conversation

@Danielku15

@Danielku15 Danielku15 commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

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.

Issues

Fixes #2976

Proposed changes

The reported case (a whole rest in numbered notation) is already fixed on develop by #2990. One input still crashed with the same TypeError: Cannot read properties of null (reading 'beat') in every notation: dead-slapped beats of whole duration or longer, and beams made only of dead slaps (beam merge). Dead-slapped beats have no notes, but unlike rests they are not isRest, so the beaming bounds and beam drawing info dereferenced a missing highest/lowest note.

The beaming bounds and ensureBeamDrawingInfo now fall back to the beat itself when a helper has no notes. Branch order and the rest handling from #2990 are unchanged, and the unused, non-null-safe BeamingHelper.beatOfLowestNote/beatOfHighestNote getters are removed.

The new dead-slapped-beats test renders these inputs in all notations and checks there is no error and no NaN; it fails on develop. No existing reference changed (checked across the beaming-heavy visual suites).

Checklist

  • I consent that this change becomes part of alphaTab under its current or any future open source license
  • This PR is linked to an accepted issue (see above)
  • Changes are implemented
  • New tests were added
  • I have read AGENTS.md if an AI helped draft any part of this PR

AI authorship disclosure

  • No AI agent authored any part of this PR (description, code, tests, or commit messages)
  • An AI agent contributed to this PR. The AI-authored disclosure block
    (alphatab-ai-authored-v1) is present at the top of this body, and I have
    personally reviewed every change and can explain each one

Further details

  • This is a breaking change
  • This change will require update of the documentation/website

Dead-slapped beats of whole duration or longer, and beams made only of dead
slaps, dereferenced a missing highest/lowest note and aborted the render.
The beaming bounds and beam drawing info now fall back to the beat itself
when a helper has no notes.

Fixes #2976
@Danielku15
Danielku15 merged commit 6c5b7f9 into develop Oct 29, 2026
8 checks passed
@Danielku15
Danielku15 deleted the feature/issue-2976 branch October 29, 2026 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rendering issue: Unable to switch to Numbered Notation (jianpu) for specific tracks in v1.8.4

1 participant