musicxml-io 0.12.0 → 0.12.1

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.
Files changed (98) hide show
  1. package/README.md +60 -1
  2. package/dist/abc-HXITSXCS.js +9 -0
  3. package/dist/abc-IAD53SFI.mjs +11 -0
  4. package/dist/abc-MTGVOYKS.js +11 -0
  5. package/dist/abc-R7DIJSHG.mjs +9 -0
  6. package/dist/abc.d.mts +67 -0
  7. package/dist/abc.d.ts +67 -0
  8. package/dist/abc.js +17 -0
  9. package/dist/abc.mjs +17 -0
  10. package/dist/accessors/index.d.mts +1 -1
  11. package/dist/accessors/index.d.ts +1 -1
  12. package/dist/browser.d.mts +11 -187
  13. package/dist/browser.d.ts +11 -187
  14. package/dist/browser.js +28 -6
  15. package/dist/browser.mjs +94 -72
  16. package/dist/chunk-33IQXDOH.js +1 -0
  17. package/dist/chunk-4EV76LCL.js +61 -0
  18. package/dist/chunk-5EK7K5X3.js +29 -0
  19. package/dist/chunk-5VF442RA.mjs +29 -0
  20. package/dist/chunk-626TXMVP.js +706 -0
  21. package/dist/chunk-6EKVRPFF.js +407 -0
  22. package/dist/chunk-776XPK66.js +45 -0
  23. package/dist/chunk-AOSK4RGV.mjs +45 -0
  24. package/dist/{chunk-FQ3NEYIV.js → chunk-ASPCIBWD.js} +127 -1249
  25. package/dist/chunk-B2KMOLL4.js +1810 -0
  26. package/dist/chunk-BHHOS2E6.mjs +407 -0
  27. package/dist/chunk-EBDEQMLT.mjs +61 -0
  28. package/dist/chunk-F2UCOAO6.mjs +155 -0
  29. package/dist/chunk-GIP6COPL.js +69 -0
  30. package/dist/chunk-JF5TM534.js +1065 -0
  31. package/dist/chunk-K6DSQPVF.mjs +706 -0
  32. package/dist/chunk-KJK2IGNN.mjs +0 -0
  33. package/dist/chunk-KYGLANYG.mjs +2354 -0
  34. package/dist/chunk-L2NY7YKF.mjs +69 -0
  35. package/dist/chunk-L3OFLCMK.mjs +2773 -0
  36. package/dist/chunk-LS5SHP75.js +155 -0
  37. package/dist/chunk-M5YMLKTI.js +25 -0
  38. package/dist/chunk-NIUEAHPN.js +2354 -0
  39. package/dist/{chunk-EWLB5X64.js → chunk-PMPROVJW.js} +66 -770
  40. package/dist/chunk-QFYOH4DY.mjs +0 -0
  41. package/dist/chunk-QKUNJEVW.mjs +1401 -0
  42. package/dist/chunk-SBT2RMUW.mjs +1065 -0
  43. package/dist/chunk-UIYZ7YKU.mjs +25 -0
  44. package/dist/chunk-VMCD32Z5.mjs +1810 -0
  45. package/dist/{chunk-I4X4GRMP.mjs → chunk-WS5LSW3S.mjs} +13 -1135
  46. package/dist/chunk-WUXG75HN.js +2773 -0
  47. package/dist/chunk-YKMNCYOD.js +1 -0
  48. package/dist/{chunk-UMEH3ENQ.mjs → chunk-ZRKJKEP7.mjs} +0 -704
  49. package/dist/chunk-ZSEJQPBO.js +1401 -0
  50. package/dist/core.d.mts +33 -0
  51. package/dist/core.d.ts +33 -0
  52. package/dist/core.js +522 -0
  53. package/dist/core.mjs +522 -0
  54. package/dist/file.d.mts +37 -0
  55. package/dist/file.d.ts +37 -0
  56. package/dist/file.js +14 -0
  57. package/dist/file.mjs +14 -0
  58. package/dist/index-C9lLZwol.d.mts +185 -0
  59. package/dist/index-DNA970t1.d.ts +185 -0
  60. package/dist/index.d.mts +12 -38
  61. package/dist/index.d.ts +12 -38
  62. package/dist/index.js +32 -49
  63. package/dist/index.mjs +99 -116
  64. package/dist/midi.d.mts +54 -0
  65. package/dist/midi.d.ts +54 -0
  66. package/dist/midi.js +10 -0
  67. package/dist/midi.mjs +10 -0
  68. package/dist/musicxml-CdXL6Vie.d.mts +18 -0
  69. package/dist/musicxml-Clk_Vj4R.d.ts +18 -0
  70. package/dist/musicxml-compressed-NWKKT32W.js +12 -0
  71. package/dist/musicxml-compressed-T5B6Z4IZ.js +8 -0
  72. package/dist/musicxml-compressed-Y3DMYWEO.mjs +12 -0
  73. package/dist/musicxml-compressed-Z4FZUSXM.mjs +8 -0
  74. package/dist/musicxml-compressed.d.mts +33 -0
  75. package/dist/musicxml-compressed.d.ts +33 -0
  76. package/dist/musicxml-compressed.js +18 -0
  77. package/dist/musicxml-compressed.mjs +18 -0
  78. package/dist/musicxml.d.mts +8 -0
  79. package/dist/musicxml.d.ts +8 -0
  80. package/dist/musicxml.js +12 -0
  81. package/dist/musicxml.mjs +12 -0
  82. package/dist/operations/index.d.mts +1234 -2
  83. package/dist/operations/index.d.ts +1234 -2
  84. package/dist/operations/index.js +7 -3
  85. package/dist/operations/index.mjs +6 -2
  86. package/dist/playback-timeline-CVRHsikj.d.mts +129 -0
  87. package/dist/playback-timeline-CmWA8YDy.d.ts +129 -0
  88. package/dist/query/index.d.mts +3 -128
  89. package/dist/query/index.d.ts +3 -128
  90. package/dist/query/index.js +4 -2
  91. package/dist/query/index.mjs +7 -5
  92. package/dist/{types-Cy0veafI.d.mts → types-B-RGHY0c.d.mts} +1 -1
  93. package/dist/{types-Cy0veafI.d.ts → types-B-RGHY0c.d.ts} +1 -1
  94. package/package.json +35 -2
  95. package/dist/chunk-T2USSS5E.mjs +0 -8939
  96. package/dist/chunk-UT7LQW6V.js +0 -8939
  97. package/dist/index-CbUtBHLD.d.ts +0 -1415
  98. package/dist/index-CuMPBK7U.d.mts +0 -1415
package/README.md CHANGED
@@ -76,6 +76,8 @@ const output = serialize(transposed);
76
76
 
77
77
  ### ABC Notation
78
78
 
79
+ For MusicXML-first applications, see [Bundle size and optional formats](#bundle-size-and-optional-formats).
80
+
79
81
  ```typescript
80
82
  import { parseAbc, serializeAbc } from 'musicxml-io';
81
83
 
@@ -95,11 +97,68 @@ import { parseAbcTunes, serializeAbcTunes } from 'musicxml-io';
95
97
  const tunes = parseAbcTunes(abcString); // Score[]
96
98
  const book = serializeAbcTunes(tunes);
97
99
 
98
- // Auto-detect format (MusicXML, .mxl, or ABC)
100
+ // Auto-detect MusicXML or .mxl (ABC uses parseAbc)
99
101
  import { parseAuto } from 'musicxml-io';
100
102
  const score2 = parseAuto(input);
101
103
  ```
102
104
 
105
+ ### Bundle size and optional formats
106
+
107
+ The existing `musicxml-io` and `musicxml-io/browser` exports remain compatible.
108
+ Unused ABC initialization can now be tree-shaken away. For applications that
109
+ load optional formats dynamically, use the format-specific entry points:
110
+
111
+ | Import | Contents |
112
+ |--------|----------|
113
+ | `musicxml-io/core` | MusicXML/XML/MXL, query, operations, accessors, validation, IDs and their types; no ABC, MIDI or file I/O |
114
+ | `musicxml-io/musicxml` | `parse`, `serialize`, `SerializeOptions` and score types; no ZIP dependency |
115
+ | `musicxml-io/musicxml-compressed` | `parseAuto`, `parseCompressed`, `isCompressed`, `serializeCompressed` |
116
+ | `musicxml-io/abc` | `parseAbc`, `parseAbcTunes`, `serializeAbc`, `serializeAbcTunes`, `AbcSerializeOptions` |
117
+ | `musicxml-io/midi` | `exportMidi`, `exportMidiWithTimingMap` and MIDI export types |
118
+ | `musicxml-io/file` | Node.js `parseFile`, `serializeToFile`, `decodeBuffer`; optional codecs load on demand |
119
+
120
+ The existing `/query`, `/operations` and `/accessors` entry points remain available.
121
+ All entry points support ESM and CommonJS, with TypeScript declarations.
122
+
123
+ ```typescript
124
+ import { parseAuto, serialize, generateId } from 'musicxml-io/core';
125
+ import type { Score } from 'musicxml-io/core';
126
+
127
+ // Normal MusicXML / MXL loading remains synchronous.
128
+ const score = parseAuto(xmlOrMxl);
129
+
130
+ // Call only when the user opens an ABC file.
131
+ async function openAbc(text: string): Promise<Score> {
132
+ const { parseAbc } = await import('musicxml-io/abc');
133
+ return parseAbc(text);
134
+ }
135
+
136
+ async function saveMidi(score: Score): Promise<Uint8Array> {
137
+ const { exportMidi } = await import('musicxml-io/midi');
138
+ return exportMidi(score);
139
+ }
140
+ ```
141
+
142
+ For reliable code splitting, migrate **all runtime imports** in the relevant
143
+ application graph from the full root/browser entry to `/core` or narrower
144
+ entry points. A full entry also re-exports ABC and MIDI; some bundlers can
145
+ hoist those into an initially loaded shared chunk when a dynamic import of
146
+ the same format exists elsewhere. Type-only root imports do not add runtime code.
147
+ Dynamic imports need code-splitting support in the consuming bundler.
148
+
149
+ For `musicxml-layout`, its MusicXML re-exports and other runtime imports can use
150
+ `/core` (or `/musicxml`, `/query`, `/accessors` as appropriate). For Octava,
151
+ `src/data/musicxml-importer.ts` currently imports `parseAbc` eagerly. Load `/abc`
152
+ only on the ABC path, and finish the asynchronous parsing **before** entering
153
+ the synchronous Yjs transaction in `ScoreDataManager.importFromMusicXML`.
154
+ Both projects need the version containing these entry points installed first.
155
+
156
+ `npm run check:bundle` builds the package, measures minified/gzipped consumer
157
+ bundles, checks that ABC stays out of initial MusicXML bundles (including a
158
+ lazy ABC consumer), and smoke-tests the published ESM and CommonJS exports.
159
+ `npm run bench:loading` measures XML/MXL parsing and ID generation; the MXL
160
+ benchmark includes an embedded asset to verify that unused files are not inflated.
161
+
103
162
  `parseAbc` returns the first tune of a multi-tune file; use `parseAbcTunes`
104
163
  to get them all.
105
164
 
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkZSEJQPBOjs = require('./chunk-ZSEJQPBO.js');
5
+ require('./chunk-LS5SHP75.js');
6
+
7
+
8
+
9
+ exports.serializeAbc = _chunkZSEJQPBOjs.serializeAbc; exports.serializeAbcTunes = _chunkZSEJQPBOjs.serializeAbcTunes;
@@ -0,0 +1,11 @@
1
+ import {
2
+ parseAbc,
3
+ parseAbcTunes
4
+ } from "./chunk-KYGLANYG.mjs";
5
+ import "./chunk-F2UCOAO6.mjs";
6
+ import "./chunk-AOSK4RGV.mjs";
7
+ import "./chunk-5VF442RA.mjs";
8
+ export {
9
+ parseAbc,
10
+ parseAbcTunes
11
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkNIUEAHPNjs = require('./chunk-NIUEAHPN.js');
5
+ require('./chunk-LS5SHP75.js');
6
+ require('./chunk-776XPK66.js');
7
+ require('./chunk-5EK7K5X3.js');
8
+
9
+
10
+
11
+ exports.parseAbc = _chunkNIUEAHPNjs.parseAbc; exports.parseAbcTunes = _chunkNIUEAHPNjs.parseAbcTunes;
@@ -0,0 +1,9 @@
1
+ import {
2
+ serializeAbc,
3
+ serializeAbcTunes
4
+ } from "./chunk-QKUNJEVW.mjs";
5
+ import "./chunk-F2UCOAO6.mjs";
6
+ export {
7
+ serializeAbc,
8
+ serializeAbcTunes
9
+ };
package/dist/abc.d.mts ADDED
@@ -0,0 +1,67 @@
1
+ import { S as Score } from './types-B-RGHY0c.mjs';
2
+
3
+ /**
4
+ * ABC Notation Parser
5
+ * Parses ABC notation format into the Score internal model.
6
+ *
7
+ * Supports ABC standard v2.1 core features:
8
+ * - Header fields (X, T, C, M, L, Q, K, V, P, U, w, W, and `+:` continuations)
9
+ * - Notes with pitch, duration, accidentals (including microtones), octaves
10
+ * - Rests (z, Z, multi-measure Zn), invisible rests (x, Xn) and spacers (y)
11
+ * - Bar lines (|, ||, |], [|, |:, :|, ::, [|], .|)
12
+ * - Repeats and volta endings, including lists and ranges ([1,3, [1-3)
13
+ * - Chords (simultaneous notes: [CEG]) with rests and per-note durations
14
+ * - Chord symbols ("Am", "G7") and text annotations ("^above", "_below", ...)
15
+ * - Ties (-), slurs ((...)) and dotted slurs (.(...))
16
+ * - Grace notes ({...}) and acciaccaturas ({/...})
17
+ * - Tuplets ((3..., (p:q:r...)
18
+ * - Decorations: shorthand (. ~ H L M O P S T u v), !name! and legacy +name+
19
+ * - Lyrics (w: field, multiple verses) and symbol lines (s:)
20
+ * - Multi-voice (V: field) and multi-tune files (repeated X: fields)
21
+ */
22
+
23
+ /**
24
+ * Parse every tune in an ABC file.
25
+ *
26
+ * ABC files may hold any number of tunes, each introduced by an `X:` field.
27
+ * {@link parseAbc} returns only the first; use this to get them all.
28
+ */
29
+ declare function parseAbcTunes(abcString: string): Score[];
30
+ /**
31
+ * Parse an ABC notation string into a Score object.
32
+ *
33
+ * When the input holds several tunes, only the first is returned — use
34
+ * {@link parseAbcTunes} to parse them all.
35
+ */
36
+ declare function parseAbc(abcString: string): Score;
37
+
38
+ /**
39
+ * ABC Notation Serializer
40
+ * Converts Score internal model to ABC notation format string.
41
+ */
42
+
43
+ interface AbcSerializeOptions {
44
+ /** Reference number (X: field). Default: 1 */
45
+ referenceNumber?: number;
46
+ /** Maximum notes per line before wrapping. Default: no limit */
47
+ notesPerLine?: number;
48
+ /** Include chord symbols. Default: true */
49
+ includeChordSymbols?: boolean;
50
+ /** Include dynamics. Default: true */
51
+ includeDynamics?: boolean;
52
+ /** Include lyrics. Default: true */
53
+ includeLyrics?: boolean;
54
+ }
55
+ /**
56
+ * Serialize several Scores into a single multi-tune ABC file.
57
+ *
58
+ * Counterpart to `parseAbcTunes`: each Score becomes one tune, separated by a
59
+ * blank line as the ABC standard requires.
60
+ */
61
+ declare function serializeAbcTunes(scores: Score[], options?: AbcSerializeOptions): string;
62
+ /**
63
+ * Serialize a Score object to ABC notation format string.
64
+ */
65
+ declare function serializeAbc(score: Score, options?: AbcSerializeOptions): string;
66
+
67
+ export { type AbcSerializeOptions, Score, parseAbc, parseAbcTunes, serializeAbc, serializeAbcTunes };
package/dist/abc.d.ts ADDED
@@ -0,0 +1,67 @@
1
+ import { S as Score } from './types-B-RGHY0c.js';
2
+
3
+ /**
4
+ * ABC Notation Parser
5
+ * Parses ABC notation format into the Score internal model.
6
+ *
7
+ * Supports ABC standard v2.1 core features:
8
+ * - Header fields (X, T, C, M, L, Q, K, V, P, U, w, W, and `+:` continuations)
9
+ * - Notes with pitch, duration, accidentals (including microtones), octaves
10
+ * - Rests (z, Z, multi-measure Zn), invisible rests (x, Xn) and spacers (y)
11
+ * - Bar lines (|, ||, |], [|, |:, :|, ::, [|], .|)
12
+ * - Repeats and volta endings, including lists and ranges ([1,3, [1-3)
13
+ * - Chords (simultaneous notes: [CEG]) with rests and per-note durations
14
+ * - Chord symbols ("Am", "G7") and text annotations ("^above", "_below", ...)
15
+ * - Ties (-), slurs ((...)) and dotted slurs (.(...))
16
+ * - Grace notes ({...}) and acciaccaturas ({/...})
17
+ * - Tuplets ((3..., (p:q:r...)
18
+ * - Decorations: shorthand (. ~ H L M O P S T u v), !name! and legacy +name+
19
+ * - Lyrics (w: field, multiple verses) and symbol lines (s:)
20
+ * - Multi-voice (V: field) and multi-tune files (repeated X: fields)
21
+ */
22
+
23
+ /**
24
+ * Parse every tune in an ABC file.
25
+ *
26
+ * ABC files may hold any number of tunes, each introduced by an `X:` field.
27
+ * {@link parseAbc} returns only the first; use this to get them all.
28
+ */
29
+ declare function parseAbcTunes(abcString: string): Score[];
30
+ /**
31
+ * Parse an ABC notation string into a Score object.
32
+ *
33
+ * When the input holds several tunes, only the first is returned — use
34
+ * {@link parseAbcTunes} to parse them all.
35
+ */
36
+ declare function parseAbc(abcString: string): Score;
37
+
38
+ /**
39
+ * ABC Notation Serializer
40
+ * Converts Score internal model to ABC notation format string.
41
+ */
42
+
43
+ interface AbcSerializeOptions {
44
+ /** Reference number (X: field). Default: 1 */
45
+ referenceNumber?: number;
46
+ /** Maximum notes per line before wrapping. Default: no limit */
47
+ notesPerLine?: number;
48
+ /** Include chord symbols. Default: true */
49
+ includeChordSymbols?: boolean;
50
+ /** Include dynamics. Default: true */
51
+ includeDynamics?: boolean;
52
+ /** Include lyrics. Default: true */
53
+ includeLyrics?: boolean;
54
+ }
55
+ /**
56
+ * Serialize several Scores into a single multi-tune ABC file.
57
+ *
58
+ * Counterpart to `parseAbcTunes`: each Score becomes one tune, separated by a
59
+ * blank line as the ABC standard requires.
60
+ */
61
+ declare function serializeAbcTunes(scores: Score[], options?: AbcSerializeOptions): string;
62
+ /**
63
+ * Serialize a Score object to ABC notation format string.
64
+ */
65
+ declare function serializeAbc(score: Score, options?: AbcSerializeOptions): string;
66
+
67
+ export { type AbcSerializeOptions, Score, parseAbc, parseAbcTunes, serializeAbc, serializeAbcTunes };
package/dist/abc.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkNIUEAHPNjs = require('./chunk-NIUEAHPN.js');
5
+
6
+
7
+
8
+ var _chunkZSEJQPBOjs = require('./chunk-ZSEJQPBO.js');
9
+ require('./chunk-LS5SHP75.js');
10
+ require('./chunk-776XPK66.js');
11
+ require('./chunk-5EK7K5X3.js');
12
+
13
+
14
+
15
+
16
+
17
+ exports.parseAbc = _chunkNIUEAHPNjs.parseAbc; exports.parseAbcTunes = _chunkNIUEAHPNjs.parseAbcTunes; exports.serializeAbc = _chunkZSEJQPBOjs.serializeAbc; exports.serializeAbcTunes = _chunkZSEJQPBOjs.serializeAbcTunes;
package/dist/abc.mjs ADDED
@@ -0,0 +1,17 @@
1
+ import {
2
+ parseAbc,
3
+ parseAbcTunes
4
+ } from "./chunk-KYGLANYG.mjs";
5
+ import {
6
+ serializeAbc,
7
+ serializeAbcTunes
8
+ } from "./chunk-QKUNJEVW.mjs";
9
+ import "./chunk-F2UCOAO6.mjs";
10
+ import "./chunk-AOSK4RGV.mjs";
11
+ import "./chunk-5VF442RA.mjs";
12
+ export {
13
+ parseAbc,
14
+ parseAbcTunes,
15
+ serializeAbc,
16
+ serializeAbcTunes
17
+ };
@@ -1,4 +1,4 @@
1
- import { o as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-Cy0veafI.mjs';
1
+ import { o as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-B-RGHY0c.mjs';
2
2
 
3
3
  /**
4
4
  * Entry-level accessors for DirectionEntry, NoteEntry, and PartInfo
@@ -1,4 +1,4 @@
1
- import { o as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-Cy0veafI.js';
1
+ import { o as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-B-RGHY0c.js';
2
2
 
3
3
  /**
4
4
  * Entry-level accessors for DirectionEntry, NoteEntry, and PartInfo
@@ -1,188 +1,12 @@
1
- import { S as Score, g as Pitch, M as Measure } from './types-Cy0veafI.mjs';
2
- export { A as Accidental, i as AccidentalInfo, j as AccidentalMarkInfo, a2 as AdjacentNotes, ag as AssembledLyrics, B as BackupEntry, y as Barline, ah as BarlineWithContext, ac as BeamGroup, m as BeamInfo, G as Chord, w as Clef, am as ClefChangeInfo, C as Color, Q as Credit, U as CreditImage, R as CreditWords, O as Defaults, D as DirectionEntry, a3 as DirectionKind, o as DirectionType, Z as DirectionWithContext, u as DisplayText, a4 as DynamicWithContext, p as DynamicsValue, aj as EndingInfo, Y as EntryWithContext, s as FiguredBassEntry, F as ForwardEntry, H as HarmonyEntry, r as HarmonyFrame, ae as HarmonyWithContext, ak as KeyChangeInfo, K as KeySignature, L as Lyric, q as LyricTextElement, af as LyricWithContext, e as MeasureAttributes, f as MeasureEntry, t as MeasureStyle, n as Notation, ad as NotationType, N as NoteEntry, I as NoteIteratorItem, h as NoteType, X as NoteWithContext, E as NoteWithPosition, k as NoteheadInfo, a8 as OctaveShiftWithContext, d as Part, b as PartGroup, P as PartInfo, c as PartListEntry, a6 as PedalWithContext, $ as PositionQueryOptions, J as Print, ai as RepeatInfo, a as ScoreMetadata, aa as SlurSpan, z as StaffGroup, _ as StaffRange, l as StemInfo, an as StructuralChanges, a5 as TempoWithContext, T as TieInfo, a9 as TiedNoteGroup, al as TimeChangeInfo, v as TimeSignature, x as Transpose, ab as TupletGroup, a0 as VerticalSlice, V as VoiceGroup, a1 as VoiceLine, W as VoiceToStaffMap, a7 as WedgeWithContext } from './types-Cy0veafI.mjs';
3
- import { cP as ValidateOptions, cL as ValidationResult } from './index-CuMPBK7U.mjs';
4
- export { aS as ALL_COLOR_TARGETS, bb as AddArticulationOptions, bk as AddBeamOptions, c9 as AddBowingOptions, ci as AddBreathMarkOptions, cl as AddCaesuraOptions, aX as AddChordOptions, c3 as AddChordSymbolOptions, bT as AddCodaOptions, bd as AddDynamicsOptions, bN as AddEndingOptions, bA as AddFermataOptions, c6 as AddFingeringOptions, bV as AddGraceNoteOptions, c0 as AddHarmonyOptions, bY as AddLyricOptions, bU as AddNavigationOptions, ce as AddOctaveShiftOptions, bC as AddOrnamentOptions, b3 as AddPartOptions, bE as AddPedalOptions, bI as AddRehearsalMarkOptions, bJ as AddRepeatBarlineOptions, bL as AddRepeatOptions, bS as AddSegnoOptions, b9 as AddSlurOptions, cb as AddStringNumberOptions, bv as AddTempoOptions, bG as AddTextDirectionOptions, bH as AddTextOptions, b7 as AddTieOptions, b2 as AddVoiceOptions, by as AddWedgeOptions, bm as AutoBeamOptions, bR as BarStyle, c8 as BowingType, ch as BreathMarkValue, ck as CaesuraValue, bP as ChangeBarlineOptions, bh as ChangeClefOptions, aY as ChangeNoteDurationOptions, cn as ColorTarget, bX as ConvertToGraceOptions, bs as CopyNotesMultiMeasureOptions, bp as CopyNotesOptions, bi as CreateTupletOptions, br as CutNotesOptions, b4 as DuplicatePartOptions, b$ as HarmonyKind, bg as InsertClefChangeOptions, aV as InsertNoteOptions, cR as LocalValidateOptions, b1 as LowerAccidentalOptions, cQ as MeasureValidationContext, bf as ModifyDynamicsOptions, bx as ModifyTempoOptions, b6 as MoveNoteToStaffOptions, bt as MultiMeasureSelection, bo as NoteSelection, cd as OctaveShiftType, aU as OperationErrorCode, aT as OperationResult, bu as PasteNotesMultiMeasureOptions, bq as PasteNotesOptions, b0 as RaiseAccidentalOptions, bc as RemoveArticulationOptions, bl as RemoveBeamOptions, ca as RemoveBowingOptions, cj as RemoveBreathMarkOptions, cm as RemoveCaesuraOptions, c4 as RemoveChordSymbolOptions, be as RemoveDynamicsOptions, bO as RemoveEndingOptions, bB as RemoveFermataOptions, c7 as RemoveFingeringOptions, bW as RemoveGraceNoteOptions, c1 as RemoveHarmonyOptions, bZ as RemoveLyricOptions, aW as RemoveNoteOptions, cg as RemoveOctaveShiftOptions, bD as RemoveOrnamentOptions, bF as RemovePedalOptions, bK as RemoveRepeatBarlineOptions, bM as RemoveRepeatOptions, ba as RemoveSlurOptions, cc as RemoveStringNumberOptions, bw as RemoveTempoOptions, b8 as RemoveTieOptions, bj as RemoveTupletOptions, bz as RemoveWedgeOptions, bQ as SetBarlineOptions, bn as SetBeamingOptions, co as SetColorOptions, a_ as SetNotePitchBySemitoneOptions, aZ as SetNotePitchOptions, b5 as SetStavesOptions, a$ as ShiftNotePitchOptions, cf as StopOctaveShiftOptions, c5 as UpdateChordSymbolOptions, c2 as UpdateHarmonyOptions, b_ as UpdateLyricOptions, cK as ValidationError, cN as ValidationErrorCode, cG as ValidationException, cO as ValidationLevel, cM as ValidationLocation, J as addArticulation, S as addBeam, aF as addBowing, aM as addBreathMark, aO as addCaesura, a as addChord, h as addChordNote, o as addChordNoteChecked, aA as addChordSymbol, am as addCoda, an as addDaCapo, ao as addDalSegno, L as addDynamics, ah as addEnding, a4 as addFermata, ap as addFine, aD as addFingering, ar as addGraceNote, ax as addHarmony, au as addLyric, f as addNote, k as addNoteChecked, aJ as addOctaveShift, a6 as addOrnament, w as addPart, a8 as addPedal, ac as addRehearsalMark, af as addRepeat, ad as addRepeatBarline, al as addSegno, H as addSlur, aH as addStringNumber, $ as addTempo, ab as addText, aa as addTextDirection, F as addTie, aq as addToCoda, v as addVoice, a2 as addWedge, cJ as assertMeasureValid, cr as assertValid, U as autoBeam, aj as changeBarline, P as changeClef, B as changeKey, d as changeNoteDuration, C as changeTime, aR as clearColors, at as convertToGrace, W as copyNotes, Z as copyNotesMultiMeasure, Q as createTuplet, Y as cutNotes, E as deleteMeasure, g as deleteNote, n as deleteNoteChecked, y as duplicatePart, cF as formatLocation, cI as getMeasureContext, O as insertClefChange, D as insertMeasure, i as insertNote, cq as isValid, l as lowerAccidental, N as modifyDynamics, j as modifyNoteDuration, q as modifyNoteDurationChecked, m as modifyNotePitch, p as modifyNotePitchChecked, a1 as modifyTempo, A as moveNoteToStaff, X as pasteNotes, _ as pasteNotesMultiMeasure, e as raiseAccidental, K as removeArticulation, T as removeBeam, aG as removeBowing, aN as removeBreathMark, aP as removeCaesura, aB as removeChordSymbol, M as removeDynamics, ai as removeEnding, a5 as removeFermata, aE as removeFingering, as as removeGraceNote, ay as removeHarmony, av as removeLyric, r as removeNote, aL as removeOctaveShift, a7 as removeOrnament, x as removePart, a9 as removePedal, ag as removeRepeat, ae as removeRepeatBarline, I as removeSlur, aI as removeStringNumber, a0 as removeTempo, G as removeTie, R as removeTuplet, a3 as removeWedge, ak as setBarline, V as setBeaming, aQ as setColor, s as setNotePitch, b as setNotePitchBySemitone, z as setStaves, c as shiftNotePitch, aK as stopOctaveShift, t as transpose, u as transposeChecked, aC as updateChordSymbol, az as updateHarmony, aw as updateLyric, cp as validate, cu as validateBackupForward, cw as validateBeams, cs as validateDivisions, ct as validateMeasureDuration, cH as validateMeasureLocal, cz as validatePartReferences, cA as validatePartStructure, cx as validateSlurs, cE as validateSlursAcrossMeasures, cB as validateStaffStructure, cv as validateTies, cD as validateTiesAcrossMeasures, cy as validateTuplets, cC as validateVoiceStaff } from './index-CuMPBK7U.mjs';
5
- import { ExpressionOptions, TimingSidecar } from './query/index.mjs';
6
- export { ExpressionHint, ExpressionKind, FindNotesFilter, NormalizedPositionOptions, PitchRange, PlaybackControls, PlaybackMeasure, RoundtripMetrics, TimingBreakpoint, TimingMapOptions, VoiceFilter, buildVoiceToStaffMap, buildVoiceToStaffMapForPart, countNotes, extractPlaybackControls, findBarlines, findDirectionsByType, findNotes, findNotesWithNotation, generatePlaybackSequence, generatePlaybackTimeline, getAbsolutePosition, getAdjacentNotes, getAllNotes, getAttributesAtMeasure, getBeamGroups, getChordProgression, getChords, getClefChanges, getClefForStaff, getDirections, getDirectionsAtPosition, getDivisions, getDuration, getDynamics, getEffectiveStaff, getEndings, getEntriesAtPosition, getEntriesForStaff, getEntriesInRange, getHarmonies, getHarmonyAtPosition, getKeyChanges, getLyricText, getLyrics, getMeasure, getMeasureByIndex, getMeasureCount, getNextNote, getNormalizedDuration, getNormalizedPosition, getNotesAtPosition, getNotesForStaff, getNotesForVoice, getNotesInRange, getOctaveShifts, getPartById, getPartByIndex, getPartCount, getPartIds, getPartIndex, getPedalMarkings, getPrevNote, getRepeatStructure, getSlurSpans, getStaffRange, getStaveCount, getStaves, getStructuralChanges, getTempoMarkings, getTiedNoteGroups, getTimeChanges, getTupletGroups, getVerseCount, getVerticalSlice, getVoiceLine, getVoiceLineInRange, getVoices, getVoicesForStaff, getWedges, groupByStaff, groupByVoice, hasMultipleStaves, hasNotes, hasPlaybackControls, inferStaff, isRestMeasure, iterateEntries, iterateNotes, measureRoundtrip, scoresEqual, withAbsolutePositions } from './query/index.mjs';
1
+ export { A as Accidental, i as AccidentalInfo, j as AccidentalMarkInfo, a2 as AdjacentNotes, ag as AssembledLyrics, B as BackupEntry, y as Barline, ah as BarlineWithContext, ac as BeamGroup, m as BeamInfo, G as Chord, w as Clef, am as ClefChangeInfo, C as Color, Q as Credit, U as CreditImage, R as CreditWords, O as Defaults, D as DirectionEntry, a3 as DirectionKind, o as DirectionType, Z as DirectionWithContext, u as DisplayText, a4 as DynamicWithContext, p as DynamicsValue, aj as EndingInfo, Y as EntryWithContext, s as FiguredBassEntry, F as ForwardEntry, H as HarmonyEntry, r as HarmonyFrame, ae as HarmonyWithContext, ak as KeyChangeInfo, K as KeySignature, L as Lyric, q as LyricTextElement, af as LyricWithContext, M as Measure, e as MeasureAttributes, f as MeasureEntry, t as MeasureStyle, n as Notation, ad as NotationType, N as NoteEntry, I as NoteIteratorItem, h as NoteType, X as NoteWithContext, E as NoteWithPosition, k as NoteheadInfo, a8 as OctaveShiftWithContext, d as Part, b as PartGroup, P as PartInfo, c as PartListEntry, a6 as PedalWithContext, g as Pitch, $ as PositionQueryOptions, J as Print, ai as RepeatInfo, S as Score, a as ScoreMetadata, aa as SlurSpan, z as StaffGroup, _ as StaffRange, l as StemInfo, an as StructuralChanges, a5 as TempoWithContext, T as TieInfo, a9 as TiedNoteGroup, al as TimeChangeInfo, v as TimeSignature, x as Transpose, ab as TupletGroup, a0 as VerticalSlice, V as VoiceGroup, a1 as VoiceLine, W as VoiceToStaffMap, a7 as WedgeWithContext } from './types-B-RGHY0c.mjs';
2
+ export { parse } from './musicxml.mjs';
3
+ export { isCompressed, parseAuto, parseCompressed, serializeCompressed } from './musicxml-compressed.mjs';
4
+ export { S as SerializeOptions, s as serialize } from './musicxml-CdXL6Vie.mjs';
5
+ export { FindNotesFilter, NormalizedPositionOptions, PitchRange, PlaybackControls, PlaybackMeasure, RoundtripMetrics, VoiceFilter, buildVoiceToStaffMap, buildVoiceToStaffMapForPart, countNotes, extractPlaybackControls, findBarlines, findDirectionsByType, findNotes, findNotesWithNotation, generatePlaybackSequence, getAbsolutePosition, getAdjacentNotes, getAllNotes, getAttributesAtMeasure, getBeamGroups, getChordProgression, getChords, getClefChanges, getClefForStaff, getDirections, getDirectionsAtPosition, getDivisions, getDuration, getDynamics, getEffectiveStaff, getEndings, getEntriesAtPosition, getEntriesForStaff, getEntriesInRange, getHarmonies, getHarmonyAtPosition, getKeyChanges, getLyricText, getLyrics, getMeasure, getMeasureByIndex, getMeasureCount, getNextNote, getNormalizedDuration, getNormalizedPosition, getNotesAtPosition, getNotesForStaff, getNotesForVoice, getNotesInRange, getOctaveShifts, getPartById, getPartByIndex, getPartCount, getPartIds, getPartIndex, getPedalMarkings, getPrevNote, getRepeatStructure, getSlurSpans, getStaffRange, getStaveCount, getStaves, getStructuralChanges, getTempoMarkings, getTiedNoteGroups, getTimeChanges, getTupletGroups, getVerseCount, getVerticalSlice, getVoiceLine, getVoiceLineInRange, getVoices, getVoicesForStaff, getWedges, groupByStaff, groupByVoice, hasMultipleStaves, hasNotes, hasPlaybackControls, inferStaff, isRestMeasure, iterateEntries, iterateNotes, measureRoundtrip, scoresEqual, withAbsolutePositions } from './query/index.mjs';
6
+ export { ALL_COLOR_TARGETS, AddArticulationOptions, AddBeamOptions, AddBowingOptions, AddBreathMarkOptions, AddCaesuraOptions, AddChordOptions, AddChordSymbolOptions, AddCodaOptions, AddDynamicsOptions, AddEndingOptions, AddFermataOptions, AddFingeringOptions, AddGraceNoteOptions, AddHarmonyOptions, AddLyricOptions, AddNavigationOptions, AddOctaveShiftOptions, AddOrnamentOptions, AddPartOptions, AddPedalOptions, AddRehearsalMarkOptions, AddRepeatBarlineOptions, AddRepeatOptions, AddSegnoOptions, AddSlurOptions, AddStringNumberOptions, AddTempoOptions, AddTextDirectionOptions, AddTextOptions, AddTieOptions, AddVoiceOptions, AddWedgeOptions, AutoBeamOptions, BarStyle, BowingType, BreathMarkValue, CaesuraValue, ChangeBarlineOptions, ChangeClefOptions, ChangeNoteDurationOptions, ColorTarget, ConvertToGraceOptions, CopyNotesMultiMeasureOptions, CopyNotesOptions, CreateTupletOptions, CutNotesOptions, DuplicatePartOptions, HarmonyKind, InsertClefChangeOptions, InsertNoteOptions, LowerAccidentalOptions, ModifyDynamicsOptions, ModifyTempoOptions, MoveNoteToStaffOptions, MultiMeasureSelection, NoteSelection, OctaveShiftType, OperationErrorCode, OperationResult, PasteNotesMultiMeasureOptions, PasteNotesOptions, RaiseAccidentalOptions, RemoveArticulationOptions, RemoveBeamOptions, RemoveBowingOptions, RemoveBreathMarkOptions, RemoveCaesuraOptions, RemoveChordSymbolOptions, RemoveDynamicsOptions, RemoveEndingOptions, RemoveFermataOptions, RemoveFingeringOptions, RemoveGraceNoteOptions, RemoveHarmonyOptions, RemoveLyricOptions, RemoveNoteOptions, RemoveOctaveShiftOptions, RemoveOrnamentOptions, RemovePedalOptions, RemoveRepeatBarlineOptions, RemoveRepeatOptions, RemoveSlurOptions, RemoveStringNumberOptions, RemoveTempoOptions, RemoveTieOptions, RemoveTupletOptions, RemoveWedgeOptions, SetBarlineOptions, SetBeamingOptions, SetColorOptions, SetNotePitchBySemitoneOptions, SetNotePitchOptions, SetStavesOptions, ShiftNotePitchOptions, StopOctaveShiftOptions, UpdateChordSymbolOptions, UpdateHarmonyOptions, UpdateLyricOptions, addArticulation, addBeam, addBowing, addBreathMark, addCaesura, addChord, addChordNote, addChordNoteChecked, addChordSymbol, addCoda, addDaCapo, addDalSegno, addDynamics, addEnding, addFermata, addFine, addFingering, addGraceNote, addHarmony, addLyric, addNote, addNoteChecked, addOctaveShift, addOrnament, addPart, addPedal, addRehearsalMark, addRepeat, addRepeatBarline, addSegno, addSlur, addStringNumber, addTempo, addText, addTextDirection, addTie, addToCoda, addVoice, addWedge, autoBeam, changeBarline, changeClef, changeKey, changeNoteDuration, changeTime, clearColors, convertToGrace, copyNotes, copyNotesMultiMeasure, createTuplet, cutNotes, deleteMeasure, deleteNote, deleteNoteChecked, duplicatePart, insertClefChange, insertMeasure, insertNote, lowerAccidental, modifyDynamics, modifyNoteDuration, modifyNoteDurationChecked, modifyNotePitch, modifyNotePitchChecked, modifyTempo, moveNoteToStaff, pasteNotes, pasteNotesMultiMeasure, raiseAccidental, removeArticulation, removeBeam, removeBowing, removeBreathMark, removeCaesura, removeChordSymbol, removeDynamics, removeEnding, removeFermata, removeFingering, removeGraceNote, removeHarmony, removeLyric, removeNote, removeOctaveShift, removeOrnament, removePart, removePedal, removeRepeat, removeRepeatBarline, removeSlur, removeStringNumber, removeTempo, removeTie, removeTuplet, removeWedge, setBarline, setBeaming, setColor, setNotePitch, setNotePitchBySemitone, setStaves, shiftNotePitch, stopOctaveShift, transpose, transposeChecked, updateChordSymbol, updateHarmony, updateLyric } from './operations/index.mjs';
7
+ export { STEPS, STEP_SEMITONES, generateId, getMeasureEndPosition, pitchToSemitone } from './core.mjs';
7
8
  export { DirectionTypeOfKind, getAllPartInfos, getDirectionOfKind, getDirectionsOfKind, getPartAbbreviation, getPartInfo, getPartName, getPartNameMap, getSoundDamperPedal, getSoundDynamics, getSoundSoftPedal, getSoundSostenutoPedal, getSoundTempo, hasBeam, hasDirectionOfKind, hasLyrics, hasNotations, hasTie, hasTieStart, hasTieStop, hasTuplet, isChordNote, isCueNote, isGraceNote, isPartInfo, isPitchedNote, isRest, isUnpitchedNote } from './accessors/index.mjs';
8
-
9
- declare function parse(input: string | Uint8Array): Score;
10
-
11
- /**
12
- * Parse a compressed MusicXML (.mxl) file
13
- * @param data - The compressed file data as Uint8Array or Buffer
14
- * @returns The parsed Score
15
- */
16
- declare function parseCompressed(data: Uint8Array): Score;
17
- /**
18
- * Check if data is a compressed MusicXML file
19
- * @param data - The file data
20
- * @returns true if the data appears to be a ZIP file
21
- */
22
- declare function isCompressed(data: Uint8Array): boolean;
23
- /**
24
- * Parse either compressed (.mxl) or uncompressed (.xml/.musicxml) MusicXML
25
- * Automatically detects the format
26
- * @param data - The file data as Uint8Array or string
27
- * @returns The parsed Score
28
- */
29
- declare function parseAuto(data: Uint8Array | string): Score;
30
-
31
- /**
32
- * ABC Notation Parser
33
- * Parses ABC notation format into the Score internal model.
34
- *
35
- * Supports ABC standard v2.1 core features:
36
- * - Header fields (X, T, C, M, L, Q, K, V, P, U, w, W, and `+:` continuations)
37
- * - Notes with pitch, duration, accidentals (including microtones), octaves
38
- * - Rests (z, Z, multi-measure Zn), invisible rests (x, Xn) and spacers (y)
39
- * - Bar lines (|, ||, |], [|, |:, :|, ::, [|], .|)
40
- * - Repeats and volta endings, including lists and ranges ([1,3, [1-3)
41
- * - Chords (simultaneous notes: [CEG]) with rests and per-note durations
42
- * - Chord symbols ("Am", "G7") and text annotations ("^above", "_below", ...)
43
- * - Ties (-), slurs ((...)) and dotted slurs (.(...))
44
- * - Grace notes ({...}) and acciaccaturas ({/...})
45
- * - Tuplets ((3..., (p:q:r...)
46
- * - Decorations: shorthand (. ~ H L M O P S T u v), !name! and legacy +name+
47
- * - Lyrics (w: field, multiple verses) and symbol lines (s:)
48
- * - Multi-voice (V: field) and multi-tune files (repeated X: fields)
49
- */
50
-
51
- /**
52
- * Parse every tune in an ABC file.
53
- *
54
- * ABC files may hold any number of tunes, each introduced by an `X:` field.
55
- * {@link parseAbc} returns only the first; use this to get them all.
56
- */
57
- declare function parseAbcTunes(abcString: string): Score[];
58
- /**
59
- * Parse an ABC notation string into a Score object.
60
- *
61
- * When the input holds several tunes, only the first is returned — use
62
- * {@link parseAbcTunes} to parse them all.
63
- */
64
- declare function parseAbc(abcString: string): Score;
65
-
66
- interface SerializeOptions {
67
- version?: string;
68
- indent?: string;
69
- /** Validate score before serializing (default: false) */
70
- validate?: boolean;
71
- /** Options for validation (if validate is true) */
72
- validateOptions?: ValidateOptions;
73
- /** Throw error if validation fails (default: false, will only warn) */
74
- throwOnValidationError?: boolean;
75
- /** Callback to receive validation result */
76
- onValidation?: (result: ValidationResult) => void;
77
- }
78
- declare function serialize(score: Score, options?: SerializeOptions): string;
79
-
80
- /**
81
- * Serialize a Score to compressed MusicXML (.mxl) format
82
- * @param score - The Score to serialize
83
- * @param options - Serialization options
84
- * @returns The compressed file data as Uint8Array
85
- */
86
- declare function serializeCompressed(score: Score, options?: SerializeOptions): Uint8Array;
87
-
88
- /**
89
- * MIDI export options
90
- *
91
- * Extends {@link ExpressionOptions} so fermata holds and rit./accel. ramps land
92
- * in the exported tempo map (and the timing sidecar) identically.
93
- */
94
- interface MidiExportOptions extends ExpressionOptions {
95
- /** Ticks per quarter note (default: 480) */
96
- ticksPerQuarterNote?: number;
97
- /** Default tempo in BPM (default: 120) */
98
- defaultTempo?: number;
99
- /** Default velocity for notes when no dynamics are present (default: 80) */
100
- defaultVelocity?: number;
101
- }
102
- /**
103
- * A single point on the timing sidecar: a correspondence between a time in the
104
- * generated MIDI and a conceptual musical position (measure + beat).
105
- *
106
- * Breakpoints are emitted at every played-measure start and every tempo change
107
- * (plus a terminal point). Between two consecutive breakpoints the relationship
108
- * `midiSec ↔ quarterPos` is linear (tempo is piecewise-constant), so a consumer
109
- * can interpolate any intermediate time exactly.
110
- */
111
- /** Result of {@link exportMidiWithTimingMap}. */
112
- interface MidiWithTimingMap {
113
- /** The Standard MIDI File data. */
114
- midi: Uint8Array;
115
- /** The MIDI-time ↔ musical-position sidecar. */
116
- sidecar: TimingSidecar;
117
- }
118
- /**
119
- * Export a Score to Standard MIDI File format (SMF Type 1)
120
- * @param score - The Score to export
121
- * @param options - Export options
122
- * @returns The MIDI file data as Uint8Array
123
- */
124
- declare function exportMidi(score: Score, options?: MidiExportOptions): Uint8Array;
125
- /**
126
- * Export a Score to MIDI together with a timing sidecar that maps the generated
127
- * MIDI timeline to conceptual musical positions (measure + beat).
128
- *
129
- * The MIDI bytes are byte-for-byte identical to {@link exportMidi}; the sidecar
130
- * is derived from the same internal time computation so the two can never drift.
131
- *
132
- * @param score - The Score to export
133
- * @param options - Export options (must match those used for any aligned audio)
134
- * @returns The MIDI data and its timing sidecar
135
- */
136
- declare function exportMidiWithTimingMap(score: Score, options?: MidiExportOptions): MidiWithTimingMap;
137
-
138
- /**
139
- * ABC Notation Serializer
140
- * Converts Score internal model to ABC notation format string.
141
- */
142
-
143
- interface AbcSerializeOptions {
144
- /** Reference number (X: field). Default: 1 */
145
- referenceNumber?: number;
146
- /** Maximum notes per line before wrapping. Default: no limit */
147
- notesPerLine?: number;
148
- /** Include chord symbols. Default: true */
149
- includeChordSymbols?: boolean;
150
- /** Include dynamics. Default: true */
151
- includeDynamics?: boolean;
152
- /** Include lyrics. Default: true */
153
- includeLyrics?: boolean;
154
- }
155
- /**
156
- * Serialize several Scores into a single multi-tune ABC file.
157
- *
158
- * Counterpart to `parseAbcTunes`: each Score becomes one tune, separated by a
159
- * blank line as the ABC standard requires.
160
- */
161
- declare function serializeAbcTunes(scores: Score[], options?: AbcSerializeOptions): string;
162
- /**
163
- * Serialize a Score object to ABC notation format string.
164
- */
165
- declare function serializeAbc(score: Score, options?: AbcSerializeOptions): string;
166
-
167
- declare const STEPS: Pitch['step'][];
168
- declare const STEP_SEMITONES: Record<Pitch['step'], number>;
169
- /** Convert pitch to semitone value (MIDI-like) */
170
- declare function pitchToSemitone(pitch: Pitch): number;
171
- /** Get position at end of measure */
172
- declare function getMeasureEndPosition(measure: Measure): number;
173
-
174
- /**
175
- * Generates a unique ID for elements in the Score structure.
176
- *
177
- * The ID format is "i" + 10 random URL-safe characters, where:
178
- * - "i" prefix ensures XML ID compatibility (XML IDs must start with a letter or underscore)
179
- * - the 10-character suffix is drawn from the same 64-character URL-safe
180
- * alphabet as nanoid, backed by `crypto.getRandomValues`
181
- *
182
- * Example: "iV1StGXR8_"
183
- *
184
- * @returns A unique 11-character ID string
185
- */
186
- declare function generateId(): string;
187
-
188
- export { type AbcSerializeOptions, ExpressionOptions, Measure, type MidiExportOptions, type MidiWithTimingMap, Pitch, STEPS, STEP_SEMITONES, Score, type SerializeOptions, TimingSidecar, ValidateOptions, ValidationResult, exportMidi, exportMidiWithTimingMap, generateId, getMeasureEndPosition, isCompressed, parse, parseAbc, parseAbcTunes, parseAuto, parseCompressed, pitchToSemitone, serialize, serializeAbc, serializeAbcTunes, serializeCompressed };
9
+ export { L as LocalValidateOptions, M as MeasureValidationContext, z as ValidateOptions, t as ValidationError, x as ValidationErrorCode, V as ValidationException, y as ValidationLevel, w as ValidationLocation, u as ValidationResult, s as assertMeasureValid, a as assertValid, p as formatLocation, r as getMeasureContext, i as isValid, v as validate, d as validateBackupForward, f as validateBeams, b as validateDivisions, c as validateMeasureDuration, q as validateMeasureLocal, j as validatePartReferences, k as validatePartStructure, g as validateSlurs, o as validateSlursAcrossMeasures, l as validateStaffStructure, e as validateTies, n as validateTiesAcrossMeasures, h as validateTuplets, m as validateVoiceStaff } from './index-C9lLZwol.mjs';
10
+ export { AbcSerializeOptions, parseAbc, parseAbcTunes, serializeAbc, serializeAbcTunes } from './abc.mjs';
11
+ export { MidiExportOptions, MidiWithTimingMap, exportMidi, exportMidiWithTimingMap } from './midi.mjs';
12
+ export { c as ExpressionHint, d as ExpressionKind, E as ExpressionOptions, b as TimingBreakpoint, T as TimingMapOptions, a as TimingSidecar, g as generatePlaybackTimeline } from './playback-timeline-CVRHsikj.mjs';