diff --git a/packages/alphatab/src/platform/worker/AlphaSynthWebWorker.ts b/packages/alphatab/src/platform/worker/AlphaSynthWebWorker.ts index aecb1beb2..649317be5 100644 --- a/packages/alphatab/src/platform/worker/AlphaSynthWebWorker.ts +++ b/packages/alphatab/src/platform/worker/AlphaSynthWebWorker.ts @@ -34,7 +34,11 @@ export class AlphaSynthWebWorker { public handleMessage(e: MessageEvent): void { const data = e.data; - switch (data.cmd) { + const cmd = data.cmd; + if(!cmd) { + return; + } + switch (cmd) { case 'alphaSynth.initialize': AlphaSynthWorkerSynthOutput.preferredSampleRate = data.sampleRate; Logger.logLevel = data.logLevel; @@ -137,7 +141,7 @@ export class AlphaSynthWebWorker { break; } - if (data.cmd.startsWith('alphaSynth.exporter')) { + if (cmd.startsWith('alphaSynth.exporter')) { this._handleExporterMessage(e); } } diff --git a/packages/alphatab/src/rendering/LineBarRenderer.ts b/packages/alphatab/src/rendering/LineBarRenderer.ts index 5b08e46ac..886307c98 100644 --- a/packages/alphatab/src/rendering/LineBarRenderer.ts +++ b/packages/alphatab/src/rendering/LineBarRenderer.ts @@ -649,8 +649,14 @@ export abstract class LineBarRenderer extends BarRendererBase { return this.calculateBeamYWithDirection(h, x, this.getBeamDirection(h)); } + protected barNumberGlyph?: BarNumberGlyph; + public get barNumberWidth(): number { + return this.barNumberGlyph?.width ?? 0; + } + protected override createPreBeatGlyphs(): void { super.createPreBeatGlyphs(); + this.barNumberGlyph = undefined; this.addPreBeatGlyph(new BarLineGlyph(false, this.bar.staff.track.score.stylesheet.extendBarLines)); this.createLinePreBeatGlyphs(); let hasSpaceAfterStartGlyphs = false; @@ -659,7 +665,9 @@ export abstract class LineBarRenderer extends BarRendererBase { } if (this.shouldCreateBarNumber()) { - this.addPreBeatGlyph(new BarNumberGlyph(0, this.getLineHeight(-0.5), this.bar.index + 1)); + const barNumberGlyph = new BarNumberGlyph(0, this.getLineHeight(-0.5), this.bar.index + 1); + this.barNumberGlyph = barNumberGlyph; + this.addPreBeatGlyph(barNumberGlyph); } else if (!hasSpaceAfterStartGlyphs) { this.addPreBeatGlyph(new SpacingGlyph(0, 0, this.smuflMetrics.oneStaffSpace)); } diff --git a/packages/alphatab/src/rendering/NumberedBarRenderer.ts b/packages/alphatab/src/rendering/NumberedBarRenderer.ts index dbcbac403..65b5a6936 100644 --- a/packages/alphatab/src/rendering/NumberedBarRenderer.ts +++ b/packages/alphatab/src/rendering/NumberedBarRenderer.ts @@ -3,13 +3,14 @@ import { MidiUtils } from '@coderline/alphatab/midi/MidiUtils'; import { BarSubElement } from '@coderline/alphatab/model/Bar'; import { type Beat, BeatSubElement } from '@coderline/alphatab/model/Beat'; import { Duration } from '@coderline/alphatab/model/Duration'; +import type { ElementDisplay } from '@coderline/alphatab/model/ElementDisplay'; import { GraceType } from '@coderline/alphatab/model/GraceType'; import { ModelUtils } from '@coderline/alphatab/model/ModelUtils'; import { MusicFontSymbol } from '@coderline/alphatab/model/MusicFontSymbol'; import type { Note } from '@coderline/alphatab/model/Note'; +import type { BarNumberDisplay } from '@coderline/alphatab/model/RenderStylesheet'; import type { Voice } from '@coderline/alphatab/model/Voice'; import type { ICanvas } from '@coderline/alphatab/platform/ICanvas'; -import { BarNumberDisplay } from '@coderline/alphatab/model/RenderStylesheet'; import { BeatXPosition } from '@coderline/alphatab/rendering/BeatXPosition'; import { BarLineGlyph } from '@coderline/alphatab/rendering/glyphs/BarLineGlyph'; import { BarNumberGlyph } from '@coderline/alphatab/rendering/glyphs/BarNumberGlyph'; @@ -21,7 +22,6 @@ import { ScoreTimeSignatureGlyph } from '@coderline/alphatab/rendering/glyphs/Sc import { SpacingGlyph } from '@coderline/alphatab/rendering/glyphs/SpacingGlyph'; import { LineBarRenderer } from '@coderline/alphatab/rendering/LineBarRenderer'; import { NumberedBeatContainerGlyph } from '@coderline/alphatab/rendering/NumberedBeatContainerGlyph'; -import type { ElementDisplay } from '@coderline/alphatab/model/ElementDisplay'; import { StaffDisplayResolver } from '@coderline/alphatab/rendering/staves/StaffDisplayResolver'; import { BeamDirection } from '@coderline/alphatab/rendering/utils/BeamDirection'; import type { BeamingHelper, BeamingHelperDrawInfo } from '@coderline/alphatab/rendering/utils/BeamingHelper'; @@ -272,7 +272,9 @@ export class NumberedBarRenderer extends LineBarRenderer { this.createLinePreBeatGlyphs(); const hasSpaceAfterStartGlyphs = this.createStartSpacing(); if (this.shouldCreateBarNumber()) { - this.addPreBeatGlyph(new BarNumberGlyph(0, this.getLineHeight(-0.5), this.bar.index + 1)); + const barNumberGlyph = new BarNumberGlyph(0, this.getLineHeight(-0.5), this.bar.index + 1); + this.barNumberGlyph = barNumberGlyph; + this.addPreBeatGlyph(barNumberGlyph); } else if (!hasSpaceAfterStartGlyphs) { this.addPreBeatGlyph(new SpacingGlyph(0, 0, this.smuflMetrics.oneStaffSpace)); } diff --git a/packages/alphatab/src/rendering/glyphs/BeatContainerGlyph.ts b/packages/alphatab/src/rendering/glyphs/BeatContainerGlyph.ts index bab81bee5..e34d673cc 100644 --- a/packages/alphatab/src/rendering/glyphs/BeatContainerGlyph.ts +++ b/packages/alphatab/src/rendering/glyphs/BeatContainerGlyph.ts @@ -68,6 +68,17 @@ export abstract class BeatContainerGlyphBase extends Glyph { public scaleToWidth(beatWidth: number) { this.width = beatWidth; } + + /** + * Repositions this beat so its {@link onTimeX} anchor lands at `target`, used for the + * centered full-bar note/rest (see {@link BarLayoutingInfo.isCenteredFullBar}). The default + * shifts the whole container, matching the regular (non-centered) positioning formula. + * {@link BeatContainerGlyph} overrides this to shift only its ink, keeping `x`/`width` + * spanning the full bar so bounds lookups and skyline emission stay correct. + */ + public applyCenterOffset(target: number): void { + this.x = target - this.onTimeX; + } } /** @@ -214,7 +225,9 @@ export class BeatContainerGlyph extends BeatContainerGlyphBase { this.preNotes.renderer = this.renderer; this.preNotes.container = this; this.preNotes.doLayout(); - this.onNotes.x = this.preNotes.x + this.preNotes.width; + // preNotes.width is only final once preNotes.doLayout() has run, so onNotes.x must be + // derived here, not before. + this._layoutOnsetX(); this.onNotes.renderer = this.renderer; this.onNotes.container = this; this.onNotes.doLayout(); @@ -222,6 +235,23 @@ export class BeatContainerGlyph extends BeatContainerGlyphBase { this.updateWidth(); } + /** + * Resets `preNotes.x`/`onNotes.x` to their natural (un-centered) baseline. + * Shared by {@link doLayout} and {@link applyCenterOffset} so the latter can be called + * repeatedly (once per `_scaleToForce` pass) without compounding a previous offset. + */ + private _layoutOnsetX(): void { + this.preNotes.x = 0; + this.onNotes.x = this.preNotes.x + this.preNotes.width; + } + + public override applyCenterOffset(target: number): void { + this._layoutOnsetX(); + const offset = target - this.onTimeX; + this.preNotes.x = offset; + this.onNotes.x = this.preNotes.x + this.preNotes.width; + } + protected createBeatTies() { let i: number = this.beat.notes.length - 1; while (i >= 0) { diff --git a/packages/alphatab/src/rendering/glyphs/MultiVoiceContainerGlyph.ts b/packages/alphatab/src/rendering/glyphs/MultiVoiceContainerGlyph.ts index 0a65d0dfa..8f31732b3 100644 --- a/packages/alphatab/src/rendering/glyphs/MultiVoiceContainerGlyph.ts +++ b/packages/alphatab/src/rendering/glyphs/MultiVoiceContainerGlyph.ts @@ -10,6 +10,7 @@ import type { NoteXPosition, NoteYPosition } from '@coderline/alphatab/rendering import { BeatXPosition } from '@coderline/alphatab/rendering/BeatXPosition'; import type { BeatContainerGlyphBase } from '@coderline/alphatab/rendering/glyphs/BeatContainerGlyph'; import { Glyph } from '@coderline/alphatab/rendering/glyphs/Glyph'; +import type { LineBarRenderer } from '@coderline/alphatab/rendering/LineBarRenderer'; import { StaffSide } from '@coderline/alphatab/rendering/skyline/BarLocalSkyline'; import type { BarLayoutingInfo } from '@coderline/alphatab/rendering/staves/BarLayoutingInfo'; import type { BarBounds } from '@coderline/alphatab/rendering/utils/BarBounds'; @@ -60,9 +61,52 @@ export class MultiVoiceContainerGlyph extends Glyph { this._scaleToForce(force, true); } + /** + * `true` when every voice/track/staff contributes exactly one beat, of uniform duration, + * spanning the bar's entire duration - i.e. a single full-bar note/rest. Common engraving + * practice centers such notes horizontally within the bar rather than anchoring them right + * after the pre-beat content (Behind Bars, p. 41; see #2464). + */ + private _isCenteredFullBar(): boolean { + // single spring which starts at start and spans the whole bar? + // also ensure we do not have any grace notes + const masterBar = this.renderer.bar.masterBar; + const layoutingInfo = this.renderer.layoutingInfo; + const springs = layoutingInfo.springs; + if (springs.size !== 1 || !springs.has(masterBar.start) || layoutingInfo.allGraceRods.size > 0) { + return false; + } + + const spring = springs.get(masterBar.start)!; + return spring.allDurations.size === 1 && spring.longestDuration === masterBar.calculateDuration(); + } + /** `emit=false`: positioning-only path; final skyline emission runs later via {@link scaleToWidth}. */ private _scaleToForce(force: number, emit: boolean): void { this.width = this.renderer.layoutingInfo.calculateVoiceWidth(force); + + if (this._isCenteredFullBar()) { + // Sole full-bar beat: keep x=0/width=full-bar so bounds lookups, hit-testing and + // skyline emission still span the whole bar, and shift only the ink via + // applyCenterOffset instead of moving the container itself (which would leave the + // bar's left portion outside this beat's bounds). + + // temporary workaround for https://github.com/CoderLine/alphaTab/issues/2780 + const barNumberWidth = (this.renderer as LineBarRenderer).barNumberWidth; + + const target = (this.width - barNumberWidth) / 2; + for (const beatGlyphs of this.beatGlyphs.values()) { + const soleBeatGlyph = beatGlyphs[0]; + soleBeatGlyph.x = 0; + soleBeatGlyph.applyCenterOffset(target); + soleBeatGlyph.scaleToWidth(this.width); + if (emit) { + this._emitBeatContainerSkyline(soleBeatGlyph); + } + } + return; + } + const positions = this.renderer.layoutingInfo.buildOnTimePositions(force); for (const beatGlyphs of this.beatGlyphs.values()) { for (let i: number = 0, j: number = beatGlyphs.length; i < j; i++) { diff --git a/packages/alphatab/src/rendering/staves/BarLayoutingInfo.ts b/packages/alphatab/src/rendering/staves/BarLayoutingInfo.ts index 1cd32f302..40cabb6a3 100644 --- a/packages/alphatab/src/rendering/staves/BarLayoutingInfo.ts +++ b/packages/alphatab/src/rendering/staves/BarLayoutingInfo.ts @@ -432,11 +432,7 @@ export class BarLayoutingInfo { * Pair-overlap + last-rod phantom-next-beat for a single band's rod list. * Called once per band by {@link _calculateSpringConstants}. */ - private _applyOverlayRodConstraints( - rods: OverlayRod[], - sortedSprings: Spring[], - overlayPadding: number - ): void { + private _applyOverlayRodConstraints(rods: OverlayRod[], sortedSprings: Spring[], overlayPadding: number): void { if (rods.length === 0) { return; } @@ -445,10 +441,7 @@ export class BarLayoutingInfo { // anchored in [A.timePosition, B.timePosition) and convert the required gap // `A.rightExtent + B.leftExtent + padding` to a force `requiredGap / invSum`. let springIdx = 0; - while ( - springIdx < sortedSprings.length && - sortedSprings[springIdx].timePosition !== rods[0].timePosition - ) { + while (springIdx < sortedSprings.length && sortedSprings[springIdx].timePosition !== rods[0].timePosition) { springIdx++; } @@ -457,10 +450,7 @@ export class BarLayoutingInfo { const b = rods[r]; let invSum = 0; - while ( - springIdx < sortedSprings.length && - sortedSprings[springIdx].timePosition !== b.timePosition - ) { + while (springIdx < sortedSprings.length && sortedSprings[springIdx].timePosition !== b.timePosition) { invSum += 1 / sortedSprings[springIdx].springConstant; springIdx++; } @@ -483,8 +473,7 @@ export class BarLayoutingInfo { const overlayRightRequirement = lastRod.rightExtent + overlayPadding; const naturalRightBudget = lastSpring.postSpringWidth + this.postBeatSize; if (overlayRightRequirement > naturalRightBudget) { - const requiredForce = - (overlayRightRequirement - this.postBeatSize) * lastSpring.springConstant; + const requiredForce = (overlayRightRequirement - this.postBeatSize) * lastSpring.springConstant; this._updateMinStretchForce(requiredForce); } } @@ -594,6 +583,7 @@ export class BarLayoutingInfo { if (sortedSprings.length === 0) { return positions; } + let springX: number = sortedSprings[0].preSpringWidth; for (let i: number = 0; i < sortedSprings.length; i++) { positions.set(sortedSprings[i].timePosition, springX); diff --git a/packages/alphatab/test-data/musicxml-samples/Binchois.png b/packages/alphatab/test-data/musicxml-samples/Binchois.png index 8ca5721f4..297232478 100644 Binary files a/packages/alphatab/test-data/musicxml-samples/Binchois.png and b/packages/alphatab/test-data/musicxml-samples/Binchois.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/01c-Pitches-NoVoiceElement.png b/packages/alphatab/test-data/musicxml-testsuite/01c-Pitches-NoVoiceElement.png index 6aff41ec5..a4c773947 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/01c-Pitches-NoVoiceElement.png and b/packages/alphatab/test-data/musicxml-testsuite/01c-Pitches-NoVoiceElement.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/02a-Rests-Durations.png b/packages/alphatab/test-data/musicxml-testsuite/02a-Rests-Durations.png index 4afc12740..c40654aea 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/02a-Rests-Durations.png and b/packages/alphatab/test-data/musicxml-testsuite/02a-Rests-Durations.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/02b-Rests-PitchedRests.png b/packages/alphatab/test-data/musicxml-testsuite/02b-Rests-PitchedRests.png index eb17ff8c4..62d80cfa5 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/02b-Rests-PitchedRests.png and b/packages/alphatab/test-data/musicxml-testsuite/02b-Rests-PitchedRests.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/02c-Rests-MultiMeasureRests.png b/packages/alphatab/test-data/musicxml-testsuite/02c-Rests-MultiMeasureRests.png index 66c2a5ed7..ac984ce25 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/02c-Rests-MultiMeasureRests.png and b/packages/alphatab/test-data/musicxml-testsuite/02c-Rests-MultiMeasureRests.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/02d-Rests-Multimeasure-TimeSignatures.png b/packages/alphatab/test-data/musicxml-testsuite/02d-Rests-Multimeasure-TimeSignatures.png index 1a7354c07..bbe1414ae 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/02d-Rests-Multimeasure-TimeSignatures.png and b/packages/alphatab/test-data/musicxml-testsuite/02d-Rests-Multimeasure-TimeSignatures.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/02e-Rests-NoType.png b/packages/alphatab/test-data/musicxml-testsuite/02e-Rests-NoType.png index a82a5499e..8a2568bd3 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/02e-Rests-NoType.png and b/packages/alphatab/test-data/musicxml-testsuite/02e-Rests-NoType.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/03a-Rhythm-Durations.png b/packages/alphatab/test-data/musicxml-testsuite/03a-Rhythm-Durations.png index 639fa1c34..046ccf548 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/03a-Rhythm-Durations.png and b/packages/alphatab/test-data/musicxml-testsuite/03a-Rhythm-Durations.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/03d-Rhythm-DottedDurations-Factors.png b/packages/alphatab/test-data/musicxml-testsuite/03d-Rhythm-DottedDurations-Factors.png index 345859786..e5fc03bc5 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/03d-Rhythm-DottedDurations-Factors.png and b/packages/alphatab/test-data/musicxml-testsuite/03d-Rhythm-DottedDurations-Factors.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/03e-Rhythm-No-Divisions.png b/packages/alphatab/test-data/musicxml-testsuite/03e-Rhythm-No-Divisions.png index 877359414..77523d15f 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/03e-Rhythm-No-Divisions.png and b/packages/alphatab/test-data/musicxml-testsuite/03e-Rhythm-No-Divisions.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/11a-TimeSignatures.png b/packages/alphatab/test-data/musicxml-testsuite/11a-TimeSignatures.png index f9c027803..df297e43f 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/11a-TimeSignatures.png and b/packages/alphatab/test-data/musicxml-testsuite/11a-TimeSignatures.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/11f-TimeSignatures-SymbolMeaning.png b/packages/alphatab/test-data/musicxml-testsuite/11f-TimeSignatures-SymbolMeaning.png index ecda9e2c8..4f91a706d 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/11f-TimeSignatures-SymbolMeaning.png and b/packages/alphatab/test-data/musicxml-testsuite/11f-TimeSignatures-SymbolMeaning.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/12a-Clefs.png b/packages/alphatab/test-data/musicxml-testsuite/12a-Clefs.png index e09793f1e..1334e23e6 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/12a-Clefs.png and b/packages/alphatab/test-data/musicxml-testsuite/12a-Clefs.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/12b-Clefs-NoKeyOrClef.png b/packages/alphatab/test-data/musicxml-testsuite/12b-Clefs-NoKeyOrClef.png index aeba1d346..6f12a647a 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/12b-Clefs-NoKeyOrClef.png and b/packages/alphatab/test-data/musicxml-testsuite/12b-Clefs-NoKeyOrClef.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/13a-KeySignatures.png b/packages/alphatab/test-data/musicxml-testsuite/13a-KeySignatures.png index c28ceb410..02e86098d 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/13a-KeySignatures.png and b/packages/alphatab/test-data/musicxml-testsuite/13a-KeySignatures.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/13c-KeySignatures-NonTraditional.png b/packages/alphatab/test-data/musicxml-testsuite/13c-KeySignatures-NonTraditional.png index efafe8045..321cfa63a 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/13c-KeySignatures-NonTraditional.png and b/packages/alphatab/test-data/musicxml-testsuite/13c-KeySignatures-NonTraditional.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/13d-KeySignatures-Microtones.png b/packages/alphatab/test-data/musicxml-testsuite/13d-KeySignatures-Microtones.png index 5fd9b7097..a0658dfdd 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/13d-KeySignatures-Microtones.png and b/packages/alphatab/test-data/musicxml-testsuite/13d-KeySignatures-Microtones.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/13e-KeySignatures-Cancel.png b/packages/alphatab/test-data/musicxml-testsuite/13e-KeySignatures-Cancel.png index 3ff305136..030b18e5d 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/13e-KeySignatures-Cancel.png and b/packages/alphatab/test-data/musicxml-testsuite/13e-KeySignatures-Cancel.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/13f-KeySignatures-Visible.png b/packages/alphatab/test-data/musicxml-testsuite/13f-KeySignatures-Visible.png index b9c2d723b..2137c1f05 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/13f-KeySignatures-Visible.png and b/packages/alphatab/test-data/musicxml-testsuite/13f-KeySignatures-Visible.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/14a-StaffDetails-LineChanges.png b/packages/alphatab/test-data/musicxml-testsuite/14a-StaffDetails-LineChanges.png index 77e1536a4..e2fc3b4ad 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/14a-StaffDetails-LineChanges.png and b/packages/alphatab/test-data/musicxml-testsuite/14a-StaffDetails-LineChanges.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/21d-Chords-SchubertStabatMater.png b/packages/alphatab/test-data/musicxml-testsuite/21d-Chords-SchubertStabatMater.png index f3eed015c..23b2cc280 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/21d-Chords-SchubertStabatMater.png and b/packages/alphatab/test-data/musicxml-testsuite/21d-Chords-SchubertStabatMater.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/21e-Chords-PickupMeasures.png b/packages/alphatab/test-data/musicxml-testsuite/21e-Chords-PickupMeasures.png index 2b9fc42cd..5ac2d7ce6 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/21e-Chords-PickupMeasures.png and b/packages/alphatab/test-data/musicxml-testsuite/21e-Chords-PickupMeasures.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/31a-Directions.png b/packages/alphatab/test-data/musicxml-testsuite/31a-Directions.png index d9de8a05f..71fa619d1 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/31a-Directions.png and b/packages/alphatab/test-data/musicxml-testsuite/31a-Directions.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/31b-Directions-Order.png b/packages/alphatab/test-data/musicxml-testsuite/31b-Directions-Order.png index 80a2da57e..ad74cbb2e 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/31b-Directions-Order.png and b/packages/alphatab/test-data/musicxml-testsuite/31b-Directions-Order.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/32a-Notations.png b/packages/alphatab/test-data/musicxml-testsuite/32a-Notations.png index 06daa6e95..63bdce669 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/32a-Notations.png and b/packages/alphatab/test-data/musicxml-testsuite/32a-Notations.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/32b-Articulations-Texts.png b/packages/alphatab/test-data/musicxml-testsuite/32b-Articulations-Texts.png index 7ea224741..5a9e32868 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/32b-Articulations-Texts.png and b/packages/alphatab/test-data/musicxml-testsuite/32b-Articulations-Texts.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/33b-Spanners-Tie.png b/packages/alphatab/test-data/musicxml-testsuite/33b-Spanners-Tie.png index 51b069802..92c6d5d60 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/33b-Spanners-Tie.png and b/packages/alphatab/test-data/musicxml-testsuite/33b-Spanners-Tie.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/33da-Spanners-OctaveShifts-before.png b/packages/alphatab/test-data/musicxml-testsuite/33da-Spanners-OctaveShifts-before.png index 8c97ff492..58a1a0799 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/33da-Spanners-OctaveShifts-before.png and b/packages/alphatab/test-data/musicxml-testsuite/33da-Spanners-OctaveShifts-before.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/33db-Spanners-OctaveShifts-after.png b/packages/alphatab/test-data/musicxml-testsuite/33db-Spanners-OctaveShifts-after.png index 4e8368cae..95284ac4c 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/33db-Spanners-OctaveShifts-after.png and b/packages/alphatab/test-data/musicxml-testsuite/33db-Spanners-OctaveShifts-after.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/33i-Ties-NotEnded.png b/packages/alphatab/test-data/musicxml-testsuite/33i-Ties-NotEnded.png index 397241293..5babf081a 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/33i-Ties-NotEnded.png and b/packages/alphatab/test-data/musicxml-testsuite/33i-Ties-NotEnded.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/34b-Colors.png b/packages/alphatab/test-data/musicxml-testsuite/34b-Colors.png index e575ba80f..21d5f5f65 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/34b-Colors.png and b/packages/alphatab/test-data/musicxml-testsuite/34b-Colors.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/34c-Font-Size.png b/packages/alphatab/test-data/musicxml-testsuite/34c-Font-Size.png index ffe416c0b..f75ee0b49 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/34c-Font-Size.png and b/packages/alphatab/test-data/musicxml-testsuite/34c-Font-Size.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41b-MultiParts-MoreThan10.png b/packages/alphatab/test-data/musicxml-testsuite/41b-MultiParts-MoreThan10.png index e326c5d0b..8ca43e8f5 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41b-MultiParts-MoreThan10.png and b/packages/alphatab/test-data/musicxml-testsuite/41b-MultiParts-MoreThan10.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41d-StaffGroups-Nested.png b/packages/alphatab/test-data/musicxml-testsuite/41d-StaffGroups-Nested.png index 3c234f040..0be701c0d 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41d-StaffGroups-Nested.png and b/packages/alphatab/test-data/musicxml-testsuite/41d-StaffGroups-Nested.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41e-StaffGroups-InstrumentNames-Linebroken.png b/packages/alphatab/test-data/musicxml-testsuite/41e-StaffGroups-InstrumentNames-Linebroken.png index 4d947a325..d6ff2f056 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41e-StaffGroups-InstrumentNames-Linebroken.png and b/packages/alphatab/test-data/musicxml-testsuite/41e-StaffGroups-InstrumentNames-Linebroken.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41f-StaffGroups-Overlapping.png b/packages/alphatab/test-data/musicxml-testsuite/41f-StaffGroups-Overlapping.png index d9d67d2b0..6816fa7b5 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41f-StaffGroups-Overlapping.png and b/packages/alphatab/test-data/musicxml-testsuite/41f-StaffGroups-Overlapping.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41g-StaffGroups-NestingOrder.png b/packages/alphatab/test-data/musicxml-testsuite/41g-StaffGroups-NestingOrder.png index dbf7d287c..311ebb920 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41g-StaffGroups-NestingOrder.png and b/packages/alphatab/test-data/musicxml-testsuite/41g-StaffGroups-NestingOrder.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41h-TooManyParts.png b/packages/alphatab/test-data/musicxml-testsuite/41h-TooManyParts.png index 24e5101f0..e1b165850 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41h-TooManyParts.png and b/packages/alphatab/test-data/musicxml-testsuite/41h-TooManyParts.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41i-PartNameDisplay-Override.png b/packages/alphatab/test-data/musicxml-testsuite/41i-PartNameDisplay-Override.png index 89894ecf4..992c71c25 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41i-PartNameDisplay-Override.png and b/packages/alphatab/test-data/musicxml-testsuite/41i-PartNameDisplay-Override.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41j-PartNameDisplay-Multiple-DisplayText-Children.png b/packages/alphatab/test-data/musicxml-testsuite/41j-PartNameDisplay-Multiple-DisplayText-Children.png index aacb8d8b8..15e14c10d 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41j-PartNameDisplay-Multiple-DisplayText-Children.png and b/packages/alphatab/test-data/musicxml-testsuite/41j-PartNameDisplay-Multiple-DisplayText-Children.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41k-PartName-Print.png b/packages/alphatab/test-data/musicxml-testsuite/41k-PartName-Print.png index 5ecaaf6e3..1a7c18dfe 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41k-PartName-Print.png and b/packages/alphatab/test-data/musicxml-testsuite/41k-PartName-Print.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/41l-GroupNameDisplay-Override.png b/packages/alphatab/test-data/musicxml-testsuite/41l-GroupNameDisplay-Override.png index b0f3418ef..823a26451 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/41l-GroupNameDisplay-Override.png and b/packages/alphatab/test-data/musicxml-testsuite/41l-GroupNameDisplay-Override.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/42a-MultiVoice-TwoVoicesOnStaff-Lyrics.png b/packages/alphatab/test-data/musicxml-testsuite/42a-MultiVoice-TwoVoicesOnStaff-Lyrics.png index 32299f955..39b2e6d6e 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/42a-MultiVoice-TwoVoicesOnStaff-Lyrics.png and b/packages/alphatab/test-data/musicxml-testsuite/42a-MultiVoice-TwoVoicesOnStaff-Lyrics.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45a-SimpleRepeat.png b/packages/alphatab/test-data/musicxml-testsuite/45a-SimpleRepeat.png index 0ee9bf909..03e7cedde 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45a-SimpleRepeat.png and b/packages/alphatab/test-data/musicxml-testsuite/45a-SimpleRepeat.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45b-RepeatWithAlternatives.png b/packages/alphatab/test-data/musicxml-testsuite/45b-RepeatWithAlternatives.png index 6811894a4..32f8b8051 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45b-RepeatWithAlternatives.png and b/packages/alphatab/test-data/musicxml-testsuite/45b-RepeatWithAlternatives.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45c-SimpleRepeat-Nested.png b/packages/alphatab/test-data/musicxml-testsuite/45c-SimpleRepeat-Nested.png index 2a90fb703..2ae1887f9 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45c-SimpleRepeat-Nested.png and b/packages/alphatab/test-data/musicxml-testsuite/45c-SimpleRepeat-Nested.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45d-Repeats-MultipleEndings.png b/packages/alphatab/test-data/musicxml-testsuite/45d-Repeats-MultipleEndings.png index 780b47923..a19363d5c 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45d-Repeats-MultipleEndings.png and b/packages/alphatab/test-data/musicxml-testsuite/45d-Repeats-MultipleEndings.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45e-Repeats-Combination.png b/packages/alphatab/test-data/musicxml-testsuite/45e-Repeats-Combination.png index 78d0d2e91..09027351d 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45e-Repeats-Combination.png and b/packages/alphatab/test-data/musicxml-testsuite/45e-Repeats-Combination.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45f-Repeats-InvalidEndings.png b/packages/alphatab/test-data/musicxml-testsuite/45f-Repeats-InvalidEndings.png index 52175a54e..5217e7940 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45f-Repeats-InvalidEndings.png and b/packages/alphatab/test-data/musicxml-testsuite/45f-Repeats-InvalidEndings.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45g-Repeats-NotEnded.png b/packages/alphatab/test-data/musicxml-testsuite/45g-Repeats-NotEnded.png index 57d1b0739..22221a6c3 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45g-Repeats-NotEnded.png and b/packages/alphatab/test-data/musicxml-testsuite/45g-Repeats-NotEnded.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45h-Repeats-Partial.png b/packages/alphatab/test-data/musicxml-testsuite/45h-Repeats-Partial.png index 73791f19d..2ee2f7c1e 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45h-Repeats-Partial.png and b/packages/alphatab/test-data/musicxml-testsuite/45h-Repeats-Partial.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/45i-Repeats-Nested.png b/packages/alphatab/test-data/musicxml-testsuite/45i-Repeats-Nested.png index 401c696a0..1638e14f5 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/45i-Repeats-Nested.png and b/packages/alphatab/test-data/musicxml-testsuite/45i-Repeats-Nested.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/46a-Barlines.png b/packages/alphatab/test-data/musicxml-testsuite/46a-Barlines.png index 43191c8be..687198c78 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/46a-Barlines.png and b/packages/alphatab/test-data/musicxml-testsuite/46a-Barlines.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/46c-Midmeasure-Clef.png b/packages/alphatab/test-data/musicxml-testsuite/46c-Midmeasure-Clef.png index 551196664..ebba847aa 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/46c-Midmeasure-Clef.png and b/packages/alphatab/test-data/musicxml-testsuite/46c-Midmeasure-Clef.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/46e-PickupMeasure-SecondVoiceStartsLater.png b/packages/alphatab/test-data/musicxml-testsuite/46e-PickupMeasure-SecondVoiceStartsLater.png index 596f67492..993bd12c4 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/46e-PickupMeasure-SecondVoiceStartsLater.png and b/packages/alphatab/test-data/musicxml-testsuite/46e-PickupMeasure-SecondVoiceStartsLater.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/51b-Header-Quotes.png b/packages/alphatab/test-data/musicxml-testsuite/51b-Header-Quotes.png index 4247a2034..1682e6b45 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/51b-Header-Quotes.png and b/packages/alphatab/test-data/musicxml-testsuite/51b-Header-Quotes.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/51c-MultipleRights.png b/packages/alphatab/test-data/musicxml-testsuite/51c-MultipleRights.png index 5d9cf3b18..7a519398d 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/51c-MultipleRights.png and b/packages/alphatab/test-data/musicxml-testsuite/51c-MultipleRights.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/51d-EmptyTitle.png b/packages/alphatab/test-data/musicxml-testsuite/51d-EmptyTitle.png index 5de169415..0f9b573fe 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/51d-EmptyTitle.png and b/packages/alphatab/test-data/musicxml-testsuite/51d-EmptyTitle.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/52a-PageLayout.png b/packages/alphatab/test-data/musicxml-testsuite/52a-PageLayout.png index e57fec6a6..d89d022cc 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/52a-PageLayout.png and b/packages/alphatab/test-data/musicxml-testsuite/52a-PageLayout.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/52b-Breaks.png b/packages/alphatab/test-data/musicxml-testsuite/52b-Breaks.png index 0a8f76acc..b931a0a5b 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/52b-Breaks.png and b/packages/alphatab/test-data/musicxml-testsuite/52b-Breaks.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/61j-Lyrics-Elisions.png b/packages/alphatab/test-data/musicxml-testsuite/61j-Lyrics-Elisions.png index 8e80a2881..71c0a4593 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/61j-Lyrics-Elisions.png and b/packages/alphatab/test-data/musicxml-testsuite/61j-Lyrics-Elisions.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/72b-TransposingInstruments-Full.png b/packages/alphatab/test-data/musicxml-testsuite/72b-TransposingInstruments-Full.png index f400ec349..6c65ca949 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/72b-TransposingInstruments-Full.png and b/packages/alphatab/test-data/musicxml-testsuite/72b-TransposingInstruments-Full.png differ diff --git a/packages/alphatab/test-data/musicxml-testsuite/72c-TransposingInstruments-Change.png b/packages/alphatab/test-data/musicxml-testsuite/72c-TransposingInstruments-Change.png index 546eeb788..ff63cea01 100644 Binary files a/packages/alphatab/test-data/musicxml-testsuite/72c-TransposingInstruments-Change.png and b/packages/alphatab/test-data/musicxml-testsuite/72c-TransposingInstruments-Change.png differ diff --git a/packages/alphatab/test-data/musicxml3/full-bar-rest.png b/packages/alphatab/test-data/musicxml3/full-bar-rest.png index 7ad0fd551..d52fb5f0b 100644 Binary files a/packages/alphatab/test-data/musicxml3/full-bar-rest.png and b/packages/alphatab/test-data/musicxml3/full-bar-rest.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/beat-slash.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/beat-slash.png index ae5823f6f..05571fc75 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/beat-slash.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/beat-slash.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/bends.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/bends.png index 6716d4e77..1b2ccfa70 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/bends.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/bends.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/chords-duplicates.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/chords-duplicates.png index deb569e37..ca7d6ccba 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/chords-duplicates.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/chords-duplicates.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-simple.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-simple.png index cf0b6a46b..f361cddc2 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-simple.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-simple.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-symbols.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-symbols.png index c880cd9e9..49b50e579 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-symbols.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/directions-symbols.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/let-ring.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/let-ring.png index 616ded0f1..1a610fac4 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/let-ring.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/let-ring.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-1200.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-1200.png index 6713bb14b..b10e69973 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-1200.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-1200.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-600.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-600.png index 9b92d53fa..740beb68d 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-600.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-600.png differ diff --git a/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-850.png b/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-850.png index 5827ae60f..b5e58f79f 100644 Binary files a/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-850.png and b/packages/alphatab/test-data/visual-tests/effects-and-annotations/sustain-850.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-all.png b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-all.png index ab73ab1d3..624eba275 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-all.png and b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-all.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-first.png b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-first.png index 872bc9dd8..86d558889 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-first.png and b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-first.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-hide.png b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-hide.png index 59ee421a2..46e1ddeb7 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-hide.png and b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-bar-override-hide.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-all.png b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-all.png index 0588c9cd0..44548931e 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-all.png and b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-all.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-first.png b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-first.png index 8c65f7676..af5db7771 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-first.png and b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-first.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-hide.png b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-hide.png index 334c52c81..1087a7ba8 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-hide.png and b/packages/alphatab/test-data/visual-tests/layout/barnumberdisplay-stylesheet-hide.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/ghost-staff-visibility.png b/packages/alphatab/test-data/visual-tests/layout/ghost-staff-visibility.png index 5b5228f79..f4e11f477 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/ghost-staff-visibility.png and b/packages/alphatab/test-data/visual-tests/layout/ghost-staff-visibility.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves-in-first.png b/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves-in-first.png index 474ce8b2c..61c30ba3c 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves-in-first.png and b/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves-in-first.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves.png b/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves.png index 9a3748e1d..57a03f36f 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves.png and b/packages/alphatab/test-data/visual-tests/layout/hide-empty-staves.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/multibar-rest-all-tracks.png b/packages/alphatab/test-data/visual-tests/layout/multibar-rest-all-tracks.png index 8b840150c..ee523d16d 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/multibar-rest-all-tracks.png and b/packages/alphatab/test-data/visual-tests/layout/multibar-rest-all-tracks.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/multibar-rest-multi-track.png b/packages/alphatab/test-data/visual-tests/layout/multibar-rest-multi-track.png index 1e7a92715..597ce13a7 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/multibar-rest-multi-track.png and b/packages/alphatab/test-data/visual-tests/layout/multibar-rest-multi-track.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/multibar-rest-single-track.png b/packages/alphatab/test-data/visual-tests/layout/multibar-rest-single-track.png index 2746e428d..55b49f086 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/multibar-rest-single-track.png and b/packages/alphatab/test-data/visual-tests/layout/multibar-rest-single-track.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-hide.png b/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-hide.png index 90c1c8571..0cb68d44f 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-hide.png and b/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-hide.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-show.png b/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-show.png index 346999962..83199460b 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-show.png and b/packages/alphatab/test-data/visual-tests/layout/single-staff-brackets-show.png differ diff --git a/packages/alphatab/test-data/visual-tests/layout/system-layout-tex.png b/packages/alphatab/test-data/visual-tests/layout/system-layout-tex.png index 99dc0b213..d71f733b9 100644 Binary files a/packages/alphatab/test-data/visual-tests/layout/system-layout-tex.png and b/packages/alphatab/test-data/visual-tests/layout/system-layout-tex.png differ diff --git a/packages/alphatab/test-data/visual-tests/music-notation/notes-rests-beams.png b/packages/alphatab/test-data/visual-tests/music-notation/notes-rests-beams.png index efdddf63a..e026728c1 100644 Binary files a/packages/alphatab/test-data/visual-tests/music-notation/notes-rests-beams.png and b/packages/alphatab/test-data/visual-tests/music-notation/notes-rests-beams.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-off.png b/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-off.png index 56b21ed42..1ffeebc64 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-off.png and b/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-off.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-on.png b/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-on.png index 381b2b2ec..00f6a6b4d 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-on.png and b/packages/alphatab/test-data/visual-tests/notation-elements/zeros-on-dive-whammys-on.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/accentuations-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/accentuations-songbook.png index 4a5fa1d1e..b2b163ecc 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/accentuations-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/accentuations-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-default.png index 7ba213be1..e27292f83 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-songbook.png index 7ba213be1..e27292f83 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/arpeggio-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/bends-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/bends-default.png index fda489600..bf46a7c65 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/bends-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/bends-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/bends-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/bends-songbook.png index 3a142c7cc..3538df05c 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/bends-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/bends-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/dead-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/dead-default.png index 7c6570988..2a6833b23 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/dead-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/dead-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/dead-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/dead-songbook.png index 7c6570988..2a6833b23 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/dead-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/dead-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/full-default-large.png b/packages/alphatab/test-data/visual-tests/notation-legend/full-default-large.png index daddc2917..5b38cf79b 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/full-default-large.png and b/packages/alphatab/test-data/visual-tests/notation-legend/full-default-large.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/full-default-small.png b/packages/alphatab/test-data/visual-tests/notation-legend/full-default-small.png index d2294d2a9..5d8907d7d 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/full-default-small.png and b/packages/alphatab/test-data/visual-tests/notation-legend/full-default-small.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/full-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/full-default.png index c791c637c..af5cbda1c 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/full-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/full-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/full-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/full-songbook.png index 7123aabd2..25a8dc059 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/full-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/full-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/hammer-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/hammer-default.png index 4b25bac56..ea40b8844 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/hammer-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/hammer-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/hammer-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/hammer-songbook.png index 4b25bac56..ea40b8844 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/hammer-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/hammer-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-default.png index ed0586f5e..e3ddee2ee 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-songbook.png index ed0586f5e..e3ddee2ee 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/harmonics-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-default.png index db4822279..6afae3d1d 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-songbook.png index 8145b9056..32bdcec52 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/let-ring-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-default.png index f472856f0..111a27179 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-songbook.png index f472856f0..111a27179 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/ottavia-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1300.png b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1300.png index 24bf474e9..91317e587 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1300.png and b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1300.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1500.png b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1500.png index 64512b21f..381077cda 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1500.png and b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-1500.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-500.png b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-500.png index 1a7ee2314..38681dbb5 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-500.png and b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-500.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-800.png b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-800.png index 32e463ac9..cb87d09d4 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-800.png and b/packages/alphatab/test-data/visual-tests/notation-legend/resize-sequence-800.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/slides-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/slides-default.png index 29bbecbaf..be2635a64 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/slides-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/slides-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/slides-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/slides-songbook.png index 29bbecbaf..be2635a64 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/slides-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/slides-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/smufl-petaluma-1300.png b/packages/alphatab/test-data/visual-tests/notation-legend/smufl-petaluma-1300.png index c3a0455dd..16e90b7ed 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/smufl-petaluma-1300.png and b/packages/alphatab/test-data/visual-tests/notation-legend/smufl-petaluma-1300.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-default.png index 39013baea..f35f241a7 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-songbook.png index 098dcafc8..86c537335 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/tempo-change-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-default.png index 3400716ab..a97b22008 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-songbook.png index dab625b74..263372ad9 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/tied-note-accidentals-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/trill-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/trill-default.png index bd0f4d02a..0551f86c4 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/trill-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/trill-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/trill-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/trill-songbook.png index bd0f4d02a..0551f86c4 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/trill-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/trill-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-default.png index 22e3113ac..6471a6516 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-songbook.png index 22e3113ac..6471a6516 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/triplet-feel-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-default.png index 09b56851f..c9e4703f3 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-songbook.png index 09b56851f..c9e4703f3 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/vibrato-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/whammy-default.png b/packages/alphatab/test-data/visual-tests/notation-legend/whammy-default.png index 94b458450..ff539d97d 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/whammy-default.png and b/packages/alphatab/test-data/visual-tests/notation-legend/whammy-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/notation-legend/whammy-songbook.png b/packages/alphatab/test-data/visual-tests/notation-legend/whammy-songbook.png index 90a29cc8f..b0a671e16 100644 Binary files a/packages/alphatab/test-data/visual-tests/notation-legend/whammy-songbook.png and b/packages/alphatab/test-data/visual-tests/notation-legend/whammy-songbook.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-alto-F3.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-alto-F3.png index 8a69726f6..0c8fc8307 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-alto-F3.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-alto-F3.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-bass-G2.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-bass-G2.png index f9ab37e11..afb95c5cc 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-bass-G2.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-bass-G2.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-default.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-default.png index 55b7cdafe..75963f763 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-default.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-default.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-multi-voice.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-multi-voice.png index 60273a266..ca4b0a88a 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-multi-voice.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-multi-voice.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-1.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-1.png index 88b64f69e..bf39f97f7 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-1.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-1.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-2.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-2.png index 4ef84b421..294cee846 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-2.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-2.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-3.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-3.png index 903935f0b..f974821aa 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-3.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-3.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-4.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-4.png index f935ccce1..826950eb5 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-4.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-4.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-5.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-5.png index 4b1148f4c..b976e8acf 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-5.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-staff-lines-5.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-tenor-D3.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-tenor-D3.png index 2b0d8d290..27cd97028 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-tenor-D3.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-tenor-D3.png differ diff --git a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-treble-E4.png b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-treble-E4.png index 1de0c3707..3b0d44c8d 100644 Binary files a/packages/alphatab/test-data/visual-tests/rest-position/rest-position-treble-E4.png and b/packages/alphatab/test-data/visual-tests/rest-position/rest-position-treble-E4.png differ diff --git a/packages/alphatab/test-data/visual-tests/special-notes/full-bar-notes-rests.png b/packages/alphatab/test-data/visual-tests/special-notes/full-bar-notes-rests.png new file mode 100644 index 000000000..1c3109eb5 Binary files /dev/null and b/packages/alphatab/test-data/visual-tests/special-notes/full-bar-notes-rests.png differ diff --git a/packages/alphatab/test-data/visual-tests/special-tracks/slash.png b/packages/alphatab/test-data/visual-tests/special-tracks/slash.png index 95e5c332a..5bf5fc385 100644 Binary files a/packages/alphatab/test-data/visual-tests/special-tracks/slash.png and b/packages/alphatab/test-data/visual-tests/special-tracks/slash.png differ diff --git a/packages/alphatab/test-data/visual-tests/system-spacing/power-law-rest-bar-not-ballooning.png b/packages/alphatab/test-data/visual-tests/system-spacing/power-law-rest-bar-not-ballooning.png index edde92ac7..36413ba78 100644 Binary files a/packages/alphatab/test-data/visual-tests/system-spacing/power-law-rest-bar-not-ballooning.png and b/packages/alphatab/test-data/visual-tests/system-spacing/power-law-rest-bar-not-ballooning.png differ diff --git a/packages/alphatab/test/visualTests/features/SpecialNotes.test.ts b/packages/alphatab/test/visualTests/features/SpecialNotes.test.ts index 8a50c2c4c..bffb74389 100644 --- a/packages/alphatab/test/visualTests/features/SpecialNotes.test.ts +++ b/packages/alphatab/test/visualTests/features/SpecialNotes.test.ts @@ -46,4 +46,15 @@ describe('SpecialNotesTests', () => { it('beaming-mode', async () => { await VisualTestHelper.runVisualTest('special-notes/beaming-mode.gp'); }); + + it('full-bar-notes-rests', async () => { + await VisualTestHelper.runVisualTestTex( + ` + C4 {slur s1} | C4 {slur s1} .1 | r.4 | r.1 + \\ts(3 8) C4{slur S2}.4 {d} | C4 {slur S2} | + \\ts(4 4) C4{gr} C4.1 + `, + 'test-data/visual-tests/special-notes/full-bar-notes-rests.png' + ); + }); });