@viritura/score-engine 0.2.1-next.41 → 0.2.1-next.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -358,11 +358,41 @@ init_define_import_meta_env();
358
358
 
359
359
  // packages/core/src/operations/chordSymbols/modifiers.ts
360
360
  init_define_import_meta_env();
361
+ function parseAlteredDegree(text) {
362
+ let match = /^([b#♭♯])(13|11|9|5)/u.exec(text);
363
+ if (match)
364
+ return {
365
+ degree: Number(match[2]),
366
+ alter: match[1] === "b" || match[1] === "\u266D" ? -1 : 1,
367
+ length: match[0].length
368
+ };
369
+ }
370
+ function finishModifiers(result, inGroup, needsDegree, afterDegree, afterComma) {
371
+ if (!(inGroup || needsDegree || !afterDegree || afterComma))
372
+ return {
373
+ added: [...new Set(result.added)].sort((a, b) => a - b),
374
+ omitted: [...new Set(result.omitted)].sort((a, b) => a - b),
375
+ ...result.altered ? {
376
+ altered: result.altered.filter(
377
+ (item, index, items) => items.findIndex((other) => other.degree === item.degree && other.alter === item.alter) === index
378
+ ).sort((a, b) => a.degree - b.degree || a.alter - b.alter)
379
+ } : {}
380
+ };
381
+ }
361
382
  function parseModifiers(text) {
362
383
  let result = { added: [], omitted: [] }, rest = text.trim().toLowerCase();
363
384
  if (!rest) return result;
364
385
  let operation, needsDegree = !1, afterDegree = !1, inGroup = !1, afterComma = !1;
365
386
  for (; rest; ) {
387
+ let altered = parseAlteredDegree(rest);
388
+ if (altered) {
389
+ if (needsDegree) return;
390
+ (result.altered ??= []).push({
391
+ degree: altered.degree,
392
+ alter: altered.alter
393
+ }), operation = void 0, afterDegree = !0, afterComma = !1, rest = rest.slice(altered.length).trimStart();
394
+ continue;
395
+ }
366
396
  let marker = /^(add|omit|no)/.exec(rest)?.[0];
367
397
  if (marker) {
368
398
  if (needsDegree) return;
@@ -386,14 +416,16 @@ function parseModifiers(text) {
386
416
  return;
387
417
  rest = rest.slice(1).trimStart();
388
418
  }
389
- if (!(inGroup || needsDegree || !afterDegree || afterComma))
390
- return {
391
- added: [...new Set(result.added)].sort((a, b) => a - b),
392
- omitted: [...new Set(result.omitted)].sort((a, b) => a - b)
393
- };
419
+ return finishModifiers(result, inGroup, needsDegree, afterDegree, afterComma);
394
420
  }
395
421
  var ADDED_INTERVALS = { 2: 2, 4: 5, 6: 9, 7: 10, 9: 2, 11: 5, 13: 9 };
396
422
  function applyModifiers(degrees, modifiers) {
423
+ let altered = /* @__PURE__ */ new Map();
424
+ for (let { degree, alter } of modifiers?.altered ?? []) {
425
+ let natural = degree === 5 ? 7 : ADDED_INTERVALS[degree];
426
+ altered.set(degree, [...altered.get(degree) ?? [], natural + alter]);
427
+ }
428
+ for (let [degree, intervals] of altered) degrees.set(degree, intervals);
397
429
  for (let degree of modifiers?.added ?? [])
398
430
  degrees.set(degree, [...degrees.get(degree) ?? [], ADDED_INTERVALS[degree]]);
399
431
  for (let degree of modifiers?.omitted ?? []) degrees.delete(degree);
@@ -582,11 +614,13 @@ function parseBaseQuality(text) {
582
614
  return extension === void 0 ? { quality } : { quality, extension };
583
615
  }
584
616
  function parseQuality(text) {
585
- let boundary = text.search(/add|omit|no|\(/i);
617
+ let complete = parseBaseQuality(text);
618
+ if (complete) return complete;
619
+ let boundary = text.search(/add|omit|no|\(|[b#♭♯](?:13|11|9|5)/iu);
586
620
  if (boundary < 0) return parseBaseQuality(text);
587
621
  let base = parseBaseQuality(text.slice(0, boundary).trim()), modifiers = parseModifiers(text.slice(boundary));
588
622
  if (!(!base || !modifiers))
589
- return base.quality === "major" && base.extension === void 0 && modifiers.added.length === 1 && modifiers.added[0] === 6 && modifiers.omitted.length === 0 ? { quality: "major", extension: 6 } : { ...base, modifiers };
623
+ return base.quality === "major" && base.extension === void 0 && modifiers.added.length === 1 && modifiers.added[0] === 6 && modifiers.omitted.length === 0 && !modifiers.altered?.length ? { quality: "major", extension: 6 } : { ...base, modifiers };
590
624
  }
591
625
  function parseChordSymbolText(input, position) {
592
626
  let parts = splitChordSymbolText(input);
@@ -2231,9 +2265,9 @@ function interpolateBeatAnchors(bounds, beat, endX) {
2231
2265
 
2232
2266
  // packages/score-engine/src/buildInfo.ts
2233
2267
  init_define_import_meta_env();
2234
- var PACKAGE_VERSION = "0.2.1-next.41", BUNDLE_WORKER_FILE = "score-engine.worker.js";
2268
+ var PACKAGE_VERSION = "0.2.1-next.43", BUNDLE_WORKER_FILE = "score-engine.worker.js";
2235
2269
  function buildCommit() {
2236
- return "715e88d4c5a7118150857b4e89598e4560d44b58";
2270
+ return "8c7311437c884c21c263d29a5cd636cf11033153";
2237
2271
  }
2238
2272
  function bundledAssetBase() {
2239
2273
  let moduleUrl = import.meta.url;
@@ -7274,7 +7308,7 @@ function validate365(data, { instancePath = "", parentData, parentDataProperty,
7274
7308
  return validate365.errors = vErrors, errors === 0;
7275
7309
  }
7276
7310
  validate365.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
7277
- var schema334 = { type: "object", description: "Viritura vendor extensions on the MNX document root (the `_x.viritura` dict on the top-level score object).", properties: { metadata: { $ref: "#/$defs/score-metadata", description: "Score-level bibliographic metadata." }, textStyles: { $ref: "#/$defs/text-styles", description: "Per-document text style overrides." }, placement: { $ref: "#/$defs/placement", description: "Per-document placement (clearance) overrides keyed by dependent kind." }, timeSignatures: { $ref: "#/$defs/time-signature-styles", description: "Per-document time signature engraving styles for scores and parts." }, chordSymbolStyle: { $ref: "#/$defs/chord-symbol-style", description: "Score-wide chord-symbol engraving style." }, instrumentChangeStyle: { type: "object", additionalProperties: !1, properties: { showChangeLabel: { type: "boolean", default: !0 }, showAdvanceReminder: { type: "boolean", default: !0 } }, description: "Score-wide change-label visibility defaults. Per-instance hidden false explicitly shows; hidden true hides; absent inherits." }, soundProfile: { $ref: "#/$defs/sound-profile-assignment", description: "Per-part playback sound assignments keyed by stable MNX part ID." }, videoSync: { $ref: "#/$defs/video-sync", description: "Score-to-picture synchronization settings." }, lyricWorkflow: { $ref: "#/$defs/lyric-workflow", description: "Original lyric source text and stable token anchors for distribution and repair." } }, additionalProperties: !1 }, schema335 = { type: "object", description: "Score-level bibliographic metadata. Stored at `_x.viritura.metadata` on the score root. The engine consumes `title`/`subtitle`/`composer`/`arranger`/`copyright`; the remaining fields are preserved verbatim from MusicXML import (`work-title`, `movement-title`, etc.) for round-tripping.", properties: { title: { type: "string", description: "Display title (typically movement title, falling back to work title)." }, subtitle: { type: "string", description: "Work subtitle." }, composer: { type: "string", description: "Composer credit." }, lyricist: { type: "string", description: "Lyricist credit." }, arranger: { type: "string", description: "Arranger credit." }, copyright: { type: "string", description: "Copyright notice." }, workTitle: { type: "string", description: "MusicXML `work-title`." }, workNumber: { type: "string", description: "MusicXML `work-number`." }, movementTitle: { type: "string", description: "MusicXML `movement-title`." }, movementNumber: { type: "string", description: "MusicXML `movement-number`." } }, additionalProperties: !1 }, schema368 = { type: "object", description: "Score-wide chord-symbol engraving choices.", properties: { rootCase: { type: "string", enum: ["uppercase", "lowercaseMinor"] }, majorSeventh: { type: "string", enum: ["triangle", "maj", "M"] }, minor: { type: "string", enum: ["m", "min", "minus", "none"] }, diminished: { type: "string", enum: ["symbol", "dim"] }, halfDiminished: { type: "string", enum: ["symbol", "minorFlatFive"] }, augmented: { type: "string", enum: ["plus", "aug"] }, extensions: { type: "string", enum: ["superscript", "baseline"] } }, additionalProperties: !1 }, func1 = Object.prototype.hasOwnProperty, schema336 = { type: "object", description: "Per-document text style overrides keyed by role. Each entry is a partial override merged over the engine's built-in stylesheet at layout time. Stored at `_x.viritura.textStyles` on the score root.", properties: { title: { $ref: "#/$defs/text-style" }, subtitle: { $ref: "#/$defs/text-style" }, composer: { $ref: "#/$defs/text-style" }, arranger: { $ref: "#/$defs/text-style" }, staffLabel: { $ref: "#/$defs/text-style" }, pageNumber: { $ref: "#/$defs/text-style" }, tempo: { $ref: "#/$defs/text-style" }, pedalText: { $ref: "#/$defs/text-style" }, copyright: { $ref: "#/$defs/text-style" } }, additionalProperties: !1 };
7311
+ var schema334 = { type: "object", description: "Viritura vendor extensions on the MNX document root (the `_x.viritura` dict on the top-level score object).", properties: { metadata: { $ref: "#/$defs/score-metadata", description: "Score-level bibliographic metadata." }, textStyles: { $ref: "#/$defs/text-styles", description: "Per-document text style overrides." }, placement: { $ref: "#/$defs/placement", description: "Per-document placement (clearance) overrides keyed by dependent kind." }, timeSignatures: { $ref: "#/$defs/time-signature-styles", description: "Per-document time signature engraving styles for scores and parts." }, chordSymbolStyle: { $ref: "#/$defs/chord-symbol-style", description: "Score-wide chord-symbol engraving style." }, instrumentChangeStyle: { type: "object", additionalProperties: !1, properties: { showChangeLabel: { type: "boolean", default: !0 }, showAdvanceReminder: { type: "boolean", default: !0 } }, description: "Score-wide change-label visibility defaults. Per-instance hidden false explicitly shows; hidden true hides; absent inherits." }, soundProfile: { $ref: "#/$defs/sound-profile-assignment", description: "Per-part playback sound assignments keyed by stable MNX part ID." }, mixer: { $ref: "#/$defs/score-mixer-settings", description: "Score-scoped channel, group, and master mixer settings." }, videoSync: { $ref: "#/$defs/video-sync", description: "Score-to-picture synchronization settings." }, lyricWorkflow: { $ref: "#/$defs/lyric-workflow", description: "Original lyric source text and stable token anchors for distribution and repair." } }, additionalProperties: !1 }, schema335 = { type: "object", description: "Score-level bibliographic metadata. Stored at `_x.viritura.metadata` on the score root. The engine consumes `title`/`subtitle`/`composer`/`arranger`/`copyright`; the remaining fields are preserved verbatim from MusicXML import (`work-title`, `movement-title`, etc.) for round-tripping.", properties: { title: { type: "string", description: "Display title (typically movement title, falling back to work title)." }, subtitle: { type: "string", description: "Work subtitle." }, composer: { type: "string", description: "Composer credit." }, lyricist: { type: "string", description: "Lyricist credit." }, arranger: { type: "string", description: "Arranger credit." }, copyright: { type: "string", description: "Copyright notice." }, workTitle: { type: "string", description: "MusicXML `work-title`." }, workNumber: { type: "string", description: "MusicXML `work-number`." }, movementTitle: { type: "string", description: "MusicXML `movement-title`." }, movementNumber: { type: "string", description: "MusicXML `movement-number`." } }, additionalProperties: !1 }, schema368 = { type: "object", description: "Score-wide chord-symbol engraving choices.", properties: { rootCase: { type: "string", enum: ["uppercase", "lowercaseMinor"] }, majorSeventh: { type: "string", enum: ["triangle", "maj", "M"] }, minor: { type: "string", enum: ["m", "min", "minus", "none"] }, diminished: { type: "string", enum: ["symbol", "dim"] }, halfDiminished: { type: "string", enum: ["symbol", "minorFlatFive"] }, augmented: { type: "string", enum: ["plus", "aug"] }, extensions: { type: "string", enum: ["superscript", "baseline"] } }, additionalProperties: !1 }, func1 = Object.prototype.hasOwnProperty, schema336 = { type: "object", description: "Per-document text style overrides keyed by role. Each entry is a partial override merged over the engine's built-in stylesheet at layout time. Stored at `_x.viritura.textStyles` on the score root.", properties: { title: { $ref: "#/$defs/text-style" }, subtitle: { $ref: "#/$defs/text-style" }, composer: { $ref: "#/$defs/text-style" }, arranger: { $ref: "#/$defs/text-style" }, staffLabel: { $ref: "#/$defs/text-style" }, pageNumber: { $ref: "#/$defs/text-style" }, tempo: { $ref: "#/$defs/text-style" }, pedalText: { $ref: "#/$defs/text-style" }, copyright: { $ref: "#/$defs/text-style" } }, additionalProperties: !1 };
7278
7312
  var schema338 = { type: "string", enum: ["serif", "sans-serif", "monospace"], description: "Generic font family for a text style. Maps to a curated typeface (serif\u2248Times, sans-serif\u2248Helvetica, monospace\u2248Courier)." }, schema339 = { type: "string", enum: ["left", "center", "right"], description: "Horizontal alignment of a text style relative to its anchor." }, pattern38 = new RegExp("^#[0-9a-fA-F]{6}$", "u");
7279
7313
  function validate373(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
7280
7314
  let vErrors = null, errors = 0, evaluated0 = validate373.evaluated;
@@ -8635,10 +8669,163 @@ function validate393(data, { instancePath = "", parentData, parentDataProperty,
8635
8669
  return validate393.errors = vErrors, errors === 0;
8636
8670
  }
8637
8671
  validate393.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
8638
- var schema371 = { type: "object", description: "Score-to-picture synchronization settings for film/TV scoring. Stored at `_x.viritura.videoSync` on the score root. MNX has no concept of picture, so the whole feature lives in one versioned vendor object rather than scattering unrelated extensions.", required: ["version", "pictureOffsetSeconds"], properties: { version: { type: "integer", minimum: 1, description: "Schema version of this payload." }, media: { $ref: "#/$defs/video-media-identity", description: "Attached picture identity. Absent when settings exist but no media is attached." }, pictureOffsetSeconds: { type: "number", description: "Media time (seconds) corresponding to score time zero. 120 means the score starts two minutes into the picture. Negative values place the score before the first frame." }, pictureAudioEnabled: { type: "boolean", description: "Whether the picture's production audio is audible. Defaults to false so attaching a video never doubles up against score playback." }, startTimecodeSeconds: { type: "number", description: "Display-only offset applied to the picture timecode readout, for deliveries that start at e.g. 01:00:00:00. Never affects the media time Viritura seeks to." }, frameRate: { type: "string", enum: ["23.976", "24", "25", "29.97", "29.97df", "30", "50", "59.94", "59.94df", "60"], description: "Frame rate of the delivery, as an identifier rather than a decimal, because NTSC rates are rational (23.976 is exactly 24000/1001) and because drop-frame is a labelling convention rather than a distinct speed. Browsers expose neither the file's true rate nor its drop-frame flag, so this is declared by the user." }, hitPoints: { type: "array", description: "Spotted moments in the picture, in no guaranteed order. Kept alongside the picture identity because they describe the film rather than the score, and so must survive any amount of rewriting of the music.", items: { $ref: "#/$defs/hit-point" } } }, additionalProperties: !1 };
8639
- var pattern39 = new RegExp("^sha256:[0-9a-f]{64}$", "u");
8672
+ var schema372 = { type: "object", properties: { volume: { type: "number", minimum: 0, maximum: 1.9952623149688795 }, pan: { type: "number", minimum: -1, maximum: 1 }, muted: { type: "boolean" }, solo: { type: "boolean" }, ensembleEnabled: { type: "boolean" }, spatialMode: { enum: ["stereo", "stage"] } }, additionalProperties: !1 };
8640
8673
  function validate395(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
8641
8674
  let vErrors = null, errors = 0, evaluated0 = validate395.evaluated;
8675
+ if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
8676
+ for (let key0 in data)
8677
+ if (!(key0 === "channels" || key0 === "groups" || key0 === "masterVolume" || key0 === "masterMuted")) {
8678
+ let err0 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
8679
+ vErrors === null ? vErrors = [err0] : vErrors.push(err0), errors++;
8680
+ }
8681
+ if (data.channels !== void 0) {
8682
+ let data0 = data.channels;
8683
+ if (data0 && typeof data0 == "object" && !Array.isArray(data0))
8684
+ for (let key1 in data0) {
8685
+ let data1 = data0[key1];
8686
+ if (data1 && typeof data1 == "object" && !Array.isArray(data1)) {
8687
+ for (let key2 in data1)
8688
+ if (!(key2 === "volume" || key2 === "pan" || key2 === "muted" || key2 === "solo" || key2 === "ensembleEnabled" || key2 === "spatialMode")) {
8689
+ let err1 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/$defs/mixer-channel-settings/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key2 }, message: "must NOT have additional properties" };
8690
+ vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
8691
+ }
8692
+ if (data1.volume !== void 0) {
8693
+ let data2 = data1.volume;
8694
+ if (typeof data2 == "number") {
8695
+ if (data2 > 1.9952623149688795 || isNaN(data2)) {
8696
+ let err2 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/volume", schemaPath: "#/$defs/mixer-channel-settings/properties/volume/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1.9952623149688795 }, message: "must be <= 1.9952623149688795" };
8697
+ vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
8698
+ }
8699
+ if (data2 < 0 || isNaN(data2)) {
8700
+ let err3 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/volume", schemaPath: "#/$defs/mixer-channel-settings/properties/volume/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" };
8701
+ vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
8702
+ }
8703
+ } else {
8704
+ let err4 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/volume", schemaPath: "#/$defs/mixer-channel-settings/properties/volume/type", keyword: "type", params: { type: "number" }, message: "must be number" };
8705
+ vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
8706
+ }
8707
+ }
8708
+ if (data1.pan !== void 0) {
8709
+ let data3 = data1.pan;
8710
+ if (typeof data3 == "number") {
8711
+ if (data3 > 1 || isNaN(data3)) {
8712
+ let err5 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/pan", schemaPath: "#/$defs/mixer-channel-settings/properties/pan/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1 }, message: "must be <= 1" };
8713
+ vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
8714
+ }
8715
+ if (data3 < -1 || isNaN(data3)) {
8716
+ let err6 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/pan", schemaPath: "#/$defs/mixer-channel-settings/properties/pan/minimum", keyword: "minimum", params: { comparison: ">=", limit: -1 }, message: "must be >= -1" };
8717
+ vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
8718
+ }
8719
+ } else {
8720
+ let err7 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/pan", schemaPath: "#/$defs/mixer-channel-settings/properties/pan/type", keyword: "type", params: { type: "number" }, message: "must be number" };
8721
+ vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
8722
+ }
8723
+ }
8724
+ if (data1.muted !== void 0 && typeof data1.muted != "boolean") {
8725
+ let err8 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/muted", schemaPath: "#/$defs/mixer-channel-settings/properties/muted/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
8726
+ vErrors === null ? vErrors = [err8] : vErrors.push(err8), errors++;
8727
+ }
8728
+ if (data1.solo !== void 0 && typeof data1.solo != "boolean") {
8729
+ let err9 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/solo", schemaPath: "#/$defs/mixer-channel-settings/properties/solo/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
8730
+ vErrors === null ? vErrors = [err9] : vErrors.push(err9), errors++;
8731
+ }
8732
+ if (data1.ensembleEnabled !== void 0 && typeof data1.ensembleEnabled != "boolean") {
8733
+ let err10 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/ensembleEnabled", schemaPath: "#/$defs/mixer-channel-settings/properties/ensembleEnabled/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
8734
+ vErrors === null ? vErrors = [err10] : vErrors.push(err10), errors++;
8735
+ }
8736
+ if (data1.spatialMode !== void 0) {
8737
+ let data7 = data1.spatialMode;
8738
+ if (!(data7 === "stereo" || data7 === "stage")) {
8739
+ let err11 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1") + "/spatialMode", schemaPath: "#/$defs/mixer-channel-settings/properties/spatialMode/enum", keyword: "enum", params: { allowedValues: schema372.properties.spatialMode.enum }, message: "must be equal to one of the allowed values" };
8740
+ vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
8741
+ }
8742
+ }
8743
+ } else {
8744
+ let err12 = { instancePath: instancePath + "/channels/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/$defs/mixer-channel-settings/type", keyword: "type", params: { type: "object" }, message: "must be object" };
8745
+ vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
8746
+ }
8747
+ }
8748
+ else {
8749
+ let err13 = { instancePath: instancePath + "/channels", schemaPath: "#/properties/channels/type", keyword: "type", params: { type: "object" }, message: "must be object" };
8750
+ vErrors === null ? vErrors = [err13] : vErrors.push(err13), errors++;
8751
+ }
8752
+ }
8753
+ if (data.groups !== void 0) {
8754
+ let data8 = data.groups;
8755
+ if (data8 && typeof data8 == "object" && !Array.isArray(data8))
8756
+ for (let key3 in data8) {
8757
+ let data9 = data8[key3];
8758
+ if (data9 && typeof data9 == "object" && !Array.isArray(data9)) {
8759
+ for (let key4 in data9)
8760
+ if (!(key4 === "volume" || key4 === "muted" || key4 === "solo")) {
8761
+ let err14 = { instancePath: instancePath + "/groups/" + key3.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/$defs/mixer-bus-settings/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key4 }, message: "must NOT have additional properties" };
8762
+ vErrors === null ? vErrors = [err14] : vErrors.push(err14), errors++;
8763
+ }
8764
+ if (data9.volume !== void 0) {
8765
+ let data10 = data9.volume;
8766
+ if (typeof data10 == "number") {
8767
+ if (data10 > 1.9952623149688795 || isNaN(data10)) {
8768
+ let err15 = { instancePath: instancePath + "/groups/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/volume", schemaPath: "#/$defs/mixer-bus-settings/properties/volume/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1.9952623149688795 }, message: "must be <= 1.9952623149688795" };
8769
+ vErrors === null ? vErrors = [err15] : vErrors.push(err15), errors++;
8770
+ }
8771
+ if (data10 < 0 || isNaN(data10)) {
8772
+ let err16 = { instancePath: instancePath + "/groups/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/volume", schemaPath: "#/$defs/mixer-bus-settings/properties/volume/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" };
8773
+ vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
8774
+ }
8775
+ } else {
8776
+ let err17 = { instancePath: instancePath + "/groups/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/volume", schemaPath: "#/$defs/mixer-bus-settings/properties/volume/type", keyword: "type", params: { type: "number" }, message: "must be number" };
8777
+ vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
8778
+ }
8779
+ }
8780
+ if (data9.muted !== void 0 && typeof data9.muted != "boolean") {
8781
+ let err18 = { instancePath: instancePath + "/groups/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/muted", schemaPath: "#/$defs/mixer-bus-settings/properties/muted/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
8782
+ vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
8783
+ }
8784
+ if (data9.solo !== void 0 && typeof data9.solo != "boolean") {
8785
+ let err19 = { instancePath: instancePath + "/groups/" + key3.replace(/~/g, "~0").replace(/\//g, "~1") + "/solo", schemaPath: "#/$defs/mixer-bus-settings/properties/solo/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
8786
+ vErrors === null ? vErrors = [err19] : vErrors.push(err19), errors++;
8787
+ }
8788
+ } else {
8789
+ let err20 = { instancePath: instancePath + "/groups/" + key3.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/$defs/mixer-bus-settings/type", keyword: "type", params: { type: "object" }, message: "must be object" };
8790
+ vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
8791
+ }
8792
+ }
8793
+ else {
8794
+ let err21 = { instancePath: instancePath + "/groups", schemaPath: "#/properties/groups/type", keyword: "type", params: { type: "object" }, message: "must be object" };
8795
+ vErrors === null ? vErrors = [err21] : vErrors.push(err21), errors++;
8796
+ }
8797
+ }
8798
+ if (data.masterVolume !== void 0) {
8799
+ let data13 = data.masterVolume;
8800
+ if (typeof data13 == "number") {
8801
+ if (data13 > 1.9952623149688795 || isNaN(data13)) {
8802
+ let err22 = { instancePath: instancePath + "/masterVolume", schemaPath: "#/properties/masterVolume/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1.9952623149688795 }, message: "must be <= 1.9952623149688795" };
8803
+ vErrors === null ? vErrors = [err22] : vErrors.push(err22), errors++;
8804
+ }
8805
+ if (data13 < 0 || isNaN(data13)) {
8806
+ let err23 = { instancePath: instancePath + "/masterVolume", schemaPath: "#/properties/masterVolume/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" };
8807
+ vErrors === null ? vErrors = [err23] : vErrors.push(err23), errors++;
8808
+ }
8809
+ } else {
8810
+ let err24 = { instancePath: instancePath + "/masterVolume", schemaPath: "#/properties/masterVolume/type", keyword: "type", params: { type: "number" }, message: "must be number" };
8811
+ vErrors === null ? vErrors = [err24] : vErrors.push(err24), errors++;
8812
+ }
8813
+ }
8814
+ if (data.masterMuted !== void 0 && typeof data.masterMuted != "boolean") {
8815
+ let err25 = { instancePath: instancePath + "/masterMuted", schemaPath: "#/properties/masterMuted/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
8816
+ vErrors === null ? vErrors = [err25] : vErrors.push(err25), errors++;
8817
+ }
8818
+ } else {
8819
+ let err26 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
8820
+ vErrors === null ? vErrors = [err26] : vErrors.push(err26), errors++;
8821
+ }
8822
+ return validate395.errors = vErrors, errors === 0;
8823
+ }
8824
+ validate395.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
8825
+ var schema374 = { type: "object", description: "Score-to-picture synchronization settings for film/TV scoring. Stored at `_x.viritura.videoSync` on the score root. MNX has no concept of picture, so the whole feature lives in one versioned vendor object rather than scattering unrelated extensions.", required: ["version", "pictureOffsetSeconds"], properties: { version: { type: "integer", minimum: 1, description: "Schema version of this payload." }, media: { $ref: "#/$defs/video-media-identity", description: "Attached picture identity. Absent when settings exist but no media is attached." }, pictureOffsetSeconds: { type: "number", description: "Media time (seconds) corresponding to score time zero. 120 means the score starts two minutes into the picture. Negative values place the score before the first frame." }, pictureAudioEnabled: { type: "boolean", description: "Whether the picture's production audio is audible. Defaults to false so attaching a video never doubles up against score playback." }, startTimecodeSeconds: { type: "number", description: "Display-only offset applied to the picture timecode readout, for deliveries that start at e.g. 01:00:00:00. Never affects the media time Viritura seeks to." }, frameRate: { type: "string", enum: ["23.976", "24", "25", "29.97", "29.97df", "30", "50", "59.94", "59.94df", "60"], description: "Frame rate of the delivery, as an identifier rather than a decimal, because NTSC rates are rational (23.976 is exactly 24000/1001) and because drop-frame is a labelling convention rather than a distinct speed. Browsers expose neither the file's true rate nor its drop-frame flag, so this is declared by the user." }, hitPoints: { type: "array", description: "Spotted moments in the picture, in no guaranteed order. Kept alongside the picture identity because they describe the film rather than the score, and so must survive any amount of rewriting of the music.", items: { $ref: "#/$defs/hit-point" } } }, additionalProperties: !1 };
8826
+ var pattern39 = new RegExp("^sha256:[0-9a-f]{64}$", "u");
8827
+ function validate397(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
8828
+ let vErrors = null, errors = 0, evaluated0 = validate397.evaluated;
8642
8829
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
8643
8830
  if (data.version === void 0) {
8644
8831
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "version" }, message: "must have required property 'version'" };
@@ -8748,7 +8935,7 @@ function validate395(data, { instancePath = "", parentData, parentDataProperty,
8748
8935
  vErrors === null ? vErrors = [err19] : vErrors.push(err19), errors++;
8749
8936
  }
8750
8937
  if (!(data9 === "23.976" || data9 === "24" || data9 === "25" || data9 === "29.97" || data9 === "29.97df" || data9 === "30" || data9 === "50" || data9 === "59.94" || data9 === "59.94df" || data9 === "60")) {
8751
- let err20 = { instancePath: instancePath + "/frameRate", schemaPath: "#/properties/frameRate/enum", keyword: "enum", params: { allowedValues: schema371.properties.frameRate.enum }, message: "must be equal to one of the allowed values" };
8938
+ let err20 = { instancePath: instancePath + "/frameRate", schemaPath: "#/properties/frameRate/enum", keyword: "enum", params: { allowedValues: schema374.properties.frameRate.enum }, message: "must be equal to one of the allowed values" };
8752
8939
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
8753
8940
  }
8754
8941
  }
@@ -8818,12 +9005,12 @@ function validate395(data, { instancePath = "", parentData, parentDataProperty,
8818
9005
  let err32 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
8819
9006
  vErrors === null ? vErrors = [err32] : vErrors.push(err32), errors++;
8820
9007
  }
8821
- return validate395.errors = vErrors, errors === 0;
9008
+ return validate397.errors = vErrors, errors === 0;
8822
9009
  }
8823
- validate395.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
8824
- var schema376 = { type: "object", description: "A stable token from a paste-and-distribute lyric source.", required: ["id"], properties: { id: { type: "string", minLength: 1, description: "Stable identity used by reflow and collaborative repair." }, text: { type: "string", description: "Authored syllable text. Omitted for an explicit melisma skip." }, type: { type: "string", enum: ["start", "middle", "end", "whole"], description: "MNX syllabic role for a visible token." }, skip: { type: "boolean", const: !0, description: "Marks an explicit underscore in the original source." }, eventId: { type: "string", minLength: 1, description: "Stable MNX event ID currently anchoring this token; absent when detached." }, partId: { type: "string", minLength: 1, description: "Part ID at the time the token was assigned." }, sequenceIndex: { type: "integer", minimum: 0, description: "Voice index at the time the token was assigned." } }, additionalProperties: !1 };
8825
- function validate398(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
8826
- let vErrors = null, errors = 0, evaluated0 = validate398.evaluated;
9010
+ validate397.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9011
+ var schema379 = { type: "object", description: "A stable token from a paste-and-distribute lyric source.", required: ["id"], properties: { id: { type: "string", minLength: 1, description: "Stable identity used by reflow and collaborative repair." }, text: { type: "string", description: "Authored syllable text. Omitted for an explicit melisma skip." }, type: { type: "string", enum: ["start", "middle", "end", "whole"], description: "MNX syllabic role for a visible token." }, skip: { type: "boolean", const: !0, description: "Marks an explicit underscore in the original source." }, eventId: { type: "string", minLength: 1, description: "Stable MNX event ID currently anchoring this token; absent when detached." }, partId: { type: "string", minLength: 1, description: "Part ID at the time the token was assigned." }, sequenceIndex: { type: "integer", minimum: 0, description: "Voice index at the time the token was assigned." } }, additionalProperties: !1 };
9012
+ function validate400(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9013
+ let vErrors = null, errors = 0, evaluated0 = validate400.evaluated;
8827
9014
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
8828
9015
  if (data.id === void 0) {
8829
9016
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "id" }, message: "must have required property 'id'" };
@@ -8925,7 +9112,7 @@ function validate398(data, { instancePath = "", parentData, parentDataProperty,
8925
9112
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
8926
9113
  }
8927
9114
  if (!(data8 === "start" || data8 === "middle" || data8 === "end" || data8 === "whole")) {
8928
- let err18 = { instancePath: instancePath + "/tokens/" + i0 + "/type", schemaPath: "#/$defs/lyric-workflow-token/properties/type/enum", keyword: "enum", params: { allowedValues: schema376.properties.type.enum }, message: "must be equal to one of the allowed values" };
9115
+ let err18 = { instancePath: instancePath + "/tokens/" + i0 + "/type", schemaPath: "#/$defs/lyric-workflow-token/properties/type/enum", keyword: "enum", params: { allowedValues: schema379.properties.type.enum }, message: "must be equal to one of the allowed values" };
8929
9116
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
8930
9117
  }
8931
9118
  }
@@ -8989,11 +9176,11 @@ function validate398(data, { instancePath = "", parentData, parentDataProperty,
8989
9176
  let err29 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
8990
9177
  vErrors === null ? vErrors = [err29] : vErrors.push(err29), errors++;
8991
9178
  }
8992
- return validate398.errors = vErrors, errors === 0;
9179
+ return validate400.errors = vErrors, errors === 0;
8993
9180
  }
8994
- validate398.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
8995
- function validate397(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
8996
- let vErrors = null, errors = 0, evaluated0 = validate397.evaluated;
9181
+ validate400.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9182
+ function validate399(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9183
+ let vErrors = null, errors = 0, evaluated0 = validate399.evaluated;
8997
9184
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
8998
9185
  if (data.sources === void 0) {
8999
9186
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "sources" }, message: "must have required property 'sources'" };
@@ -9008,7 +9195,7 @@ function validate397(data, { instancePath = "", parentData, parentDataProperty,
9008
9195
  let data0 = data.sources;
9009
9196
  if (data0 && typeof data0 == "object" && !Array.isArray(data0))
9010
9197
  for (let key1 in data0)
9011
- validate398(data0[key1], { instancePath: instancePath + "/sources/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data0, parentDataProperty: key1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate398.errors : vErrors.concat(validate398.errors), errors = vErrors.length);
9198
+ validate400(data0[key1], { instancePath: instancePath + "/sources/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data0, parentDataProperty: key1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate400.errors : vErrors.concat(validate400.errors), errors = vErrors.length);
9012
9199
  else {
9013
9200
  let err2 = { instancePath: instancePath + "/sources", schemaPath: "#/properties/sources/type", keyword: "type", params: { type: "object" }, message: "must be object" };
9014
9201
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
@@ -9018,9 +9205,9 @@ function validate397(data, { instancePath = "", parentData, parentDataProperty,
9018
9205
  let err3 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
9019
9206
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
9020
9207
  }
9021
- return validate397.errors = vErrors, errors === 0;
9208
+ return validate399.errors = vErrors, errors === 0;
9022
9209
  }
9023
- validate397.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9210
+ validate399.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9024
9211
  function validate371(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9025
9212
  let vErrors = null, errors = 0, evaluated0 = validate371.evaluated;
9026
9213
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
@@ -9193,7 +9380,7 @@ function validate371(data, { instancePath = "", parentData, parentDataProperty,
9193
9380
  vErrors === null ? vErrors = [err32] : vErrors.push(err32), errors++;
9194
9381
  }
9195
9382
  }
9196
- data.soundProfile !== void 0 && (validate393(data.soundProfile, { instancePath: instancePath + "/soundProfile", parentData: data, parentDataProperty: "soundProfile", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate393.errors : vErrors.concat(validate393.errors), errors = vErrors.length)), data.videoSync !== void 0 && (validate395(data.videoSync, { instancePath: instancePath + "/videoSync", parentData: data, parentDataProperty: "videoSync", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate395.errors : vErrors.concat(validate395.errors), errors = vErrors.length)), data.lyricWorkflow !== void 0 && (validate397(data.lyricWorkflow, { instancePath: instancePath + "/lyricWorkflow", parentData: data, parentDataProperty: "lyricWorkflow", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate397.errors : vErrors.concat(validate397.errors), errors = vErrors.length));
9383
+ data.soundProfile !== void 0 && (validate393(data.soundProfile, { instancePath: instancePath + "/soundProfile", parentData: data, parentDataProperty: "soundProfile", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate393.errors : vErrors.concat(validate393.errors), errors = vErrors.length)), data.mixer !== void 0 && (validate395(data.mixer, { instancePath: instancePath + "/mixer", parentData: data, parentDataProperty: "mixer", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate395.errors : vErrors.concat(validate395.errors), errors = vErrors.length)), data.videoSync !== void 0 && (validate397(data.videoSync, { instancePath: instancePath + "/videoSync", parentData: data, parentDataProperty: "videoSync", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate397.errors : vErrors.concat(validate397.errors), errors = vErrors.length)), data.lyricWorkflow !== void 0 && (validate399(data.lyricWorkflow, { instancePath: instancePath + "/lyricWorkflow", parentData: data, parentDataProperty: "lyricWorkflow", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate399.errors : vErrors.concat(validate399.errors), errors = vErrors.length));
9197
9384
  } else {
9198
9385
  let err33 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
9199
9386
  vErrors === null ? vErrors = [err33] : vErrors.push(err33), errors++;
@@ -9201,11 +9388,11 @@ function validate371(data, { instancePath = "", parentData, parentDataProperty,
9201
9388
  return validate371.errors = vErrors, errors === 0;
9202
9389
  }
9203
9390
  validate371.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9204
- var measureGlobalExtensions = validate401;
9205
- var schema378 = { type: "object", description: "Unified tempo marking. BPM and value occur together; BPM-free markings carry explicit swing or nonempty cosmetic text.", properties: { bpm: { type: "number", exclusiveMinimum: 0 }, value: { type: "object", required: ["base"], properties: { base: { type: "string", enum: ["duplexMaxima", "maxima", "longa", "breve", "whole", "half", "quarter", "eighth", "16th", "32nd", "64th", "128th", "256th", "512th", "1024th", "2048th", "4096th"] }, dots: { type: "integer", minimum: 0 } }, additionalProperties: !1 }, location: { type: "object", required: ["fraction"], properties: { fraction: { type: "array", prefixItems: [{ type: "integer", minimum: 0, maximum: 9007199254740991 }, { type: "integer", minimum: 1, maximum: 9007199254740991 }], items: !1, minItems: 2, maxItems: 2 } }, additionalProperties: !1 }, swing: { $ref: "#/$defs/swing" }, text: { $ref: "#/$defs/text-content" }, showMetronomeMark: { type: "boolean" }, showText: { type: "boolean" }, manualOffset: { $ref: "#/$defs/sp-delta" }, avoidCollisions: { type: "boolean" } }, oneOf: [{ required: ["bpm", "value"] }, { required: ["swing"], not: { anyOf: [{ required: ["bpm"] }, { required: ["value"] }] } }, { required: ["text"], properties: { text: { minItems: 1 } }, not: { anyOf: [{ required: ["bpm"] }, { required: ["value"] }, { required: ["swing"] }] } }], additionalProperties: !1 }, schema379 = { description: "Explicit rhythm instruction, independent of the metronome beat unit. Omission means inherit; straight explicitly resets swing.", oneOf: [{ type: "object", required: ["mode"], properties: { mode: { const: "straight", type: "string" } }, additionalProperties: !1 }, { type: "object", required: ["mode", "subdivision", "ratio"], properties: { mode: { const: "swing", type: "string" }, subdivision: { type: "string", enum: ["eighth", "16th"] }, ratio: { type: "array", items: { type: "integer", minimum: 1, maximum: 9007199254740991 }, minItems: 2, maxItems: 2, description: "Exact positive long:short ratio, not a percentage or a guessed source value." } }, additionalProperties: !1 }] };
9206
- var schema382 = { type: "object", description: "Inline text formatting. Omitted fields inherit the owning text role's style.", properties: { font: { type: "string", enum: ["serif", "sans-serif", "monospace"] }, size: { type: "number", exclusiveMinimum: 0, maximum: 12, description: "Relative size as a multiple of the owning text role's resolved size (the CSS 'em' equivalent), not an absolute point size. Distinct from text-style.size, which counts staff spaces for a whole role." }, weight: { oneOf: [{ type: "string", enum: ["normal", "bold"] }, { type: "number", minimum: 1, maximum: 1e3 }] }, fontStyle: { type: "string", enum: ["normal", "italic", "oblique"] }, decorations: { type: "array", description: "Line decorations applied together. A set rather than a single value, because both MusicXML and Finale treat underline, overline and strikethrough as independent.", items: { type: "string", enum: ["underline", "overline", "strikethrough"] }, uniqueItems: !0, minItems: 1 }, enclosure: { type: "string", enum: ["box", "circle"] }, color: { type: "string", pattern: "^#[0-9a-fA-F]{6}$" } }, additionalProperties: !1 };
9207
- function validate404(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9208
- let vErrors = null, errors = 0, evaluated0 = validate404.evaluated;
9391
+ var measureGlobalExtensions = validate403;
9392
+ var schema381 = { type: "object", description: "Unified tempo marking. BPM and value occur together; BPM-free markings carry explicit swing or nonempty cosmetic text.", properties: { bpm: { type: "number", exclusiveMinimum: 0 }, value: { type: "object", required: ["base"], properties: { base: { type: "string", enum: ["duplexMaxima", "maxima", "longa", "breve", "whole", "half", "quarter", "eighth", "16th", "32nd", "64th", "128th", "256th", "512th", "1024th", "2048th", "4096th"] }, dots: { type: "integer", minimum: 0 } }, additionalProperties: !1 }, location: { type: "object", required: ["fraction"], properties: { fraction: { type: "array", prefixItems: [{ type: "integer", minimum: 0, maximum: 9007199254740991 }, { type: "integer", minimum: 1, maximum: 9007199254740991 }], items: !1, minItems: 2, maxItems: 2 } }, additionalProperties: !1 }, swing: { $ref: "#/$defs/swing" }, text: { $ref: "#/$defs/text-content" }, showMetronomeMark: { type: "boolean" }, showText: { type: "boolean" }, manualOffset: { $ref: "#/$defs/sp-delta" }, avoidCollisions: { type: "boolean" } }, oneOf: [{ required: ["bpm", "value"] }, { required: ["swing"], not: { anyOf: [{ required: ["bpm"] }, { required: ["value"] }] } }, { required: ["text"], properties: { text: { minItems: 1 } }, not: { anyOf: [{ required: ["bpm"] }, { required: ["value"] }, { required: ["swing"] }] } }], additionalProperties: !1 }, schema382 = { description: "Explicit rhythm instruction, independent of the metronome beat unit. Omission means inherit; straight explicitly resets swing.", oneOf: [{ type: "object", required: ["mode"], properties: { mode: { const: "straight", type: "string" } }, additionalProperties: !1 }, { type: "object", required: ["mode", "subdivision", "ratio"], properties: { mode: { const: "swing", type: "string" }, subdivision: { type: "string", enum: ["eighth", "16th"] }, ratio: { type: "array", items: { type: "integer", minimum: 1, maximum: 9007199254740991 }, minItems: 2, maxItems: 2, description: "Exact positive long:short ratio, not a percentage or a guessed source value." } }, additionalProperties: !1 }] };
9393
+ var schema385 = { type: "object", description: "Inline text formatting. Omitted fields inherit the owning text role's style.", properties: { font: { type: "string", enum: ["serif", "sans-serif", "monospace"] }, size: { type: "number", exclusiveMinimum: 0, maximum: 12, description: "Relative size as a multiple of the owning text role's resolved size (the CSS 'em' equivalent), not an absolute point size. Distinct from text-style.size, which counts staff spaces for a whole role." }, weight: { oneOf: [{ type: "string", enum: ["normal", "bold"] }, { type: "number", minimum: 1, maximum: 1e3 }] }, fontStyle: { type: "string", enum: ["normal", "italic", "oblique"] }, decorations: { type: "array", description: "Line decorations applied together. A set rather than a single value, because both MusicXML and Finale treat underline, overline and strikethrough as independent.", items: { type: "string", enum: ["underline", "overline", "strikethrough"] }, uniqueItems: !0, minItems: 1 }, enclosure: { type: "string", enum: ["box", "circle"] }, color: { type: "string", pattern: "^#[0-9a-fA-F]{6}$" } }, additionalProperties: !1 };
9394
+ function validate406(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9395
+ let vErrors = null, errors = 0, evaluated0 = validate406.evaluated;
9209
9396
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
9210
9397
  if (data.text === void 0) {
9211
9398
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "text" }, message: "must have required property 'text'" };
@@ -9235,7 +9422,7 @@ function validate404(data, { instancePath = "", parentData, parentDataProperty,
9235
9422
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
9236
9423
  }
9237
9424
  if (!(data2 === "serif" || data2 === "sans-serif" || data2 === "monospace")) {
9238
- let err5 = { instancePath: instancePath + "/style/font", schemaPath: "#/$defs/text-run-style/properties/font/enum", keyword: "enum", params: { allowedValues: schema382.properties.font.enum }, message: "must be equal to one of the allowed values" };
9425
+ let err5 = { instancePath: instancePath + "/style/font", schemaPath: "#/$defs/text-run-style/properties/font/enum", keyword: "enum", params: { allowedValues: schema385.properties.font.enum }, message: "must be equal to one of the allowed values" };
9239
9426
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
9240
9427
  }
9241
9428
  }
@@ -9262,7 +9449,7 @@ function validate404(data, { instancePath = "", parentData, parentDataProperty,
9262
9449
  vErrors === null ? vErrors = [err9] : vErrors.push(err9), errors++;
9263
9450
  }
9264
9451
  if (!(data4 === "normal" || data4 === "bold")) {
9265
- let err10 = { instancePath: instancePath + "/style/weight", schemaPath: "#/$defs/text-run-style/properties/weight/oneOf/0/enum", keyword: "enum", params: { allowedValues: schema382.properties.weight.oneOf[0].enum }, message: "must be equal to one of the allowed values" };
9452
+ let err10 = { instancePath: instancePath + "/style/weight", schemaPath: "#/$defs/text-run-style/properties/weight/oneOf/0/enum", keyword: "enum", params: { allowedValues: schema385.properties.weight.oneOf[0].enum }, message: "must be equal to one of the allowed values" };
9266
9453
  vErrors === null ? vErrors = [err10] : vErrors.push(err10), errors++;
9267
9454
  }
9268
9455
  var _valid0 = _errs14 === errors;
@@ -9296,7 +9483,7 @@ function validate404(data, { instancePath = "", parentData, parentDataProperty,
9296
9483
  vErrors === null ? vErrors = [err15] : vErrors.push(err15), errors++;
9297
9484
  }
9298
9485
  if (!(data5 === "normal" || data5 === "italic" || data5 === "oblique")) {
9299
- let err16 = { instancePath: instancePath + "/style/fontStyle", schemaPath: "#/$defs/text-run-style/properties/fontStyle/enum", keyword: "enum", params: { allowedValues: schema382.properties.fontStyle.enum }, message: "must be equal to one of the allowed values" };
9486
+ let err16 = { instancePath: instancePath + "/style/fontStyle", schemaPath: "#/$defs/text-run-style/properties/fontStyle/enum", keyword: "enum", params: { allowedValues: schema385.properties.fontStyle.enum }, message: "must be equal to one of the allowed values" };
9300
9487
  vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
9301
9488
  }
9302
9489
  }
@@ -9315,7 +9502,7 @@ function validate404(data, { instancePath = "", parentData, parentDataProperty,
9315
9502
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
9316
9503
  }
9317
9504
  if (!(data7 === "underline" || data7 === "overline" || data7 === "strikethrough")) {
9318
- let err19 = { instancePath: instancePath + "/style/decorations/" + i0, schemaPath: "#/$defs/text-run-style/properties/decorations/items/enum", keyword: "enum", params: { allowedValues: schema382.properties.decorations.items.enum }, message: "must be equal to one of the allowed values" };
9505
+ let err19 = { instancePath: instancePath + "/style/decorations/" + i0, schemaPath: "#/$defs/text-run-style/properties/decorations/items/enum", keyword: "enum", params: { allowedValues: schema385.properties.decorations.items.enum }, message: "must be equal to one of the allowed values" };
9319
9506
  vErrors === null ? vErrors = [err19] : vErrors.push(err19), errors++;
9320
9507
  }
9321
9508
  }
@@ -9347,7 +9534,7 @@ function validate404(data, { instancePath = "", parentData, parentDataProperty,
9347
9534
  vErrors === null ? vErrors = [err22] : vErrors.push(err22), errors++;
9348
9535
  }
9349
9536
  if (!(data8 === "box" || data8 === "circle")) {
9350
- let err23 = { instancePath: instancePath + "/style/enclosure", schemaPath: "#/$defs/text-run-style/properties/enclosure/enum", keyword: "enum", params: { allowedValues: schema382.properties.enclosure.enum }, message: "must be equal to one of the allowed values" };
9537
+ let err23 = { instancePath: instancePath + "/style/enclosure", schemaPath: "#/$defs/text-run-style/properties/enclosure/enum", keyword: "enum", params: { allowedValues: schema385.properties.enclosure.enum }, message: "must be equal to one of the allowed values" };
9351
9538
  vErrors === null ? vErrors = [err23] : vErrors.push(err23), errors++;
9352
9539
  }
9353
9540
  }
@@ -9372,11 +9559,11 @@ function validate404(data, { instancePath = "", parentData, parentDataProperty,
9372
9559
  let err27 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
9373
9560
  vErrors === null ? vErrors = [err27] : vErrors.push(err27), errors++;
9374
9561
  }
9375
- return validate404.errors = vErrors, errors === 0;
9562
+ return validate406.errors = vErrors, errors === 0;
9376
9563
  }
9377
- validate404.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9378
- function validate406(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9379
- let vErrors = null, errors = 0, evaluated0 = validate406.evaluated;
9564
+ validate406.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9565
+ function validate408(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9566
+ let vErrors = null, errors = 0, evaluated0 = validate408.evaluated;
9380
9567
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
9381
9568
  if (data.glyphs === void 0) {
9382
9569
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "glyphs" }, message: "must have required property 'glyphs'" };
@@ -9427,7 +9614,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9427
9614
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
9428
9615
  }
9429
9616
  if (!(data3 === "serif" || data3 === "sans-serif" || data3 === "monospace")) {
9430
- let err8 = { instancePath: instancePath + "/style/font", schemaPath: "#/$defs/text-run-style/properties/font/enum", keyword: "enum", params: { allowedValues: schema382.properties.font.enum }, message: "must be equal to one of the allowed values" };
9617
+ let err8 = { instancePath: instancePath + "/style/font", schemaPath: "#/$defs/text-run-style/properties/font/enum", keyword: "enum", params: { allowedValues: schema385.properties.font.enum }, message: "must be equal to one of the allowed values" };
9431
9618
  vErrors === null ? vErrors = [err8] : vErrors.push(err8), errors++;
9432
9619
  }
9433
9620
  }
@@ -9454,7 +9641,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9454
9641
  vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
9455
9642
  }
9456
9643
  if (!(data5 === "normal" || data5 === "bold")) {
9457
- let err13 = { instancePath: instancePath + "/style/weight", schemaPath: "#/$defs/text-run-style/properties/weight/oneOf/0/enum", keyword: "enum", params: { allowedValues: schema382.properties.weight.oneOf[0].enum }, message: "must be equal to one of the allowed values" };
9644
+ let err13 = { instancePath: instancePath + "/style/weight", schemaPath: "#/$defs/text-run-style/properties/weight/oneOf/0/enum", keyword: "enum", params: { allowedValues: schema385.properties.weight.oneOf[0].enum }, message: "must be equal to one of the allowed values" };
9458
9645
  vErrors === null ? vErrors = [err13] : vErrors.push(err13), errors++;
9459
9646
  }
9460
9647
  var _valid0 = _errs16 === errors;
@@ -9488,7 +9675,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9488
9675
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
9489
9676
  }
9490
9677
  if (!(data6 === "normal" || data6 === "italic" || data6 === "oblique")) {
9491
- let err19 = { instancePath: instancePath + "/style/fontStyle", schemaPath: "#/$defs/text-run-style/properties/fontStyle/enum", keyword: "enum", params: { allowedValues: schema382.properties.fontStyle.enum }, message: "must be equal to one of the allowed values" };
9678
+ let err19 = { instancePath: instancePath + "/style/fontStyle", schemaPath: "#/$defs/text-run-style/properties/fontStyle/enum", keyword: "enum", params: { allowedValues: schema385.properties.fontStyle.enum }, message: "must be equal to one of the allowed values" };
9492
9679
  vErrors === null ? vErrors = [err19] : vErrors.push(err19), errors++;
9493
9680
  }
9494
9681
  }
@@ -9507,7 +9694,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9507
9694
  vErrors === null ? vErrors = [err21] : vErrors.push(err21), errors++;
9508
9695
  }
9509
9696
  if (!(data8 === "underline" || data8 === "overline" || data8 === "strikethrough")) {
9510
- let err22 = { instancePath: instancePath + "/style/decorations/" + i1, schemaPath: "#/$defs/text-run-style/properties/decorations/items/enum", keyword: "enum", params: { allowedValues: schema382.properties.decorations.items.enum }, message: "must be equal to one of the allowed values" };
9697
+ let err22 = { instancePath: instancePath + "/style/decorations/" + i1, schemaPath: "#/$defs/text-run-style/properties/decorations/items/enum", keyword: "enum", params: { allowedValues: schema385.properties.decorations.items.enum }, message: "must be equal to one of the allowed values" };
9511
9698
  vErrors === null ? vErrors = [err22] : vErrors.push(err22), errors++;
9512
9699
  }
9513
9700
  }
@@ -9539,7 +9726,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9539
9726
  vErrors === null ? vErrors = [err25] : vErrors.push(err25), errors++;
9540
9727
  }
9541
9728
  if (!(data9 === "box" || data9 === "circle")) {
9542
- let err26 = { instancePath: instancePath + "/style/enclosure", schemaPath: "#/$defs/text-run-style/properties/enclosure/enum", keyword: "enum", params: { allowedValues: schema382.properties.enclosure.enum }, message: "must be equal to one of the allowed values" };
9729
+ let err26 = { instancePath: instancePath + "/style/enclosure", schemaPath: "#/$defs/text-run-style/properties/enclosure/enum", keyword: "enum", params: { allowedValues: schema385.properties.enclosure.enum }, message: "must be equal to one of the allowed values" };
9543
9730
  vErrors === null ? vErrors = [err26] : vErrors.push(err26), errors++;
9544
9731
  }
9545
9732
  }
@@ -9575,7 +9762,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9575
9762
  vErrors === null ? vErrors = [err31] : vErrors.push(err31), errors++;
9576
9763
  }
9577
9764
  if (!(data12 === "serif" || data12 === "sans-serif" || data12 === "monospace")) {
9578
- let err32 = { instancePath: instancePath + "/smuflStyle/font", schemaPath: "#/$defs/text-run-style/properties/font/enum", keyword: "enum", params: { allowedValues: schema382.properties.font.enum }, message: "must be equal to one of the allowed values" };
9765
+ let err32 = { instancePath: instancePath + "/smuflStyle/font", schemaPath: "#/$defs/text-run-style/properties/font/enum", keyword: "enum", params: { allowedValues: schema385.properties.font.enum }, message: "must be equal to one of the allowed values" };
9579
9766
  vErrors === null ? vErrors = [err32] : vErrors.push(err32), errors++;
9580
9767
  }
9581
9768
  }
@@ -9602,7 +9789,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9602
9789
  vErrors === null ? vErrors = [err36] : vErrors.push(err36), errors++;
9603
9790
  }
9604
9791
  if (!(data14 === "normal" || data14 === "bold")) {
9605
- let err37 = { instancePath: instancePath + "/smuflStyle/weight", schemaPath: "#/$defs/text-run-style/properties/weight/oneOf/0/enum", keyword: "enum", params: { allowedValues: schema382.properties.weight.oneOf[0].enum }, message: "must be equal to one of the allowed values" };
9792
+ let err37 = { instancePath: instancePath + "/smuflStyle/weight", schemaPath: "#/$defs/text-run-style/properties/weight/oneOf/0/enum", keyword: "enum", params: { allowedValues: schema385.properties.weight.oneOf[0].enum }, message: "must be equal to one of the allowed values" };
9606
9793
  vErrors === null ? vErrors = [err37] : vErrors.push(err37), errors++;
9607
9794
  }
9608
9795
  var _valid1 = _errs40 === errors;
@@ -9636,7 +9823,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9636
9823
  vErrors === null ? vErrors = [err42] : vErrors.push(err42), errors++;
9637
9824
  }
9638
9825
  if (!(data15 === "normal" || data15 === "italic" || data15 === "oblique")) {
9639
- let err43 = { instancePath: instancePath + "/smuflStyle/fontStyle", schemaPath: "#/$defs/text-run-style/properties/fontStyle/enum", keyword: "enum", params: { allowedValues: schema382.properties.fontStyle.enum }, message: "must be equal to one of the allowed values" };
9826
+ let err43 = { instancePath: instancePath + "/smuflStyle/fontStyle", schemaPath: "#/$defs/text-run-style/properties/fontStyle/enum", keyword: "enum", params: { allowedValues: schema385.properties.fontStyle.enum }, message: "must be equal to one of the allowed values" };
9640
9827
  vErrors === null ? vErrors = [err43] : vErrors.push(err43), errors++;
9641
9828
  }
9642
9829
  }
@@ -9655,7 +9842,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9655
9842
  vErrors === null ? vErrors = [err45] : vErrors.push(err45), errors++;
9656
9843
  }
9657
9844
  if (!(data17 === "underline" || data17 === "overline" || data17 === "strikethrough")) {
9658
- let err46 = { instancePath: instancePath + "/smuflStyle/decorations/" + i3, schemaPath: "#/$defs/text-run-style/properties/decorations/items/enum", keyword: "enum", params: { allowedValues: schema382.properties.decorations.items.enum }, message: "must be equal to one of the allowed values" };
9845
+ let err46 = { instancePath: instancePath + "/smuflStyle/decorations/" + i3, schemaPath: "#/$defs/text-run-style/properties/decorations/items/enum", keyword: "enum", params: { allowedValues: schema385.properties.decorations.items.enum }, message: "must be equal to one of the allowed values" };
9659
9846
  vErrors === null ? vErrors = [err46] : vErrors.push(err46), errors++;
9660
9847
  }
9661
9848
  }
@@ -9687,7 +9874,7 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9687
9874
  vErrors === null ? vErrors = [err49] : vErrors.push(err49), errors++;
9688
9875
  }
9689
9876
  if (!(data18 === "box" || data18 === "circle")) {
9690
- let err50 = { instancePath: instancePath + "/smuflStyle/enclosure", schemaPath: "#/$defs/text-run-style/properties/enclosure/enum", keyword: "enum", params: { allowedValues: schema382.properties.enclosure.enum }, message: "must be equal to one of the allowed values" };
9877
+ let err50 = { instancePath: instancePath + "/smuflStyle/enclosure", schemaPath: "#/$defs/text-run-style/properties/enclosure/enum", keyword: "enum", params: { allowedValues: schema385.properties.enclosure.enum }, message: "must be equal to one of the allowed values" };
9691
9878
  vErrors === null ? vErrors = [err50] : vErrors.push(err50), errors++;
9692
9879
  }
9693
9880
  }
@@ -9712,23 +9899,23 @@ function validate406(data, { instancePath = "", parentData, parentDataProperty,
9712
9899
  let err54 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
9713
9900
  vErrors === null ? vErrors = [err54] : vErrors.push(err54), errors++;
9714
9901
  }
9715
- return validate406.errors = vErrors, errors === 0;
9902
+ return validate408.errors = vErrors, errors === 0;
9716
9903
  }
9717
- validate406.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9718
- function validate403(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9719
- let vErrors = null, errors = 0, evaluated0 = validate403.evaluated;
9904
+ validate408.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
9905
+ function validate405(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9906
+ let vErrors = null, errors = 0, evaluated0 = validate405.evaluated;
9720
9907
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), Array.isArray(data)) {
9721
9908
  let len0 = data.length;
9722
9909
  for (let i0 = 0; i0 < len0; i0++) {
9723
9910
  let data0 = data[i0], _errs2 = errors, valid2 = !1, passing0 = null, _errs3 = errors;
9724
- validate404(data0, { instancePath: instancePath + "/" + i0, parentData: data, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate404.errors : vErrors.concat(validate404.errors), errors = vErrors.length);
9911
+ validate406(data0, { instancePath: instancePath + "/" + i0, parentData: data, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate406.errors : vErrors.concat(validate406.errors), errors = vErrors.length);
9725
9912
  var _valid0 = _errs3 === errors;
9726
9913
  if (_valid0) {
9727
9914
  valid2 = !0, passing0 = 0;
9728
9915
  var props0 = !0;
9729
9916
  }
9730
9917
  let _errs4 = errors;
9731
- validate406(data0, { instancePath: instancePath + "/" + i0, parentData: data, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate406.errors : vErrors.concat(validate406.errors), errors = vErrors.length);
9918
+ validate408(data0, { instancePath: instancePath + "/" + i0, parentData: data, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate408.errors : vErrors.concat(validate408.errors), errors = vErrors.length);
9732
9919
  var _valid0 = _errs4 === errors;
9733
9920
  if (_valid0 && valid2 ? (valid2 = !1, passing0 = [passing0, 1]) : _valid0 && (valid2 = !0, passing0 = 1, props0 !== !0 && (props0 = !0)), valid2)
9734
9921
  errors = _errs2, vErrors !== null && (_errs2 ? vErrors.length = _errs2 : vErrors = null);
@@ -9741,11 +9928,11 @@ function validate403(data, { instancePath = "", parentData, parentDataProperty,
9741
9928
  let err1 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "array" }, message: "must be array" };
9742
9929
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
9743
9930
  }
9744
- return validate403.errors = vErrors, errors === 0;
9931
+ return validate405.errors = vErrors, errors === 0;
9745
9932
  }
9746
- validate403.evaluated = { items: !0, dynamicProps: !1, dynamicItems: !1 };
9747
- function validate402(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9748
- let vErrors = null, errors = 0, evaluated0 = validate402.evaluated;
9933
+ validate405.evaluated = { items: !0, dynamicProps: !1, dynamicItems: !1 };
9934
+ function validate404(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
9935
+ let vErrors = null, errors = 0, evaluated0 = validate404.evaluated;
9749
9936
  evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0);
9750
9937
  let _errs1 = errors, valid0 = !1, passing0 = null, _errs2 = errors;
9751
9938
  if (data && typeof data == "object" && !Array.isArray(data)) {
@@ -9871,7 +10058,7 @@ function validate402(data, { instancePath = "", parentData, parentDataProperty,
9871
10058
  }
9872
10059
  if (data && typeof data == "object" && !Array.isArray(data)) {
9873
10060
  for (let key0 in data)
9874
- if (!func1.call(schema378.properties, key0)) {
10061
+ if (!func1.call(schema381.properties, key0)) {
9875
10062
  let err15 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
9876
10063
  vErrors === null ? vErrors = [err15] : vErrors.push(err15), errors++;
9877
10064
  }
@@ -9906,7 +10093,7 @@ function validate402(data, { instancePath = "", parentData, parentDataProperty,
9906
10093
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
9907
10094
  }
9908
10095
  if (!(data3 === "duplexMaxima" || data3 === "maxima" || data3 === "longa" || data3 === "breve" || data3 === "whole" || data3 === "half" || data3 === "quarter" || data3 === "eighth" || data3 === "16th" || data3 === "32nd" || data3 === "64th" || data3 === "128th" || data3 === "256th" || data3 === "512th" || data3 === "1024th" || data3 === "2048th" || data3 === "4096th")) {
9909
- let err21 = { instancePath: instancePath + "/value/base", schemaPath: "#/properties/value/properties/base/enum", keyword: "enum", params: { allowedValues: schema378.properties.value.properties.base.enum }, message: "must be equal to one of the allowed values" };
10096
+ let err21 = { instancePath: instancePath + "/value/base", schemaPath: "#/properties/value/properties/base/enum", keyword: "enum", params: { allowedValues: schema381.properties.value.properties.base.enum }, message: "must be equal to one of the allowed values" };
9910
10097
  vErrors === null ? vErrors = [err21] : vErrors.push(err21), errors++;
9911
10098
  }
9912
10099
  }
@@ -10067,7 +10254,7 @@ function validate402(data, { instancePath = "", parentData, parentDataProperty,
10067
10254
  vErrors === null ? vErrors = [err49] : vErrors.push(err49), errors++;
10068
10255
  }
10069
10256
  if (!(data12 === "eighth" || data12 === "16th")) {
10070
- let err50 = { instancePath: instancePath + "/swing/subdivision", schemaPath: "#/$defs/swing/oneOf/1/properties/subdivision/enum", keyword: "enum", params: { allowedValues: schema379.oneOf[1].properties.subdivision.enum }, message: "must be equal to one of the allowed values" };
10257
+ let err50 = { instancePath: instancePath + "/swing/subdivision", schemaPath: "#/$defs/swing/oneOf/1/properties/subdivision/enum", keyword: "enum", params: { allowedValues: schema382.oneOf[1].properties.subdivision.enum }, message: "must be equal to one of the allowed values" };
10071
10258
  vErrors === null ? vErrors = [err50] : vErrors.push(err50), errors++;
10072
10259
  }
10073
10260
  }
@@ -10117,7 +10304,7 @@ function validate402(data, { instancePath = "", parentData, parentDataProperty,
10117
10304
  vErrors === null ? vErrors = [err58] : vErrors.push(err58), errors++;
10118
10305
  }
10119
10306
  }
10120
- if (data.text !== void 0 && (validate403(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.showMetronomeMark !== void 0 && typeof data.showMetronomeMark != "boolean") {
10307
+ if (data.text !== void 0 && (validate405(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.showMetronomeMark !== void 0 && typeof data.showMetronomeMark != "boolean") {
10121
10308
  let err59 = { instancePath: instancePath + "/showMetronomeMark", schemaPath: "#/properties/showMetronomeMark/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
10122
10309
  vErrors === null ? vErrors = [err59] : vErrors.push(err59), errors++;
10123
10310
  }
@@ -10155,12 +10342,12 @@ function validate402(data, { instancePath = "", parentData, parentDataProperty,
10155
10342
  let err66 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10156
10343
  vErrors === null ? vErrors = [err66] : vErrors.push(err66), errors++;
10157
10344
  }
10158
- return validate402.errors = vErrors, errors === 0;
10345
+ return validate404.errors = vErrors, errors === 0;
10159
10346
  }
10160
- validate402.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10161
- var schema387 = { type: "object", description: "A rehearsal mark displayed above the staff (e.g. 'A', 'B', '1'). Typically rendered in a box or circle.", required: ["text"], properties: { text: { $ref: "#/$defs/text-content" }, style: { type: "string", enum: ["boxed", "circled", "plain"], description: "Display style. Default: 'boxed'." }, manualOffset: { $ref: "#/$defs/sp-delta", description: "Manual [dx, dy] offset in spatia (sp); +x right, +y up." }, avoidCollisions: { type: "boolean", description: "Whether automatic collision avoidance may re-flow this mark. Default/unset: true." } }, additionalProperties: !1 };
10162
- function validate410(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10163
- let vErrors = null, errors = 0, evaluated0 = validate410.evaluated;
10347
+ validate404.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10348
+ var schema390 = { type: "object", description: "A rehearsal mark displayed above the staff (e.g. 'A', 'B', '1'). Typically rendered in a box or circle.", required: ["text"], properties: { text: { $ref: "#/$defs/text-content" }, style: { type: "string", enum: ["boxed", "circled", "plain"], description: "Display style. Default: 'boxed'." }, manualOffset: { $ref: "#/$defs/sp-delta", description: "Manual [dx, dy] offset in spatia (sp); +x right, +y up." }, avoidCollisions: { type: "boolean", description: "Whether automatic collision avoidance may re-flow this mark. Default/unset: true." } }, additionalProperties: !1 };
10349
+ function validate412(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10350
+ let vErrors = null, errors = 0, evaluated0 = validate412.evaluated;
10164
10351
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10165
10352
  if (data.text === void 0) {
10166
10353
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "text" }, message: "must have required property 'text'" };
@@ -10171,14 +10358,14 @@ function validate410(data, { instancePath = "", parentData, parentDataProperty,
10171
10358
  let err1 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
10172
10359
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
10173
10360
  }
10174
- if (data.text !== void 0 && (validate403(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.style !== void 0) {
10361
+ if (data.text !== void 0 && (validate405(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.style !== void 0) {
10175
10362
  let data1 = data.style;
10176
10363
  if (typeof data1 != "string") {
10177
10364
  let err2 = { instancePath: instancePath + "/style", schemaPath: "#/properties/style/type", keyword: "type", params: { type: "string" }, message: "must be string" };
10178
10365
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
10179
10366
  }
10180
10367
  if (!(data1 === "boxed" || data1 === "circled" || data1 === "plain")) {
10181
- let err3 = { instancePath: instancePath + "/style", schemaPath: "#/properties/style/enum", keyword: "enum", params: { allowedValues: schema387.properties.style.enum }, message: "must be equal to one of the allowed values" };
10368
+ let err3 = { instancePath: instancePath + "/style", schemaPath: "#/properties/style/enum", keyword: "enum", params: { allowedValues: schema390.properties.style.enum }, message: "must be equal to one of the allowed values" };
10182
10369
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
10183
10370
  }
10184
10371
  }
@@ -10212,12 +10399,12 @@ function validate410(data, { instancePath = "", parentData, parentDataProperty,
10212
10399
  let err9 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10213
10400
  vErrors === null ? vErrors = [err9] : vErrors.push(err9), errors++;
10214
10401
  }
10215
- return validate410.errors = vErrors, errors === 0;
10402
+ return validate412.errors = vErrors, errors === 0;
10216
10403
  }
10217
- validate410.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10218
- var schema390 = { type: "object", description: "Authored display text owned by one navigation marker. The owning marker remains authoritative for playback and navigation.", required: ["content", "placement"], properties: { content: { $ref: "#/$defs/text-content", description: "Ordered authored text and SMuFL glyph runs." }, placement: { type: "string", enum: ["before", "after", "replace"], description: "Whether authored content precedes, follows, or replaces the marker's generated glyph or label." } }, additionalProperties: !1 };
10219
- function validate414(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10220
- let vErrors = null, errors = 0, evaluated0 = validate414.evaluated;
10404
+ validate412.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10405
+ var schema393 = { type: "object", description: "Authored display text owned by one navigation marker. The owning marker remains authoritative for playback and navigation.", required: ["content", "placement"], properties: { content: { $ref: "#/$defs/text-content", description: "Ordered authored text and SMuFL glyph runs." }, placement: { type: "string", enum: ["before", "after", "replace"], description: "Whether authored content precedes, follows, or replaces the marker's generated glyph or label." } }, additionalProperties: !1 };
10406
+ function validate416(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10407
+ let vErrors = null, errors = 0, evaluated0 = validate416.evaluated;
10221
10408
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10222
10409
  if (data.content === void 0) {
10223
10410
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "content" }, message: "must have required property 'content'" };
@@ -10232,14 +10419,14 @@ function validate414(data, { instancePath = "", parentData, parentDataProperty,
10232
10419
  let err2 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
10233
10420
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
10234
10421
  }
10235
- if (data.content !== void 0 && (validate403(data.content, { instancePath: instancePath + "/content", parentData: data, parentDataProperty: "content", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.placement !== void 0) {
10422
+ if (data.content !== void 0 && (validate405(data.content, { instancePath: instancePath + "/content", parentData: data, parentDataProperty: "content", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.placement !== void 0) {
10236
10423
  let data1 = data.placement;
10237
10424
  if (typeof data1 != "string") {
10238
10425
  let err3 = { instancePath: instancePath + "/placement", schemaPath: "#/properties/placement/type", keyword: "type", params: { type: "string" }, message: "must be string" };
10239
10426
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
10240
10427
  }
10241
10428
  if (!(data1 === "before" || data1 === "after" || data1 === "replace")) {
10242
- let err4 = { instancePath: instancePath + "/placement", schemaPath: "#/properties/placement/enum", keyword: "enum", params: { allowedValues: schema390.properties.placement.enum }, message: "must be equal to one of the allowed values" };
10429
+ let err4 = { instancePath: instancePath + "/placement", schemaPath: "#/properties/placement/enum", keyword: "enum", params: { allowedValues: schema393.properties.placement.enum }, message: "must be equal to one of the allowed values" };
10243
10430
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
10244
10431
  }
10245
10432
  }
@@ -10247,11 +10434,11 @@ function validate414(data, { instancePath = "", parentData, parentDataProperty,
10247
10434
  let err5 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10248
10435
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
10249
10436
  }
10250
- return validate414.errors = vErrors, errors === 0;
10437
+ return validate416.errors = vErrors, errors === 0;
10251
10438
  }
10252
- validate414.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10253
- function validate413(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10254
- let vErrors = null, errors = 0, evaluated0 = validate413.evaluated;
10439
+ validate416.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10440
+ function validate415(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10441
+ let vErrors = null, errors = 0, evaluated0 = validate415.evaluated;
10255
10442
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10256
10443
  if (Object.keys(data).length < 1) {
10257
10444
  let err0 = { instancePath, schemaPath: "#/minProperties", keyword: "minProperties", params: { limit: 1 }, message: "must NOT have fewer than 1 properties" };
@@ -10262,18 +10449,18 @@ function validate413(data, { instancePath = "", parentData, parentDataProperty,
10262
10449
  let err1 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
10263
10450
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
10264
10451
  }
10265
- data.segno !== void 0 && (validate414(data.segno, { instancePath: instancePath + "/segno", parentData: data, parentDataProperty: "segno", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate414.errors : vErrors.concat(validate414.errors), errors = vErrors.length)), data.coda !== void 0 && (validate414(data.coda, { instancePath: instancePath + "/coda", parentData: data, parentDataProperty: "coda", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate414.errors : vErrors.concat(validate414.errors), errors = vErrors.length)), data.fine !== void 0 && (validate414(data.fine, { instancePath: instancePath + "/fine", parentData: data, parentDataProperty: "fine", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate414.errors : vErrors.concat(validate414.errors), errors = vErrors.length)), data.jump !== void 0 && (validate414(data.jump, { instancePath: instancePath + "/jump", parentData: data, parentDataProperty: "jump", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate414.errors : vErrors.concat(validate414.errors), errors = vErrors.length));
10452
+ data.segno !== void 0 && (validate416(data.segno, { instancePath: instancePath + "/segno", parentData: data, parentDataProperty: "segno", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate416.errors : vErrors.concat(validate416.errors), errors = vErrors.length)), data.coda !== void 0 && (validate416(data.coda, { instancePath: instancePath + "/coda", parentData: data, parentDataProperty: "coda", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate416.errors : vErrors.concat(validate416.errors), errors = vErrors.length)), data.fine !== void 0 && (validate416(data.fine, { instancePath: instancePath + "/fine", parentData: data, parentDataProperty: "fine", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate416.errors : vErrors.concat(validate416.errors), errors = vErrors.length)), data.jump !== void 0 && (validate416(data.jump, { instancePath: instancePath + "/jump", parentData: data, parentDataProperty: "jump", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate416.errors : vErrors.concat(validate416.errors), errors = vErrors.length));
10266
10453
  } else {
10267
10454
  let err2 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10268
10455
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
10269
10456
  }
10270
- return validate413.errors = vErrors, errors === 0;
10457
+ return validate415.errors = vErrors, errors === 0;
10271
10458
  }
10272
- validate413.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10273
- var schema392 = { type: "object", description: "Optional shared frame presentation on staff text. No width means natural width; a staff-space width enables word wrapping. Height is automatic.", properties: { width: { type: "object", required: ["unit", "value"], properties: { unit: { const: "staffSpaces" }, value: { type: "number", exclusiveMinimum: 0 } }, additionalProperties: !1 }, horizontalAlignment: { type: "string", enum: ["left", "center", "right"] }, paragraphJustification: { type: "string", enum: ["left", "center", "right", "justify"] }, padding: { type: "number", minimum: 0 }, border: { type: "string", enum: ["none", "solid"] }, eraseBackground: { type: "boolean", description: "Erase underlying ink within the frame using the surface background. Omitted or false preserves underlying ink; no color is stored." } }, additionalProperties: !1 };
10274
- var schema394 = { type: "string", enum: ["below", "above"], description: "Placement of a text expression relative to the staff. Default: 'below'." };
10275
- function validate421(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10276
- let vErrors = null, errors = 0, evaluated0 = validate421.evaluated;
10459
+ validate415.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10460
+ var schema395 = { type: "object", description: "Optional shared frame presentation on staff text. No width means natural width; a staff-space width enables word wrapping. Height is automatic.", properties: { width: { type: "object", required: ["unit", "value"], properties: { unit: { const: "staffSpaces" }, value: { type: "number", exclusiveMinimum: 0 } }, additionalProperties: !1 }, horizontalAlignment: { type: "string", enum: ["left", "center", "right"] }, paragraphJustification: { type: "string", enum: ["left", "center", "right", "justify"] }, padding: { type: "number", minimum: 0 }, border: { type: "string", enum: ["none", "solid"] }, eraseBackground: { type: "boolean", description: "Erase underlying ink within the frame using the surface background. Omitted or false preserves underlying ink; no color is stored." } }, additionalProperties: !1 };
10461
+ var schema397 = { type: "string", enum: ["below", "above"], description: "Placement of a text expression relative to the staff. Default: 'below'." };
10462
+ function validate423(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10463
+ let vErrors = null, errors = 0, evaluated0 = validate423.evaluated;
10277
10464
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10278
10465
  if (data.id === void 0) {
10279
10466
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "id" }, message: "must have required property 'id'" };
@@ -10304,7 +10491,7 @@ function validate421(data, { instancePath = "", parentData, parentDataProperty,
10304
10491
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
10305
10492
  }
10306
10493
  }
10307
- if (data.text !== void 0 && (validate403(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.frame !== void 0) {
10494
+ if (data.text !== void 0 && (validate405(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.frame !== void 0) {
10308
10495
  let data2 = data.frame;
10309
10496
  if (data2 && typeof data2 == "object" && !Array.isArray(data2)) {
10310
10497
  for (let key1 in data2)
@@ -10356,7 +10543,7 @@ function validate421(data, { instancePath = "", parentData, parentDataProperty,
10356
10543
  vErrors === null ? vErrors = [err14] : vErrors.push(err14), errors++;
10357
10544
  }
10358
10545
  if (!(data6 === "left" || data6 === "center" || data6 === "right")) {
10359
- let err15 = { instancePath: instancePath + "/frame/horizontalAlignment", schemaPath: "#/$defs/staff-text-frame-presentation/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema392.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
10546
+ let err15 = { instancePath: instancePath + "/frame/horizontalAlignment", schemaPath: "#/$defs/staff-text-frame-presentation/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema395.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
10360
10547
  vErrors === null ? vErrors = [err15] : vErrors.push(err15), errors++;
10361
10548
  }
10362
10549
  }
@@ -10367,7 +10554,7 @@ function validate421(data, { instancePath = "", parentData, parentDataProperty,
10367
10554
  vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
10368
10555
  }
10369
10556
  if (!(data7 === "left" || data7 === "center" || data7 === "right" || data7 === "justify")) {
10370
- let err17 = { instancePath: instancePath + "/frame/paragraphJustification", schemaPath: "#/$defs/staff-text-frame-presentation/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema392.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
10557
+ let err17 = { instancePath: instancePath + "/frame/paragraphJustification", schemaPath: "#/$defs/staff-text-frame-presentation/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema395.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
10371
10558
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
10372
10559
  }
10373
10560
  }
@@ -10390,7 +10577,7 @@ function validate421(data, { instancePath = "", parentData, parentDataProperty,
10390
10577
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
10391
10578
  }
10392
10579
  if (!(data9 === "none" || data9 === "solid")) {
10393
- let err21 = { instancePath: instancePath + "/frame/border", schemaPath: "#/$defs/staff-text-frame-presentation/properties/border/enum", keyword: "enum", params: { allowedValues: schema392.properties.border.enum }, message: "must be equal to one of the allowed values" };
10580
+ let err21 = { instancePath: instancePath + "/frame/border", schemaPath: "#/$defs/staff-text-frame-presentation/properties/border/enum", keyword: "enum", params: { allowedValues: schema395.properties.border.enum }, message: "must be equal to one of the allowed values" };
10394
10581
  vErrors === null ? vErrors = [err21] : vErrors.push(err21), errors++;
10395
10582
  }
10396
10583
  }
@@ -10479,7 +10666,7 @@ function validate421(data, { instancePath = "", parentData, parentDataProperty,
10479
10666
  vErrors === null ? vErrors = [err35] : vErrors.push(err35), errors++;
10480
10667
  }
10481
10668
  if (!(data17 === "below" || data17 === "above")) {
10482
- let err36 = { instancePath: instancePath + "/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema394.enum }, message: "must be equal to one of the allowed values" };
10669
+ let err36 = { instancePath: instancePath + "/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema397.enum }, message: "must be equal to one of the allowed values" };
10483
10670
  vErrors === null ? vErrors = [err36] : vErrors.push(err36), errors++;
10484
10671
  }
10485
10672
  }
@@ -10513,12 +10700,12 @@ function validate421(data, { instancePath = "", parentData, parentDataProperty,
10513
10700
  let err42 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10514
10701
  vErrors === null ? vErrors = [err42] : vErrors.push(err42), errors++;
10515
10702
  }
10516
- return validate421.errors = vErrors, errors === 0;
10703
+ return validate423.errors = vErrors, errors === 0;
10517
10704
  }
10518
- validate421.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10519
- var schema396 = { type: "object", description: "A gradual tempo change (ritardando / accelerando) playback curve. MNX has no gradual-tempo field, so Viritura models the playback ramp as a vendor extension on the global measure where it begins. The tempo ramps linearly in BPM from the tempo active at `position` (or `startBpm` if given) to `endBpm` at `end`. This is playback data only; the printed 'rit.'/'accel.' text is an ordinary text-expression.", required: ["position", "end", "endBpm"], properties: { position: { $ref: "#/$defs/rhythmic-position", description: "Start position within this measure." }, end: { $ref: "#/$defs/measure-rhythmic-position", description: "End position (may reference a later measure)." }, endBpm: { type: "number", exclusiveMinimum: 0, description: "Quarter-note BPM reached at the end of the ramp." }, startBpm: { type: "number", exclusiveMinimum: 0, description: "Optional start BPM (quarter-note). Defaults to the tempo active at `position`." }, kind: { type: "string", enum: ["rit", "accel"], description: "Optional classification. Cosmetic only; the BPM direction determines the audible behavior." } }, additionalProperties: !1 };
10520
- function validate425(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10521
- let vErrors = null, errors = 0, evaluated0 = validate425.evaluated;
10705
+ validate423.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10706
+ var schema399 = { type: "object", description: "A gradual tempo change (ritardando / accelerando) playback curve. MNX has no gradual-tempo field, so Viritura models the playback ramp as a vendor extension on the global measure where it begins. The tempo ramps linearly in BPM from the tempo active at `position` (or `startBpm` if given) to `endBpm` at `end`. This is playback data only; the printed 'rit.'/'accel.' text is an ordinary text-expression.", required: ["position", "end", "endBpm"], properties: { position: { $ref: "#/$defs/rhythmic-position", description: "Start position within this measure." }, end: { $ref: "#/$defs/measure-rhythmic-position", description: "End position (may reference a later measure)." }, endBpm: { type: "number", exclusiveMinimum: 0, description: "Quarter-note BPM reached at the end of the ramp." }, startBpm: { type: "number", exclusiveMinimum: 0, description: "Optional start BPM (quarter-note). Defaults to the tempo active at `position`." }, kind: { type: "string", enum: ["rit", "accel"], description: "Optional classification. Cosmetic only; the BPM direction determines the audible behavior." } }, additionalProperties: !1 };
10707
+ function validate427(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10708
+ let vErrors = null, errors = 0, evaluated0 = validate427.evaluated;
10522
10709
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10523
10710
  if (data.measure === void 0) {
10524
10711
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "measure" }, message: "must have required property 'measure'" };
@@ -10582,11 +10769,11 @@ function validate425(data, { instancePath = "", parentData, parentDataProperty,
10582
10769
  let err11 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10583
10770
  vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
10584
10771
  }
10585
- return validate425.errors = vErrors, errors === 0;
10772
+ return validate427.errors = vErrors, errors === 0;
10586
10773
  }
10587
- validate425.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10588
- function validate424(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10589
- let vErrors = null, errors = 0, evaluated0 = validate424.evaluated;
10774
+ validate427.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10775
+ function validate426(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10776
+ let vErrors = null, errors = 0, evaluated0 = validate426.evaluated;
10590
10777
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10591
10778
  if (data.position === void 0) {
10592
10779
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "position" }, message: "must have required property 'position'" };
@@ -10646,7 +10833,7 @@ function validate424(data, { instancePath = "", parentData, parentDataProperty,
10646
10833
  vErrors === null ? vErrors = [err10] : vErrors.push(err10), errors++;
10647
10834
  }
10648
10835
  }
10649
- if (data.end !== void 0 && (validate425(data.end, { instancePath: instancePath + "/end", parentData: data, parentDataProperty: "end", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate425.errors : vErrors.concat(validate425.errors), errors = vErrors.length)), data.endBpm !== void 0) {
10836
+ if (data.end !== void 0 && (validate427(data.end, { instancePath: instancePath + "/end", parentData: data, parentDataProperty: "end", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate427.errors : vErrors.concat(validate427.errors), errors = vErrors.length)), data.endBpm !== void 0) {
10650
10837
  let data4 = data.endBpm;
10651
10838
  if (typeof data4 == "number") {
10652
10839
  if (data4 <= 0 || isNaN(data4)) {
@@ -10677,7 +10864,7 @@ function validate424(data, { instancePath = "", parentData, parentDataProperty,
10677
10864
  vErrors === null ? vErrors = [err15] : vErrors.push(err15), errors++;
10678
10865
  }
10679
10866
  if (!(data6 === "rit" || data6 === "accel")) {
10680
- let err16 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/enum", keyword: "enum", params: { allowedValues: schema396.properties.kind.enum }, message: "must be equal to one of the allowed values" };
10867
+ let err16 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/enum", keyword: "enum", params: { allowedValues: schema399.properties.kind.enum }, message: "must be equal to one of the allowed values" };
10681
10868
  vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
10682
10869
  }
10683
10870
  }
@@ -10685,12 +10872,12 @@ function validate424(data, { instancePath = "", parentData, parentDataProperty,
10685
10872
  let err17 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10686
10873
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
10687
10874
  }
10688
- return validate424.errors = vErrors, errors === 0;
10875
+ return validate426.errors = vErrors, errors === 0;
10689
10876
  }
10690
- validate424.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10691
- var schema400 = { type: "object", description: "A score-wide harmony event on a global measure. Either a structured root or authored rawText is required; rawText may preserve malformed or unrecognized symbols and no-chord (NC) declarations without inventing a root.", $comment: "The parser enforces root or rawText. The code generators cannot represent the anyOf required-property constraint while preserving both fields.", required: ["position"], properties: { position: { $ref: "#/$defs/rhythmic-position", description: "Rhythmic position within the measure." }, root: { $ref: "#/$defs/chord-root", description: "Structured root note, optional for raw authored symbols and no-chord declarations. When present, it must agree semantically with rawText." }, rawText: { type: "string", description: "Original authored chord text, preserved verbatim even when structured fields are available. Rootless text preserves malformed or unrecognized symbols and NC. The semantic resolver checks agreement with any structured fields." }, quality: { $ref: "#/$defs/chord-quality" }, kindText: { type: "string", description: "Authored quality spelling retained alongside the normalized quality." }, bass: { $ref: "#/$defs/chord-root", description: "Bass note for slash chords (e.g. the 'E' in 'C/E')." }, extension: { type: "integer", enum: [6, 7, 9, 11, 13], description: "Chord extension (6th, 7th, 9th, 11th, 13th)." }, textOverride: { type: "string", description: "Visual override of the computed display text, not a semantic replacement. The semantic resolver rejects parseable contradictions or unsupported non-equivalent overrides." } }, additionalProperties: !1 }, schema402 = { type: "object", description: "Root or bass note of a chord symbol.", required: ["step"], properties: { step: { type: "string", enum: ["A", "B", "C", "D", "E", "F", "G"], description: "Note letter name." }, alter: { type: "integer", description: "Chromatic alteration in semitones (-1 = flat, 1 = sharp)." } }, additionalProperties: !1 }, schema403 = { type: "string", enum: ["major", "minor", "dominant", "diminished", "augmented", "half-diminished", "minor-major", "power", "suspended2", "suspended4", "other"], description: "Harmonic quality of a chord symbol." };
10692
- function validate428(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10693
- let vErrors = null, errors = 0, evaluated0 = validate428.evaluated;
10877
+ validate426.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10878
+ var schema403 = { type: "object", description: "A score-wide harmony event on a global measure. Either a structured root or authored rawText is required; rawText may preserve malformed or unrecognized symbols and no-chord (NC) declarations without inventing a root.", $comment: "The parser enforces root or rawText. The code generators cannot represent the anyOf required-property constraint while preserving both fields.", required: ["position"], properties: { position: { $ref: "#/$defs/rhythmic-position", description: "Rhythmic position within the measure." }, root: { $ref: "#/$defs/chord-root", description: "Structured root note, optional for raw authored symbols and no-chord declarations. When present, it must agree semantically with rawText." }, rawText: { type: "string", description: "Original authored chord text, preserved verbatim even when structured fields are available. Rootless text preserves malformed or unrecognized symbols and NC. The semantic resolver checks agreement with any structured fields." }, quality: { $ref: "#/$defs/chord-quality" }, kindText: { type: "string", description: "Authored quality spelling retained alongside the normalized quality." }, bass: { $ref: "#/$defs/chord-root", description: "Bass note for slash chords (e.g. the 'E' in 'C/E')." }, extension: { type: "integer", enum: [6, 7, 9, 11, 13], description: "Chord extension (6th, 7th, 9th, 11th, 13th)." }, textOverride: { type: "string", description: "Visual override of the computed display text, not a semantic replacement. The semantic resolver rejects parseable contradictions or unsupported non-equivalent overrides." } }, additionalProperties: !1 }, schema405 = { type: "object", description: "Root or bass note of a chord symbol.", required: ["step"], properties: { step: { type: "string", enum: ["A", "B", "C", "D", "E", "F", "G"], description: "Note letter name." }, alter: { type: "integer", description: "Chromatic alteration in semitones (-1 = flat, 1 = sharp)." } }, additionalProperties: !1 }, schema406 = { type: "string", enum: ["major", "minor", "dominant", "diminished", "augmented", "half-diminished", "minor-major", "power", "suspended2", "suspended4", "other"], description: "Harmonic quality of a chord symbol." };
10879
+ function validate430(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10880
+ let vErrors = null, errors = 0, evaluated0 = validate430.evaluated;
10694
10881
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10695
10882
  if (data.position === void 0) {
10696
10883
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "position" }, message: "must have required property 'position'" };
@@ -10761,7 +10948,7 @@ function validate428(data, { instancePath = "", parentData, parentDataProperty,
10761
10948
  vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
10762
10949
  }
10763
10950
  if (!(data4 === "A" || data4 === "B" || data4 === "C" || data4 === "D" || data4 === "E" || data4 === "F" || data4 === "G")) {
10764
- let err12 = { instancePath: instancePath + "/root/step", schemaPath: "#/$defs/chord-root/properties/step/enum", keyword: "enum", params: { allowedValues: schema402.properties.step.enum }, message: "must be equal to one of the allowed values" };
10951
+ let err12 = { instancePath: instancePath + "/root/step", schemaPath: "#/$defs/chord-root/properties/step/enum", keyword: "enum", params: { allowedValues: schema405.properties.step.enum }, message: "must be equal to one of the allowed values" };
10765
10952
  vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
10766
10953
  }
10767
10954
  }
@@ -10788,7 +10975,7 @@ function validate428(data, { instancePath = "", parentData, parentDataProperty,
10788
10975
  vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
10789
10976
  }
10790
10977
  if (!(data7 === "major" || data7 === "minor" || data7 === "dominant" || data7 === "diminished" || data7 === "augmented" || data7 === "half-diminished" || data7 === "minor-major" || data7 === "power" || data7 === "suspended2" || data7 === "suspended4" || data7 === "other")) {
10791
- let err17 = { instancePath: instancePath + "/quality", schemaPath: "#/$defs/chord-quality/enum", keyword: "enum", params: { allowedValues: schema403.enum }, message: "must be equal to one of the allowed values" };
10978
+ let err17 = { instancePath: instancePath + "/quality", schemaPath: "#/$defs/chord-quality/enum", keyword: "enum", params: { allowedValues: schema406.enum }, message: "must be equal to one of the allowed values" };
10792
10979
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
10793
10980
  }
10794
10981
  }
@@ -10815,7 +11002,7 @@ function validate428(data, { instancePath = "", parentData, parentDataProperty,
10815
11002
  vErrors === null ? vErrors = [err21] : vErrors.push(err21), errors++;
10816
11003
  }
10817
11004
  if (!(data10 === "A" || data10 === "B" || data10 === "C" || data10 === "D" || data10 === "E" || data10 === "F" || data10 === "G")) {
10818
- let err22 = { instancePath: instancePath + "/bass/step", schemaPath: "#/$defs/chord-root/properties/step/enum", keyword: "enum", params: { allowedValues: schema402.properties.step.enum }, message: "must be equal to one of the allowed values" };
11005
+ let err22 = { instancePath: instancePath + "/bass/step", schemaPath: "#/$defs/chord-root/properties/step/enum", keyword: "enum", params: { allowedValues: schema405.properties.step.enum }, message: "must be equal to one of the allowed values" };
10819
11006
  vErrors === null ? vErrors = [err22] : vErrors.push(err22), errors++;
10820
11007
  }
10821
11008
  }
@@ -10838,7 +11025,7 @@ function validate428(data, { instancePath = "", parentData, parentDataProperty,
10838
11025
  vErrors === null ? vErrors = [err25] : vErrors.push(err25), errors++;
10839
11026
  }
10840
11027
  if (!(data12 === 6 || data12 === 7 || data12 === 9 || data12 === 11 || data12 === 13)) {
10841
- let err26 = { instancePath: instancePath + "/extension", schemaPath: "#/properties/extension/enum", keyword: "enum", params: { allowedValues: schema400.properties.extension.enum }, message: "must be equal to one of the allowed values" };
11028
+ let err26 = { instancePath: instancePath + "/extension", schemaPath: "#/properties/extension/enum", keyword: "enum", params: { allowedValues: schema403.properties.extension.enum }, message: "must be equal to one of the allowed values" };
10842
11029
  vErrors === null ? vErrors = [err26] : vErrors.push(err26), errors++;
10843
11030
  }
10844
11031
  }
@@ -10850,11 +11037,11 @@ function validate428(data, { instancePath = "", parentData, parentDataProperty,
10850
11037
  let err28 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10851
11038
  vErrors === null ? vErrors = [err28] : vErrors.push(err28), errors++;
10852
11039
  }
10853
- return validate428.errors = vErrors, errors === 0;
11040
+ return validate430.errors = vErrors, errors === 0;
10854
11041
  }
10855
- validate428.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10856
- function validate401(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10857
- let vErrors = null, errors = 0, evaluated0 = validate401.evaluated;
11042
+ validate430.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11043
+ function validate403(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11044
+ let vErrors = null, errors = 0, evaluated0 = validate403.evaluated;
10858
11045
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10859
11046
  for (let key0 in data)
10860
11047
  if (!(key0 === "tempos" || key0 === "rehearsalMark" || key0 === "markerText" || key0 === "systemText" || key0 === "gradualTempo" || key0 === "chordSymbols" || key0 === "senzaMisura")) {
@@ -10870,29 +11057,29 @@ function validate401(data, { instancePath = "", parentData, parentDataProperty,
10870
11057
  }
10871
11058
  let len0 = data0.length;
10872
11059
  for (let i0 = 0; i0 < len0; i0++)
10873
- validate402(data0[i0], { instancePath: instancePath + "/tempos/" + i0, parentData: data0, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate402.errors : vErrors.concat(validate402.errors), errors = vErrors.length);
11060
+ validate404(data0[i0], { instancePath: instancePath + "/tempos/" + i0, parentData: data0, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate404.errors : vErrors.concat(validate404.errors), errors = vErrors.length);
10874
11061
  } else {
10875
11062
  let err2 = { instancePath: instancePath + "/tempos", schemaPath: "#/properties/tempos/type", keyword: "type", params: { type: "array" }, message: "must be array" };
10876
11063
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
10877
11064
  }
10878
11065
  }
10879
- if (data.rehearsalMark !== void 0 && (validate410(data.rehearsalMark, { instancePath: instancePath + "/rehearsalMark", parentData: data, parentDataProperty: "rehearsalMark", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate410.errors : vErrors.concat(validate410.errors), errors = vErrors.length)), data.markerText !== void 0 && (validate413(data.markerText, { instancePath: instancePath + "/markerText", parentData: data, parentDataProperty: "markerText", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate413.errors : vErrors.concat(validate413.errors), errors = vErrors.length)), data.systemText !== void 0) {
11066
+ if (data.rehearsalMark !== void 0 && (validate412(data.rehearsalMark, { instancePath: instancePath + "/rehearsalMark", parentData: data, parentDataProperty: "rehearsalMark", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate412.errors : vErrors.concat(validate412.errors), errors = vErrors.length)), data.markerText !== void 0 && (validate415(data.markerText, { instancePath: instancePath + "/markerText", parentData: data, parentDataProperty: "markerText", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate415.errors : vErrors.concat(validate415.errors), errors = vErrors.length)), data.systemText !== void 0) {
10880
11067
  let data4 = data.systemText;
10881
11068
  if (Array.isArray(data4)) {
10882
11069
  let len1 = data4.length;
10883
11070
  for (let i1 = 0; i1 < len1; i1++)
10884
- validate421(data4[i1], { instancePath: instancePath + "/systemText/" + i1, parentData: data4, parentDataProperty: i1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate421.errors : vErrors.concat(validate421.errors), errors = vErrors.length);
11071
+ validate423(data4[i1], { instancePath: instancePath + "/systemText/" + i1, parentData: data4, parentDataProperty: i1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate423.errors : vErrors.concat(validate423.errors), errors = vErrors.length);
10885
11072
  } else {
10886
11073
  let err3 = { instancePath: instancePath + "/systemText", schemaPath: "#/properties/systemText/type", keyword: "type", params: { type: "array" }, message: "must be array" };
10887
11074
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
10888
11075
  }
10889
11076
  }
10890
- if (data.gradualTempo !== void 0 && (validate424(data.gradualTempo, { instancePath: instancePath + "/gradualTempo", parentData: data, parentDataProperty: "gradualTempo", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate424.errors : vErrors.concat(validate424.errors), errors = vErrors.length)), data.chordSymbols !== void 0) {
11077
+ if (data.gradualTempo !== void 0 && (validate426(data.gradualTempo, { instancePath: instancePath + "/gradualTempo", parentData: data, parentDataProperty: "gradualTempo", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate426.errors : vErrors.concat(validate426.errors), errors = vErrors.length)), data.chordSymbols !== void 0) {
10891
11078
  let data7 = data.chordSymbols;
10892
11079
  if (Array.isArray(data7)) {
10893
11080
  let len2 = data7.length;
10894
11081
  for (let i2 = 0; i2 < len2; i2++)
10895
- validate428(data7[i2], { instancePath: instancePath + "/chordSymbols/" + i2, parentData: data7, parentDataProperty: i2, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate428.errors : vErrors.concat(validate428.errors), errors = vErrors.length);
11082
+ validate430(data7[i2], { instancePath: instancePath + "/chordSymbols/" + i2, parentData: data7, parentDataProperty: i2, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate430.errors : vErrors.concat(validate430.errors), errors = vErrors.length);
10896
11083
  } else {
10897
11084
  let err4 = { instancePath: instancePath + "/chordSymbols", schemaPath: "#/properties/chordSymbols/type", keyword: "type", params: { type: "array" }, message: "must be array" };
10898
11085
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
@@ -10913,11 +11100,11 @@ function validate401(data, { instancePath = "", parentData, parentDataProperty,
10913
11100
  let err7 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10914
11101
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
10915
11102
  }
10916
- return validate401.errors = vErrors, errors === 0;
11103
+ return validate403.errors = vErrors, errors === 0;
10917
11104
  }
10918
- validate401.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10919
- function validate430(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10920
- let vErrors = null, errors = 0, evaluated0 = validate430.evaluated;
11105
+ validate403.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11106
+ function validate432(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11107
+ let vErrors = null, errors = 0, evaluated0 = validate432.evaluated;
10921
11108
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10922
11109
  for (let key0 in data)
10923
11110
  if (!(key0 === "beatStructure" || key0 === "groupingDisplay" || key0 === "display")) {
@@ -10974,11 +11161,11 @@ function validate430(data, { instancePath = "", parentData, parentDataProperty,
10974
11161
  let err9 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
10975
11162
  vErrors === null ? vErrors = [err9] : vErrors.push(err9), errors++;
10976
11163
  }
10977
- return validate430.errors = vErrors, errors === 0;
11164
+ return validate432.errors = vErrors, errors === 0;
10978
11165
  }
10979
- validate430.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
10980
- function validate431(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
10981
- let vErrors = null, errors = 0, evaluated0 = validate431.evaluated;
11166
+ validate432.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11167
+ function validate433(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11168
+ let vErrors = null, errors = 0, evaluated0 = validate433.evaluated;
10982
11169
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
10983
11170
  for (let key0 in data)
10984
11171
  if (key0 !== "atonal") {
@@ -11000,11 +11187,11 @@ function validate431(data, { instancePath = "", parentData, parentDataProperty,
11000
11187
  let err3 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
11001
11188
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
11002
11189
  }
11003
- return validate431.errors = vErrors, errors === 0;
11190
+ return validate433.errors = vErrors, errors === 0;
11004
11191
  }
11005
- validate431.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11006
- function validate432(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11007
- let vErrors = null, errors = 0, evaluated0 = validate432.evaluated;
11192
+ validate433.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11193
+ function validate434(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11194
+ let vErrors = null, errors = 0, evaluated0 = validate434.evaluated;
11008
11195
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
11009
11196
  for (let key0 in data)
11010
11197
  if (!(key0 === "swing" || key0 === "text" || key0 === "showMetronomeMark" || key0 === "showText" || key0 === "manualOffset" || key0 === "avoidCollisions")) {
@@ -11080,7 +11267,7 @@ function validate432(data, { instancePath = "", parentData, parentDataProperty,
11080
11267
  vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
11081
11268
  }
11082
11269
  if (!(data3 === "eighth" || data3 === "16th")) {
11083
- let err13 = { instancePath: instancePath + "/swing/subdivision", schemaPath: "#/$defs/swing/oneOf/1/properties/subdivision/enum", keyword: "enum", params: { allowedValues: schema379.oneOf[1].properties.subdivision.enum }, message: "must be equal to one of the allowed values" };
11270
+ let err13 = { instancePath: instancePath + "/swing/subdivision", schemaPath: "#/$defs/swing/oneOf/1/properties/subdivision/enum", keyword: "enum", params: { allowedValues: schema382.oneOf[1].properties.subdivision.enum }, message: "must be equal to one of the allowed values" };
11084
11271
  vErrors === null ? vErrors = [err13] : vErrors.push(err13), errors++;
11085
11272
  }
11086
11273
  }
@@ -11130,7 +11317,7 @@ function validate432(data, { instancePath = "", parentData, parentDataProperty,
11130
11317
  vErrors === null ? vErrors = [err21] : vErrors.push(err21), errors++;
11131
11318
  }
11132
11319
  }
11133
- if (data.text !== void 0 && (validate403(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.showMetronomeMark !== void 0 && typeof data.showMetronomeMark != "boolean") {
11320
+ if (data.text !== void 0 && (validate405(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.showMetronomeMark !== void 0 && typeof data.showMetronomeMark != "boolean") {
11134
11321
  let err22 = { instancePath: instancePath + "/showMetronomeMark", schemaPath: "#/properties/showMetronomeMark/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" };
11135
11322
  vErrors === null ? vErrors = [err22] : vErrors.push(err22), errors++;
11136
11323
  }
@@ -11168,12 +11355,12 @@ function validate432(data, { instancePath = "", parentData, parentDataProperty,
11168
11355
  let err29 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
11169
11356
  vErrors === null ? vErrors = [err29] : vErrors.push(err29), errors++;
11170
11357
  }
11171
- return validate432.errors = vErrors, errors === 0;
11358
+ return validate434.errors = vErrors, errors === 0;
11172
11359
  }
11173
- validate432.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11174
- var swing = validate434;
11175
- function validate434(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11176
- let vErrors = null, errors = 0, evaluated0 = validate434.evaluated;
11360
+ validate434.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11361
+ var swing = validate436;
11362
+ function validate436(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11363
+ let vErrors = null, errors = 0, evaluated0 = validate436.evaluated;
11177
11364
  evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0);
11178
11365
  let _errs0 = errors, valid0 = !1, passing0 = null, _errs1 = errors;
11179
11366
  if (data && typeof data == "object" && !Array.isArray(data)) {
@@ -11243,7 +11430,7 @@ function validate434(data, { instancePath = "", parentData, parentDataProperty,
11243
11430
  vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
11244
11431
  }
11245
11432
  if (!(data2 === "eighth" || data2 === "16th")) {
11246
- let err12 = { instancePath: instancePath + "/subdivision", schemaPath: "#/oneOf/1/properties/subdivision/enum", keyword: "enum", params: { allowedValues: schema379.oneOf[1].properties.subdivision.enum }, message: "must be equal to one of the allowed values" };
11433
+ let err12 = { instancePath: instancePath + "/subdivision", schemaPath: "#/oneOf/1/properties/subdivision/enum", keyword: "enum", params: { allowedValues: schema382.oneOf[1].properties.subdivision.enum }, message: "must be equal to one of the allowed values" };
11247
11434
  vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
11248
11435
  }
11249
11436
  }
@@ -11292,12 +11479,12 @@ function validate434(data, { instancePath = "", parentData, parentDataProperty,
11292
11479
  let err20 = { instancePath, schemaPath: "#/oneOf", keyword: "oneOf", params: { passingSchemas: passing0 }, message: "must match exactly one schema in oneOf" };
11293
11480
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
11294
11481
  }
11295
- return validate434.errors = vErrors, evaluated0.props = props0, errors === 0;
11482
+ return validate436.errors = vErrors, evaluated0.props = props0, errors === 0;
11296
11483
  }
11297
- validate434.evaluated = { dynamicProps: !0, dynamicItems: !1 };
11298
- var schema412 = { type: "object", description: "Viritura vendor extensions on an MNX part object (the `_x.viritura` dict on a part). Carries instrument identity so the editor and audio engine can resolve a part to a stable instrument without fuzzy name matching, plus its spatial-audio stage placement.", properties: { instrumentId: { type: "string", description: "MusicXML standard sound ID identifying the part's instrument (e.g. 'wind.flutes.flute', 'wind.reed.clarinet.bflat'). With `instruments`, this is the initial instrument's ID." }, instruments: { type: "object", description: "Provisional: instruments this part can switch between, keyed by a document-local key referenced by `initialInstrument` and part-measure `instrumentChanges`.", minProperties: 1, additionalProperties: { $ref: "#/$defs/instrument-definition" } }, initialInstrument: { type: "string", minLength: 1, description: "Key into `instruments` for the instrument active at the start of the part. Required when `instruments` is present." }, midiProgram: { type: "integer", minimum: 0, maximum: 127, description: "General-MIDI program (0..127). Used directly by the audio engine." }, family: { type: "string", description: "Instrument family for spatial placement / catalog routing." }, spatial: { $ref: "#/$defs/stage-position", description: "Spatial-audio stage position in concert-hall meters, persisted from Play mode so a user's instrument arrangement survives reload." }, chordSymbolVisibility: { type: "string", enum: ["auto", "show", "hide"], description: "Source-part display policy for the score-wide harmony track. Unset or auto uses automatic placement; show or hide explicitly controls this part. This is not a layout-staff or per-chord switch." } }, additionalProperties: !1 };
11299
- function validate436(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11300
- let vErrors = null, errors = 0, evaluated0 = validate436.evaluated;
11484
+ validate436.evaluated = { dynamicProps: !0, dynamicItems: !1 };
11485
+ var schema415 = { type: "object", description: "Viritura vendor extensions on an MNX part object (the `_x.viritura` dict on a part). Carries instrument identity so the editor and audio engine can resolve a part to a stable instrument without fuzzy name matching, plus its spatial-audio stage placement.", properties: { instrumentId: { type: "string", description: "MusicXML standard sound ID identifying the part's instrument (e.g. 'wind.flutes.flute', 'wind.reed.clarinet.bflat'). With `instruments`, this is the initial instrument's ID." }, instruments: { type: "object", description: "Provisional: instruments this part can switch between, keyed by a document-local key referenced by `initialInstrument` and part-measure `instrumentChanges`.", minProperties: 1, additionalProperties: { $ref: "#/$defs/instrument-definition" } }, initialInstrument: { type: "string", minLength: 1, description: "Key into `instruments` for the instrument active at the start of the part. Required when `instruments` is present." }, midiProgram: { type: "integer", minimum: 0, maximum: 127, description: "General-MIDI program (0..127). Used directly by the audio engine." }, family: { type: "string", description: "Instrument family for spatial placement / catalog routing." }, spatial: { $ref: "#/$defs/stage-position", description: "Spatial-audio stage position in concert-hall meters, persisted from Play mode so a user's instrument arrangement survives reload." }, chordSymbolVisibility: { type: "string", enum: ["auto", "show", "hide"], description: "Source-part display policy for the score-wide harmony track. Unset or auto uses automatic placement; show or hide explicitly controls this part. This is not a layout-staff or per-chord switch." } }, additionalProperties: !1 };
11486
+ function validate438(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11487
+ let vErrors = null, errors = 0, evaluated0 = validate438.evaluated;
11301
11488
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
11302
11489
  if (data.instrumentId === void 0) {
11303
11490
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "instrumentId" }, message: "must have required property 'instrumentId'" };
@@ -11412,11 +11599,11 @@ function validate436(data, { instancePath = "", parentData, parentDataProperty,
11412
11599
  let err20 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
11413
11600
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
11414
11601
  }
11415
- return validate436.errors = vErrors, errors === 0;
11602
+ return validate438.errors = vErrors, errors === 0;
11416
11603
  }
11417
- validate436.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11418
- function validate435(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11419
- let vErrors = null, errors = 0, evaluated0 = validate435.evaluated;
11604
+ validate438.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11605
+ function validate437(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11606
+ let vErrors = null, errors = 0, evaluated0 = validate437.evaluated;
11420
11607
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
11421
11608
  for (let key0 in data)
11422
11609
  if (!(key0 === "instrumentId" || key0 === "instruments" || key0 === "initialInstrument" || key0 === "midiProgram" || key0 === "family" || key0 === "spatial" || key0 === "chordSymbolVisibility")) {
@@ -11435,7 +11622,7 @@ function validate435(data, { instancePath = "", parentData, parentDataProperty,
11435
11622
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
11436
11623
  }
11437
11624
  for (let key1 in data1)
11438
- validate436(data1[key1], { instancePath: instancePath + "/instruments/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data1, parentDataProperty: key1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate436.errors : vErrors.concat(validate436.errors), errors = vErrors.length);
11625
+ validate438(data1[key1], { instancePath: instancePath + "/instruments/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data1, parentDataProperty: key1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate438.errors : vErrors.concat(validate438.errors), errors = vErrors.length);
11439
11626
  } else {
11440
11627
  let err3 = { instancePath: instancePath + "/instruments", schemaPath: "#/properties/instruments/type", keyword: "type", params: { type: "object" }, message: "must be object" };
11441
11628
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
@@ -11510,7 +11697,7 @@ function validate435(data, { instancePath = "", parentData, parentDataProperty,
11510
11697
  vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
11511
11698
  }
11512
11699
  if (!(data9 === "auto" || data9 === "show" || data9 === "hide")) {
11513
- let err17 = { instancePath: instancePath + "/chordSymbolVisibility", schemaPath: "#/properties/chordSymbolVisibility/enum", keyword: "enum", params: { allowedValues: schema412.properties.chordSymbolVisibility.enum }, message: "must be equal to one of the allowed values" };
11700
+ let err17 = { instancePath: instancePath + "/chordSymbolVisibility", schemaPath: "#/properties/chordSymbolVisibility/enum", keyword: "enum", params: { allowedValues: schema415.properties.chordSymbolVisibility.enum }, message: "must be equal to one of the allowed values" };
11514
11701
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
11515
11702
  }
11516
11703
  }
@@ -11518,12 +11705,12 @@ function validate435(data, { instancePath = "", parentData, parentDataProperty,
11518
11705
  let err18 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
11519
11706
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
11520
11707
  }
11521
- return validate435.errors = vErrors, errors === 0;
11708
+ return validate437.errors = vErrors, errors === 0;
11522
11709
  }
11523
- validate435.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11524
- var schema417 = { type: "string", enum: ["normal", "x", "circleX", "diamond", "slash", "triangleUp", "triangleDown"], description: "A notehead shape. MNX has no notehead field on note, kit-note or kit-component (W3C MNX issue #249); Viritura tracks it as a vendor extension on the kit-component (per-instrument) and optionally on a pitched note (per-note override)." };
11525
- function validate438(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11526
- let vErrors = null, errors = 0, evaluated0 = validate438.evaluated;
11710
+ validate437.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11711
+ var schema420 = { type: "string", enum: ["normal", "x", "circleX", "diamond", "slash", "triangleUp", "triangleDown"], description: "A notehead shape. MNX has no notehead field on note, kit-note or kit-component (W3C MNX issue #249); Viritura tracks it as a vendor extension on the kit-component (per-instrument) and optionally on a pitched note (per-note override)." };
11712
+ function validate440(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11713
+ let vErrors = null, errors = 0, evaluated0 = validate440.evaluated;
11527
11714
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
11528
11715
  for (let key0 in data)
11529
11716
  if (!(key0 === "notehead" || key0 === "drumKit")) {
@@ -11537,7 +11724,7 @@ function validate438(data, { instancePath = "", parentData, parentDataProperty,
11537
11724
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
11538
11725
  }
11539
11726
  if (!(data0 === "normal" || data0 === "x" || data0 === "circleX" || data0 === "diamond" || data0 === "slash" || data0 === "triangleUp" || data0 === "triangleDown")) {
11540
- let err2 = { instancePath: instancePath + "/notehead", schemaPath: "#/$defs/notehead-shape/enum", keyword: "enum", params: { allowedValues: schema417.enum }, message: "must be equal to one of the allowed values" };
11727
+ let err2 = { instancePath: instancePath + "/notehead", schemaPath: "#/$defs/notehead-shape/enum", keyword: "enum", params: { allowedValues: schema420.enum }, message: "must be equal to one of the allowed values" };
11541
11728
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
11542
11729
  }
11543
11730
  }
@@ -11562,13 +11749,13 @@ function validate438(data, { instancePath = "", parentData, parentDataProperty,
11562
11749
  let err6 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
11563
11750
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
11564
11751
  }
11565
- return validate438.errors = vErrors, errors === 0;
11752
+ return validate440.errors = vErrors, errors === 0;
11566
11753
  }
11567
- validate438.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11568
- var schema418 = { type: "object", description: "Viritura vendor extensions on a part measure object.", properties: { pedals: { type: "array", items: { $ref: "#/$defs/pedal" }, description: "Piano pedal markings." }, expressions: { type: "array", items: { $ref: "#/$defs/text-expression" }, description: "Text expressions and performance directions." }, condensingOverride: { type: "string", enum: ["unison", "solo1", "solo2", "amalgamate", "divisi"], description: "User-specified condensing mode override for this measure." }, groupingDisplayOverrides: { type: "array", items: { $ref: "#/$defs/staff-grouping-display-override" }, description: "Per-staff grouping-display occurrence overrides, presentation-only and taking precedence over the time signature's own occurrence override and the document house style." }, staffMeters: { type: "array", items: { $ref: "#/$defs/staff-meter-change" }, description: "Per-staff synchronous local meter changes/resets, effective from this measure onward until changed or reset. Each staff either follows the global meter (the default, no entry needed) or a declared staff-local meter that still shares the global barline grid (`sharedDuration` or `fitMeasure` synchronization). Non-aligning/independent polymeter is out of scope." }, instrumentChanges: { type: "array", items: { $ref: "#/$defs/instrument-change" }, description: "Provisional mid-part instrument and/or transposition changes, effective from their position onward until the next change. Positions within one measure must be unique." } }, additionalProperties: !1 };
11569
- var schema420 = { type: "string", enum: ["sustain", "sostenuto", "una-corda"], description: "Piano pedal type." }, schema422 = { type: "string", enum: ["text", "bracket"], description: "Pedal marking display style. 'text' shows Ped/*, 'bracket' shows a horizontal line with hooks." };
11570
- function validate440(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11571
- let vErrors = null, errors = 0, evaluated0 = validate440.evaluated;
11754
+ validate440.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11755
+ var schema421 = { type: "object", description: "Viritura vendor extensions on a part measure object.", properties: { pedals: { type: "array", items: { $ref: "#/$defs/pedal" }, description: "Piano pedal markings." }, expressions: { type: "array", items: { $ref: "#/$defs/text-expression" }, description: "Text expressions and performance directions." }, condensingOverride: { type: "string", enum: ["unison", "solo1", "solo2", "amalgamate", "divisi"], description: "User-specified condensing mode override for this measure." }, groupingDisplayOverrides: { type: "array", items: { $ref: "#/$defs/staff-grouping-display-override" }, description: "Per-staff grouping-display occurrence overrides, presentation-only and taking precedence over the time signature's own occurrence override and the document house style." }, staffMeters: { type: "array", items: { $ref: "#/$defs/staff-meter-change" }, description: "Per-staff synchronous local meter changes/resets, effective from this measure onward until changed or reset. Each staff either follows the global meter (the default, no entry needed) or a declared staff-local meter that still shares the global barline grid (`sharedDuration` or `fitMeasure` synchronization). Non-aligning/independent polymeter is out of scope." }, instrumentChanges: { type: "array", items: { $ref: "#/$defs/instrument-change" }, description: "Provisional mid-part instrument and/or transposition changes, effective from their position onward until the next change. Positions within one measure must be unique." } }, additionalProperties: !1 };
11756
+ var schema423 = { type: "string", enum: ["sustain", "sostenuto", "una-corda"], description: "Piano pedal type." }, schema425 = { type: "string", enum: ["text", "bracket"], description: "Pedal marking display style. 'text' shows Ped/*, 'bracket' shows a horizontal line with hooks." };
11757
+ function validate442(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11758
+ let vErrors = null, errors = 0, evaluated0 = validate442.evaluated;
11572
11759
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
11573
11760
  if (data.type === void 0) {
11574
11761
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "type" }, message: "must have required property 'type'" };
@@ -11594,7 +11781,7 @@ function validate440(data, { instancePath = "", parentData, parentDataProperty,
11594
11781
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
11595
11782
  }
11596
11783
  if (!(data0 === "sustain" || data0 === "sostenuto" || data0 === "una-corda")) {
11597
- let err5 = { instancePath: instancePath + "/type", schemaPath: "#/$defs/pedal-type/enum", keyword: "enum", params: { allowedValues: schema420.enum }, message: "must be equal to one of the allowed values" };
11784
+ let err5 = { instancePath: instancePath + "/type", schemaPath: "#/$defs/pedal-type/enum", keyword: "enum", params: { allowedValues: schema423.enum }, message: "must be equal to one of the allowed values" };
11598
11785
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
11599
11786
  }
11600
11787
  }
@@ -11639,14 +11826,14 @@ function validate440(data, { instancePath = "", parentData, parentDataProperty,
11639
11826
  vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
11640
11827
  }
11641
11828
  }
11642
- if (data.end !== void 0 && (validate425(data.end, { instancePath: instancePath + "/end", parentData: data, parentDataProperty: "end", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate425.errors : vErrors.concat(validate425.errors), errors = vErrors.length)), data.style !== void 0) {
11829
+ if (data.end !== void 0 && (validate427(data.end, { instancePath: instancePath + "/end", parentData: data, parentDataProperty: "end", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate427.errors : vErrors.concat(validate427.errors), errors = vErrors.length)), data.style !== void 0) {
11643
11830
  let data5 = data.style;
11644
11831
  if (typeof data5 != "string") {
11645
11832
  let err13 = { instancePath: instancePath + "/style", schemaPath: "#/$defs/pedal-line-style/type", keyword: "type", params: { type: "string" }, message: "must be string" };
11646
11833
  vErrors === null ? vErrors = [err13] : vErrors.push(err13), errors++;
11647
11834
  }
11648
11835
  if (!(data5 === "text" || data5 === "bracket")) {
11649
- let err14 = { instancePath: instancePath + "/style", schemaPath: "#/$defs/pedal-line-style/enum", keyword: "enum", params: { allowedValues: schema422.enum }, message: "must be equal to one of the allowed values" };
11836
+ let err14 = { instancePath: instancePath + "/style", schemaPath: "#/$defs/pedal-line-style/enum", keyword: "enum", params: { allowedValues: schema425.enum }, message: "must be equal to one of the allowed values" };
11650
11837
  vErrors === null ? vErrors = [err14] : vErrors.push(err14), errors++;
11651
11838
  }
11652
11839
  }
@@ -11669,13 +11856,13 @@ function validate440(data, { instancePath = "", parentData, parentDataProperty,
11669
11856
  let err18 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
11670
11857
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
11671
11858
  }
11672
- return validate440.errors = vErrors, errors === 0;
11859
+ return validate442.errors = vErrors, errors === 0;
11673
11860
  }
11674
- validate440.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11675
- var schema423 = { type: "object", description: "A text expression or direction at a rhythmic position (e.g. 'dolce', 'rit.', 'a tempo'). Rendered in italic serif font.", required: ["text", "position"], properties: { text: { $ref: "#/$defs/text-content" }, frame: { $ref: "#/$defs/staff-text-frame-presentation" }, pagePosition: { $ref: "#/$defs/text-frame-page-position" }, position: { $ref: "#/$defs/rhythmic-position", description: "Rhythmic position within the measure." }, placement: { $ref: "#/$defs/expression-placement" }, staff: { type: "integer", minimum: 1, description: "Staff number (1-based)." }, voice: { type: "string", description: "Voice name." }, manualOffset: { $ref: "#/$defs/sp-delta", description: "Manual [dx, dy] offset in spatia (sp), applied after automatic placement." }, avoidCollisions: { type: "boolean", description: "Whether automatic collision avoidance may re-flow this expression outward to clear other directions. Default (and when unset): true. Set false when the user manually places the expression (e.g. by dragging) so it stays exactly where put and others flow around it." } }, additionalProperties: !1 };
11676
- var schema427 = { type: "object", required: ["anchor", "offset"], properties: { anchor: { type: "string", enum: ["top", "right", "bottom", "left", "top-left", "top-right", "bottom-right", "bottom-left"] }, offset: { type: "object", required: ["x", "y"], properties: { x: { type: "number", description: "Horizontal offset in staff spaces; positive moves right." }, y: { type: "number", description: "Vertical offset in staff spaces; positive moves down." } }, additionalProperties: !1 } }, additionalProperties: !1 };
11677
- function validate445(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11678
- let vErrors = null, errors = 0, evaluated0 = validate445.evaluated;
11861
+ validate442.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
11862
+ var schema426 = { type: "object", description: "A text expression or direction at a rhythmic position (e.g. 'dolce', 'rit.', 'a tempo'). Rendered in italic serif font.", required: ["text", "position"], properties: { text: { $ref: "#/$defs/text-content" }, frame: { $ref: "#/$defs/staff-text-frame-presentation" }, pagePosition: { $ref: "#/$defs/text-frame-page-position" }, position: { $ref: "#/$defs/rhythmic-position", description: "Rhythmic position within the measure." }, placement: { $ref: "#/$defs/expression-placement" }, staff: { type: "integer", minimum: 1, description: "Staff number (1-based)." }, voice: { type: "string", description: "Voice name." }, manualOffset: { $ref: "#/$defs/sp-delta", description: "Manual [dx, dy] offset in spatia (sp), applied after automatic placement." }, avoidCollisions: { type: "boolean", description: "Whether automatic collision avoidance may re-flow this expression outward to clear other directions. Default (and when unset): true. Set false when the user manually places the expression (e.g. by dragging) so it stays exactly where put and others flow around it." } }, additionalProperties: !1 };
11863
+ var schema430 = { type: "object", required: ["anchor", "offset"], properties: { anchor: { type: "string", enum: ["top", "right", "bottom", "left", "top-left", "top-right", "bottom-right", "bottom-left"] }, offset: { type: "object", required: ["x", "y"], properties: { x: { type: "number", description: "Horizontal offset in staff spaces; positive moves right." }, y: { type: "number", description: "Vertical offset in staff spaces; positive moves down." } }, additionalProperties: !1 } }, additionalProperties: !1 };
11864
+ function validate447(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
11865
+ let vErrors = null, errors = 0, evaluated0 = validate447.evaluated;
11679
11866
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
11680
11867
  if (data.id === void 0) {
11681
11868
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "id" }, message: "must have required property 'id'" };
@@ -11885,7 +12072,7 @@ function validate445(data, { instancePath = "", parentData, parentDataProperty,
11885
12072
  vErrors === null ? vErrors = [err37] : vErrors.push(err37), errors++;
11886
12073
  }
11887
12074
  if (!(data11 === "top" || data11 === "right" || data11 === "bottom" || data11 === "left" || data11 === "top-left" || data11 === "top-right" || data11 === "bottom-right" || data11 === "bottom-left")) {
11888
- let err38 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema427.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
12075
+ let err38 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema430.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
11889
12076
  vErrors === null ? vErrors = [err38] : vErrors.push(err38), errors++;
11890
12077
  }
11891
12078
  }
@@ -12056,11 +12243,11 @@ function validate445(data, { instancePath = "", parentData, parentDataProperty,
12056
12243
  let err69 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12057
12244
  vErrors === null ? vErrors = [err69] : vErrors.push(err69), errors++;
12058
12245
  }
12059
- return validate445.errors = vErrors, errors === 0;
12246
+ return validate447.errors = vErrors, errors === 0;
12060
12247
  }
12061
- validate445.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12062
- function validate443(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12063
- let vErrors = null, errors = 0, evaluated0 = validate443.evaluated;
12248
+ validate447.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12249
+ function validate445(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12250
+ let vErrors = null, errors = 0, evaluated0 = validate445.evaluated;
12064
12251
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12065
12252
  if (data.text === void 0) {
12066
12253
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "text" }, message: "must have required property 'text'" };
@@ -12071,11 +12258,11 @@ function validate443(data, { instancePath = "", parentData, parentDataProperty,
12071
12258
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
12072
12259
  }
12073
12260
  for (let key0 in data)
12074
- if (!func1.call(schema423.properties, key0)) {
12261
+ if (!func1.call(schema426.properties, key0)) {
12075
12262
  let err2 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
12076
12263
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
12077
12264
  }
12078
- if (data.text !== void 0 && (validate403(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.frame !== void 0) {
12265
+ if (data.text !== void 0 && (validate405(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.frame !== void 0) {
12079
12266
  let data1 = data.frame;
12080
12267
  if (data1 && typeof data1 == "object" && !Array.isArray(data1)) {
12081
12268
  for (let key1 in data1)
@@ -12127,7 +12314,7 @@ function validate443(data, { instancePath = "", parentData, parentDataProperty,
12127
12314
  vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
12128
12315
  }
12129
12316
  if (!(data5 === "left" || data5 === "center" || data5 === "right")) {
12130
- let err12 = { instancePath: instancePath + "/frame/horizontalAlignment", schemaPath: "#/$defs/staff-text-frame-presentation/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema392.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
12317
+ let err12 = { instancePath: instancePath + "/frame/horizontalAlignment", schemaPath: "#/$defs/staff-text-frame-presentation/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema395.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
12131
12318
  vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
12132
12319
  }
12133
12320
  }
@@ -12138,7 +12325,7 @@ function validate443(data, { instancePath = "", parentData, parentDataProperty,
12138
12325
  vErrors === null ? vErrors = [err13] : vErrors.push(err13), errors++;
12139
12326
  }
12140
12327
  if (!(data6 === "left" || data6 === "center" || data6 === "right" || data6 === "justify")) {
12141
- let err14 = { instancePath: instancePath + "/frame/paragraphJustification", schemaPath: "#/$defs/staff-text-frame-presentation/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema392.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
12328
+ let err14 = { instancePath: instancePath + "/frame/paragraphJustification", schemaPath: "#/$defs/staff-text-frame-presentation/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema395.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
12142
12329
  vErrors === null ? vErrors = [err14] : vErrors.push(err14), errors++;
12143
12330
  }
12144
12331
  }
@@ -12161,7 +12348,7 @@ function validate443(data, { instancePath = "", parentData, parentDataProperty,
12161
12348
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
12162
12349
  }
12163
12350
  if (!(data8 === "none" || data8 === "solid")) {
12164
- let err18 = { instancePath: instancePath + "/frame/border", schemaPath: "#/$defs/staff-text-frame-presentation/properties/border/enum", keyword: "enum", params: { allowedValues: schema392.properties.border.enum }, message: "must be equal to one of the allowed values" };
12351
+ let err18 = { instancePath: instancePath + "/frame/border", schemaPath: "#/$defs/staff-text-frame-presentation/properties/border/enum", keyword: "enum", params: { allowedValues: schema395.properties.border.enum }, message: "must be equal to one of the allowed values" };
12165
12352
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
12166
12353
  }
12167
12354
  }
@@ -12174,7 +12361,7 @@ function validate443(data, { instancePath = "", parentData, parentDataProperty,
12174
12361
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
12175
12362
  }
12176
12363
  }
12177
- if (data.pagePosition !== void 0 && (validate445(data.pagePosition, { instancePath: instancePath + "/pagePosition", parentData: data, parentDataProperty: "pagePosition", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate445.errors : vErrors.concat(validate445.errors), errors = vErrors.length)), data.position !== void 0) {
12364
+ if (data.pagePosition !== void 0 && (validate447(data.pagePosition, { instancePath: instancePath + "/pagePosition", parentData: data, parentDataProperty: "pagePosition", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate447.errors : vErrors.concat(validate447.errors), errors = vErrors.length)), data.position !== void 0) {
12178
12365
  let data11 = data.position;
12179
12366
  if (data11 && typeof data11 == "object" && !Array.isArray(data11)) {
12180
12367
  if (data11.fraction === void 0) {
@@ -12222,7 +12409,7 @@ function validate443(data, { instancePath = "", parentData, parentDataProperty,
12222
12409
  vErrors === null ? vErrors = [err28] : vErrors.push(err28), errors++;
12223
12410
  }
12224
12411
  if (!(data14 === "below" || data14 === "above")) {
12225
- let err29 = { instancePath: instancePath + "/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema394.enum }, message: "must be equal to one of the allowed values" };
12412
+ let err29 = { instancePath: instancePath + "/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema397.enum }, message: "must be equal to one of the allowed values" };
12226
12413
  vErrors === null ? vErrors = [err29] : vErrors.push(err29), errors++;
12227
12414
  }
12228
12415
  }
@@ -12271,11 +12458,11 @@ function validate443(data, { instancePath = "", parentData, parentDataProperty,
12271
12458
  let err38 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12272
12459
  vErrors === null ? vErrors = [err38] : vErrors.push(err38), errors++;
12273
12460
  }
12274
- return validate443.errors = vErrors, errors === 0;
12461
+ return validate445.errors = vErrors, errors === 0;
12275
12462
  }
12276
- validate443.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12277
- function validate448(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12278
- let vErrors = null, errors = 0, evaluated0 = validate448.evaluated;
12463
+ validate445.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12464
+ function validate450(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12465
+ let vErrors = null, errors = 0, evaluated0 = validate450.evaluated;
12279
12466
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12280
12467
  if (data.staff === void 0) {
12281
12468
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "staff" }, message: "must have required property 'staff'" };
@@ -12316,12 +12503,12 @@ function validate448(data, { instancePath = "", parentData, parentDataProperty,
12316
12503
  let err7 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12317
12504
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
12318
12505
  }
12319
- return validate448.errors = vErrors, errors === 0;
12506
+ return validate450.errors = vErrors, errors === 0;
12320
12507
  }
12321
- validate448.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12322
- var schema437 = { type: "object", description: "A staff-local meter distinct from the global (`global.measures[].time`) meter. Semantically identical in shape to a time signature, but never engraved on other staves and never establishes the score's barline duration by itself.", required: ["count", "unit"], properties: { count: { type: "integer", minimum: 1, description: "Numerator (beats per measure) of the staff-local meter." }, unit: { type: "integer", enum: [1, 2, 4, 8, 16, 32, 64, 128], description: "Denominator (beat unit) of the staff-local meter." }, beatStructure: { type: "array", items: { type: "integer", minimum: 1 }, minItems: 1, description: "Ordered beat-group lengths in units of the staff-local meter's denominator. Values must sum to count. When omitted, Viritura resolves the conventional default structure for this count/unit, same as a global time signature." } }, additionalProperties: !1 }, schema438 = { type: "string", enum: ["sharedDuration", "fitMeasure"], description: "How a staff-local meter's measure duration relates to the global measure it shares a barline with. `sharedDuration` requires the staff-local meter's measure duration to equal the global measure's duration exactly, so ordinary written note durations already line up \u2014 no scaling. `fitMeasure` maps one complete staff-local measure onto one complete global measure by a derived exact ratio (e.g. a local 6/8 measure of two dotted-quarter pulses onto a global 2/4 measure of two quarter-note pulses), so the staff's written durations are proportionally scaled for spacing and playback while the notated meter keeps its own conventional note values." };
12323
- function validate451(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12324
- let vErrors = null, errors = 0, evaluated0 = validate451.evaluated;
12508
+ validate450.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12509
+ var schema440 = { type: "object", description: "A staff-local meter distinct from the global (`global.measures[].time`) meter. Semantically identical in shape to a time signature, but never engraved on other staves and never establishes the score's barline duration by itself.", required: ["count", "unit"], properties: { count: { type: "integer", minimum: 1, description: "Numerator (beats per measure) of the staff-local meter." }, unit: { type: "integer", enum: [1, 2, 4, 8, 16, 32, 64, 128], description: "Denominator (beat unit) of the staff-local meter." }, beatStructure: { type: "array", items: { type: "integer", minimum: 1 }, minItems: 1, description: "Ordered beat-group lengths in units of the staff-local meter's denominator. Values must sum to count. When omitted, Viritura resolves the conventional default structure for this count/unit, same as a global time signature." } }, additionalProperties: !1 }, schema441 = { type: "string", enum: ["sharedDuration", "fitMeasure"], description: "How a staff-local meter's measure duration relates to the global measure it shares a barline with. `sharedDuration` requires the staff-local meter's measure duration to equal the global measure's duration exactly, so ordinary written note durations already line up \u2014 no scaling. `fitMeasure` maps one complete staff-local measure onto one complete global measure by a derived exact ratio (e.g. a local 6/8 measure of two dotted-quarter pulses onto a global 2/4 measure of two quarter-note pulses), so the staff's written durations are proportionally scaled for spacing and playback while the notated meter keeps its own conventional note values." };
12510
+ function validate453(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12511
+ let vErrors = null, errors = 0, evaluated0 = validate453.evaluated;
12325
12512
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12326
12513
  if (data.staff === void 0) {
12327
12514
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "staff" }, message: "must have required property 'staff'" };
@@ -12385,7 +12572,7 @@ function validate451(data, { instancePath = "", parentData, parentDataProperty,
12385
12572
  vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
12386
12573
  }
12387
12574
  if (!(data3 === 1 || data3 === 2 || data3 === 4 || data3 === 8 || data3 === 16 || data3 === 32 || data3 === 64 || data3 === 128)) {
12388
- let err12 = { instancePath: instancePath + "/meter/unit", schemaPath: "#/$defs/staff-meter/properties/unit/enum", keyword: "enum", params: { allowedValues: schema437.properties.unit.enum }, message: "must be equal to one of the allowed values" };
12575
+ let err12 = { instancePath: instancePath + "/meter/unit", schemaPath: "#/$defs/staff-meter/properties/unit/enum", keyword: "enum", params: { allowedValues: schema440.properties.unit.enum }, message: "must be equal to one of the allowed values" };
12389
12576
  vErrors === null ? vErrors = [err12] : vErrors.push(err12), errors++;
12390
12577
  }
12391
12578
  }
@@ -12425,7 +12612,7 @@ function validate451(data, { instancePath = "", parentData, parentDataProperty,
12425
12612
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
12426
12613
  }
12427
12614
  if (!(data6 === "sharedDuration" || data6 === "fitMeasure")) {
12428
- let err19 = { instancePath: instancePath + "/synchronization", schemaPath: "#/$defs/staff-meter-synchronization/enum", keyword: "enum", params: { allowedValues: schema438.enum }, message: "must be equal to one of the allowed values" };
12615
+ let err19 = { instancePath: instancePath + "/synchronization", schemaPath: "#/$defs/staff-meter-synchronization/enum", keyword: "enum", params: { allowedValues: schema441.enum }, message: "must be equal to one of the allowed values" };
12429
12616
  vErrors === null ? vErrors = [err19] : vErrors.push(err19), errors++;
12430
12617
  }
12431
12618
  }
@@ -12433,14 +12620,14 @@ function validate451(data, { instancePath = "", parentData, parentDataProperty,
12433
12620
  let err20 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12434
12621
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
12435
12622
  }
12436
- return validate451.errors = vErrors, errors === 0;
12623
+ return validate453.errors = vErrors, errors === 0;
12437
12624
  }
12438
- validate451.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12439
- function validate450(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12440
- let vErrors = null, errors = 0, evaluated0 = validate450.evaluated;
12625
+ validate453.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12626
+ function validate452(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12627
+ let vErrors = null, errors = 0, evaluated0 = validate452.evaluated;
12441
12628
  evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0);
12442
12629
  let _errs0 = errors, valid0 = !1, passing0 = null, _errs1 = errors;
12443
- validate451(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate451.errors : vErrors.concat(validate451.errors), errors = vErrors.length);
12630
+ validate453(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate453.errors : vErrors.concat(validate453.errors), errors = vErrors.length);
12444
12631
  var _valid0 = _errs1 === errors;
12445
12632
  if (_valid0) {
12446
12633
  valid0 = !0, passing0 = 0;
@@ -12494,11 +12681,11 @@ function validate450(data, { instancePath = "", parentData, parentDataProperty,
12494
12681
  let err8 = { instancePath, schemaPath: "#/oneOf", keyword: "oneOf", params: { passingSchemas: passing0 }, message: "must match exactly one schema in oneOf" };
12495
12682
  vErrors === null ? vErrors = [err8] : vErrors.push(err8), errors++;
12496
12683
  }
12497
- return validate450.errors = vErrors, evaluated0.props = props0, errors === 0;
12684
+ return validate452.errors = vErrors, evaluated0.props = props0, errors === 0;
12498
12685
  }
12499
- validate450.evaluated = { dynamicProps: !0, dynamicItems: !1 };
12500
- function validate454(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12501
- let vErrors = null, errors = 0, evaluated0 = validate454.evaluated;
12686
+ validate452.evaluated = { dynamicProps: !0, dynamicItems: !1 };
12687
+ function validate456(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12688
+ let vErrors = null, errors = 0, evaluated0 = validate456.evaluated;
12502
12689
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12503
12690
  for (let key0 in data)
12504
12691
  if (!(key0 === "position" || key0 === "instrument" || key0 === "transposition" || key0 === "instruction" || key0 === "reminder")) {
@@ -12667,11 +12854,11 @@ function validate454(data, { instancePath = "", parentData, parentDataProperty,
12667
12854
  let err29 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12668
12855
  vErrors === null ? vErrors = [err29] : vErrors.push(err29), errors++;
12669
12856
  }
12670
- return validate454.errors = vErrors, errors === 0;
12857
+ return validate456.errors = vErrors, errors === 0;
12671
12858
  }
12672
- validate454.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12673
- function validate439(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12674
- let vErrors = null, errors = 0, evaluated0 = validate439.evaluated;
12859
+ validate456.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12860
+ function validate441(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12861
+ let vErrors = null, errors = 0, evaluated0 = validate441.evaluated;
12675
12862
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12676
12863
  for (let key0 in data)
12677
12864
  if (!(key0 === "pedals" || key0 === "expressions" || key0 === "condensingOverride" || key0 === "groupingDisplayOverrides" || key0 === "staffMeters" || key0 === "instrumentChanges")) {
@@ -12683,7 +12870,7 @@ function validate439(data, { instancePath = "", parentData, parentDataProperty,
12683
12870
  if (Array.isArray(data0)) {
12684
12871
  let len0 = data0.length;
12685
12872
  for (let i0 = 0; i0 < len0; i0++)
12686
- validate440(data0[i0], { instancePath: instancePath + "/pedals/" + i0, parentData: data0, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate440.errors : vErrors.concat(validate440.errors), errors = vErrors.length);
12873
+ validate442(data0[i0], { instancePath: instancePath + "/pedals/" + i0, parentData: data0, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate442.errors : vErrors.concat(validate442.errors), errors = vErrors.length);
12687
12874
  } else {
12688
12875
  let err1 = { instancePath: instancePath + "/pedals", schemaPath: "#/properties/pedals/type", keyword: "type", params: { type: "array" }, message: "must be array" };
12689
12876
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
@@ -12694,7 +12881,7 @@ function validate439(data, { instancePath = "", parentData, parentDataProperty,
12694
12881
  if (Array.isArray(data2)) {
12695
12882
  let len1 = data2.length;
12696
12883
  for (let i1 = 0; i1 < len1; i1++)
12697
- validate443(data2[i1], { instancePath: instancePath + "/expressions/" + i1, parentData: data2, parentDataProperty: i1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate443.errors : vErrors.concat(validate443.errors), errors = vErrors.length);
12884
+ validate445(data2[i1], { instancePath: instancePath + "/expressions/" + i1, parentData: data2, parentDataProperty: i1, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate445.errors : vErrors.concat(validate445.errors), errors = vErrors.length);
12698
12885
  } else {
12699
12886
  let err2 = { instancePath: instancePath + "/expressions", schemaPath: "#/properties/expressions/type", keyword: "type", params: { type: "array" }, message: "must be array" };
12700
12887
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
@@ -12707,7 +12894,7 @@ function validate439(data, { instancePath = "", parentData, parentDataProperty,
12707
12894
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
12708
12895
  }
12709
12896
  if (!(data4 === "unison" || data4 === "solo1" || data4 === "solo2" || data4 === "amalgamate" || data4 === "divisi")) {
12710
- let err4 = { instancePath: instancePath + "/condensingOverride", schemaPath: "#/properties/condensingOverride/enum", keyword: "enum", params: { allowedValues: schema418.properties.condensingOverride.enum }, message: "must be equal to one of the allowed values" };
12897
+ let err4 = { instancePath: instancePath + "/condensingOverride", schemaPath: "#/properties/condensingOverride/enum", keyword: "enum", params: { allowedValues: schema421.properties.condensingOverride.enum }, message: "must be equal to one of the allowed values" };
12711
12898
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
12712
12899
  }
12713
12900
  }
@@ -12716,7 +12903,7 @@ function validate439(data, { instancePath = "", parentData, parentDataProperty,
12716
12903
  if (Array.isArray(data5)) {
12717
12904
  let len2 = data5.length;
12718
12905
  for (let i2 = 0; i2 < len2; i2++)
12719
- validate448(data5[i2], { instancePath: instancePath + "/groupingDisplayOverrides/" + i2, parentData: data5, parentDataProperty: i2, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate448.errors : vErrors.concat(validate448.errors), errors = vErrors.length);
12906
+ validate450(data5[i2], { instancePath: instancePath + "/groupingDisplayOverrides/" + i2, parentData: data5, parentDataProperty: i2, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate450.errors : vErrors.concat(validate450.errors), errors = vErrors.length);
12720
12907
  } else {
12721
12908
  let err5 = { instancePath: instancePath + "/groupingDisplayOverrides", schemaPath: "#/properties/groupingDisplayOverrides/type", keyword: "type", params: { type: "array" }, message: "must be array" };
12722
12909
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
@@ -12727,7 +12914,7 @@ function validate439(data, { instancePath = "", parentData, parentDataProperty,
12727
12914
  if (Array.isArray(data7)) {
12728
12915
  let len3 = data7.length;
12729
12916
  for (let i3 = 0; i3 < len3; i3++)
12730
- validate450(data7[i3], { instancePath: instancePath + "/staffMeters/" + i3, parentData: data7, parentDataProperty: i3, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate450.errors : vErrors.concat(validate450.errors), errors = vErrors.length);
12917
+ validate452(data7[i3], { instancePath: instancePath + "/staffMeters/" + i3, parentData: data7, parentDataProperty: i3, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate452.errors : vErrors.concat(validate452.errors), errors = vErrors.length);
12731
12918
  } else {
12732
12919
  let err6 = { instancePath: instancePath + "/staffMeters", schemaPath: "#/properties/staffMeters/type", keyword: "type", params: { type: "array" }, message: "must be array" };
12733
12920
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
@@ -12738,7 +12925,7 @@ function validate439(data, { instancePath = "", parentData, parentDataProperty,
12738
12925
  if (Array.isArray(data9)) {
12739
12926
  let len4 = data9.length;
12740
12927
  for (let i4 = 0; i4 < len4; i4++)
12741
- validate454(data9[i4], { instancePath: instancePath + "/instrumentChanges/" + i4, parentData: data9, parentDataProperty: i4, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate454.errors : vErrors.concat(validate454.errors), errors = vErrors.length);
12928
+ validate456(data9[i4], { instancePath: instancePath + "/instrumentChanges/" + i4, parentData: data9, parentDataProperty: i4, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate456.errors : vErrors.concat(validate456.errors), errors = vErrors.length);
12742
12929
  } else {
12743
12930
  let err7 = { instancePath: instancePath + "/instrumentChanges", schemaPath: "#/properties/instrumentChanges/type", keyword: "type", params: { type: "array" }, message: "must be array" };
12744
12931
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
@@ -12748,12 +12935,12 @@ function validate439(data, { instancePath = "", parentData, parentDataProperty,
12748
12935
  let err8 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12749
12936
  vErrors === null ? vErrors = [err8] : vErrors.push(err8), errors++;
12750
12937
  }
12751
- return validate439.errors = vErrors, errors === 0;
12938
+ return validate441.errors = vErrors, errors === 0;
12752
12939
  }
12753
- validate439.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12754
- var schema446 = { type: "object", description: "Links measure-local tuplet fragments into one logical tuplet spanning barlines. The same id and ratio must be used by contiguous fragments.", required: ["id", "type"], properties: { id: { type: "string", minLength: 1, description: "Stable identity shared by every fragment of the logical tuplet." }, type: { type: "string", enum: ["start", "continue", "stop"], description: "The fragment's position within the logical tuplet." } }, additionalProperties: !1 };
12755
- function validate456(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12756
- let vErrors = null, errors = 0, evaluated0 = validate456.evaluated;
12940
+ validate441.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12941
+ var schema449 = { type: "object", description: "Links measure-local tuplet fragments into one logical tuplet spanning barlines. The same id and ratio must be used by contiguous fragments.", required: ["id", "type"], properties: { id: { type: "string", minLength: 1, description: "Stable identity shared by every fragment of the logical tuplet." }, type: { type: "string", enum: ["start", "continue", "stop"], description: "The fragment's position within the logical tuplet." } }, additionalProperties: !1 };
12942
+ function validate458(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12943
+ let vErrors = null, errors = 0, evaluated0 = validate458.evaluated;
12757
12944
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12758
12945
  for (let key0 in data)
12759
12946
  if (key0 !== "span") {
@@ -12795,7 +12982,7 @@ function validate456(data, { instancePath = "", parentData, parentDataProperty,
12795
12982
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
12796
12983
  }
12797
12984
  if (!(data2 === "start" || data2 === "continue" || data2 === "stop")) {
12798
- let err7 = { instancePath: instancePath + "/span/type", schemaPath: "#/$defs/tuplet-span/properties/type/enum", keyword: "enum", params: { allowedValues: schema446.properties.type.enum }, message: "must be equal to one of the allowed values" };
12985
+ let err7 = { instancePath: instancePath + "/span/type", schemaPath: "#/$defs/tuplet-span/properties/type/enum", keyword: "enum", params: { allowedValues: schema449.properties.type.enum }, message: "must be equal to one of the allowed values" };
12799
12986
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
12800
12987
  }
12801
12988
  }
@@ -12808,11 +12995,11 @@ function validate456(data, { instancePath = "", parentData, parentDataProperty,
12808
12995
  let err9 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12809
12996
  vErrors === null ? vErrors = [err9] : vErrors.push(err9), errors++;
12810
12997
  }
12811
- return validate456.errors = vErrors, errors === 0;
12998
+ return validate458.errors = vErrors, errors === 0;
12812
12999
  }
12813
- validate456.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12814
- function validate457(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12815
- let vErrors = null, errors = 0, evaluated0 = validate457.evaluated;
13000
+ validate458.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13001
+ function validate459(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13002
+ let vErrors = null, errors = 0, evaluated0 = validate459.evaluated;
12816
13003
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12817
13004
  for (let key0 in data)
12818
13005
  if (key0 !== "staffLineRangeRestore") {
@@ -12827,11 +13014,11 @@ function validate457(data, { instancePath = "", parentData, parentDataProperty,
12827
13014
  let err2 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12828
13015
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
12829
13016
  }
12830
- return validate457.errors = vErrors, errors === 0;
13017
+ return validate459.errors = vErrors, errors === 0;
12831
13018
  }
12832
- validate457.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12833
- function validate458(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12834
- let vErrors = null, errors = 0, evaluated0 = validate458.evaluated;
13019
+ validate459.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13020
+ function validate460(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13021
+ let vErrors = null, errors = 0, evaluated0 = validate460.evaluated;
12835
13022
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12836
13023
  for (let key0 in data)
12837
13024
  if (!(key0 === "manualOffset" || key0 === "avoidCollisions")) {
@@ -12868,12 +13055,12 @@ function validate458(data, { instancePath = "", parentData, parentDataProperty,
12868
13055
  let err6 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12869
13056
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
12870
13057
  }
12871
- return validate458.errors = vErrors, errors === 0;
13058
+ return validate460.errors = vErrors, errors === 0;
12872
13059
  }
12873
- validate458.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12874
- var schema452 = { type: "string", enum: ["glissando", "portamento"], description: "Semantic kind of a glissando-family line." }, schema453 = { type: "string", enum: ["straight", "wavy"], description: "Glissando/portamento line style." };
12875
- function validate460(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12876
- let vErrors = null, errors = 0, evaluated0 = validate460.evaluated;
13060
+ validate460.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13061
+ var schema455 = { type: "string", enum: ["glissando", "portamento"], description: "Semantic kind of a glissando-family line." }, schema456 = { type: "string", enum: ["straight", "wavy"], description: "Glissando/portamento line style." };
13062
+ function validate462(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13063
+ let vErrors = null, errors = 0, evaluated0 = validate462.evaluated;
12877
13064
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12878
13065
  if (data.target === void 0) {
12879
13066
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "target" }, message: "must have required property 'target'" };
@@ -12895,7 +13082,7 @@ function validate460(data, { instancePath = "", parentData, parentDataProperty,
12895
13082
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
12896
13083
  }
12897
13084
  if (!(data1 === "glissando" || data1 === "portamento")) {
12898
- let err4 = { instancePath: instancePath + "/kind", schemaPath: "#/$defs/glissando-kind/enum", keyword: "enum", params: { allowedValues: schema452.enum }, message: "must be equal to one of the allowed values" };
13085
+ let err4 = { instancePath: instancePath + "/kind", schemaPath: "#/$defs/glissando-kind/enum", keyword: "enum", params: { allowedValues: schema455.enum }, message: "must be equal to one of the allowed values" };
12899
13086
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
12900
13087
  }
12901
13088
  }
@@ -12906,7 +13093,7 @@ function validate460(data, { instancePath = "", parentData, parentDataProperty,
12906
13093
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
12907
13094
  }
12908
13095
  if (!(data2 === "straight" || data2 === "wavy")) {
12909
- let err6 = { instancePath: instancePath + "/style", schemaPath: "#/$defs/glissando-style/enum", keyword: "enum", params: { allowedValues: schema453.enum }, message: "must be equal to one of the allowed values" };
13096
+ let err6 = { instancePath: instancePath + "/style", schemaPath: "#/$defs/glissando-style/enum", keyword: "enum", params: { allowedValues: schema456.enum }, message: "must be equal to one of the allowed values" };
12910
13097
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
12911
13098
  }
12912
13099
  }
@@ -12922,11 +13109,11 @@ function validate460(data, { instancePath = "", parentData, parentDataProperty,
12922
13109
  let err9 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12923
13110
  vErrors === null ? vErrors = [err9] : vErrors.push(err9), errors++;
12924
13111
  }
12925
- return validate460.errors = vErrors, errors === 0;
13112
+ return validate462.errors = vErrors, errors === 0;
12926
13113
  }
12927
- validate460.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12928
- function validate459(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12929
- let vErrors = null, errors = 0, evaluated0 = validate459.evaluated;
13114
+ validate462.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13115
+ function validate461(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13116
+ let vErrors = null, errors = 0, evaluated0 = validate461.evaluated;
12930
13117
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12931
13118
  for (let key0 in data)
12932
13119
  if (key0 !== "glissandos") {
@@ -12938,7 +13125,7 @@ function validate459(data, { instancePath = "", parentData, parentDataProperty,
12938
13125
  if (Array.isArray(data0)) {
12939
13126
  let len0 = data0.length;
12940
13127
  for (let i0 = 0; i0 < len0; i0++)
12941
- validate460(data0[i0], { instancePath: instancePath + "/glissandos/" + i0, parentData: data0, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate460.errors : vErrors.concat(validate460.errors), errors = vErrors.length);
13128
+ validate462(data0[i0], { instancePath: instancePath + "/glissandos/" + i0, parentData: data0, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate462.errors : vErrors.concat(validate462.errors), errors = vErrors.length);
12942
13129
  } else {
12943
13130
  let err1 = { instancePath: instancePath + "/glissandos", schemaPath: "#/properties/glissandos/type", keyword: "type", params: { type: "array" }, message: "must be array" };
12944
13131
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
@@ -12948,13 +13135,13 @@ function validate459(data, { instancePath = "", parentData, parentDataProperty,
12948
13135
  let err2 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
12949
13136
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
12950
13137
  }
12951
- return validate459.errors = vErrors, errors === 0;
13138
+ return validate461.errors = vErrors, errors === 0;
12952
13139
  }
12953
- validate459.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
12954
- var schema454 = { type: "object", description: "Viritura vendor extensions on an event-markings object.", properties: { staccatissimoWedge: { type: "object", description: "Staccatissimo wedge articulation variant (SMuFL articStaccatissimoWedge).", properties: { placement: { type: "string", enum: ["above", "below", "auto"], description: "Vertical placement relative to the staff." } }, additionalProperties: !1 }, trill: { $ref: "#/$defs/trill" }, ornaments: { type: "array", items: { $ref: "#/$defs/ornament-type" }, description: "Ornament markings (turn, mordent, etc.)." }, fingerings: { type: "array", items: { $ref: "#/$defs/fingering" }, description: "Fingering annotations." }, arpeggio: { $ref: "#/$defs/arpeggio" } }, additionalProperties: !1 }, schema457 = { type: "string", enum: ["turn", "invertedTurn", "mordent", "invertedMordent", "shortTrill", "trillMordent", "delayedTurn", "schleifer"], description: "Ornament type. Each maps to a SMuFL ornament glyph." };
12955
- var schema459 = { type: "object", description: "A rolled-chord (arpeggio) indication on a chord event: a wavy vertical line to the left of the chord. Created on MusicXML `<arpeggiate>` import and authored natively.", properties: { direction: { type: "string", enum: ["up", "down", "auto"], description: "Roll direction. Omitted means the renderer's default (upward) arpeggio." } }, additionalProperties: !1 }, schema455 = { type: "object", description: "A trill marking on a note, optionally followed by a wavy extension line.", properties: { accidental: { type: "integer", enum: [-1, 0, 1], description: "Accidental on the auxiliary note: -1 = flat, 0 = natural, 1 = sharp." }, showSymbol: { type: "boolean", description: "Whether to display the initial trill symbol. Defaults to true; set false for an extension-only line." }, extension: { $ref: "#/$defs/trill-extension" } }, additionalProperties: !1 }, schema456 = { type: "object", description: "A wavy trill-extension line from this event to a target event.", required: ["target"], properties: { target: { type: "string", description: "ID of the event where the trill-extension line ends." }, targetEdge: { type: "string", enum: ["start", "end"], description: "Which rhythmic edge of the target event ends the line. Defaults to 'start'." } }, additionalProperties: !1 };
12956
- function validate463(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
12957
- let vErrors = null, errors = 0, evaluated0 = validate463.evaluated;
13140
+ validate461.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13141
+ var schema457 = { type: "object", description: "Viritura vendor extensions on an event-markings object.", properties: { staccatissimoWedge: { type: "object", description: "Staccatissimo wedge articulation variant (SMuFL articStaccatissimoWedge).", properties: { placement: { type: "string", enum: ["above", "below", "auto"], description: "Vertical placement relative to the staff." } }, additionalProperties: !1 }, trill: { $ref: "#/$defs/trill" }, ornaments: { type: "array", items: { $ref: "#/$defs/ornament-type" }, description: "Ornament markings (turn, mordent, etc.)." }, fingerings: { type: "array", items: { $ref: "#/$defs/fingering" }, description: "Fingering annotations." }, arpeggio: { $ref: "#/$defs/arpeggio" } }, additionalProperties: !1 }, schema460 = { type: "string", enum: ["turn", "invertedTurn", "mordent", "invertedMordent", "shortTrill", "trillMordent", "delayedTurn", "schleifer"], description: "Ornament type. Each maps to a SMuFL ornament glyph." };
13142
+ var schema462 = { type: "object", description: "A rolled-chord (arpeggio) indication on a chord event: a wavy vertical line to the left of the chord. Created on MusicXML `<arpeggiate>` import and authored natively.", properties: { direction: { type: "string", enum: ["up", "down", "auto"], description: "Roll direction. Omitted means the renderer's default (upward) arpeggio." } }, additionalProperties: !1 }, schema458 = { type: "object", description: "A trill marking on a note, optionally followed by a wavy extension line.", properties: { accidental: { type: "integer", enum: [-1, 0, 1], description: "Accidental on the auxiliary note: -1 = flat, 0 = natural, 1 = sharp." }, showSymbol: { type: "boolean", description: "Whether to display the initial trill symbol. Defaults to true; set false for an extension-only line." }, extension: { $ref: "#/$defs/trill-extension" } }, additionalProperties: !1 }, schema459 = { type: "object", description: "A wavy trill-extension line from this event to a target event.", required: ["target"], properties: { target: { type: "string", description: "ID of the event where the trill-extension line ends." }, targetEdge: { type: "string", enum: ["start", "end"], description: "Which rhythmic edge of the target event ends the line. Defaults to 'start'." } }, additionalProperties: !1 };
13143
+ function validate465(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13144
+ let vErrors = null, errors = 0, evaluated0 = validate465.evaluated;
12958
13145
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
12959
13146
  for (let key0 in data)
12960
13147
  if (!(key0 === "accidental" || key0 === "showSymbol" || key0 === "extension")) {
@@ -12968,7 +13155,7 @@ function validate463(data, { instancePath = "", parentData, parentDataProperty,
12968
13155
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
12969
13156
  }
12970
13157
  if (!(data0 === -1 || data0 === 0 || data0 === 1)) {
12971
- let err2 = { instancePath: instancePath + "/accidental", schemaPath: "#/properties/accidental/enum", keyword: "enum", params: { allowedValues: schema455.properties.accidental.enum }, message: "must be equal to one of the allowed values" };
13158
+ let err2 = { instancePath: instancePath + "/accidental", schemaPath: "#/properties/accidental/enum", keyword: "enum", params: { allowedValues: schema458.properties.accidental.enum }, message: "must be equal to one of the allowed values" };
12972
13159
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
12973
13160
  }
12974
13161
  }
@@ -12999,7 +13186,7 @@ function validate463(data, { instancePath = "", parentData, parentDataProperty,
12999
13186
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
13000
13187
  }
13001
13188
  if (!(data4 === "start" || data4 === "end")) {
13002
- let err8 = { instancePath: instancePath + "/extension/targetEdge", schemaPath: "#/$defs/trill-extension/properties/targetEdge/enum", keyword: "enum", params: { allowedValues: schema456.properties.targetEdge.enum }, message: "must be equal to one of the allowed values" };
13189
+ let err8 = { instancePath: instancePath + "/extension/targetEdge", schemaPath: "#/$defs/trill-extension/properties/targetEdge/enum", keyword: "enum", params: { allowedValues: schema459.properties.targetEdge.enum }, message: "must be equal to one of the allowed values" };
13003
13190
  vErrors === null ? vErrors = [err8] : vErrors.push(err8), errors++;
13004
13191
  }
13005
13192
  }
@@ -13012,11 +13199,11 @@ function validate463(data, { instancePath = "", parentData, parentDataProperty,
13012
13199
  let err10 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13013
13200
  vErrors === null ? vErrors = [err10] : vErrors.push(err10), errors++;
13014
13201
  }
13015
- return validate463.errors = vErrors, errors === 0;
13202
+ return validate465.errors = vErrors, errors === 0;
13016
13203
  }
13017
- validate463.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13018
- function validate462(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13019
- let vErrors = null, errors = 0, evaluated0 = validate462.evaluated;
13204
+ validate465.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13205
+ function validate464(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13206
+ let vErrors = null, errors = 0, evaluated0 = validate464.evaluated;
13020
13207
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13021
13208
  for (let key0 in data)
13022
13209
  if (!(key0 === "staccatissimoWedge" || key0 === "trill" || key0 === "ornaments" || key0 === "fingerings" || key0 === "arpeggio")) {
@@ -13038,7 +13225,7 @@ function validate462(data, { instancePath = "", parentData, parentDataProperty,
13038
13225
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
13039
13226
  }
13040
13227
  if (!(data1 === "above" || data1 === "below" || data1 === "auto")) {
13041
- let err3 = { instancePath: instancePath + "/staccatissimoWedge/placement", schemaPath: "#/properties/staccatissimoWedge/properties/placement/enum", keyword: "enum", params: { allowedValues: schema454.properties.staccatissimoWedge.properties.placement.enum }, message: "must be equal to one of the allowed values" };
13228
+ let err3 = { instancePath: instancePath + "/staccatissimoWedge/placement", schemaPath: "#/properties/staccatissimoWedge/properties/placement/enum", keyword: "enum", params: { allowedValues: schema457.properties.staccatissimoWedge.properties.placement.enum }, message: "must be equal to one of the allowed values" };
13042
13229
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
13043
13230
  }
13044
13231
  }
@@ -13047,7 +13234,7 @@ function validate462(data, { instancePath = "", parentData, parentDataProperty,
13047
13234
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
13048
13235
  }
13049
13236
  }
13050
- if (data.trill !== void 0 && (validate463(data.trill, { instancePath: instancePath + "/trill", parentData: data, parentDataProperty: "trill", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate463.errors : vErrors.concat(validate463.errors), errors = vErrors.length)), data.ornaments !== void 0) {
13237
+ if (data.trill !== void 0 && (validate465(data.trill, { instancePath: instancePath + "/trill", parentData: data, parentDataProperty: "trill", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate465.errors : vErrors.concat(validate465.errors), errors = vErrors.length)), data.ornaments !== void 0) {
13051
13238
  let data3 = data.ornaments;
13052
13239
  if (Array.isArray(data3)) {
13053
13240
  let len0 = data3.length;
@@ -13058,7 +13245,7 @@ function validate462(data, { instancePath = "", parentData, parentDataProperty,
13058
13245
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
13059
13246
  }
13060
13247
  if (!(data4 === "turn" || data4 === "invertedTurn" || data4 === "mordent" || data4 === "invertedMordent" || data4 === "shortTrill" || data4 === "trillMordent" || data4 === "delayedTurn" || data4 === "schleifer")) {
13061
- let err6 = { instancePath: instancePath + "/ornaments/" + i0, schemaPath: "#/$defs/ornament-type/enum", keyword: "enum", params: { allowedValues: schema457.enum }, message: "must be equal to one of the allowed values" };
13248
+ let err6 = { instancePath: instancePath + "/ornaments/" + i0, schemaPath: "#/$defs/ornament-type/enum", keyword: "enum", params: { allowedValues: schema460.enum }, message: "must be equal to one of the allowed values" };
13062
13249
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
13063
13250
  }
13064
13251
  }
@@ -13125,7 +13312,7 @@ function validate462(data, { instancePath = "", parentData, parentDataProperty,
13125
13312
  vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
13126
13313
  }
13127
13314
  if (!(data9 === "up" || data9 === "down" || data9 === "auto")) {
13128
- let err17 = { instancePath: instancePath + "/arpeggio/direction", schemaPath: "#/$defs/arpeggio/properties/direction/enum", keyword: "enum", params: { allowedValues: schema459.properties.direction.enum }, message: "must be equal to one of the allowed values" };
13315
+ let err17 = { instancePath: instancePath + "/arpeggio/direction", schemaPath: "#/$defs/arpeggio/properties/direction/enum", keyword: "enum", params: { allowedValues: schema462.properties.direction.enum }, message: "must be equal to one of the allowed values" };
13129
13316
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
13130
13317
  }
13131
13318
  }
@@ -13138,11 +13325,11 @@ function validate462(data, { instancePath = "", parentData, parentDataProperty,
13138
13325
  let err19 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13139
13326
  vErrors === null ? vErrors = [err19] : vErrors.push(err19), errors++;
13140
13327
  }
13141
- return validate462.errors = vErrors, errors === 0;
13328
+ return validate464.errors = vErrors, errors === 0;
13142
13329
  }
13143
- validate462.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13144
- function validate465(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13145
- let vErrors = null, errors = 0, evaluated0 = validate465.evaluated;
13330
+ validate464.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13331
+ function validate467(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13332
+ let vErrors = null, errors = 0, evaluated0 = validate467.evaluated;
13146
13333
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13147
13334
  for (let key0 in data)
13148
13335
  if (key0 !== "notehead") {
@@ -13156,7 +13343,7 @@ function validate465(data, { instancePath = "", parentData, parentDataProperty,
13156
13343
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
13157
13344
  }
13158
13345
  if (!(data0 === "normal" || data0 === "x" || data0 === "circleX" || data0 === "diamond" || data0 === "slash" || data0 === "triangleUp" || data0 === "triangleDown")) {
13159
- let err2 = { instancePath: instancePath + "/notehead", schemaPath: "#/$defs/notehead-shape/enum", keyword: "enum", params: { allowedValues: schema417.enum }, message: "must be equal to one of the allowed values" };
13346
+ let err2 = { instancePath: instancePath + "/notehead", schemaPath: "#/$defs/notehead-shape/enum", keyword: "enum", params: { allowedValues: schema420.enum }, message: "must be equal to one of the allowed values" };
13160
13347
  vErrors === null ? vErrors = [err2] : vErrors.push(err2), errors++;
13161
13348
  }
13162
13349
  }
@@ -13164,11 +13351,11 @@ function validate465(data, { instancePath = "", parentData, parentDataProperty,
13164
13351
  let err3 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13165
13352
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
13166
13353
  }
13167
- return validate465.errors = vErrors, errors === 0;
13354
+ return validate467.errors = vErrors, errors === 0;
13168
13355
  }
13169
- validate465.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13170
- function validate467(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13171
- let vErrors = null, errors = 0, evaluated0 = validate467.evaluated;
13356
+ validate467.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13357
+ function validate469(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13358
+ let vErrors = null, errors = 0, evaluated0 = validate469.evaluated;
13172
13359
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13173
13360
  for (let key0 in data)
13174
13361
  if (!(key0 === "p0" || key0 === "p1" || key0 === "p2" || key0 === "p3")) {
@@ -13267,27 +13454,27 @@ function validate467(data, { instancePath = "", parentData, parentDataProperty,
13267
13454
  let err17 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13268
13455
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
13269
13456
  }
13270
- return validate467.errors = vErrors, errors === 0;
13457
+ return validate469.errors = vErrors, errors === 0;
13271
13458
  }
13272
- validate467.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13273
- function validate466(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13274
- let vErrors = null, errors = 0, evaluated0 = validate466.evaluated;
13459
+ validate469.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13460
+ function validate468(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13461
+ let vErrors = null, errors = 0, evaluated0 = validate468.evaluated;
13275
13462
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13276
13463
  for (let key0 in data)
13277
13464
  if (key0 !== "shape") {
13278
13465
  let err0 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
13279
13466
  vErrors === null ? vErrors = [err0] : vErrors.push(err0), errors++;
13280
13467
  }
13281
- data.shape !== void 0 && (validate467(data.shape, { instancePath: instancePath + "/shape", parentData: data, parentDataProperty: "shape", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate467.errors : vErrors.concat(validate467.errors), errors = vErrors.length));
13468
+ data.shape !== void 0 && (validate469(data.shape, { instancePath: instancePath + "/shape", parentData: data, parentDataProperty: "shape", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate469.errors : vErrors.concat(validate469.errors), errors = vErrors.length));
13282
13469
  } else {
13283
13470
  let err1 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13284
13471
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
13285
13472
  }
13286
- return validate466.errors = vErrors, errors === 0;
13473
+ return validate468.errors = vErrors, errors === 0;
13287
13474
  }
13288
- validate466.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13289
- function validate469(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13290
- let vErrors = null, errors = 0, evaluated0 = validate469.evaluated;
13475
+ validate468.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13476
+ function validate471(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13477
+ let vErrors = null, errors = 0, evaluated0 = validate471.evaluated;
13291
13478
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13292
13479
  for (let key0 in data)
13293
13480
  if (key0 !== "derived") {
@@ -13309,11 +13496,11 @@ function validate469(data, { instancePath = "", parentData, parentDataProperty,
13309
13496
  let err3 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13310
13497
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
13311
13498
  }
13312
- return validate469.errors = vErrors, errors === 0;
13499
+ return validate471.errors = vErrors, errors === 0;
13313
13500
  }
13314
- validate469.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13315
- function validate470(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13316
- let vErrors = null, errors = 0, evaluated0 = validate470.evaluated;
13501
+ validate471.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13502
+ function validate472(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13503
+ let vErrors = null, errors = 0, evaluated0 = validate472.evaluated;
13317
13504
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data))
13318
13505
  for (let key0 in data) {
13319
13506
  let err0 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
@@ -13323,20 +13510,20 @@ function validate470(data, { instancePath = "", parentData, parentDataProperty,
13323
13510
  let err1 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13324
13511
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
13325
13512
  }
13326
- return validate470.errors = vErrors, errors === 0;
13513
+ return validate472.errors = vErrors, errors === 0;
13327
13514
  }
13328
- validate470.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13329
- var schema487 = { type: "object", description: "A forced system or page start within otherwise automatic score flow.", required: ["measure", "kind"], properties: { measure: { type: "string", minLength: 1 }, kind: { type: "string", enum: ["system", "page"] } }, additionalProperties: !1 }, schema471 = { type: "object", properties: { width: { type: "number", exclusiveMinimum: 0 }, height: { type: "number", exclusiveMinimum: 0 }, orientation: { type: "string", enum: ["portrait", "landscape"] }, margins: { $ref: "#/$defs/page-margins" }, spatiumMm: { type: "number", exclusiveMinimum: 0 }, pageTurns: { $ref: "#/$defs/page-turn-settings" } }, additionalProperties: !1 };
13330
- var schema473 = { type: "object", required: ["enabled"], properties: { enabled: { type: "boolean" }, preset: { type: "string", enum: ["relaxed", "professional"] }, comfortableSecs: { type: "number", minimum: 0 }, vsSecs: { type: "number", minimum: 0 }, minAcceptableSecs: { type: "number", minimum: 0 }, targetFillFraction: { type: "number", minimum: 0, maximum: 1 }, minFillFraction: { type: "number", minimum: 0, maximum: 1 }, verticalJustifyThreshold: { type: "number", minimum: 0, maximum: 1 }, allowPartialPages: { type: "boolean" }, allowIntentionalBlanks: { type: "boolean" }, titlePage: { type: "string", enum: ["auto", "always", "never"] }, firstPageRecto: { type: "boolean" }, emitVsMarks: { type: "boolean" }, defaultBpm: { type: "number", exclusiveMinimum: 0 }, weights: { $ref: "#/$defs/page-turn-weights" } }, additionalProperties: !1 };
13331
- function validate473(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13332
- let vErrors = null, errors = 0, evaluated0 = validate473.evaluated;
13515
+ validate472.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13516
+ var schema490 = { type: "object", description: "A forced system or page start within otherwise automatic score flow.", required: ["measure", "kind"], properties: { measure: { type: "string", minLength: 1 }, kind: { type: "string", enum: ["system", "page"] } }, additionalProperties: !1 }, schema474 = { type: "object", properties: { width: { type: "number", exclusiveMinimum: 0 }, height: { type: "number", exclusiveMinimum: 0 }, orientation: { type: "string", enum: ["portrait", "landscape"] }, margins: { $ref: "#/$defs/page-margins" }, spatiumMm: { type: "number", exclusiveMinimum: 0 }, pageTurns: { $ref: "#/$defs/page-turn-settings" } }, additionalProperties: !1 };
13517
+ var schema476 = { type: "object", required: ["enabled"], properties: { enabled: { type: "boolean" }, preset: { type: "string", enum: ["relaxed", "professional"] }, comfortableSecs: { type: "number", minimum: 0 }, vsSecs: { type: "number", minimum: 0 }, minAcceptableSecs: { type: "number", minimum: 0 }, targetFillFraction: { type: "number", minimum: 0, maximum: 1 }, minFillFraction: { type: "number", minimum: 0, maximum: 1 }, verticalJustifyThreshold: { type: "number", minimum: 0, maximum: 1 }, allowPartialPages: { type: "boolean" }, allowIntentionalBlanks: { type: "boolean" }, titlePage: { type: "string", enum: ["auto", "always", "never"] }, firstPageRecto: { type: "boolean" }, emitVsMarks: { type: "boolean" }, defaultBpm: { type: "number", exclusiveMinimum: 0 }, weights: { $ref: "#/$defs/page-turn-weights" } }, additionalProperties: !1 };
13518
+ function validate475(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13519
+ let vErrors = null, errors = 0, evaluated0 = validate475.evaluated;
13333
13520
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13334
13521
  if (data.enabled === void 0) {
13335
13522
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "enabled" }, message: "must have required property 'enabled'" };
13336
13523
  vErrors === null ? vErrors = [err0] : vErrors.push(err0), errors++;
13337
13524
  }
13338
13525
  for (let key0 in data)
13339
- if (!func1.call(schema473.properties, key0)) {
13526
+ if (!func1.call(schema476.properties, key0)) {
13340
13527
  let err1 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
13341
13528
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
13342
13529
  }
@@ -13351,7 +13538,7 @@ function validate473(data, { instancePath = "", parentData, parentDataProperty,
13351
13538
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
13352
13539
  }
13353
13540
  if (!(data1 === "relaxed" || data1 === "professional")) {
13354
- let err4 = { instancePath: instancePath + "/preset", schemaPath: "#/properties/preset/enum", keyword: "enum", params: { allowedValues: schema473.properties.preset.enum }, message: "must be equal to one of the allowed values" };
13541
+ let err4 = { instancePath: instancePath + "/preset", schemaPath: "#/properties/preset/enum", keyword: "enum", params: { allowedValues: schema476.properties.preset.enum }, message: "must be equal to one of the allowed values" };
13355
13542
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
13356
13543
  }
13357
13544
  }
@@ -13454,7 +13641,7 @@ function validate473(data, { instancePath = "", parentData, parentDataProperty,
13454
13641
  vErrors === null ? vErrors = [err22] : vErrors.push(err22), errors++;
13455
13642
  }
13456
13643
  if (!(data10 === "auto" || data10 === "always" || data10 === "never")) {
13457
- let err23 = { instancePath: instancePath + "/titlePage", schemaPath: "#/properties/titlePage/enum", keyword: "enum", params: { allowedValues: schema473.properties.titlePage.enum }, message: "must be equal to one of the allowed values" };
13644
+ let err23 = { instancePath: instancePath + "/titlePage", schemaPath: "#/properties/titlePage/enum", keyword: "enum", params: { allowedValues: schema476.properties.titlePage.enum }, message: "must be equal to one of the allowed values" };
13458
13645
  vErrors === null ? vErrors = [err23] : vErrors.push(err23), errors++;
13459
13646
  }
13460
13647
  }
@@ -13519,11 +13706,11 @@ function validate473(data, { instancePath = "", parentData, parentDataProperty,
13519
13706
  let err36 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13520
13707
  vErrors === null ? vErrors = [err36] : vErrors.push(err36), errors++;
13521
13708
  }
13522
- return validate473.errors = vErrors, errors === 0;
13709
+ return validate475.errors = vErrors, errors === 0;
13523
13710
  }
13524
- validate473.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13525
- function validate472(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13526
- let vErrors = null, errors = 0, evaluated0 = validate472.evaluated;
13711
+ validate475.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13712
+ function validate474(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13713
+ let vErrors = null, errors = 0, evaluated0 = validate474.evaluated;
13527
13714
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13528
13715
  for (let key0 in data)
13529
13716
  if (!(key0 === "width" || key0 === "height" || key0 === "orientation" || key0 === "margins" || key0 === "spatiumMm" || key0 === "pageTurns")) {
@@ -13561,7 +13748,7 @@ function validate472(data, { instancePath = "", parentData, parentDataProperty,
13561
13748
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
13562
13749
  }
13563
13750
  if (!(data2 === "portrait" || data2 === "landscape")) {
13564
- let err6 = { instancePath: instancePath + "/orientation", schemaPath: "#/properties/orientation/enum", keyword: "enum", params: { allowedValues: schema471.properties.orientation.enum }, message: "must be equal to one of the allowed values" };
13751
+ let err6 = { instancePath: instancePath + "/orientation", schemaPath: "#/properties/orientation/enum", keyword: "enum", params: { allowedValues: schema474.properties.orientation.enum }, message: "must be equal to one of the allowed values" };
13565
13752
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
13566
13753
  }
13567
13754
  }
@@ -13654,17 +13841,17 @@ function validate472(data, { instancePath = "", parentData, parentDataProperty,
13654
13841
  vErrors === null ? vErrors = [err22] : vErrors.push(err22), errors++;
13655
13842
  }
13656
13843
  }
13657
- data.pageTurns !== void 0 && (validate473(data.pageTurns, { instancePath: instancePath + "/pageTurns", parentData: data, parentDataProperty: "pageTurns", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate473.errors : vErrors.concat(validate473.errors), errors = vErrors.length));
13844
+ data.pageTurns !== void 0 && (validate475(data.pageTurns, { instancePath: instancePath + "/pageTurns", parentData: data, parentDataProperty: "pageTurns", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate475.errors : vErrors.concat(validate475.errors), errors = vErrors.length));
13658
13845
  } else {
13659
13846
  let err23 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13660
13847
  vErrors === null ? vErrors = [err23] : vErrors.push(err23), errors++;
13661
13848
  }
13662
- return validate472.errors = vErrors, errors === 0;
13849
+ return validate474.errors = vErrors, errors === 0;
13663
13850
  }
13664
- validate472.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13665
- var schema476 = { type: "string", enum: ["full", "short", "hidden"] };
13666
- function validate476(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13667
- let vErrors = null, errors = 0, evaluated0 = validate476.evaluated;
13851
+ validate474.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13852
+ var schema479 = { type: "string", enum: ["full", "short", "hidden"] };
13853
+ function validate478(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13854
+ let vErrors = null, errors = 0, evaluated0 = validate478.evaluated;
13668
13855
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13669
13856
  if (data.firstSystem === void 0) {
13670
13857
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "firstSystem" }, message: "must have required property 'firstSystem'" };
@@ -13686,7 +13873,7 @@ function validate476(data, { instancePath = "", parentData, parentDataProperty,
13686
13873
  vErrors === null ? vErrors = [err3] : vErrors.push(err3), errors++;
13687
13874
  }
13688
13875
  if (!(data0 === "full" || data0 === "short" || data0 === "hidden")) {
13689
- let err4 = { instancePath: instancePath + "/firstSystem", schemaPath: "#/$defs/instrument-name-display-policy/enum", keyword: "enum", params: { allowedValues: schema476.enum }, message: "must be equal to one of the allowed values" };
13876
+ let err4 = { instancePath: instancePath + "/firstSystem", schemaPath: "#/$defs/instrument-name-display-policy/enum", keyword: "enum", params: { allowedValues: schema479.enum }, message: "must be equal to one of the allowed values" };
13690
13877
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
13691
13878
  }
13692
13879
  }
@@ -13697,7 +13884,7 @@ function validate476(data, { instancePath = "", parentData, parentDataProperty,
13697
13884
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
13698
13885
  }
13699
13886
  if (!(data1 === "full" || data1 === "short" || data1 === "hidden")) {
13700
- let err6 = { instancePath: instancePath + "/subsequentSystems", schemaPath: "#/$defs/instrument-name-display-policy/enum", keyword: "enum", params: { allowedValues: schema476.enum }, message: "must be equal to one of the allowed values" };
13887
+ let err6 = { instancePath: instancePath + "/subsequentSystems", schemaPath: "#/$defs/instrument-name-display-policy/enum", keyword: "enum", params: { allowedValues: schema479.enum }, message: "must be equal to one of the allowed values" };
13701
13888
  vErrors === null ? vErrors = [err6] : vErrors.push(err6), errors++;
13702
13889
  }
13703
13890
  }
@@ -13705,12 +13892,12 @@ function validate476(data, { instancePath = "", parentData, parentDataProperty,
13705
13892
  let err7 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13706
13893
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
13707
13894
  }
13708
- return validate476.errors = vErrors, errors === 0;
13895
+ return validate478.errors = vErrors, errors === 0;
13709
13896
  }
13710
- validate476.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13711
- var schema478 = { type: "object", required: ["id", "locator", "placement", "width", "content"], properties: { id: { type: "string", minLength: 1 }, locator: { $ref: "#/$defs/text-frame-locator" }, placement: { $ref: "#/$defs/text-frame-placement" }, width: { $ref: "#/$defs/text-frame-width" }, content: { $ref: "#/$defs/text-content" }, horizontalAlignment: { type: "string", enum: ["left", "center", "right"], description: "Horizontal alignment of the frame at its page anchor, independent of paragraph justification." }, paragraphJustification: { type: "string", enum: ["left", "center", "right", "justify"], description: "Paragraph line justification within the frame, independent of frame alignment." }, padding: { type: "number", minimum: 0, description: "Optional inset on all sides in staff spaces." }, border: { type: "string", enum: ["none", "solid"], description: "Optional frame border style." }, eraseBackground: { type: "boolean", description: "Erase underlying ink within the frame using the surface background. Omitted or false preserves underlying ink; no color is stored." }, sourceReference: { $ref: "#/$defs/text-frame-source-reference" }, staffAttachment: { $ref: "#/$defs/text-frame-staff-attachment" } }, additionalProperties: !1 };
13712
- function validate480(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13713
- let vErrors = null, errors = 0, evaluated0 = validate480.evaluated;
13897
+ validate478.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13898
+ var schema481 = { type: "object", required: ["id", "locator", "placement", "width", "content"], properties: { id: { type: "string", minLength: 1 }, locator: { $ref: "#/$defs/text-frame-locator" }, placement: { $ref: "#/$defs/text-frame-placement" }, width: { $ref: "#/$defs/text-frame-width" }, content: { $ref: "#/$defs/text-content" }, horizontalAlignment: { type: "string", enum: ["left", "center", "right"], description: "Horizontal alignment of the frame at its page anchor, independent of paragraph justification." }, paragraphJustification: { type: "string", enum: ["left", "center", "right", "justify"], description: "Paragraph line justification within the frame, independent of frame alignment." }, padding: { type: "number", minimum: 0, description: "Optional inset on all sides in staff spaces." }, border: { type: "string", enum: ["none", "solid"], description: "Optional frame border style." }, eraseBackground: { type: "boolean", description: "Erase underlying ink within the frame using the surface background. Omitted or false preserves underlying ink; no color is stored." }, sourceReference: { $ref: "#/$defs/text-frame-source-reference" }, staffAttachment: { $ref: "#/$defs/text-frame-staff-attachment" } }, additionalProperties: !1 };
13899
+ function validate482(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13900
+ let vErrors = null, errors = 0, evaluated0 = validate482.evaluated;
13714
13901
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13715
13902
  if (data.partId === void 0) {
13716
13903
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "partId" }, message: "must have required property 'partId'" };
@@ -13813,7 +14000,7 @@ function validate480(data, { instancePath = "", parentData, parentDataProperty,
13813
14000
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
13814
14001
  }
13815
14002
  if (!(data6 === "below" || data6 === "above")) {
13816
- let err18 = { instancePath: instancePath + "/expression/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema394.enum }, message: "must be equal to one of the allowed values" };
14003
+ let err18 = { instancePath: instancePath + "/expression/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema397.enum }, message: "must be equal to one of the allowed values" };
13817
14004
  vErrors === null ? vErrors = [err18] : vErrors.push(err18), errors++;
13818
14005
  }
13819
14006
  }
@@ -13904,11 +14091,11 @@ function validate480(data, { instancePath = "", parentData, parentDataProperty,
13904
14091
  let err35 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
13905
14092
  vErrors === null ? vErrors = [err35] : vErrors.push(err35), errors++;
13906
14093
  }
13907
- return validate480.errors = vErrors, errors === 0;
14094
+ return validate482.errors = vErrors, errors === 0;
13908
14095
  }
13909
- validate480.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
13910
- function validate478(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
13911
- let vErrors = null, errors = 0, evaluated0 = validate478.evaluated;
14096
+ validate482.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
14097
+ function validate480(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
14098
+ let vErrors = null, errors = 0, evaluated0 = validate480.evaluated;
13912
14099
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
13913
14100
  if (data.id === void 0) {
13914
14101
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "id" }, message: "must have required property 'id'" };
@@ -13931,7 +14118,7 @@ function validate478(data, { instancePath = "", parentData, parentDataProperty,
13931
14118
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
13932
14119
  }
13933
14120
  for (let key0 in data)
13934
- if (!func1.call(schema478.properties, key0)) {
14121
+ if (!func1.call(schema481.properties, key0)) {
13935
14122
  let err5 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
13936
14123
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
13937
14124
  }
@@ -14111,7 +14298,7 @@ function validate478(data, { instancePath = "", parentData, parentDataProperty,
14111
14298
  vErrors === null ? vErrors = [err36] : vErrors.push(err36), errors++;
14112
14299
  }
14113
14300
  if (!(data10 === "top" || data10 === "right" || data10 === "bottom" || data10 === "left" || data10 === "top-left" || data10 === "top-right" || data10 === "bottom-right" || data10 === "bottom-left")) {
14114
- let err37 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema427.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
14301
+ let err37 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema430.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
14115
14302
  vErrors === null ? vErrors = [err37] : vErrors.push(err37), errors++;
14116
14303
  }
14117
14304
  }
@@ -14237,14 +14424,14 @@ function validate478(data, { instancePath = "", parentData, parentDataProperty,
14237
14424
  vErrors === null ? vErrors = [err60] : vErrors.push(err60), errors++;
14238
14425
  }
14239
14426
  }
14240
- if (data.content !== void 0 && (validate403(data.content, { instancePath: instancePath + "/content", parentData: data, parentDataProperty: "content", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.horizontalAlignment !== void 0) {
14427
+ if (data.content !== void 0 && (validate405(data.content, { instancePath: instancePath + "/content", parentData: data, parentDataProperty: "content", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.horizontalAlignment !== void 0) {
14241
14428
  let data20 = data.horizontalAlignment;
14242
14429
  if (typeof data20 != "string") {
14243
14430
  let err61 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/type", keyword: "type", params: { type: "string" }, message: "must be string" };
14244
14431
  vErrors === null ? vErrors = [err61] : vErrors.push(err61), errors++;
14245
14432
  }
14246
14433
  if (!(data20 === "left" || data20 === "center" || data20 === "right")) {
14247
- let err62 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema478.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
14434
+ let err62 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema481.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
14248
14435
  vErrors === null ? vErrors = [err62] : vErrors.push(err62), errors++;
14249
14436
  }
14250
14437
  }
@@ -14255,7 +14442,7 @@ function validate478(data, { instancePath = "", parentData, parentDataProperty,
14255
14442
  vErrors === null ? vErrors = [err63] : vErrors.push(err63), errors++;
14256
14443
  }
14257
14444
  if (!(data21 === "left" || data21 === "center" || data21 === "right" || data21 === "justify")) {
14258
- let err64 = { instancePath: instancePath + "/paragraphJustification", schemaPath: "#/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema478.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
14445
+ let err64 = { instancePath: instancePath + "/paragraphJustification", schemaPath: "#/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema481.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
14259
14446
  vErrors === null ? vErrors = [err64] : vErrors.push(err64), errors++;
14260
14447
  }
14261
14448
  }
@@ -14278,7 +14465,7 @@ function validate478(data, { instancePath = "", parentData, parentDataProperty,
14278
14465
  vErrors === null ? vErrors = [err67] : vErrors.push(err67), errors++;
14279
14466
  }
14280
14467
  if (!(data23 === "none" || data23 === "solid")) {
14281
- let err68 = { instancePath: instancePath + "/border", schemaPath: "#/properties/border/enum", keyword: "enum", params: { allowedValues: schema478.properties.border.enum }, message: "must be equal to one of the allowed values" };
14468
+ let err68 = { instancePath: instancePath + "/border", schemaPath: "#/properties/border/enum", keyword: "enum", params: { allowedValues: schema481.properties.border.enum }, message: "must be equal to one of the allowed values" };
14282
14469
  vErrors === null ? vErrors = [err68] : vErrors.push(err68), errors++;
14283
14470
  }
14284
14471
  }
@@ -14327,28 +14514,28 @@ function validate478(data, { instancePath = "", parentData, parentDataProperty,
14327
14514
  vErrors === null ? vErrors = [err76] : vErrors.push(err76), errors++;
14328
14515
  }
14329
14516
  }
14330
- data.staffAttachment !== void 0 && (validate480(data.staffAttachment, { instancePath: instancePath + "/staffAttachment", parentData: data, parentDataProperty: "staffAttachment", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate480.errors : vErrors.concat(validate480.errors), errors = vErrors.length));
14517
+ data.staffAttachment !== void 0 && (validate482(data.staffAttachment, { instancePath: instancePath + "/staffAttachment", parentData: data, parentDataProperty: "staffAttachment", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate482.errors : vErrors.concat(validate482.errors), errors = vErrors.length));
14331
14518
  } else {
14332
14519
  let err77 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
14333
14520
  vErrors === null ? vErrors = [err77] : vErrors.push(err77), errors++;
14334
14521
  }
14335
- return validate478.errors = vErrors, errors === 0;
14522
+ return validate480.errors = vErrors, errors === 0;
14336
14523
  }
14337
- validate478.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
14338
- function validate471(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
14339
- let vErrors = null, errors = 0, evaluated0 = validate471.evaluated;
14524
+ validate480.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
14525
+ function validate473(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
14526
+ let vErrors = null, errors = 0, evaluated0 = validate473.evaluated;
14340
14527
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
14341
14528
  for (let key0 in data)
14342
14529
  if (!(key0 === "pageSetup" || key0 === "instrumentNameDisplay" || key0 === "textFrames" || key0 === "layoutBreaks")) {
14343
14530
  let err0 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
14344
14531
  vErrors === null ? vErrors = [err0] : vErrors.push(err0), errors++;
14345
14532
  }
14346
- if (data.pageSetup !== void 0 && (validate472(data.pageSetup, { instancePath: instancePath + "/pageSetup", parentData: data, parentDataProperty: "pageSetup", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate472.errors : vErrors.concat(validate472.errors), errors = vErrors.length)), data.instrumentNameDisplay !== void 0 && (validate476(data.instrumentNameDisplay, { instancePath: instancePath + "/instrumentNameDisplay", parentData: data, parentDataProperty: "instrumentNameDisplay", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate476.errors : vErrors.concat(validate476.errors), errors = vErrors.length)), data.textFrames !== void 0) {
14533
+ if (data.pageSetup !== void 0 && (validate474(data.pageSetup, { instancePath: instancePath + "/pageSetup", parentData: data, parentDataProperty: "pageSetup", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate474.errors : vErrors.concat(validate474.errors), errors = vErrors.length)), data.instrumentNameDisplay !== void 0 && (validate478(data.instrumentNameDisplay, { instancePath: instancePath + "/instrumentNameDisplay", parentData: data, parentDataProperty: "instrumentNameDisplay", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate478.errors : vErrors.concat(validate478.errors), errors = vErrors.length)), data.textFrames !== void 0) {
14347
14534
  let data2 = data.textFrames;
14348
14535
  if (Array.isArray(data2)) {
14349
14536
  let len0 = data2.length;
14350
14537
  for (let i0 = 0; i0 < len0; i0++)
14351
- validate478(data2[i0], { instancePath: instancePath + "/textFrames/" + i0, parentData: data2, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate478.errors : vErrors.concat(validate478.errors), errors = vErrors.length);
14538
+ validate480(data2[i0], { instancePath: instancePath + "/textFrames/" + i0, parentData: data2, parentDataProperty: i0, rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate480.errors : vErrors.concat(validate480.errors), errors = vErrors.length);
14352
14539
  } else {
14353
14540
  let err1 = { instancePath: instancePath + "/textFrames", schemaPath: "#/properties/textFrames/type", keyword: "type", params: { type: "array" }, message: "must be array" };
14354
14541
  vErrors === null ? vErrors = [err1] : vErrors.push(err1), errors++;
@@ -14393,7 +14580,7 @@ function validate471(data, { instancePath = "", parentData, parentDataProperty,
14393
14580
  vErrors === null ? vErrors = [err7] : vErrors.push(err7), errors++;
14394
14581
  }
14395
14582
  if (!(data7 === "system" || data7 === "page")) {
14396
- let err8 = { instancePath: instancePath + "/layoutBreaks/" + i1 + "/kind", schemaPath: "#/$defs/layout-break/properties/kind/enum", keyword: "enum", params: { allowedValues: schema487.properties.kind.enum }, message: "must be equal to one of the allowed values" };
14583
+ let err8 = { instancePath: instancePath + "/layoutBreaks/" + i1 + "/kind", schemaPath: "#/$defs/layout-break/properties/kind/enum", keyword: "enum", params: { allowedValues: schema490.properties.kind.enum }, message: "must be equal to one of the allowed values" };
14397
14584
  vErrors === null ? vErrors = [err8] : vErrors.push(err8), errors++;
14398
14585
  }
14399
14586
  }
@@ -14411,12 +14598,12 @@ function validate471(data, { instancePath = "", parentData, parentDataProperty,
14411
14598
  let err11 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
14412
14599
  vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
14413
14600
  }
14414
- return validate471.errors = vErrors, errors === 0;
14601
+ return validate473.errors = vErrors, errors === 0;
14415
14602
  }
14416
- validate471.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
14417
- var textFrame = validate483;
14418
- function validate483(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
14419
- let vErrors = null, errors = 0, evaluated0 = validate483.evaluated;
14603
+ validate473.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
14604
+ var textFrame = validate485;
14605
+ function validate485(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
14606
+ let vErrors = null, errors = 0, evaluated0 = validate485.evaluated;
14420
14607
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
14421
14608
  if (data.id === void 0) {
14422
14609
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "id" }, message: "must have required property 'id'" };
@@ -14439,7 +14626,7 @@ function validate483(data, { instancePath = "", parentData, parentDataProperty,
14439
14626
  vErrors === null ? vErrors = [err4] : vErrors.push(err4), errors++;
14440
14627
  }
14441
14628
  for (let key0 in data)
14442
- if (!func1.call(schema478.properties, key0)) {
14629
+ if (!func1.call(schema481.properties, key0)) {
14443
14630
  let err5 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" };
14444
14631
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
14445
14632
  }
@@ -14619,7 +14806,7 @@ function validate483(data, { instancePath = "", parentData, parentDataProperty,
14619
14806
  vErrors === null ? vErrors = [err36] : vErrors.push(err36), errors++;
14620
14807
  }
14621
14808
  if (!(data10 === "top" || data10 === "right" || data10 === "bottom" || data10 === "left" || data10 === "top-left" || data10 === "top-right" || data10 === "bottom-right" || data10 === "bottom-left")) {
14622
- let err37 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema427.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
14809
+ let err37 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema430.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
14623
14810
  vErrors === null ? vErrors = [err37] : vErrors.push(err37), errors++;
14624
14811
  }
14625
14812
  }
@@ -14745,14 +14932,14 @@ function validate483(data, { instancePath = "", parentData, parentDataProperty,
14745
14932
  vErrors === null ? vErrors = [err60] : vErrors.push(err60), errors++;
14746
14933
  }
14747
14934
  }
14748
- if (data.content !== void 0 && (validate403(data.content, { instancePath: instancePath + "/content", parentData: data, parentDataProperty: "content", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.horizontalAlignment !== void 0) {
14935
+ if (data.content !== void 0 && (validate405(data.content, { instancePath: instancePath + "/content", parentData: data, parentDataProperty: "content", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.horizontalAlignment !== void 0) {
14749
14936
  let data20 = data.horizontalAlignment;
14750
14937
  if (typeof data20 != "string") {
14751
14938
  let err61 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/type", keyword: "type", params: { type: "string" }, message: "must be string" };
14752
14939
  vErrors === null ? vErrors = [err61] : vErrors.push(err61), errors++;
14753
14940
  }
14754
14941
  if (!(data20 === "left" || data20 === "center" || data20 === "right")) {
14755
- let err62 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema478.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
14942
+ let err62 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema481.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
14756
14943
  vErrors === null ? vErrors = [err62] : vErrors.push(err62), errors++;
14757
14944
  }
14758
14945
  }
@@ -14763,7 +14950,7 @@ function validate483(data, { instancePath = "", parentData, parentDataProperty,
14763
14950
  vErrors === null ? vErrors = [err63] : vErrors.push(err63), errors++;
14764
14951
  }
14765
14952
  if (!(data21 === "left" || data21 === "center" || data21 === "right" || data21 === "justify")) {
14766
- let err64 = { instancePath: instancePath + "/paragraphJustification", schemaPath: "#/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema478.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
14953
+ let err64 = { instancePath: instancePath + "/paragraphJustification", schemaPath: "#/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema481.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
14767
14954
  vErrors === null ? vErrors = [err64] : vErrors.push(err64), errors++;
14768
14955
  }
14769
14956
  }
@@ -14786,7 +14973,7 @@ function validate483(data, { instancePath = "", parentData, parentDataProperty,
14786
14973
  vErrors === null ? vErrors = [err67] : vErrors.push(err67), errors++;
14787
14974
  }
14788
14975
  if (!(data23 === "none" || data23 === "solid")) {
14789
- let err68 = { instancePath: instancePath + "/border", schemaPath: "#/properties/border/enum", keyword: "enum", params: { allowedValues: schema478.properties.border.enum }, message: "must be equal to one of the allowed values" };
14976
+ let err68 = { instancePath: instancePath + "/border", schemaPath: "#/properties/border/enum", keyword: "enum", params: { allowedValues: schema481.properties.border.enum }, message: "must be equal to one of the allowed values" };
14790
14977
  vErrors === null ? vErrors = [err68] : vErrors.push(err68), errors++;
14791
14978
  }
14792
14979
  }
@@ -14835,17 +15022,17 @@ function validate483(data, { instancePath = "", parentData, parentDataProperty,
14835
15022
  vErrors === null ? vErrors = [err76] : vErrors.push(err76), errors++;
14836
15023
  }
14837
15024
  }
14838
- data.staffAttachment !== void 0 && (validate480(data.staffAttachment, { instancePath: instancePath + "/staffAttachment", parentData: data, parentDataProperty: "staffAttachment", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate480.errors : vErrors.concat(validate480.errors), errors = vErrors.length));
15025
+ data.staffAttachment !== void 0 && (validate482(data.staffAttachment, { instancePath: instancePath + "/staffAttachment", parentData: data, parentDataProperty: "staffAttachment", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate482.errors : vErrors.concat(validate482.errors), errors = vErrors.length));
14839
15026
  } else {
14840
15027
  let err77 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
14841
15028
  vErrors === null ? vErrors = [err77] : vErrors.push(err77), errors++;
14842
15029
  }
14843
- return validate483.errors = vErrors, errors === 0;
15030
+ return validate485.errors = vErrors, errors === 0;
14844
15031
  }
14845
- validate483.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
14846
- var systemText = validate486;
14847
- function validate486(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
14848
- let vErrors = null, errors = 0, evaluated0 = validate486.evaluated;
15032
+ validate485.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
15033
+ var systemText = validate488;
15034
+ function validate488(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
15035
+ let vErrors = null, errors = 0, evaluated0 = validate488.evaluated;
14849
15036
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
14850
15037
  if (data.id === void 0) {
14851
15038
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "id" }, message: "must have required property 'id'" };
@@ -14876,7 +15063,7 @@ function validate486(data, { instancePath = "", parentData, parentDataProperty,
14876
15063
  vErrors === null ? vErrors = [err5] : vErrors.push(err5), errors++;
14877
15064
  }
14878
15065
  }
14879
- if (data.text !== void 0 && (validate403(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors), errors = vErrors.length)), data.frame !== void 0) {
15066
+ if (data.text !== void 0 && (validate405(data.text, { instancePath: instancePath + "/text", parentData: data, parentDataProperty: "text", rootData, dynamicAnchors }) || (vErrors = vErrors === null ? validate405.errors : vErrors.concat(validate405.errors), errors = vErrors.length)), data.frame !== void 0) {
14880
15067
  let data2 = data.frame;
14881
15068
  if (data2 && typeof data2 == "object" && !Array.isArray(data2)) {
14882
15069
  for (let key1 in data2)
@@ -14928,7 +15115,7 @@ function validate486(data, { instancePath = "", parentData, parentDataProperty,
14928
15115
  vErrors === null ? vErrors = [err14] : vErrors.push(err14), errors++;
14929
15116
  }
14930
15117
  if (!(data6 === "left" || data6 === "center" || data6 === "right")) {
14931
- let err15 = { instancePath: instancePath + "/frame/horizontalAlignment", schemaPath: "#/$defs/staff-text-frame-presentation/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema392.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
15118
+ let err15 = { instancePath: instancePath + "/frame/horizontalAlignment", schemaPath: "#/$defs/staff-text-frame-presentation/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema395.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
14932
15119
  vErrors === null ? vErrors = [err15] : vErrors.push(err15), errors++;
14933
15120
  }
14934
15121
  }
@@ -14939,7 +15126,7 @@ function validate486(data, { instancePath = "", parentData, parentDataProperty,
14939
15126
  vErrors === null ? vErrors = [err16] : vErrors.push(err16), errors++;
14940
15127
  }
14941
15128
  if (!(data7 === "left" || data7 === "center" || data7 === "right" || data7 === "justify")) {
14942
- let err17 = { instancePath: instancePath + "/frame/paragraphJustification", schemaPath: "#/$defs/staff-text-frame-presentation/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema392.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
15129
+ let err17 = { instancePath: instancePath + "/frame/paragraphJustification", schemaPath: "#/$defs/staff-text-frame-presentation/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema395.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
14943
15130
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
14944
15131
  }
14945
15132
  }
@@ -14962,7 +15149,7 @@ function validate486(data, { instancePath = "", parentData, parentDataProperty,
14962
15149
  vErrors === null ? vErrors = [err20] : vErrors.push(err20), errors++;
14963
15150
  }
14964
15151
  if (!(data9 === "none" || data9 === "solid")) {
14965
- let err21 = { instancePath: instancePath + "/frame/border", schemaPath: "#/$defs/staff-text-frame-presentation/properties/border/enum", keyword: "enum", params: { allowedValues: schema392.properties.border.enum }, message: "must be equal to one of the allowed values" };
15152
+ let err21 = { instancePath: instancePath + "/frame/border", schemaPath: "#/$defs/staff-text-frame-presentation/properties/border/enum", keyword: "enum", params: { allowedValues: schema395.properties.border.enum }, message: "must be equal to one of the allowed values" };
14966
15153
  vErrors === null ? vErrors = [err21] : vErrors.push(err21), errors++;
14967
15154
  }
14968
15155
  }
@@ -15051,7 +15238,7 @@ function validate486(data, { instancePath = "", parentData, parentDataProperty,
15051
15238
  vErrors === null ? vErrors = [err35] : vErrors.push(err35), errors++;
15052
15239
  }
15053
15240
  if (!(data17 === "below" || data17 === "above")) {
15054
- let err36 = { instancePath: instancePath + "/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema394.enum }, message: "must be equal to one of the allowed values" };
15241
+ let err36 = { instancePath: instancePath + "/placement", schemaPath: "#/$defs/expression-placement/enum", keyword: "enum", params: { allowedValues: schema397.enum }, message: "must be equal to one of the allowed values" };
15055
15242
  vErrors === null ? vErrors = [err36] : vErrors.push(err36), errors++;
15056
15243
  }
15057
15244
  }
@@ -15085,12 +15272,12 @@ function validate486(data, { instancePath = "", parentData, parentDataProperty,
15085
15272
  let err42 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
15086
15273
  vErrors === null ? vErrors = [err42] : vErrors.push(err42), errors++;
15087
15274
  }
15088
- return validate486.errors = vErrors, errors === 0;
15275
+ return validate488.errors = vErrors, errors === 0;
15089
15276
  }
15090
- validate486.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
15091
- var staffTextFramePresentation = validate488;
15092
- function validate488(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
15093
- let vErrors = null, errors = 0, evaluated0 = validate488.evaluated;
15277
+ validate488.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
15278
+ var staffTextFramePresentation = validate490;
15279
+ function validate490(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
15280
+ let vErrors = null, errors = 0, evaluated0 = validate490.evaluated;
15094
15281
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
15095
15282
  for (let key0 in data)
15096
15283
  if (!(key0 === "width" || key0 === "horizontalAlignment" || key0 === "paragraphJustification" || key0 === "padding" || key0 === "border" || key0 === "eraseBackground")) {
@@ -15141,7 +15328,7 @@ function validate488(data, { instancePath = "", parentData, parentDataProperty,
15141
15328
  vErrors === null ? vErrors = [err8] : vErrors.push(err8), errors++;
15142
15329
  }
15143
15330
  if (!(data3 === "left" || data3 === "center" || data3 === "right")) {
15144
- let err9 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema392.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
15331
+ let err9 = { instancePath: instancePath + "/horizontalAlignment", schemaPath: "#/properties/horizontalAlignment/enum", keyword: "enum", params: { allowedValues: schema395.properties.horizontalAlignment.enum }, message: "must be equal to one of the allowed values" };
15145
15332
  vErrors === null ? vErrors = [err9] : vErrors.push(err9), errors++;
15146
15333
  }
15147
15334
  }
@@ -15152,7 +15339,7 @@ function validate488(data, { instancePath = "", parentData, parentDataProperty,
15152
15339
  vErrors === null ? vErrors = [err10] : vErrors.push(err10), errors++;
15153
15340
  }
15154
15341
  if (!(data4 === "left" || data4 === "center" || data4 === "right" || data4 === "justify")) {
15155
- let err11 = { instancePath: instancePath + "/paragraphJustification", schemaPath: "#/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema392.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
15342
+ let err11 = { instancePath: instancePath + "/paragraphJustification", schemaPath: "#/properties/paragraphJustification/enum", keyword: "enum", params: { allowedValues: schema395.properties.paragraphJustification.enum }, message: "must be equal to one of the allowed values" };
15156
15343
  vErrors === null ? vErrors = [err11] : vErrors.push(err11), errors++;
15157
15344
  }
15158
15345
  }
@@ -15175,7 +15362,7 @@ function validate488(data, { instancePath = "", parentData, parentDataProperty,
15175
15362
  vErrors === null ? vErrors = [err14] : vErrors.push(err14), errors++;
15176
15363
  }
15177
15364
  if (!(data6 === "none" || data6 === "solid")) {
15178
- let err15 = { instancePath: instancePath + "/border", schemaPath: "#/properties/border/enum", keyword: "enum", params: { allowedValues: schema392.properties.border.enum }, message: "must be equal to one of the allowed values" };
15365
+ let err15 = { instancePath: instancePath + "/border", schemaPath: "#/properties/border/enum", keyword: "enum", params: { allowedValues: schema395.properties.border.enum }, message: "must be equal to one of the allowed values" };
15179
15366
  vErrors === null ? vErrors = [err15] : vErrors.push(err15), errors++;
15180
15367
  }
15181
15368
  }
@@ -15187,12 +15374,12 @@ function validate488(data, { instancePath = "", parentData, parentDataProperty,
15187
15374
  let err17 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
15188
15375
  vErrors === null ? vErrors = [err17] : vErrors.push(err17), errors++;
15189
15376
  }
15190
- return validate488.errors = vErrors, errors === 0;
15377
+ return validate490.errors = vErrors, errors === 0;
15191
15378
  }
15192
- validate488.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
15193
- var textFramePagePosition = validate489;
15194
- function validate489(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
15195
- let vErrors = null, errors = 0, evaluated0 = validate489.evaluated;
15379
+ validate490.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
15380
+ var textFramePagePosition = validate491;
15381
+ function validate491(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
15382
+ let vErrors = null, errors = 0, evaluated0 = validate491.evaluated;
15196
15383
  if (evaluated0.dynamicProps && (evaluated0.props = void 0), evaluated0.dynamicItems && (evaluated0.items = void 0), data && typeof data == "object" && !Array.isArray(data)) {
15197
15384
  if (data.id === void 0) {
15198
15385
  let err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "id" }, message: "must have required property 'id'" };
@@ -15402,7 +15589,7 @@ function validate489(data, { instancePath = "", parentData, parentDataProperty,
15402
15589
  vErrors === null ? vErrors = [err37] : vErrors.push(err37), errors++;
15403
15590
  }
15404
15591
  if (!(data11 === "top" || data11 === "right" || data11 === "bottom" || data11 === "left" || data11 === "top-left" || data11 === "top-right" || data11 === "bottom-right" || data11 === "bottom-left")) {
15405
- let err38 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema427.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
15592
+ let err38 = { instancePath: instancePath + "/placement/anchor", schemaPath: "#/$defs/text-frame-placement/properties/anchor/enum", keyword: "enum", params: { allowedValues: schema430.properties.anchor.enum }, message: "must be equal to one of the allowed values" };
15406
15593
  vErrors === null ? vErrors = [err38] : vErrors.push(err38), errors++;
15407
15594
  }
15408
15595
  }
@@ -15573,9 +15760,9 @@ function validate489(data, { instancePath = "", parentData, parentDataProperty,
15573
15760
  let err69 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
15574
15761
  vErrors === null ? vErrors = [err69] : vErrors.push(err69), errors++;
15575
15762
  }
15576
- return validate489.errors = vErrors, errors === 0;
15763
+ return validate491.errors = vErrors, errors === 0;
15577
15764
  }
15578
- validate489.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
15765
+ validate491.evaluated = { props: !0, dynamicProps: !1, dynamicItems: !1 };
15579
15766
 
15580
15767
  // packages/format/src/mnx/staffTextFrame.ts
15581
15768
  function parseTextFramePagePosition(raw) {
@@ -16266,6 +16453,49 @@ function parseRootInstrumentChangeStyle(rootX) {
16266
16453
  };
16267
16454
  }
16268
16455
 
16456
+ // packages/format/src/mnx/mixerSettings.ts
16457
+ init_define_import_meta_env();
16458
+ function isObject(value) {
16459
+ return value !== null && typeof value == "object" && !Array.isArray(value);
16460
+ }
16461
+ function optionalGain(value) {
16462
+ return value === void 0 || typeof value == "number" && value >= 0 && value <= 10 ** (6 / 20);
16463
+ }
16464
+ function optionalBoolean(value) {
16465
+ return value === void 0 || typeof value == "boolean";
16466
+ }
16467
+ function isBus(value) {
16468
+ return isObject(value) && optionalGain(value.volume) && optionalBoolean(value.muted) && optionalBoolean(value.solo);
16469
+ }
16470
+ function isChannel(value) {
16471
+ if (!isObject(value) || !isBus(value)) return !1;
16472
+ let pan = value.pan;
16473
+ return (pan === void 0 || typeof pan == "number" && pan >= -1 && pan <= 1) && optionalBoolean(value.ensembleEnabled) && (value.spatialMode === void 0 || value.spatialMode === "stereo" || value.spatialMode === "stage");
16474
+ }
16475
+ function parseMap(value, name, guard) {
16476
+ if (value !== void 0) {
16477
+ if (!isObject(value)) throw new Error(`Invalid _x.viritura.mixer.${name}`);
16478
+ return Object.fromEntries(
16479
+ Object.entries(value).map(([id, settings]) => {
16480
+ if (!guard(settings)) throw new Error(`Invalid _x.viritura.mixer.${name}.${id}`);
16481
+ return [id, { ...settings }];
16482
+ })
16483
+ );
16484
+ }
16485
+ }
16486
+ function parseMixerSettings(value) {
16487
+ if (value === void 0) return;
16488
+ if (!isObject(value) || !optionalGain(value.masterVolume) || !optionalBoolean(value.masterMuted))
16489
+ throw new Error("Invalid _x.viritura.mixer master settings");
16490
+ let channels = parseMap(value.channels, "channels", isChannel), groups = parseMap(value.groups, "groups", isBus);
16491
+ return {
16492
+ ...channels ? { channels } : {},
16493
+ ...groups ? { groups } : {},
16494
+ ...typeof value.masterVolume == "number" ? { masterVolume: value.masterVolume } : {},
16495
+ ...typeof value.masterMuted == "boolean" ? { masterMuted: value.masterMuted } : {}
16496
+ };
16497
+ }
16498
+
16269
16499
  // packages/format/src/mnx/parseLayout.ts
16270
16500
  init_define_import_meta_env();
16271
16501
 
@@ -16741,6 +16971,8 @@ function applyRootExtensions(score, rootX) {
16741
16971
  instrumentChangeStyle && (score.instrumentChangeStyle = instrumentChangeStyle);
16742
16972
  let soundProfile = parseRootSoundProfile(rootX);
16743
16973
  soundProfile && (score.soundProfile = soundProfile);
16974
+ let mixer = parseMixerSettings(rootX?.viritura?.mixer);
16975
+ mixer && (score.mixer = mixer);
16744
16976
  let videoSync = parseRootVideoSync(rootX);
16745
16977
  videoSync && (score.videoSync = videoSync);
16746
16978
  let lyricWorkflow = parseRootLyricWorkflow(rootX);
@@ -17439,6 +17671,17 @@ function compileNavigation(measures, initialOrder, measureLengths) {
17439
17671
 
17440
17672
  // packages/midi/src/navigation/realization.ts
17441
17673
  init_define_import_meta_env();
17674
+ function navigationNoteKey(event) {
17675
+ return `${event.partIndex}:${event.playbackLaneId ?? event.channel}:${event.midiNote}:${event.drumKitProgram ?? ""}`;
17676
+ }
17677
+ function releaseUncontinuedNotes(activeNotes, continuations, time, out) {
17678
+ let continued = new Set(continuations.map(navigationNoteKey));
17679
+ for (let [key, pending] of activeNotes)
17680
+ if (!continued.has(key)) {
17681
+ for (let onset of pending) out.push({ ...onset, type: "noteOff", velocity: 0, time });
17682
+ pending.length = 0;
17683
+ }
17684
+ }
17442
17685
  function authoredOnsetInSpan(event, start, end) {
17443
17686
  return event.type === "noteOn" && event.scoreBeat !== void 0 && event.scoreBeat >= start - 1e-9 && event.scoreBeat < end - 1e-9;
17444
17687
  }
@@ -17469,7 +17712,7 @@ function spanTempoMap(timeline, index, span, model, outputBeat) {
17469
17712
  }
17470
17713
  return entries;
17471
17714
  }
17472
- function realizeNavigation(timeline, spans) {
17715
+ function realizeNavigation(timeline, spans, crossJumpContinuations = /* @__PURE__ */ new Map()) {
17473
17716
  let sourceSpans = spans.map((span, index) => ({
17474
17717
  startBeat: timeline.measureStartBeats[index] + span.startBeat,
17475
17718
  endBeat: timeline.measureStartBeats[index] + span.endBeat
@@ -17477,7 +17720,7 @@ function realizeNavigation(timeline, spans) {
17477
17720
  for (let index = 0; index < spans.length; index++) {
17478
17721
  let span = spans[index], source = sourceSpans[index], startTime = timeline.model.timeAtBeat(source.startBeat), endTime = timeline.model.timeAtBeat(source.endBeat), controllers = /* @__PURE__ */ new Map(), segmentStart = events.length;
17479
17722
  measureStartBeats.push(outputBeat), tempoMap.push(...spanTempoMap(timeline, index, span, model, outputBeat));
17480
- let translate = (time) => model.timeAtBeat(outputBeat) + Math.min(endTime - startTime, Math.max(0, time - startTime)), noteKey = (event) => `${event.partIndex}:${event.playbackLaneId ?? event.channel}:${event.midiNote}:${event.drumKitProgram ?? ""}`;
17723
+ let translate = (time) => model.timeAtBeat(outputBeat) + Math.min(endTime - startTime, Math.max(0, time - startTime));
17481
17724
  for (let event of timeline.events) {
17482
17725
  let authoredOnset = authoredOnsetInSpan(event, source.startBeat, source.endBeat);
17483
17726
  if (event.time < startTime - 1e-9 && !authoredOnset) {
@@ -17501,10 +17744,10 @@ function realizeNavigation(timeline, spans) {
17501
17744
  )
17502
17745
  };
17503
17746
  events.push(output);
17504
- let key = noteKey(event), pending = activeNotes.get(key) ?? [];
17747
+ let key = navigationNoteKey(event), pending = activeNotes.get(key) ?? [];
17505
17748
  pending.push(output), activeNotes.set(key, pending);
17506
17749
  } else if (event.type === "noteOff") {
17507
- let pending = activeNotes.get(noteKey(event));
17750
+ let pending = activeNotes.get(navigationNoteKey(event));
17508
17751
  if (!pending?.length) continue;
17509
17752
  pending.shift(), events.push({ ...event, time: translate(event.time) });
17510
17753
  } else event.time < endTime - 1e-9 && events.push({ ...event, time: translate(event.time) });
@@ -17515,18 +17758,12 @@ function realizeNavigation(timeline, spans) {
17515
17758
  ...Array.from(controllers.values(), (event) => ({ ...event, time: model.timeAtBeat(outputBeat) }))
17516
17759
  );
17517
17760
  let next = spans[index + 1];
17518
- if (!playedSpansContinue(span, next))
17519
- for (let pending of activeNotes.values()) {
17520
- for (let onset of pending)
17521
- events.push({
17522
- ...onset,
17523
- type: "noteOff",
17524
- velocity: 0,
17525
- time: model.timeAtBeat(outputBeat + span.endBeat - span.startBeat, "release")
17526
- });
17527
- pending.length = 0;
17528
- }
17529
- outputBeat += span.endBeat - span.startBeat;
17761
+ playedSpansContinue(span, next) || releaseUncontinuedNotes(
17762
+ activeNotes,
17763
+ crossJumpContinuations.get(index + 1) ?? [],
17764
+ model.timeAtBeat(outputBeat + span.endBeat - span.startBeat, "release"),
17765
+ events
17766
+ ), outputBeat += span.endBeat - span.startBeat;
17530
17767
  }
17531
17768
  let rank = { noteOff: 0, programChange: 1, controlChange: 2, noteOn: 3 };
17532
17769
  return events.sort((a, b) => a.time - b.time || rank[a.type] - rank[b.type]), {
@@ -18202,6 +18439,44 @@ function applyMeasureTechniques(expressions, ctx, state, caps, ratioForStaff = (
18202
18439
  return { program, muted, ...instrumentKey === void 0 ? {} : { instrumentKey } };
18203
18440
  }
18204
18441
 
18442
+ // packages/midi/src/tiePlayback/index.ts
18443
+ init_define_import_meta_env();
18444
+ function tiePlaybackKey(pitch, partIndex, voice) {
18445
+ return `${pitch}:${partIndex}:${voice}`;
18446
+ }
18447
+ function recordTieTargets(state, key, note) {
18448
+ let targets = note.ties?.filter((tie) => tie.lv !== !0 && tie.target !== void 0) ?? [];
18449
+ targets.length ? state.set(key, targets) : state.delete(key);
18450
+ }
18451
+ function tieContinuesTo(state, key, note) {
18452
+ return note.id !== void 0 && (state.get(key)?.some((tie) => tie.target === note.id) ?? !1);
18453
+ }
18454
+ function notesAtBeat(content, target, notes, offset = 0, ratio = 1) {
18455
+ let beat = offset;
18456
+ for (let item of content) {
18457
+ if (item.type === "event")
18458
+ Math.abs(beat - target) < 1e-9 && notes.push(...item.notes ?? []), beat += durationBeats4(item.duration) * ratio;
18459
+ else if (item.type === "tuplet") {
18460
+ let factor = durationBeats4(item.outer.duration) * item.outer.multiple / (durationBeats4(item.inner.duration) * item.inner.multiple);
18461
+ beat = notesAtBeat(item.content, target, notes, beat, ratio * factor);
18462
+ } else item.type === "space" ? beat += item.duration[0] / item.duration[1] * 4 * ratio : item.type === "tremolo" && (Math.abs(beat - target) < 1e-9 && notes.push(...item.content[0]?.notes ?? []), beat += durationBeats4(item.outer.duration) * item.outer.multiple * ratio);
18463
+ if (beat > target + 1e-9) break;
18464
+ }
18465
+ return beat;
18466
+ }
18467
+ function crossJumpContinuationKeys(state, measure, startBeat, partIndex, ratioForStaff) {
18468
+ let keys = /* @__PURE__ */ new Set();
18469
+ for (let [index, sequence] of (measure?.sequences ?? []).entries()) {
18470
+ let notes = [];
18471
+ notesAtBeat(sequence.content, startBeat / ratioForStaff(sequence.staff ?? 1), notes);
18472
+ for (let note of notes) {
18473
+ let key = tiePlaybackKey(pitchToMidi(note.pitch), partIndex, sequence.voice ?? `v${index}`);
18474
+ note.id !== void 0 && state.get(key)?.some((tie) => tie.targetType === "crossJump" && tie.target === note.id) && keys.add(key);
18475
+ }
18476
+ }
18477
+ return keys;
18478
+ }
18479
+
18205
18480
  // packages/midi/src/instrumentPlayback/index.ts
18206
18481
  init_define_import_meta_env();
18207
18482
  function instrumentPart(part, instrument) {
@@ -18955,7 +19230,15 @@ function generateTimeline(inputScore, options) {
18955
19230
  let expandedGlobal = playbackGlobalMeasures(score, measureOrder), holdSchedule = suppressCadenzaFermataHolds(
18956
19231
  expandedGlobal,
18957
19232
  buildHoldSchedule(score, measureOrder, globalMeasures)
18958
- ), { tempoMap } = buildTempoMap(expandedGlobal, holdSchedule), tempoBuild = buildTempoModel(expandedGlobal, holdSchedule), { model, measureStartTimes, measureStartBeats } = tempoBuild, rhythm = compileRhythmProgram(score), timing = { tempoMap, measureStartTimes, model, measureStartBeats, playedSpans: spans, rhythm }, allEvents = [], partChannels = allocatePartChannels(score.parts);
19233
+ ), { tempoMap } = buildTempoMap(expandedGlobal, holdSchedule), tempoBuild = buildTempoModel(expandedGlobal, holdSchedule), { model, measureStartTimes, measureStartBeats } = tempoBuild, rhythm = compileRhythmProgram(score), crossJumpContinuations = /* @__PURE__ */ new Map(), timing = {
19234
+ tempoMap,
19235
+ measureStartTimes,
19236
+ model,
19237
+ measureStartBeats,
19238
+ playedSpans: spans,
19239
+ rhythm,
19240
+ crossJumpContinuations
19241
+ }, allEvents = [], partChannels = allocatePartChannels(score.parts);
18959
19242
  for (let partIdx = 0; partIdx < score.parts.length; partIdx++)
18960
19243
  processPart(
18961
19244
  score,
@@ -19005,7 +19288,7 @@ function generateTimeline(inputScore, options) {
19005
19288
  measureTimeSignatures,
19006
19289
  diagnostics
19007
19290
  };
19008
- return spans && (globalMeasures.some((measure) => measure.jump !== void 0) || spans.some((span) => span.startBeat > 0 || span.endBeat < span.measureBeats)) ? realizeNavigation(result, spans) : { ...result, playedSpans: spans };
19291
+ return spans && (globalMeasures.some((measure) => measure.jump !== void 0) || spans.some((span) => span.startBeat > 0 || span.endBeat < span.measureBeats)) ? realizeNavigation(result, spans, crossJumpContinuations) : { ...result, playedSpans: spans };
19009
19292
  }
19010
19293
  function assignPhysicalMidiChannels(events, score) {
19011
19294
  let melodicChannels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15], lanesByPart = /* @__PURE__ */ new Map();
@@ -19036,24 +19319,6 @@ function assignPhysicalMidiChannels(events, score) {
19036
19319
  event.channel = channelByLane.get(event.playbackLaneId ?? `part:${event.partIndex}`) ?? event.channel;
19037
19320
  return diagnostics;
19038
19321
  }
19039
- function collectNoteTieTargets(notes, targets) {
19040
- if (notes) {
19041
- for (let note of notes)
19042
- if (note.ties)
19043
- for (let tie of note.ties)
19044
- tie.target && targets.add(tie.target);
19045
- }
19046
- }
19047
- function collectTieTargets(content, targets) {
19048
- for (let item of content)
19049
- if (item.type === "event")
19050
- collectNoteTieTargets(item.notes, targets);
19051
- else if (item.type === "tuplet")
19052
- collectTieTargets(item.content, targets);
19053
- else if (item.type === "grace")
19054
- for (let evt of item.content)
19055
- collectNoteTieTargets(evt.notes, targets);
19056
- }
19057
19322
  function allocatePartChannels(parts) {
19058
19323
  let channels = [], melodicCounter = 0;
19059
19324
  for (let part of parts)
@@ -19081,18 +19346,17 @@ function buildKitAltProgramMap(part) {
19081
19346
  typeof comp.drumKit == "number" && (map ??= /* @__PURE__ */ new Map()).set(id, comp.drumKit);
19082
19347
  return map;
19083
19348
  }
19084
- function collectPartTieTargets(part, measureOrder) {
19085
- let tieTargets = /* @__PURE__ */ new Set();
19086
- for (let expandedIdx of measureOrder) {
19087
- let partMeasure = part.measures[expandedIdx];
19088
- if (partMeasure)
19089
- for (let seq of partMeasure.sequences)
19090
- collectTieTargets(seq.content, tieTargets);
19349
+ function retainCrossJumpNoteOffs(pending, targets, continuing, cutTime, continued, out) {
19350
+ for (let [key, noteOff] of pending) {
19351
+ if (continuing.has(key) && noteOff.time >= cutTime - 1e-7) {
19352
+ continued.push(noteOff);
19353
+ continue;
19354
+ }
19355
+ noteOff.time = Math.min(noteOff.time, cutTime), out.push(noteOff), pending.delete(key), targets.delete(key);
19091
19356
  }
19092
- return tieTargets;
19093
19357
  }
19094
19358
  function processPart(score, partIdx, options, partChannels, timing, measureOrder, globalMeasures, holdSchedule, impliedDynamics, allEvents) {
19095
- let { tempoMap, measureStartTimes, model, measureStartBeats } = timing, part = score.parts[partIdx], channel = partChannels[partIdx], gmProgram = options?.partPrograms?.[partIdx] ?? -1, kitMidiMap = buildKitMidiMap(score, part), kitAltProgramMap = buildKitAltProgramMap(part), tieTargets = collectPartTieTargets(part, measureOrder), pendingTieOffs = /* @__PURE__ */ new Map(), legatoOutIds = collectPartLegatoOut(part), pendingLegato = /* @__PURE__ */ new Map(), staffMeterTable = resolvePartStaffMeterTable(part, globalMeasures), dynamicProgram = compileDynamicProgram(
19359
+ let { tempoMap, measureStartTimes, model, measureStartBeats } = timing, part = score.parts[partIdx], channel = partChannels[partIdx], gmProgram = options?.partPrograms?.[partIdx] ?? -1, kitMidiMap = buildKitMidiMap(score, part), kitAltProgramMap = buildKitAltProgramMap(part), pendingTieTargets = /* @__PURE__ */ new Map(), pendingTieOffs = /* @__PURE__ */ new Map(), legatoOutIds = collectPartLegatoOut(part), pendingLegato = /* @__PURE__ */ new Map(), staffMeterTable = resolvePartStaffMeterTable(part, globalMeasures), dynamicProgram = compileDynamicProgram(
19096
19360
  part,
19097
19361
  partIdx,
19098
19362
  measureOrder,
@@ -19108,8 +19372,19 @@ function processPart(score, partIdx, options, partChannels, timing, measureOrder
19108
19372
  emitDynamicsCc11(lane.envelope, partIdx, channel, allEvents, lane.id);
19109
19373
  let techniqueState = { program: gmProgram, muted: !1, instrumentKey: "initial" }, instruments = new Map(playbackInstruments(part).map(({ key, part: instrumentPart2 }) => [key, instrumentPart2])), programForInstrument = (key) => key === "initial" ? gmProgram : options?.instrumentPrograms?.get(partIdx)?.get(key) ?? instruments.get(key)?._x?.viritura?.midiProgram ?? -1;
19110
19374
  for (let expandedIdx = 0; expandedIdx < measureOrder.length; expandedIdx++) {
19111
- expandedIdx > 0 && timing.playedSpans && !playedSpansContinue(timing.playedSpans[expandedIdx - 1], timing.playedSpans[expandedIdx]) && (allEvents.push(...pendingTieOffs.values(), ...Array.from(pendingLegato.values()).flat()), pendingTieOffs.clear(), pendingLegato.clear());
19112
19375
  let origMeasureIdx = measureOrder[expandedIdx], partMeasure = part.measures[origMeasureIdx];
19376
+ if (expandedIdx > 0 && timing.playedSpans && !playedSpansContinue(timing.playedSpans[expandedIdx - 1], timing.playedSpans[expandedIdx])) {
19377
+ let continuing = crossJumpContinuationKeys(
19378
+ pendingTieTargets,
19379
+ partMeasure,
19380
+ timing.playedSpans[expandedIdx].startBeat,
19381
+ partIdx,
19382
+ (staff) => staffMeterRatioAt(staffMeterTable, origMeasureIdx, staff)
19383
+ ), cutTime = model.timeAtBeat(
19384
+ measureStartBeats[expandedIdx - 1] + timing.playedSpans[expandedIdx - 1].endBeat
19385
+ ), continued = timing.crossJumpContinuations.get(expandedIdx) ?? [];
19386
+ retainCrossJumpNoteOffs(pendingTieOffs, pendingTieTargets, continuing, cutTime, continued, allEvents), timing.crossJumpContinuations.set(expandedIdx, continued), allEvents.push(...Array.from(pendingLegato.values()).flat()), pendingLegato.clear();
19387
+ }
19113
19388
  if (!partMeasure) continue;
19114
19389
  let measureStartTime = measureStartTimes[expandedIdx], measureStartBeat = measureStartBeats[expandedIdx], instrumentKey = playbackInstrumentKeyAt(part, origMeasureIdx), activeProgram = programForInstrument(instrumentKey), bowCapable = ARCO_CAPABLE_PROGRAMS.has(activeProgram), muteFamily = muteFamilyForProgram(activeProgram), techniqueEnabled = bowCapable || muteFamily !== null;
19115
19390
  instrumentKey !== techniqueState.instrumentKey && (techniqueState = { program: activeProgram, muted: !1, instrumentKey });
@@ -19125,7 +19400,7 @@ function processPart(score, partIdx, options, partChannels, timing, measureOrder
19125
19400
  measureStartBeat,
19126
19401
  partIndex: partIdx,
19127
19402
  channel,
19128
- tieTargets,
19403
+ pendingTieTargets,
19129
19404
  pendingTieOffs,
19130
19405
  legatoOutIds,
19131
19406
  pendingLegato,
@@ -19259,7 +19534,7 @@ function tryProcessSpecialEvent(ctx, event, measureStartTime, beatOffset, baseVe
19259
19534
  }
19260
19535
  function processNoteEvent(ctx, event, measureStartTime, beatOffset, baseVelocity, tupletRatio) {
19261
19536
  ctx.gmProgram = ctx.instrumentAtBeatOffset?.(beatOffset * ctx.staffMeterRatio).program ?? ctx.gmProgram;
19262
- let { partIndex, channel, tieTargets, out, timeSig, kitMidiMap, kitAltProgramMap } = ctx, beats = durationBeats4(event.duration) * tupletRatio;
19537
+ let { partIndex, channel, out, timeSig, kitMidiMap, kitAltProgramMap } = ctx, beats = durationBeats4(event.duration) * tupletRatio;
19263
19538
  if (!beatInPlayedSpan(beatOffset * ctx.staffMeterRatio, ctx.playedSpan)) return beats;
19264
19539
  if (isRest(event))
19265
19540
  return flushVoiceLegato(ctx.pendingLegato, ctx.voiceKey, ctx.out), beats;
@@ -19294,23 +19569,29 @@ function processNoteEvent(ctx, event, measureStartTime, beatOffset, baseVelocity
19294
19569
  for (let note of event.notes ?? []) {
19295
19570
  let midiNote = noteToMidi(note);
19296
19571
  if (midiNote < 0 || midiNote > 127) continue;
19297
- let noteId = note.id ?? "", isTiedTo = tieTargets.has(noteId) && ctx.pendingTieOffs.has(`${midiNote}:${partIndex}:${ctx.voiceKey}`), hasTieOut = note.ties?.some((t) => t.target) ?? !1;
19298
- isTiedTo ? extendOrFinalizeTie(ctx, midiNote, startTime, durationSec, durationScale, hasTieOut) : emitFreshNote(
19299
- ctx,
19300
- midiNote,
19301
- startTime,
19302
- timingOffset,
19303
- durationSec,
19304
- durationScale,
19305
- velocity,
19306
- hasTieOut,
19307
- legatoOut,
19308
- {
19309
- scoreBeat: ctx.measureStartBeat + beatOffset * ctx.staffMeterRatio,
19310
- scoreDurationBeats: beats * ctx.staffMeterRatio,
19311
- scoreEventId: event.id
19312
- }
19313
- );
19572
+ let key = tiePlaybackKey(midiNote, partIndex, ctx.voiceKey), isTiedTo = tieContinuesTo(ctx.pendingTieTargets, key, note) && ctx.pendingTieOffs.has(key), hasTieOut = note.ties?.some((t) => t.lv !== !0 && t.target) ?? !1;
19573
+ if (isTiedTo)
19574
+ extendOrFinalizeTie(ctx, midiNote, startTime, durationSec, durationScale, hasTieOut);
19575
+ else {
19576
+ let previous = ctx.pendingTieOffs.get(key);
19577
+ previous && (out.push(previous), ctx.pendingTieOffs.delete(key)), emitFreshNote(
19578
+ ctx,
19579
+ midiNote,
19580
+ startTime,
19581
+ timingOffset,
19582
+ durationSec,
19583
+ durationScale,
19584
+ velocity,
19585
+ hasTieOut,
19586
+ legatoOut,
19587
+ {
19588
+ scoreBeat: ctx.measureStartBeat + beatOffset * ctx.staffMeterRatio,
19589
+ scoreDurationBeats: beats * ctx.staffMeterRatio,
19590
+ scoreEventId: event.id
19591
+ }
19592
+ );
19593
+ }
19594
+ recordTieTargets(ctx.pendingTieTargets, key, note);
19314
19595
  }
19315
19596
  if (kitMidiMap) {
19316
19597
  let jitteredStart = Math.max(0, startTime + timingOffset);
@@ -19344,7 +19625,7 @@ function processNoteEvent(ctx, event, measureStartTime, beatOffset, baseVelocity
19344
19625
  return beats;
19345
19626
  }
19346
19627
  function extendOrFinalizeTie(ctx, midiNote, startTime, durationSec, durationScale, hasTieOut) {
19347
- let { partIndex, channel, pendingTieOffs, out } = ctx, tieKey = `${midiNote}:${partIndex}:${ctx.voiceKey}`, pending = pendingTieOffs.get(tieKey);
19628
+ let { partIndex, channel, pendingTieOffs, out } = ctx, tieKey = tiePlaybackKey(midiNote, partIndex, ctx.voiceKey), pending = pendingTieOffs.get(tieKey);
19348
19629
  pending && (hasTieOut ? pending.time = startTime + durationSec : (pending.time = startTime + durationSec * durationScale, out.push(pending), pendingTieOffs.delete(tieKey))), hasTieOut && !pendingTieOffs.has(tieKey) && pendingTieOffs.set(tieKey, {
19349
19630
  type: "noteOff",
19350
19631
  time: startTime + durationSec,
@@ -19365,7 +19646,7 @@ function emitFreshNote(ctx, midiNote, startTime, timingOffset, durationSec, dura
19365
19646
  channel,
19366
19647
  ...metadata
19367
19648
  }), hasTieOut) {
19368
- let tieKey = `${midiNote}:${partIndex}:${ctx.voiceKey}`;
19649
+ let tieKey = tiePlaybackKey(midiNote, partIndex, ctx.voiceKey);
19369
19650
  pendingTieOffs.set(tieKey, {
19370
19651
  type: "noteOff",
19371
19652
  time: startTime + durationSec,