From fe3f8a564414299b701882aaf3a769c9337c7926 Mon Sep 17 00:00:00 2001 From: Jared Johnson Date: Sun, 10 May 2026 16:34:19 -0400 Subject: [PATCH 1/2] add continuation measures --- src/config.ts | 8 + src/data/types.ts | 13 + src/elements/measure.ts | 8 + src/formatting/continuationpass.ts | 106 +++++ src/formatting/defaultformatter.ts | 51 ++- src/formatting/measuresplitter.ts | 403 ++++++++++++++++++ src/formatting/panoramicformatter.ts | 4 + src/parsing/musicxml/measure.ts | 1 + src/rendering/measure.ts | 5 +- src/rendering/stave.ts | 9 +- src/rendering/types.ts | 1 + .../continuation_measures_basic.musicxml | 59 +++ ...ontinuation_measures_basic_w1200_tnull.png | Bin 0 -> 14405 bytes ..._continuation_measures_basic_w350_t200.png | Bin 0 -> 24730 bytes tests/integration/vexml.test.ts | 44 ++ tests/unit/formatting/measuresplitter.test.ts | 173 ++++++++ 16 files changed, 857 insertions(+), 28 deletions(-) create mode 100644 src/formatting/continuationpass.ts create mode 100644 src/formatting/measuresplitter.ts create mode 100644 tests/__data__/vexml/continuation_measures_basic.musicxml create mode 100644 tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w1200_tnull.png create mode 100644 tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w350_t200.png create mode 100644 tests/unit/formatting/measuresplitter.test.ts diff --git a/src/config.ts b/src/config.ts index 895122737..45912c57f 100644 --- a/src/config.ts +++ b/src/config.ts @@ -62,6 +62,14 @@ export const CONFIG = { 'LAST_SYSTEM_WIDTH_STRETCH_THRESHOLD is the total width fraction that the measures must exceed to stretch the ' + 'measures in the last system.', }), + CONTINUATION_MEASURE_WIDTH_THRESHOLD: t.number({ + defaultValue: null, + help: + 'CONTINUATION_MEASURE_WIDTH_THRESHOLD is the calculated measure width (in pixels) above which an eligible ' + + 'measure is split into continuation pieces. Pieces flow across systems via the normal bin-packer, with the ' + + 'inner pieces having no start or end barlines as the continuation cue. Only supported by DefaultFormatter ' + + '(requires WIDTH to be set). When this is null, no fragmentation occurs.', + }), PART_LABEL_FONT_FAMILY: t.string({ defaultValue: 'Arial', help: 'PART_LABEL_FONT_FAMILY is the font family for part names.', diff --git a/src/data/types.ts b/src/data/types.ts index 64d5441c5..f0bc4be9a 100644 --- a/src/data/types.ts +++ b/src/data/types.ts @@ -95,6 +95,19 @@ export type Measure = { startBarlineStyle: BarlineStyle | null; endBarlineStyle: BarlineStyle | null; repetitionSymbols: RepetitionSymbol[]; + /** + * Non-null when this measure is part of a continuation chain (a measure that was too wide and got split into + * pieces). Otherwise null. + */ + continuation: Continuation | null; +}; + +export type Continuation = { + type: 'continuation'; + /** 0-based position of this piece in its continuation chain. */ + index: number; + /** Total number of pieces in the chain (>= 2). */ + total: number; }; export type Jump = diff --git a/src/elements/measure.ts b/src/elements/measure.ts index d8f43976b..48b08e0a7 100644 --- a/src/elements/measure.ts +++ b/src/elements/measure.ts @@ -71,6 +71,14 @@ export class Measure { return this.measureRender.absoluteIndex; } + /** + * Returns the continuation metadata if this measure is part of a continuation chain (a measure that was too wide + * and got fragmented into pieces). Returns null otherwise. + */ + getContinuation(): data.Continuation | null { + return this.measureRender.continuation; + } + /** * Sometimes document measures are folded into one (e.g. multimeasure rest). This method returns the [start, end] * _absolute_ index range that the measure covers. diff --git a/src/formatting/continuationpass.ts b/src/formatting/continuationpass.ts new file mode 100644 index 000000000..38ec6a326 --- /dev/null +++ b/src/formatting/continuationpass.ts @@ -0,0 +1,106 @@ +import * as data from '@/data'; +import * as rendering from '@/rendering'; +import * as util from '@/util'; +import { Config } from '@/config'; +import { Logger } from '@/debug'; +import { Rect } from '@/spatial'; +import { MeasureSplitter } from './measuresplitter'; + +export type ContinuationPassResult = { + /** Flattened post-split measures across all systems. */ + measures: data.Measure[]; + /** + * Synthesized {@link rendering.MeasureRender}s — one per piece — with widths suitable for downstream bin-packing. + * Most fields beyond `rect.w` and `absoluteIndex` are stubs; the bin-packer only reads those two. + */ + measureRenders: rendering.MeasureRender[]; +}; + +/** + * Mutates `document.score.systems` to replace eligible too-wide measures with continuation pieces. Returns the flat + * post-split measures list paired with synthesized panoramic-width renders for the bin-packer. + * + * Caller is expected to pass a cloned document — this function will mutate it. + */ +export function applyContinuationSplit( + document: data.Document, + panoramicScoreRender: rendering.ScoreRender, + config: Config, + log: Logger +): ContinuationPassResult { + if (config.CONTINUATION_MEASURE_WIDTH_THRESHOLD === null) { + return { + measures: document.score.systems.flatMap((s) => s.measures), + measureRenders: panoramicScoreRender.systemRenders.flatMap((s) => s.measureRenders), + }; + } + + const splitter = new MeasureSplitter(config, log); + + const flatOriginalRenders = panoramicScoreRender.systemRenders.flatMap((s) => s.measureRenders); + const flatOriginalMeasures = document.score.systems.flatMap((s) => s.measures); + util.assert( + flatOriginalRenders.length === flatOriginalMeasures.length, + 'panoramic render must have one MeasureRender per data.Measure' + ); + + const splitResults: Array<{ pieces: data.Measure[]; pieceWidths: number[]; reference: rendering.MeasureRender }> = []; + + let renderCursor = 0; + const newSystems: data.System[] = []; + for (const system of document.score.systems) { + const newMeasures: data.Measure[] = []; + for (const measure of system.measures) { + const reference = flatOriginalRenders[renderCursor++]; + const result = splitter.split(measure, reference); + newMeasures.push(...result.pieces); + splitResults.push({ ...result, reference }); + } + newSystems.push({ type: 'system', measures: newMeasures }); + } + document.score.systems = newSystems; + + const measures = newSystems.flatMap((s) => s.measures); + const measureRenders: rendering.MeasureRender[] = []; + let absoluteIndex = 0; + for (const result of splitResults) { + if (result.pieces.length === 1) { + measureRenders.push({ ...result.reference, absoluteIndex }); + absoluteIndex++; + continue; + } + for (let pieceIndex = 0; pieceIndex < result.pieces.length; pieceIndex++) { + measureRenders.push( + synthesizePieceRender( + result.reference, + result.pieceWidths[pieceIndex], + absoluteIndex, + pieceIndex, + result.pieces.length + ) + ); + absoluteIndex++; + } + } + + return { measures, measureRenders }; +} + +function synthesizePieceRender( + reference: rendering.MeasureRender, + pieceWidth: number, + absoluteIndex: number, + pieceIndex: number, + total: number +): rendering.MeasureRender { + return { + type: 'measure', + key: reference.key, + rect: new Rect(reference.rect.x, reference.rect.y, pieceWidth, reference.rect.h), + absoluteIndex, + fragmentRenders: [], + multiRestCount: 0, + jumps: [], + continuation: { type: 'continuation', index: pieceIndex, total }, + }; +} diff --git a/src/formatting/defaultformatter.ts b/src/formatting/defaultformatter.ts index 5284420e0..569ad6898 100644 --- a/src/formatting/defaultformatter.ts +++ b/src/formatting/defaultformatter.ts @@ -5,6 +5,7 @@ import { Config, DEFAULT_CONFIG } from '@/config'; import { Logger, NoopLogger } from '@/debug'; import { Formatter } from './types'; import { PanoramicFormatter } from './panoramicformatter'; +import { applyContinuationSplit } from './continuationpass'; type SystemSlice = { from: number; @@ -35,40 +36,46 @@ export class DefaultFormatter implements Formatter { // First, ensure the document is formatted for infinite x-scrolling. This will allow us to measure the width of the // measures and make decisions on how to group them into systems. - const panoramicConfig = { ...this.config, WIDTH: null, HEIGHT: null }; + const panoramicConfig = { + ...this.config, + WIDTH: null, + HEIGHT: null, + CONTINUATION_MEASURE_WIDTH_THRESHOLD: null, + }; const panoramicFormatter = new PanoramicFormatter({ config: panoramicConfig }); const panoramicDocument = new rendering.Document(panoramicFormatter.format(document)); const panoramicScoreRender = new rendering.Score(panoramicConfig, this.log, panoramicDocument, null).render(); - const slices = this.getSystemSlices(this.config, panoramicScoreRender); + const { measures, measureRenders } = applyContinuationSplit(clone, panoramicScoreRender, this.config, this.log); - this.applySystemSlices(clone, slices); + const slices = this.getSystemSlices(this.config, measureRenders); + + this.applySystemSlices(clone, slices, measures); return clone; } - private getSystemSlices(config: Config, scoreRender: rendering.ScoreRender): SystemSlice[] { - const slices = [{ from: 0, to: 0 }]; - - let remaining = config.WIDTH!; - let count = 0; - - const measureRenders = scoreRender.systemRenders.flatMap((systemRender) => systemRender.measureRenders); - - for (let measureIndex = 0; measureIndex < measureRenders.length; measureIndex++) { - const measure = measureRenders[measureIndex]; + private getSystemSlices(config: Config, measureRenders: rendering.MeasureRender[]): SystemSlice[] { + const slices: SystemSlice[] = []; + let remaining = 0; + // Continuation pieces occupy their own system, and the system following a continuation piece must start fresh. + let lockedFromContinuation = false; + for (const measure of measureRenders) { const required = measure.rect.w; + const isContinuationPiece = measure.continuation !== null; + const currentSlice = slices.at(-1); - if (required > remaining && count > 0) { + const needNewSlice = !currentSlice || isContinuationPiece || lockedFromContinuation || required > remaining; + + if (needNewSlice) { slices.push({ from: measure.absoluteIndex, to: measure.absoluteIndex }); - remaining = config.WIDTH!; - count = 0; + remaining = config.WIDTH! - required; + } else { + currentSlice!.to = measure.absoluteIndex; + remaining -= required; } - - slices.at(-1)!.to = measure.absoluteIndex; - remaining -= required; - count++; + lockedFromContinuation = isContinuationPiece; } this.log.debug(`grouped ${measureRenders.length} measures into ${slices.length} system(s)`); @@ -76,9 +83,7 @@ export class DefaultFormatter implements Formatter { return slices; } - private applySystemSlices(document: data.Document, slices: SystemSlice[]): void { - const measures = document.score.systems.flatMap((s) => s.measures); - + private applySystemSlices(document: data.Document, slices: SystemSlice[], measures: data.Measure[]): void { document.score.systems = []; for (const slice of slices) { diff --git a/src/formatting/measuresplitter.ts b/src/formatting/measuresplitter.ts new file mode 100644 index 000000000..2ce15edca --- /dev/null +++ b/src/formatting/measuresplitter.ts @@ -0,0 +1,403 @@ +import * as data from '@/data'; +import * as util from '@/util'; +import { Config } from '@/config'; +import { Logger } from '@/debug'; +import { MeasureRender } from '@/rendering'; +import { Fraction } from '@/util'; + +/** + * Reserved padding (pixels) subtracted from the system width when computing the per-piece budget. Accounts for the + * courtesy clef/key/time modifiers that the rendering engine prepends to each piece (every piece becomes the first + * measure of its own system) plus barline padding. + */ +const RESERVED_PADDING = 80; + +export type EligibilityResult = { eligible: true } | { eligible: false; reason: string }; + +type EntryView = { + measureBeat: Fraction; + duration: Fraction; + beamId: string | null; + tupletIds: string[]; + rectRight: number; +}; + +type SplitResult = { + pieces: data.Measure[]; + pieceWidths: number[]; +}; + +export class MeasureSplitter { + constructor(private config: Config, private log: Logger) {} + + isEligible(measure: data.Measure, measureRender: MeasureRender): EligibilityResult { + const threshold = this.config.CONTINUATION_MEASURE_WIDTH_THRESHOLD; + if (threshold === null) { + return { eligible: false, reason: 'feature disabled (threshold is null)' }; + } + if (measureRender.rect.w <= threshold) { + return { eligible: false, reason: 'measure already fits within threshold' }; + } + if (measure.fragments.some((f) => f.kind === 'nonmusical')) { + return { eligible: false, reason: 'measure contains a non-musical (gap) fragment' }; + } + if (measure.fragments.some((f) => typeof f.minWidth === 'number' && f.minWidth > 0)) { + return { eligible: false, reason: 'fragment has explicit minWidth' }; + } + if (measureRender.multiRestCount > 1) { + return { eligible: false, reason: 'multi-rest measure' }; + } + if ( + measure.startBarlineStyle === 'repeatstart' || + measure.startBarlineStyle === 'repeatboth' || + measure.endBarlineStyle === 'repeatend' || + measure.endBarlineStyle === 'repeatboth' + ) { + return { eligible: false, reason: 'measure has repeat barlines' }; + } + if (measure.jumps.some((j) => j.type === 'repeatending')) { + return { eligible: false, reason: 'measure has volta (repeat ending)' }; + } + if (measure.continuation !== null) { + return { eligible: false, reason: 'measure is already a continuation piece' }; + } + return { eligible: true }; + } + + /** Returns the resulting pieces and their widths. Length 1 means no split was performed. */ + split(measure: data.Measure, measureRender: MeasureRender): SplitResult { + const noSplit: SplitResult = { pieces: [measure], pieceWidths: [measureRender.rect.w] }; + + const reject = (reason: string): SplitResult => { + this.log.debug('measure ineligible for continuation', { absoluteIndex: measureRender.absoluteIndex, reason }); + return noSplit; + }; + + const eligibility = this.isEligible(measure, measureRender); + if (!eligibility.eligible) { + return reject(eligibility.reason); + } + + const width = this.config.WIDTH; + if (width === null) { + return reject('WIDTH is null'); + } + + const splitWidth = width - RESERVED_PADDING; + if (splitWidth <= 0) { + return reject('system width too small after reserved padding'); + } + + if (measureRender.rect.w <= splitWidth) { + return reject('measure fits within system width despite exceeding threshold'); + } + + const entryViews = this.collectEntryViews(measure, measureRender); + if (entryViews.length === 0) { + return reject('no entries to split'); + } + + const candidates = this.findCandidateSplitBeats(measure, entryViews); + if (candidates.length === 0) { + return reject('no valid split candidates (beams/tuplets/voices block all)'); + } + + const layout = this.findBalancedLayout(measureRender, entryViews, candidates, splitWidth); + if (!layout) { + return reject('no balanced split fits within system width'); + } + + const pieces = this.buildPieces(measure, layout.boundaries); + return { pieces, pieceWidths: layout.pieceWidths }; + } + + private collectEntryViews(measure: data.Measure, measureRender: MeasureRender): EntryView[] { + const views: EntryView[] = []; + for (const fragmentRender of measureRender.fragmentRenders) { + const fragment = measure.fragments[fragmentRender.key.fragmentIndex]; + if (!fragment || fragment.kind === 'nonmusical') { + continue; + } + for (const partRender of fragmentRender.partRenders) { + const part = fragment.parts[partRender.key.partIndex]; + if (!part) { + continue; + } + for (const staveRender of partRender.staveRenders) { + const stave = part.staves[staveRender.key.staveIndex]; + if (!stave) { + continue; + } + for (const voiceRender of staveRender.voiceRenders) { + const voice = stave.voices[voiceRender.key.voiceIndex]; + if (!voice) { + continue; + } + for (const entryRender of voiceRender.entryRenders) { + const entry = voice.entries[entryRender.key.voiceEntryIndex]; + if (!entry) { + continue; + } + views.push({ + measureBeat: Fraction.fromFractionLike(entry.measureBeat), + duration: Fraction.fromFractionLike(entry.duration), + beamId: this.getBeamId(entry), + tupletIds: this.getTupletIds(entry), + rectRight: entryRender.rect.right(), + }); + } + } + } + } + } + return views; + } + + private getBeamId(entry: data.VoiceEntry): string | null { + if (entry.type === 'note' || entry.type === 'chord' || entry.type === 'rest') { + return entry.beamId; + } + return null; + } + + private getTupletIds(entry: data.VoiceEntry): string[] { + if (entry.type === 'note' || entry.type === 'chord' || entry.type === 'rest') { + return entry.tupletIds; + } + return []; + } + + /** Returns valid candidate split beats sorted ascending. Excludes beat 0 and beat >= measure end. */ + private findCandidateSplitBeats(measure: data.Measure, entryViews: EntryView[]): Fraction[] { + const positive = entryViews.filter((v) => v.measureBeat.toDecimal() > 0).map((v) => v.measureBeat); + const sorted = util.sortBy( + util.uniqueBy(positive, (b) => b.toDecimal()), + (b) => b.toDecimal() + ); + return sorted.filter((boundary) => this.isValidSplit(measure, entryViews, boundary)); + } + + private isValidSplit(measure: data.Measure, entryViews: EntryView[], boundary: Fraction): boolean { + // 1. No entry can span the boundary. + for (const v of entryViews) { + const start = v.measureBeat; + const end = start.add(v.duration); + if (start.isLessThan(boundary) && end.isGreaterThan(boundary)) { + return false; + } + } + // 2. No beam or tuplet can span the boundary (within any voice). + for (const fragment of measure.fragments) { + if (fragment.kind === 'nonmusical') { + continue; + } + for (const part of fragment.parts) { + for (const stave of part.staves) { + for (const voice of stave.voices) { + const beamHasBefore = new Set(); + const beamHasAtOrAfter = new Set(); + const tupletHasBefore = new Set(); + const tupletHasAtOrAfter = new Set(); + for (const entry of voice.entries) { + const start = Fraction.fromFractionLike(entry.measureBeat); + const isBefore = start.isLessThan(boundary); + const beamId = this.getBeamId(entry); + const tupletIds = this.getTupletIds(entry); + if (beamId) { + if (isBefore) { + beamHasBefore.add(beamId); + } else { + beamHasAtOrAfter.add(beamId); + } + } + for (const tid of tupletIds) { + if (isBefore) { + tupletHasBefore.add(tid); + } else { + tupletHasAtOrAfter.add(tid); + } + } + } + for (const id of beamHasBefore) { + if (beamHasAtOrAfter.has(id)) { + return false; + } + } + for (const id of tupletHasBefore) { + if (tupletHasAtOrAfter.has(id)) { + return false; + } + } + } + } + } + } + return true; + } + + /** + * Target-balanced layout: try N = ceil(measureWidth / splitWidth) pieces, snapping each ideal boundary to the nearest + * candidate. If any piece exceeds `splitWidth`, retry with N + 1 (more pieces flatten the largest piece). Returns + * null if no N up to a sensible cap satisfies the budget. + */ + private findBalancedLayout( + measureRender: MeasureRender, + entryViews: EntryView[], + candidates: Fraction[], + splitWidth: number + ): { boundaries: Fraction[]; pieceWidths: number[] } | null { + const measureLeft = measureRender.rect.left(); + const measureWidth = measureRender.rect.w; + + const widthAt = (boundary: Fraction): number => { + const rights = entryViews.filter((v) => v.measureBeat.isLessThan(boundary)).map((v) => v.rectRight); + return util.max(rights, measureLeft) - measureLeft; + }; + + const candidateWidths = candidates.map(widthAt); + + const minPieces = Math.max(2, Math.ceil(measureWidth / splitWidth)); + const maxPieces = Math.min(candidates.length + 1, minPieces + candidates.length); + + for (let n = minPieces; n <= maxPieces; n++) { + const target = measureWidth / n; + const usedIndices = new Set(); + const boundaryIndices: number[] = []; + let prevWidth = 0; + let valid = true; + + for (let i = 1; i < n; i++) { + const idealW = i * target; + let bestIdx = -1; + let bestDist = Infinity; + for (let ci = 0; ci < candidates.length; ci++) { + if (usedIndices.has(ci)) { + continue; + } + const w = candidateWidths[ci]; + if (w <= prevWidth) { + continue; + } + const dist = Math.abs(w - idealW); + if (dist < bestDist) { + bestDist = dist; + bestIdx = ci; + } + } + if (bestIdx === -1) { + valid = false; + break; + } + boundaryIndices.push(bestIdx); + usedIndices.add(bestIdx); + prevWidth = candidateWidths[bestIdx]; + } + + if (!valid) { + continue; + } + + boundaryIndices.sort((a, b) => candidateWidths[a] - candidateWidths[b]); + const boundaries = boundaryIndices.map((bi) => candidates[bi]); + + const pieceWidths: number[] = []; + let prevW = 0; + for (const bi of boundaryIndices) { + const w = candidateWidths[bi]; + pieceWidths.push(w - prevW); + prevW = w; + } + pieceWidths.push(measureWidth - prevW); + + if (pieceWidths.every((w) => w <= splitWidth)) { + return { boundaries, pieceWidths }; + } + } + + return null; + } + + private buildPieces(measure: data.Measure, boundaries: Fraction[]): data.Measure[] { + const total = boundaries.length + 1; + + const ranges: Array<{ start: Fraction; end: Fraction }> = []; + let prev: Fraction = Fraction.zero(); + for (const b of boundaries) { + ranges.push({ start: prev, end: b }); + prev = b; + } + ranges.push({ start: prev, end: Fraction.max() }); + + return ranges.map((range, index) => this.buildPiece(measure, range, index, total)); + } + + private buildPiece( + measure: data.Measure, + range: { start: Fraction; end: Fraction }, + index: number, + total: number + ): data.Measure { + const isFirst = index === 0; + const isLast = index === total - 1; + + const pieceFragments: data.Fragment[] = measure.fragments.map((fragment) => { + const cloned = util.deepClone(fragment); + if (cloned.kind === 'nonmusical') { + return cloned; + } + cloned.parts = cloned.parts.map((part) => ({ + ...part, + staves: part.staves.map((stave) => ({ + ...stave, + voices: stave.voices.map((voice) => this.partitionVoice(voice, range)), + })), + })); + return cloned; + }); + + return { + type: 'measure', + label: isFirst ? measure.label : null, + fragments: pieceFragments, + jumps: isFirst ? util.deepClone(measure.jumps) : [], + startBarlineStyle: isFirst ? measure.startBarlineStyle : 'none', + endBarlineStyle: isLast ? measure.endBarlineStyle : 'none', + repetitionSymbols: isFirst ? [...measure.repetitionSymbols] : [], + continuation: { type: 'continuation', index, total }, + }; + } + + private partitionVoice(voice: data.Voice, range: { start: Fraction; end: Fraction }): data.Voice { + const inRange = (entry: data.VoiceEntry) => { + const start = Fraction.fromFractionLike(entry.measureBeat); + return start.isGreaterThanOrEqualTo(range.start) && start.isLessThan(range.end); + }; + // Shift each entry's measureBeat so the piece starts at 0. Without this, the voice renderer would insert a + // ghost note for the silent prefix and squeeze the piece's notes into a fraction of the available width. + const filteredEntries = voice.entries.filter(inRange).map((e) => { + const cloned = util.deepClone(e); + const shifted = Fraction.fromFractionLike(cloned.measureBeat).subtract(range.start); + cloned.measureBeat = { type: 'fraction', ...shifted.toFractionLike() }; + return cloned; + }); + + const usedBeamIds = new Set(); + const usedTupletIds = new Set(); + for (const entry of filteredEntries) { + const beamId = this.getBeamId(entry); + if (beamId) { + usedBeamIds.add(beamId); + } + for (const tid of this.getTupletIds(entry)) { + usedTupletIds.add(tid); + } + } + + return { + type: 'voice', + entries: filteredEntries, + beams: voice.beams.filter((b) => usedBeamIds.has(b.id)).map((b) => util.deepClone(b)), + tuplets: voice.tuplets.filter((t) => usedTupletIds.has(t.id)).map((t) => util.deepClone(t)), + }; + } +} diff --git a/src/formatting/panoramicformatter.ts b/src/formatting/panoramicformatter.ts index 96736f890..825acb996 100644 --- a/src/formatting/panoramicformatter.ts +++ b/src/formatting/panoramicformatter.ts @@ -21,6 +21,10 @@ export class PanoramicFormatter implements Formatter { this.log = opts?.logger ?? new NoopLogger(); util.assertNull(this.config.WIDTH, 'WIDTH must be null for PanoramicFormatter'); + util.assertNull( + this.config.CONTINUATION_MEASURE_WIDTH_THRESHOLD, + 'CONTINUATION_MEASURE_WIDTH_THRESHOLD must be null for PanoramicFormatter' + ); } format(document: data.Document): data.Document { diff --git a/src/parsing/musicxml/measure.ts b/src/parsing/musicxml/measure.ts index 3df82af2a..c81fb9cbd 100644 --- a/src/parsing/musicxml/measure.ts +++ b/src/parsing/musicxml/measure.ts @@ -162,6 +162,7 @@ export class Measure { startBarlineStyle: this.startBarlineStyle, endBarlineStyle: this.endBarlineStyle, repetitionSymbols: this.repetitionSymbols, + continuation: null, }; } } diff --git a/src/rendering/measure.ts b/src/rendering/measure.ts index 4e0a25e98..f7e16f69c 100644 --- a/src/rendering/measure.ts +++ b/src/rendering/measure.ts @@ -23,7 +23,7 @@ export class Measure { const absoluteIndex = this.document.getAbsoluteMeasureIndex(this.key); const multiRestCount = this.document.getMeasureMultiRestCount(this.key); const fragmentRenders = this.renderFragments(pen); - const jumps = this.document.getMeasure(this.key).jumps; + const measure = this.document.getMeasure(this.key); const rect = Rect.merge(fragmentRenders.map((fragment) => fragment.rect)); @@ -34,7 +34,8 @@ export class Measure { fragmentRenders, multiRestCount, absoluteIndex, - jumps, + jumps: measure.jumps, + continuation: measure.continuation, }; } diff --git a/src/rendering/stave.ts b/src/rendering/stave.ts index e2ebcf7da..61fc01347 100644 --- a/src/rendering/stave.ts +++ b/src/rendering/stave.ts @@ -174,9 +174,12 @@ export class Stave { } private renderMeasureLabel(vexflowStave: vexflow.Stave): void { - const measureLabel = this.document.getMeasure(this.key).label; - if (this.shouldShowMeasureLabel() && measureLabel) { - vexflowStave.setMeasure(measureLabel); + if (!this.shouldShowMeasureLabel()) { + return; + } + const measure = this.document.getMeasure(this.key); + if (measure.label) { + vexflowStave.setMeasure(measure.label); } } diff --git a/src/rendering/types.ts b/src/rendering/types.ts index d128e2c1b..5fbee54a8 100644 --- a/src/rendering/types.ts +++ b/src/rendering/types.ts @@ -115,6 +115,7 @@ export type MeasureRender = { fragmentRenders: FragmentRender[]; multiRestCount: number; jumps: data.Jump[]; + continuation: data.Continuation | null; }; export type FragmentRender = { diff --git a/tests/__data__/vexml/continuation_measures_basic.musicxml b/tests/__data__/vexml/continuation_measures_basic.musicxml new file mode 100644 index 000000000..453f45a4d --- /dev/null +++ b/tests/__data__/vexml/continuation_measures_basic.musicxml @@ -0,0 +1,59 @@ + + + + + + Piano + + + + + + 2 + + 0 + + + + G + 2 + + + C411eighth + D411eighth + E411eighth + F411eighth + G411eighth + A411eighth + B411eighth + C511eighth + + + D511eighth + C511eighth + B411eighth + A411eighth + G411eighth + F411eighth + E411eighth + D411eighth + + + C421quarter + E421quarter + G421quarter + C521quarter + + + C521quarter + G421quarter + E421quarter + C421quarter + + + diff --git a/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w1200_tnull.png b/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w1200_tnull.png new file mode 100644 index 0000000000000000000000000000000000000000..d9332d3ce7668541ed09586e1926f8ca300cda00 GIT binary patch literal 14405 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 literal 0 HcmV?d00001 diff --git a/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w350_t200.png b/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w350_t200.png new file mode 100644 index 0000000000000000000000000000000000000000..29c261f85eb16aa4a4f9d3e3aa85994292d3c6c3 GIT binary patch literal 24730 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 Hh{^jK#(9~N literal 0 HcmV?d00001 diff --git a/tests/integration/vexml.test.ts b/tests/integration/vexml.test.ts index 21debc66a..ee44f1b4b 100644 --- a/tests/integration/vexml.test.ts +++ b/tests/integration/vexml.test.ts @@ -9,6 +9,13 @@ type TestCase = { width: number; }; +type ContinuationCase = { + filename: string; + /** Score WIDTH config (must be set; PanoramicFormatter does not support continuation). */ + width: number; + continuationThreshold: number | null; +}; + const DATA_DIR = path.resolve(__dirname, '..', '__data__', 'vexml'); describe('vexml', () => { @@ -63,4 +70,41 @@ describe('vexml', () => { customSnapshotIdentifier: getSnapshotIdentifier({ filename: t.filename, width: t.width }), }); }); + + it.each([ + // Baseline: feature disabled — should match the un-fragmented rendering. + { + filename: 'continuation_measures_basic.musicxml', + width: 1200, + continuationThreshold: null, + }, + // Narrow system width → eligible measures fragment, each piece on its own system. + { + filename: 'continuation_measures_basic.musicxml', + width: 350, + continuationThreshold: 200, + }, + ])(`continuation: $filename (width=$width, threshold=$continuationThreshold)`, async (t) => { + const { document, vexmlDiv, screenshotElementSelector } = setup(); + + const buffer = fs.readFileSync(path.join(DATA_DIR, t.filename)); + const musicXML = buffer.toString(); + vexml.renderMusicXML(musicXML, vexmlDiv, { + config: { + WIDTH: t.width, + CONTINUATION_MEASURE_WIDTH_THRESHOLD: t.continuationThreshold, + }, + }); + + await page.setViewport({ width: t.width, height: 0 }); + await page.setContent(document.documentElement.outerHTML); + + const element = await page.$(screenshotElementSelector); + const screenshot = Buffer.from((await element!.screenshot()) as any); + expect(screenshot).toMatchImageSnapshot({ + customSnapshotIdentifier: `continuation_${path.basename(t.filename, path.extname(t.filename))}_w${t.width}_t${ + t.continuationThreshold ?? 'null' + }`, + }); + }); }); diff --git a/tests/unit/formatting/measuresplitter.test.ts b/tests/unit/formatting/measuresplitter.test.ts new file mode 100644 index 000000000..cf602a666 --- /dev/null +++ b/tests/unit/formatting/measuresplitter.test.ts @@ -0,0 +1,173 @@ +import * as data from '@/data'; +import { Config, DEFAULT_CONFIG } from '@/config'; +import { MemoryLogger } from '@/debug'; +import { MeasureSplitter } from '@/formatting/measuresplitter'; +import { MeasureRender } from '@/rendering'; +import { Rect } from '@/spatial'; + +describe(MeasureSplitter, () => { + describe('isEligible', () => { + it('rejects when threshold is null', () => { + const log = new MemoryLogger(); + const splitter = new MeasureSplitter(makeConfig(null), log); + const result = splitter.isEligible(makeMeasure(), makeMeasureRender()); + expect(result).toEqual({ eligible: false, reason: 'feature disabled (threshold is null)' }); + }); + + it('rejects when measure already fits within threshold', () => { + const splitter = new MeasureSplitter(makeConfig(2000), new MemoryLogger()); + const result = splitter.isEligible(makeMeasure(), makeMeasureRender({ rect: new Rect(0, 0, 500, 100) })); + expect(result).toEqual({ eligible: false, reason: 'measure already fits within threshold' }); + }); + + it('rejects when the measure contains a non-musical fragment', () => { + const splitter = new MeasureSplitter(makeConfig(500), new MemoryLogger()); + const measure = makeMeasure({ + fragments: [ + { + type: 'fragment', + kind: 'nonmusical', + signature: { type: 'fragmentsignature', metronome: { type: 'metronome', playbackBpm: 100 } }, + parts: [], + minWidth: null, + label: null, + durationMs: 0, + }, + ], + }); + const result = splitter.isEligible(measure, makeMeasureRender()); + expect(result).toEqual({ eligible: false, reason: 'measure contains a non-musical (gap) fragment' }); + }); + + it('rejects when a fragment has explicit minWidth', () => { + const splitter = new MeasureSplitter(makeConfig(500), new MemoryLogger()); + const measure = makeMeasure({ + fragments: [ + { + type: 'fragment', + kind: 'musical', + signature: { type: 'fragmentsignature', metronome: { type: 'metronome', playbackBpm: 100 } }, + parts: [], + minWidth: 250, + }, + ], + }); + const result = splitter.isEligible(measure, makeMeasureRender()); + expect(result).toEqual({ eligible: false, reason: 'fragment has explicit minWidth' }); + }); + + it('rejects multi-rest measures', () => { + const splitter = new MeasureSplitter(makeConfig(500), new MemoryLogger()); + const result = splitter.isEligible(makeMeasure(), makeMeasureRender({ multiRestCount: 4 })); + expect(result).toEqual({ eligible: false, reason: 'multi-rest measure' }); + }); + + it.each(['repeatstart', 'repeatend', 'repeatboth'] as const)('rejects measures with %s barlines', (style) => { + const splitter = new MeasureSplitter(makeConfig(500), new MemoryLogger()); + const measure = makeMeasure({ + startBarlineStyle: style === 'repeatend' ? null : style, + endBarlineStyle: style === 'repeatstart' ? null : style, + }); + const result = splitter.isEligible(measure, makeMeasureRender()); + expect(result).toEqual({ eligible: false, reason: 'measure has repeat barlines' }); + }); + + it('rejects measures with voltas', () => { + const splitter = new MeasureSplitter(makeConfig(500), new MemoryLogger()); + const measure = makeMeasure({ + jumps: [{ type: 'repeatending', times: 1, label: '1.', endingBracketType: 'begin' }], + }); + const result = splitter.isEligible(measure, makeMeasureRender()); + expect(result).toEqual({ eligible: false, reason: 'measure has volta (repeat ending)' }); + }); + + it('rejects measures that are already continuation pieces', () => { + const splitter = new MeasureSplitter(makeConfig(500), new MemoryLogger()); + const measure = makeMeasure({ + continuation: { type: 'continuation', index: 0, total: 2 }, + }); + const result = splitter.isEligible(measure, makeMeasureRender()); + expect(result).toEqual({ eligible: false, reason: 'measure is already a continuation piece' }); + }); + + it('accepts a wide musical measure with no special markings', () => { + const splitter = new MeasureSplitter(makeConfig(500), new MemoryLogger()); + const result = splitter.isEligible(makeMeasure(), makeMeasureRender({ rect: new Rect(0, 0, 1000, 100) })); + expect(result).toEqual({ eligible: true }); + }); + }); + + describe('split', () => { + it('returns the original measure unchanged when ineligible, and logs a debug reason', () => { + const log = new MemoryLogger(); + const splitter = new MeasureSplitter(makeConfig(null), log); + const measure = makeMeasure(); + const measureRender = makeMeasureRender(); + + const { pieces, pieceWidths } = splitter.split(measure, measureRender); + + expect(pieces).toEqual([measure]); + expect(pieceWidths).toEqual([measureRender.rect.w]); + expect(log.getLogs()).toHaveLength(1); + expect(log.getLogs()[0].message).toBe('measure ineligible for continuation'); + expect(log.getLogs()[0].meta).toMatchObject({ reason: 'feature disabled (threshold is null)' }); + }); + + it('returns the original measure when there are no entries to split', () => { + const log = new MemoryLogger(); + const splitter = new MeasureSplitter(makeConfig(500), log); + const result = splitter.split(makeMeasure(), makeMeasureRender({ rect: new Rect(0, 0, 1000, 100) })); + expect(result.pieces).toHaveLength(1); + expect(log.getLogs().at(-1)?.meta?.reason).toBe('no entries to split'); + }); + + it('returns the original measure when WIDTH is null', () => { + const log = new MemoryLogger(); + const splitter = new MeasureSplitter(makeConfig(500, null), log); + const result = splitter.split(makeMeasure(), makeMeasureRender({ rect: new Rect(0, 0, 1000, 100) })); + expect(result.pieces).toHaveLength(1); + expect(log.getLogs().at(-1)?.meta?.reason).toBe('WIDTH is null'); + }); + + it('returns the original measure when it fits within the system width despite exceeding threshold', () => { + const log = new MemoryLogger(); + // threshold=200 (eligible), WIDTH=1000 > splitWidth=920 > measure (rect.w=400) fits + const splitter = new MeasureSplitter(makeConfig(200, 1000), log); + const result = splitter.split(makeMeasure(), makeMeasureRender({ rect: new Rect(0, 0, 400, 100) })); + expect(result.pieces).toHaveLength(1); + expect(log.getLogs().at(-1)?.meta?.reason).toBe('measure fits within system width despite exceeding threshold'); + }); + }); +}); + +function makeConfig(threshold: number | null, width: number | null = 600): Config { + return { ...DEFAULT_CONFIG, CONTINUATION_MEASURE_WIDTH_THRESHOLD: threshold, WIDTH: width }; +} + +function makeMeasure(overrides: Partial = {}): data.Measure { + return { + type: 'measure', + label: 1, + fragments: [], + jumps: [], + startBarlineStyle: null, + endBarlineStyle: null, + repetitionSymbols: [], + continuation: null, + ...overrides, + }; +} + +function makeMeasureRender(overrides: Partial = {}): MeasureRender { + return { + type: 'measure', + key: { systemIndex: 0, measureIndex: 0 }, + rect: new Rect(0, 0, 1000, 100), + absoluteIndex: 0, + fragmentRenders: [], + multiRestCount: 0, + jumps: [], + continuation: null, + ...overrides, + }; +} From 2397c4e6556968604c442b4aeed4db0a71297eb7 Mon Sep 17 00:00:00 2001 From: Jared Johnson Date: Sun, 10 May 2026 16:46:20 -0400 Subject: [PATCH 2/2] add another part to continuation test and increase number of notes --- .../continuation_measures_basic.musicxml | 87 ++++++++++++------ ...ontinuation_measures_basic_w1200_tnull.png | Bin 14405 -> 26923 bytes ..._continuation_measures_basic_w300_t120.png | Bin 0 -> 64285 bytes ..._continuation_measures_basic_w350_t200.png | Bin 24730 -> 0 bytes ..._continuation_measures_basic_w400_t250.png | Bin 0 -> 52002 bytes tests/integration/vexml.test.ts | 12 ++- 6 files changed, 70 insertions(+), 29 deletions(-) create mode 100644 tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w300_t120.png delete mode 100644 tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w350_t200.png create mode 100644 tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w400_t250.png diff --git a/tests/__data__/vexml/continuation_measures_basic.musicxml b/tests/__data__/vexml/continuation_measures_basic.musicxml index 453f45a4d..d8c3d740a 100644 --- a/tests/__data__/vexml/continuation_measures_basic.musicxml +++ b/tests/__data__/vexml/continuation_measures_basic.musicxml @@ -11,7 +11,7 @@ - 2 + 4 0 @@ -19,41 +19,76 @@ 4 4 - + 2 + G 2 + + F + 4 + - C411eighth - D411eighth - E411eighth - F411eighth - G411eighth - A411eighth - B411eighth - C511eighth + C41116th1beginbegin + D41116th1continuecontinue + E41116th1continuecontinue + F41116th1endend + G41116th1beginbegin + A41116th1continuecontinue + B41116th1continuecontinue + C51116th1endend + D51116th1beginbegin + E51116th1continuecontinue + F51116th1continuecontinue + G51116th1endend + F51116th1beginbegin + E51116th1continuecontinue + D51116th1continuecontinue + C51116th1endend + 16 + C342quarter2 + G342quarter2 + E342quarter2 + G342quarter2 - D511eighth - C511eighth - B411eighth - A411eighth - G411eighth - F411eighth - E411eighth - D411eighth + C51116th1beginbegin + B41116th1continuecontinue + A41116th1continuecontinue + G41116th1endend + F41116th1beginbegin + E41116th1continuecontinue + D41116th1continuecontinue + C41116th1endend + D41116th1beginbegin + E41116th1continuecontinue + F41116th1continuecontinue + G41116th1endend + A41116th1beginbegin + B41116th1continuecontinue + C51116th1continuecontinue + D51116th1endend + 16 + F342quarter2 + A342quarter2 + C442quarter2 + A342quarter2 - C421quarter - E421quarter - G421quarter - C521quarter + C441quarter1 + E441quarter1 + G441quarter1 + C541quarter1 + 16 + C3162whole2 - C521quarter - G421quarter - E421quarter - C421quarter + C541quarter1 + G441quarter1 + E441quarter1 + C441quarter1 + 16 + C3162whole2 diff --git a/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w1200_tnull.png b/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w1200_tnull.png index d9332d3ce7668541ed09586e1926f8ca300cda00..67889de1c4f662322348cb546d653dad15e114cf 100644 GIT binary patch literal 26923 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 diff --git a/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w300_t120.png b/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w300_t120.png new file mode 100644 index 0000000000000000000000000000000000000000..9d829bc715101b29b8371ba8861dd68f227263e1 GIT binary patch literal 64285 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 Hh{^jK#(9~N diff --git a/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w400_t250.png b/tests/integration/__image_snapshots__/continuation_continuation_measures_basic_w400_t250.png new file mode 100644 index 0000000000000000000000000000000000000000..5bfcfd021db959159d7b6ae408b6700c59d76b86 GIT binary patch literal 52002 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 { width: 1200, continuationThreshold: null, }, - // Narrow system width → eligible measures fragment, each piece on its own system. + // Narrow system width → eligible measures fragment across multiple systems. { filename: 'continuation_measures_basic.musicxml', - width: 350, - continuationThreshold: 200, + width: 400, + continuationThreshold: 250, + }, + // Very narrow viewport → a single wide measure spans more than 2 systems (>=3 pieces). + { + filename: 'continuation_measures_basic.musicxml', + width: 300, + continuationThreshold: 120, }, ])(`continuation: $filename (width=$width, threshold=$continuationThreshold)`, async (t) => { const { document, vexmlDiv, screenshotElementSelector } = setup();