musicxml-io 0.9.4 → 0.9.6

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/README.md CHANGED
@@ -90,11 +90,61 @@ const abc = serializeAbc(score, {
90
90
  includeLyrics: true,
91
91
  });
92
92
 
93
+ // Files holding several tunes (repeated X: fields)
94
+ import { parseAbcTunes, serializeAbcTunes } from 'musicxml-io';
95
+ const tunes = parseAbcTunes(abcString); // Score[]
96
+ const book = serializeAbcTunes(tunes);
97
+
93
98
  // Auto-detect format (MusicXML, .mxl, or ABC)
94
99
  import { parseAuto } from 'musicxml-io';
95
100
  const score2 = parseAuto(input);
96
101
  ```
97
102
 
103
+ `parseAbc` returns the first tune of a multi-tune file; use `parseAbcTunes`
104
+ to get them all.
105
+
106
+ #### Supported ABC syntax
107
+
108
+ Targets the [ABC notation standard v2.1](https://abcnotation.com/wiki/abc:standard:v2.1).
109
+
110
+ | Area | Support |
111
+ |------|---------|
112
+ | Header fields | `X T C M L Q K V P U W Z S O R N I F` and `+:` continuations |
113
+ | Meters | `n/m`, `C`, `C\|`, additive `(2+3+2)/8`, `none` |
114
+ | Keys | All majors, minors and modes; clef on `K:` (`clef=bass`, bare `K:C bass`) |
115
+ | Clefs | treble, bass, bass3, alto, tenor, soprano, mezzo, baritone, perc, and octave-transposing forms (`treble-8`, `bass+15`) |
116
+ | Notes | Pitch, octave, duration, broken rhythm (`>` `<`), ties |
117
+ | Accidentals | `^ ^^ _ __ =` and microtones (`^/2`, `^3/2`, `_/4`) |
118
+ | Rests | `z`, `x`, multi-measure `Zn`, spacer `y` |
119
+ | Bar lines | `\| \|\| \|] [\| \|: :\| :: :\|: [\|]` and dotted `.\|` |
120
+ | Repeats | Volta brackets, including lists and ranges (`[1,3`, `[1-3`) |
121
+ | Chords | `[CEG]`, per-note durations and ties, rests inside chords |
122
+ | Grace notes | `{...}` appoggiatura, `{/...}` acciaccatura, chords inside groups |
123
+ | Tuplets | `(p`, `(p:q`, `(p:q:r` |
124
+ | Decorations | Shorthand (`. ~ H L M O P S T u v`), `!name!`, legacy `+name+` |
125
+ | Chord symbols | `"Am"`, `"G7/B"`, ... |
126
+ | Annotations | `"^above"`, `"_below"`, `"<"`, `">"`, `"@"` |
127
+ | Slurs | `(...)`, dotted `.(...)` |
128
+ | Dynamics | `!p!` … `!ffff!`, hairpins `!crescendo(!` / `!diminuendo)!` |
129
+ | Lyrics | `w:` with multiple verses, `W:` |
130
+ | Voices | `V:` with `clef=`, `name=`, `octave=`; overlay `&` |
131
+ | Inline fields | `[K:]`, `[M:]`, `[L:]`, `[Q:]`, `[V:]`, and others carried through |
132
+ | Files | Multiple tunes per file, `%` comments, `%%` directives |
133
+
134
+ Not yet interpreted, but carried through a round-trip unchanged:
135
+
136
+ - `U:` user-defined symbol redefinitions (the default meanings are used)
137
+ - `m:` macros (not expanded)
138
+ - `K:` extras beyond the clef: explicit accidentals (`exp`), `transpose=`,
139
+ `middle=`, `K:HP`
140
+ - `s:` symbol lines and body `P:` part markers (kept in place, not applied)
141
+ - Spacing between notes, which ABC uses as a beaming hint, is treated as
142
+ formatting rather than musical content
143
+
144
+ Where several ABC spellings mean the same thing — `!trill!` and `T`, or
145
+ `!accent!`, `!emphasis!` and `!>!` — serialization settles on one of them.
146
+ The choice is stable, so serializing twice yields the same text.
147
+
98
148
  ⚠️ **Warning**: This library's API is not yet stable and may change between versions.
99
149
 
100
150
  ### File I/O (Node.js)
@@ -171,6 +221,64 @@ for (const entry of measure.entries) {
171
221
  }
172
222
  ```
173
223
 
224
+ ### Color
225
+
226
+ MusicXML's `color` attribute is supported on every element the `Score` model
227
+ represents. Colours survive a parse → serialize round-trip, and can be read or
228
+ written as an ordinary property:
229
+
230
+ ```typescript
231
+ import { parse, setColor, clearColors, ALL_COLOR_TARGETS } from 'musicxml-io';
232
+
233
+ const score = parse(xmlString);
234
+
235
+ // Every note of measures 5-6 in the first part, red
236
+ const marked = setColor(score, {
237
+ color: '#FF0000',
238
+ partIndices: [0],
239
+ measureNumbers: [5, 6],
240
+ });
241
+
242
+ // A single note, plus its stem and beams
243
+ const highlighted = setColor(score, {
244
+ color: '#0000FF',
245
+ targets: ['note', 'stem', 'beam'],
246
+ noteFilter: (n) => n._id === noteId,
247
+ });
248
+
249
+ // Strip every colour in the score
250
+ const plain = clearColors(marked);
251
+ ```
252
+
253
+ Values are the MusicXML `#RRGGBB` or `#AARRGGBB` (alpha-first) form, carried
254
+ through verbatim.
255
+
256
+ | Where | Property | MusicXML element |
257
+ |-------|----------|------------------|
258
+ | Note | `note.color` | `<note>` — the whole note |
259
+ | | `note.noteTypeColor`, `note.dotColor` | `<type>`, `<dot>` |
260
+ | | `note.notehead.color`, `note.stem.color`, `note.accidental.color` | `<notehead>`, `<stem>`, `<accidental>` |
261
+ | | `note.beam[i].color` | `<beam>` |
262
+ | Notations | `notation.color` | every `<notations>` child except `<tuplet>`, which has no `color` attribute in the schema |
263
+ | Lyrics | `lyric.color`, `lyric.textColor`, `lyric.textElements[i].color` | `<lyric>`, `<text>` |
264
+ | Directions | `directionType.color` | every `<direction-type>` child except `<image>` and `<swing>`, which have no `color` attribute |
265
+ | Harmony | `harmony.color`, `harmony.kindColor`, `harmony.frame.color` | `<harmony>`, `<kind>`, `<frame>` |
266
+ | Figured bass | `figuredBass.color` | `<figured-bass>` |
267
+ | Attributes | `key.color`, `time.color`, `clef.color`, `measureStyle.color` | `<key>`, `<time>`, `<clef>`, `<measure-style>` |
268
+ | Barlines | `barline.barStyleColor`, `barline.ending.color` | `<bar-style>`, `<ending>` |
269
+ | Part list | `partInfo.nameColor`, `partInfo.abbreviationColor` | `<part-name>`, `<part-abbreviation>` |
270
+ | | `partGroup.groupNameColor`, `groupAbbreviationColor`, `groupSymbolColor` | `<group-name>`, `<group-abbreviation>`, `<group-symbol>` |
271
+ | | `displayText.color` | `<display-text>` |
272
+ | Credits | `creditWords.color` | `<credit-words>` |
273
+
274
+ `setColor` covers the note, notation, lyric, direction, harmony, figured-bass,
275
+ attribute and barline rows; the part-list and credit colours are set by
276
+ assigning the field. See [OPERATIONS.md](OPERATIONS.md#color-operations) for
277
+ the full target list.
278
+
279
+ Colour is presentation only — it does not affect MIDI export, playback
280
+ timelines, or ABC serialization.
281
+
174
282
  ### MIDI Export
175
283
 
176
284
  ```typescript
@@ -233,12 +341,14 @@ const { valid, errors } = validate(score);
233
341
  | `parse(xml)` | Parse MusicXML string |
234
342
  | `parseFile(path)` | Parse from file |
235
343
  | `parseCompressed(buffer)` | Parse .mxl |
236
- | `parseAbc(abc)` | Parse ABC notation string |
344
+ | `parseAbc(abc)` | Parse ABC notation string (first tune) |
345
+ | `parseAbcTunes(abc)` | Parse every tune in an ABC file → `Score[]` |
237
346
  | `parseAuto(data)` | Auto-detect format (MusicXML / .mxl / ABC) |
238
347
  | `serialize(score)` | To MusicXML string |
239
348
  | `serializeToFile(score, path)` | To file |
240
349
  | `serializeCompressed(score)` | To .mxl |
241
350
  | `serializeAbc(score, options?)` | To ABC notation string |
351
+ | `serializeAbcTunes(scores, options?)` | Several Scores → one multi-tune ABC file |
242
352
  | `exportMidi(score)` | To MIDI |
243
353
  | `exportMidiWithTimingMap(score)` | To MIDI + a MIDI↔(measure, beat) timing sidecar for audio alignment |
244
354
 
@@ -281,6 +391,8 @@ const { valid, errors } = validate(score);
281
391
  | `addWedge(score, options)` | Add crescendo/diminuendo |
282
392
  | `addPedal(score, options)` | Add pedal marking |
283
393
  | `addGraceNote(score, options)` | Add grace note |
394
+ | `setColor(score, options)` | Set/clear the colour of score elements |
395
+ | `clearColors(score)` | Remove every colour in the score |
284
396
 
285
397
  See [OPERATIONS.md](OPERATIONS.md) for the complete list.
286
398
 
@@ -433,7 +545,7 @@ This feature enables:
433
545
 
434
546
  | Path | Fidelity |
435
547
  |------|----------|
436
- | ABC → Score → ABC | High (42 fixtures passing) |
548
+ | ABC → Score → ABC | High (49 fixtures passing) |
437
549
  | ABC → MusicXML → ABC | Musical content preserved |
438
550
 
439
551
  ## Contributing
@@ -1,4 +1,4 @@
1
- import { l as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-CZXBqGbS.mjs';
1
+ import { o as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-UAP6Zn7J.mjs';
2
2
 
3
3
  /**
4
4
  * Entry-level accessors for DirectionEntry, NoteEntry, and PartInfo
@@ -1,4 +1,4 @@
1
- import { l as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-CZXBqGbS.js';
1
+ import { o as DirectionType, D as DirectionEntry, N as NoteEntry, c as PartListEntry, P as PartInfo, S as Score } from '../types-UAP6Zn7J.js';
2
2
 
3
3
  /**
4
4
  * Entry-level accessors for DirectionEntry, NoteEntry, and PartInfo
@@ -1,7 +1,7 @@
1
- import { S as Score, g as Pitch, M as Measure } from './types-CZXBqGbS.mjs';
2
- export { A as Accidental, i as AccidentalInfo, R as AdjacentNotes, a6 as AssembledLyrics, B as BackupEntry, p as Barline, a7 as BarlineWithContext, a2 as BeamGroup, j as BeamInfo, s as Chord, C as Clef, ac as ClefChangeInfo, w as Credit, y as CreditImage, x as CreditWords, v as Defaults, D as DirectionEntry, U as DirectionKind, l as DirectionType, H as DirectionWithContext, W as DynamicWithContext, m as DynamicsValue, a9 as EndingInfo, G as EntryWithContext, F as ForwardEntry, a4 as HarmonyWithContext, aa as KeyChangeInfo, K as KeySignature, L as Lyric, a5 as LyricWithContext, e as MeasureAttributes, f as MeasureEntry, k as Notation, a3 as NotationType, N as NoteEntry, t as NoteIteratorItem, h as NoteType, E as NoteWithContext, r as NoteWithPosition, _ as OctaveShiftWithContext, d as Part, b as PartGroup, P as PartInfo, c as PartListEntry, Y as PedalWithContext, J as PositionQueryOptions, u as Print, a8 as RepeatInfo, a as ScoreMetadata, a0 as SlurSpan, q as StaffGroup, I as StaffRange, ad as StructuralChanges, X as TempoWithContext, T as TieInfo, $ as TiedNoteGroup, ab as TimeChangeInfo, n as TimeSignature, o as Transpose, a1 as TupletGroup, O as VerticalSlice, V as VoiceGroup, Q as VoiceLine, z as VoiceToStaffMap, Z as WedgeWithContext } from './types-CZXBqGbS.mjs';
3
- import { cK as ValidateOptions, cG as ValidationResult } from './index-Labr-S8-.mjs';
4
- export { b8 as AddArticulationOptions, bh as AddBeamOptions, c6 as AddBowingOptions, cf as AddBreathMarkOptions, ci as AddCaesuraOptions, aU as AddChordOptions, c0 as AddChordSymbolOptions, bQ as AddCodaOptions, ba as AddDynamicsOptions, bK as AddEndingOptions, bx as AddFermataOptions, c3 as AddFingeringOptions, bS as AddGraceNoteOptions, bZ as AddHarmonyOptions, bV as AddLyricOptions, bR as AddNavigationOptions, cb as AddOctaveShiftOptions, bz as AddOrnamentOptions, b0 as AddPartOptions, bB as AddPedalOptions, bF as AddRehearsalMarkOptions, bG as AddRepeatBarlineOptions, bI as AddRepeatOptions, bP as AddSegnoOptions, b6 as AddSlurOptions, c8 as AddStringNumberOptions, bs as AddTempoOptions, bD as AddTextDirectionOptions, bE as AddTextOptions, b4 as AddTieOptions, a$ as AddVoiceOptions, bv as AddWedgeOptions, bj as AutoBeamOptions, bO as BarStyle, c5 as BowingType, ce as BreathMarkValue, ch as CaesuraValue, bM as ChangeBarlineOptions, be as ChangeClefOptions, aV as ChangeNoteDurationOptions, bU as ConvertToGraceOptions, bp as CopyNotesMultiMeasureOptions, bm as CopyNotesOptions, bf as CreateTupletOptions, bo as CutNotesOptions, b1 as DuplicatePartOptions, bY as HarmonyKind, bd as InsertClefChangeOptions, aS as InsertNoteOptions, cM as LocalValidateOptions, a_ as LowerAccidentalOptions, cL as MeasureValidationContext, bc as ModifyDynamicsOptions, bu as ModifyTempoOptions, b3 as MoveNoteToStaffOptions, bq as MultiMeasureSelection, bl as NoteSelection, ca as OctaveShiftType, aR as OperationErrorCode, aQ as OperationResult, br as PasteNotesMultiMeasureOptions, bn as PasteNotesOptions, aZ as RaiseAccidentalOptions, b9 as RemoveArticulationOptions, bi as RemoveBeamOptions, c7 as RemoveBowingOptions, cg as RemoveBreathMarkOptions, cj as RemoveCaesuraOptions, c1 as RemoveChordSymbolOptions, bb as RemoveDynamicsOptions, bL as RemoveEndingOptions, by as RemoveFermataOptions, c4 as RemoveFingeringOptions, bT as RemoveGraceNoteOptions, b_ as RemoveHarmonyOptions, bW as RemoveLyricOptions, aT as RemoveNoteOptions, cd as RemoveOctaveShiftOptions, bA as RemoveOrnamentOptions, bC as RemovePedalOptions, bH as RemoveRepeatBarlineOptions, bJ as RemoveRepeatOptions, b7 as RemoveSlurOptions, c9 as RemoveStringNumberOptions, bt as RemoveTempoOptions, b5 as RemoveTieOptions, bg as RemoveTupletOptions, bw as RemoveWedgeOptions, bN as SetBarlineOptions, bk as SetBeamingOptions, aX as SetNotePitchBySemitoneOptions, aW as SetNotePitchOptions, b2 as SetStavesOptions, aY as ShiftNotePitchOptions, cc as StopOctaveShiftOptions, c2 as UpdateChordSymbolOptions, b$ as UpdateHarmonyOptions, bX as UpdateLyricOptions, cF as ValidationError, cI as ValidationErrorCode, cB as ValidationException, cJ as ValidationLevel, cH 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, cE as assertMeasureValid, cm as assertValid, U as autoBeam, aj as changeBarline, P as changeClef, B as changeKey, d as changeNoteDuration, C as changeTime, 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, cA as formatLocation, cD as getMeasureContext, O as insertClefChange, D as insertMeasure, i as insertNote, cl 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, 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, ck as validate, cp as validateBackupForward, cr as validateBeams, cn as validateDivisions, co as validateMeasureDuration, cC as validateMeasureLocal, cu as validatePartReferences, cv as validatePartStructure, cs as validateSlurs, cz as validateSlursAcrossMeasures, cw as validateStaffStructure, cq as validateTies, cy as validateTiesAcrossMeasures, ct as validateTuplets, cx as validateVoiceStaff } from './index-Labr-S8-.mjs';
1
+ import { S as Score, g as Pitch, M as Measure } from './types-UAP6Zn7J.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-UAP6Zn7J.mjs';
3
+ import { cP as ValidateOptions, cL as ValidationResult } from './index-DOLSmZ0f.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-DOLSmZ0f.mjs';
5
5
  import { ExpressionOptions, TimingSidecar } from './query/index.mjs';
6
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';
7
7
  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';
@@ -33,23 +33,33 @@ declare function parseAuto(data: Uint8Array | string): Score;
33
33
  * Parses ABC notation format into the Score internal model.
34
34
  *
35
35
  * Supports ABC standard v2.1 core features:
36
- * - Header fields (X, T, C, M, L, Q, K, V, w)
37
- * - Notes with pitch, duration, accidentals, octave modifiers
38
- * - Rests (z, Z)
39
- * - Bar lines (|, ||, |], [|, |:, :|, ::)
40
- * - Repeats and volta endings ([1, [2)
41
- * - Chords (simultaneous notes: [CEG])
42
- * - Chord symbols ("Am", "G7", etc.)
43
- * - Ties (-) and slurs ((...))
44
- * - Grace notes ({...})
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
45
  * - Tuplets ((3..., (p:q:r...)
46
- * - Dynamics (!p!, !f!, etc.)
47
- * - Lyrics (w: field)
48
- * - Multi-voice (V: field)
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
49
  */
50
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[];
51
58
  /**
52
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.
53
63
  */
54
64
  declare function parseAbc(abcString: string): Score;
55
65
 
@@ -142,6 +152,13 @@ interface AbcSerializeOptions {
142
152
  /** Include lyrics. Default: true */
143
153
  includeLyrics?: boolean;
144
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;
145
162
  /**
146
163
  * Serialize a Score object to ABC notation format string.
147
164
  */
@@ -168,4 +185,4 @@ declare function getMeasureEndPosition(measure: Measure): number;
168
185
  */
169
186
  declare function generateId(): string;
170
187
 
171
- 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, parseAuto, parseCompressed, pitchToSemitone, serialize, serializeAbc, serializeCompressed };
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 };
package/dist/browser.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { S as Score, g as Pitch, M as Measure } from './types-CZXBqGbS.js';
2
- export { A as Accidental, i as AccidentalInfo, R as AdjacentNotes, a6 as AssembledLyrics, B as BackupEntry, p as Barline, a7 as BarlineWithContext, a2 as BeamGroup, j as BeamInfo, s as Chord, C as Clef, ac as ClefChangeInfo, w as Credit, y as CreditImage, x as CreditWords, v as Defaults, D as DirectionEntry, U as DirectionKind, l as DirectionType, H as DirectionWithContext, W as DynamicWithContext, m as DynamicsValue, a9 as EndingInfo, G as EntryWithContext, F as ForwardEntry, a4 as HarmonyWithContext, aa as KeyChangeInfo, K as KeySignature, L as Lyric, a5 as LyricWithContext, e as MeasureAttributes, f as MeasureEntry, k as Notation, a3 as NotationType, N as NoteEntry, t as NoteIteratorItem, h as NoteType, E as NoteWithContext, r as NoteWithPosition, _ as OctaveShiftWithContext, d as Part, b as PartGroup, P as PartInfo, c as PartListEntry, Y as PedalWithContext, J as PositionQueryOptions, u as Print, a8 as RepeatInfo, a as ScoreMetadata, a0 as SlurSpan, q as StaffGroup, I as StaffRange, ad as StructuralChanges, X as TempoWithContext, T as TieInfo, $ as TiedNoteGroup, ab as TimeChangeInfo, n as TimeSignature, o as Transpose, a1 as TupletGroup, O as VerticalSlice, V as VoiceGroup, Q as VoiceLine, z as VoiceToStaffMap, Z as WedgeWithContext } from './types-CZXBqGbS.js';
3
- import { cK as ValidateOptions, cG as ValidationResult } from './index-39ZF0nDC.js';
4
- export { b8 as AddArticulationOptions, bh as AddBeamOptions, c6 as AddBowingOptions, cf as AddBreathMarkOptions, ci as AddCaesuraOptions, aU as AddChordOptions, c0 as AddChordSymbolOptions, bQ as AddCodaOptions, ba as AddDynamicsOptions, bK as AddEndingOptions, bx as AddFermataOptions, c3 as AddFingeringOptions, bS as AddGraceNoteOptions, bZ as AddHarmonyOptions, bV as AddLyricOptions, bR as AddNavigationOptions, cb as AddOctaveShiftOptions, bz as AddOrnamentOptions, b0 as AddPartOptions, bB as AddPedalOptions, bF as AddRehearsalMarkOptions, bG as AddRepeatBarlineOptions, bI as AddRepeatOptions, bP as AddSegnoOptions, b6 as AddSlurOptions, c8 as AddStringNumberOptions, bs as AddTempoOptions, bD as AddTextDirectionOptions, bE as AddTextOptions, b4 as AddTieOptions, a$ as AddVoiceOptions, bv as AddWedgeOptions, bj as AutoBeamOptions, bO as BarStyle, c5 as BowingType, ce as BreathMarkValue, ch as CaesuraValue, bM as ChangeBarlineOptions, be as ChangeClefOptions, aV as ChangeNoteDurationOptions, bU as ConvertToGraceOptions, bp as CopyNotesMultiMeasureOptions, bm as CopyNotesOptions, bf as CreateTupletOptions, bo as CutNotesOptions, b1 as DuplicatePartOptions, bY as HarmonyKind, bd as InsertClefChangeOptions, aS as InsertNoteOptions, cM as LocalValidateOptions, a_ as LowerAccidentalOptions, cL as MeasureValidationContext, bc as ModifyDynamicsOptions, bu as ModifyTempoOptions, b3 as MoveNoteToStaffOptions, bq as MultiMeasureSelection, bl as NoteSelection, ca as OctaveShiftType, aR as OperationErrorCode, aQ as OperationResult, br as PasteNotesMultiMeasureOptions, bn as PasteNotesOptions, aZ as RaiseAccidentalOptions, b9 as RemoveArticulationOptions, bi as RemoveBeamOptions, c7 as RemoveBowingOptions, cg as RemoveBreathMarkOptions, cj as RemoveCaesuraOptions, c1 as RemoveChordSymbolOptions, bb as RemoveDynamicsOptions, bL as RemoveEndingOptions, by as RemoveFermataOptions, c4 as RemoveFingeringOptions, bT as RemoveGraceNoteOptions, b_ as RemoveHarmonyOptions, bW as RemoveLyricOptions, aT as RemoveNoteOptions, cd as RemoveOctaveShiftOptions, bA as RemoveOrnamentOptions, bC as RemovePedalOptions, bH as RemoveRepeatBarlineOptions, bJ as RemoveRepeatOptions, b7 as RemoveSlurOptions, c9 as RemoveStringNumberOptions, bt as RemoveTempoOptions, b5 as RemoveTieOptions, bg as RemoveTupletOptions, bw as RemoveWedgeOptions, bN as SetBarlineOptions, bk as SetBeamingOptions, aX as SetNotePitchBySemitoneOptions, aW as SetNotePitchOptions, b2 as SetStavesOptions, aY as ShiftNotePitchOptions, cc as StopOctaveShiftOptions, c2 as UpdateChordSymbolOptions, b$ as UpdateHarmonyOptions, bX as UpdateLyricOptions, cF as ValidationError, cI as ValidationErrorCode, cB as ValidationException, cJ as ValidationLevel, cH 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, cE as assertMeasureValid, cm as assertValid, U as autoBeam, aj as changeBarline, P as changeClef, B as changeKey, d as changeNoteDuration, C as changeTime, 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, cA as formatLocation, cD as getMeasureContext, O as insertClefChange, D as insertMeasure, i as insertNote, cl 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, 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, ck as validate, cp as validateBackupForward, cr as validateBeams, cn as validateDivisions, co as validateMeasureDuration, cC as validateMeasureLocal, cu as validatePartReferences, cv as validatePartStructure, cs as validateSlurs, cz as validateSlursAcrossMeasures, cw as validateStaffStructure, cq as validateTies, cy as validateTiesAcrossMeasures, ct as validateTuplets, cx as validateVoiceStaff } from './index-39ZF0nDC.js';
1
+ import { S as Score, g as Pitch, M as Measure } from './types-UAP6Zn7J.js';
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-UAP6Zn7J.js';
3
+ import { cP as ValidateOptions, cL as ValidationResult } from './index-1S3pP9QV.js';
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-1S3pP9QV.js';
5
5
  import { ExpressionOptions, TimingSidecar } from './query/index.js';
6
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.js';
7
7
  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.js';
@@ -33,23 +33,33 @@ declare function parseAuto(data: Uint8Array | string): Score;
33
33
  * Parses ABC notation format into the Score internal model.
34
34
  *
35
35
  * Supports ABC standard v2.1 core features:
36
- * - Header fields (X, T, C, M, L, Q, K, V, w)
37
- * - Notes with pitch, duration, accidentals, octave modifiers
38
- * - Rests (z, Z)
39
- * - Bar lines (|, ||, |], [|, |:, :|, ::)
40
- * - Repeats and volta endings ([1, [2)
41
- * - Chords (simultaneous notes: [CEG])
42
- * - Chord symbols ("Am", "G7", etc.)
43
- * - Ties (-) and slurs ((...))
44
- * - Grace notes ({...})
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
45
  * - Tuplets ((3..., (p:q:r...)
46
- * - Dynamics (!p!, !f!, etc.)
47
- * - Lyrics (w: field)
48
- * - Multi-voice (V: field)
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
49
  */
50
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[];
51
58
  /**
52
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.
53
63
  */
54
64
  declare function parseAbc(abcString: string): Score;
55
65
 
@@ -142,6 +152,13 @@ interface AbcSerializeOptions {
142
152
  /** Include lyrics. Default: true */
143
153
  includeLyrics?: boolean;
144
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;
145
162
  /**
146
163
  * Serialize a Score object to ABC notation format string.
147
164
  */
@@ -168,4 +185,4 @@ declare function getMeasureEndPosition(measure: Measure): number;
168
185
  */
169
186
  declare function generateId(): string;
170
187
 
171
- 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, parseAuto, parseCompressed, pitchToSemitone, serialize, serializeAbc, serializeCompressed };
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 };
package/dist/browser.js CHANGED
@@ -9,7 +9,9 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkFP4TCD6Mjs = require('./chunk-FP4TCD6M.js');
12
+
13
+
14
+ var _chunkSK2CA5RQjs = require('./chunk-SK2CA5RQ.js');
13
15
 
14
16
 
15
17
 
@@ -168,7 +170,10 @@ var _chunkOEX7NVZNjs = require('./chunk-OEX7NVZN.js');
168
170
 
169
171
 
170
172
 
171
- var _chunkJRXV2ECWjs = require('./chunk-JRXV2ECW.js');
173
+
174
+
175
+
176
+ var _chunkK7W4FSFVjs = require('./chunk-K7W4FSFV.js');
172
177
 
173
178
 
174
179
 
@@ -507,4 +512,9 @@ var _chunkEWLB5X64js = require('./chunk-EWLB5X64.js');
507
512
 
508
513
 
509
514
 
510
- exports.STEPS = _chunkEWLB5X64js.STEPS; exports.STEP_SEMITONES = _chunkEWLB5X64js.STEP_SEMITONES; exports.ValidationException = _chunkJRXV2ECWjs.ValidationException; exports.addArticulation = _chunkJRXV2ECWjs.addArticulation; exports.addBeam = _chunkJRXV2ECWjs.addBeam; exports.addBowing = _chunkJRXV2ECWjs.addBowing; exports.addBreathMark = _chunkJRXV2ECWjs.addBreathMark; exports.addCaesura = _chunkJRXV2ECWjs.addCaesura; exports.addChord = _chunkJRXV2ECWjs.addChord; exports.addChordNote = _chunkJRXV2ECWjs.addChordNote; exports.addChordNoteChecked = _chunkJRXV2ECWjs.addChordNoteChecked; exports.addChordSymbol = _chunkJRXV2ECWjs.addChordSymbol; exports.addCoda = _chunkJRXV2ECWjs.addCoda; exports.addDaCapo = _chunkJRXV2ECWjs.addDaCapo; exports.addDalSegno = _chunkJRXV2ECWjs.addDalSegno; exports.addDynamics = _chunkJRXV2ECWjs.addDynamics; exports.addEnding = _chunkJRXV2ECWjs.addEnding; exports.addFermata = _chunkJRXV2ECWjs.addFermata; exports.addFine = _chunkJRXV2ECWjs.addFine; exports.addFingering = _chunkJRXV2ECWjs.addFingering; exports.addGraceNote = _chunkJRXV2ECWjs.addGraceNote; exports.addHarmony = _chunkJRXV2ECWjs.addHarmony; exports.addLyric = _chunkJRXV2ECWjs.addLyric; exports.addNote = _chunkJRXV2ECWjs.addNote; exports.addNoteChecked = _chunkJRXV2ECWjs.addNoteChecked; exports.addOctaveShift = _chunkJRXV2ECWjs.addOctaveShift; exports.addOrnament = _chunkJRXV2ECWjs.addOrnament; exports.addPart = _chunkJRXV2ECWjs.addPart; exports.addPedal = _chunkJRXV2ECWjs.addPedal; exports.addRehearsalMark = _chunkJRXV2ECWjs.addRehearsalMark; exports.addRepeat = _chunkJRXV2ECWjs.addRepeat; exports.addRepeatBarline = _chunkJRXV2ECWjs.addRepeatBarline; exports.addSegno = _chunkJRXV2ECWjs.addSegno; exports.addSlur = _chunkJRXV2ECWjs.addSlur; exports.addStringNumber = _chunkJRXV2ECWjs.addStringNumber; exports.addTempo = _chunkJRXV2ECWjs.addTempo; exports.addText = _chunkJRXV2ECWjs.addText; exports.addTextDirection = _chunkJRXV2ECWjs.addTextDirection; exports.addTie = _chunkJRXV2ECWjs.addTie; exports.addToCoda = _chunkJRXV2ECWjs.addToCoda; exports.addVoice = _chunkJRXV2ECWjs.addVoice; exports.addWedge = _chunkJRXV2ECWjs.addWedge; exports.assertMeasureValid = _chunkJRXV2ECWjs.assertMeasureValid; exports.assertValid = _chunkJRXV2ECWjs.assertValid; exports.autoBeam = _chunkJRXV2ECWjs.autoBeam; exports.buildVoiceToStaffMap = _chunkEWLB5X64js.buildVoiceToStaffMap; exports.buildVoiceToStaffMapForPart = _chunkEWLB5X64js.buildVoiceToStaffMapForPart; exports.changeBarline = _chunkJRXV2ECWjs.changeBarline; exports.changeClef = _chunkJRXV2ECWjs.changeClef; exports.changeKey = _chunkJRXV2ECWjs.changeKey; exports.changeNoteDuration = _chunkJRXV2ECWjs.changeNoteDuration; exports.changeTime = _chunkJRXV2ECWjs.changeTime; exports.convertToGrace = _chunkJRXV2ECWjs.convertToGrace; exports.copyNotes = _chunkJRXV2ECWjs.copyNotes; exports.copyNotesMultiMeasure = _chunkJRXV2ECWjs.copyNotesMultiMeasure; exports.countNotes = _chunkEWLB5X64js.countNotes; exports.createTuplet = _chunkJRXV2ECWjs.createTuplet; exports.cutNotes = _chunkJRXV2ECWjs.cutNotes; exports.deleteMeasure = _chunkJRXV2ECWjs.deleteMeasure; exports.deleteNote = _chunkJRXV2ECWjs.deleteNote; exports.deleteNoteChecked = _chunkJRXV2ECWjs.deleteNoteChecked; exports.duplicatePart = _chunkJRXV2ECWjs.duplicatePart; exports.exportMidi = _chunkFP4TCD6Mjs.exportMidi; exports.exportMidiWithTimingMap = _chunkFP4TCD6Mjs.exportMidiWithTimingMap; exports.extractPlaybackControls = _chunkEWLB5X64js.extractPlaybackControls; exports.findBarlines = _chunkEWLB5X64js.findBarlines; exports.findDirectionsByType = _chunkEWLB5X64js.findDirectionsByType; exports.findNotes = _chunkEWLB5X64js.findNotes; exports.findNotesWithNotation = _chunkEWLB5X64js.findNotesWithNotation; exports.formatLocation = _chunkJRXV2ECWjs.formatLocation; exports.generateId = _chunkJRXV2ECWjs.generateId; exports.generatePlaybackSequence = _chunkEWLB5X64js.generatePlaybackSequence; exports.generatePlaybackTimeline = _chunkEWLB5X64js.generatePlaybackTimeline; exports.getAbsolutePosition = _chunkEWLB5X64js.getAbsolutePosition; exports.getAdjacentNotes = _chunkEWLB5X64js.getAdjacentNotes; exports.getAllNotes = _chunkEWLB5X64js.getAllNotes; exports.getAllPartInfos = _chunkOEX7NVZNjs.getAllPartInfos; exports.getAttributesAtMeasure = _chunkEWLB5X64js.getAttributesAtMeasure; exports.getBeamGroups = _chunkEWLB5X64js.getBeamGroups; exports.getChordProgression = _chunkEWLB5X64js.getChordProgression; exports.getChords = _chunkEWLB5X64js.getChords; exports.getClefChanges = _chunkEWLB5X64js.getClefChanges; exports.getClefForStaff = _chunkEWLB5X64js.getClefForStaff; exports.getDirectionOfKind = _chunkOEX7NVZNjs.getDirectionOfKind; exports.getDirections = _chunkEWLB5X64js.getDirections; exports.getDirectionsAtPosition = _chunkEWLB5X64js.getDirectionsAtPosition; exports.getDirectionsOfKind = _chunkOEX7NVZNjs.getDirectionsOfKind; exports.getDivisions = _chunkEWLB5X64js.getDivisions; exports.getDuration = _chunkEWLB5X64js.getDuration; exports.getDynamics = _chunkEWLB5X64js.getDynamics; exports.getEffectiveStaff = _chunkEWLB5X64js.getEffectiveStaff; exports.getEndings = _chunkEWLB5X64js.getEndings; exports.getEntriesAtPosition = _chunkEWLB5X64js.getEntriesAtPosition; exports.getEntriesForStaff = _chunkEWLB5X64js.getEntriesForStaff; exports.getEntriesInRange = _chunkEWLB5X64js.getEntriesInRange; exports.getHarmonies = _chunkEWLB5X64js.getHarmonies; exports.getHarmonyAtPosition = _chunkEWLB5X64js.getHarmonyAtPosition; exports.getKeyChanges = _chunkEWLB5X64js.getKeyChanges; exports.getLyricText = _chunkEWLB5X64js.getLyricText; exports.getLyrics = _chunkEWLB5X64js.getLyrics; exports.getMeasure = _chunkEWLB5X64js.getMeasure; exports.getMeasureByIndex = _chunkEWLB5X64js.getMeasureByIndex; exports.getMeasureContext = _chunkJRXV2ECWjs.getMeasureContext; exports.getMeasureCount = _chunkEWLB5X64js.getMeasureCount; exports.getMeasureEndPosition = _chunkEWLB5X64js.getMeasureEndPosition; exports.getNextNote = _chunkEWLB5X64js.getNextNote; exports.getNormalizedDuration = _chunkEWLB5X64js.getNormalizedDuration; exports.getNormalizedPosition = _chunkEWLB5X64js.getNormalizedPosition; exports.getNotesAtPosition = _chunkEWLB5X64js.getNotesAtPosition; exports.getNotesForStaff = _chunkEWLB5X64js.getNotesForStaff; exports.getNotesForVoice = _chunkEWLB5X64js.getNotesForVoice; exports.getNotesInRange = _chunkEWLB5X64js.getNotesInRange; exports.getOctaveShifts = _chunkEWLB5X64js.getOctaveShifts; exports.getPartAbbreviation = _chunkOEX7NVZNjs.getPartAbbreviation; exports.getPartById = _chunkEWLB5X64js.getPartById; exports.getPartByIndex = _chunkEWLB5X64js.getPartByIndex; exports.getPartCount = _chunkEWLB5X64js.getPartCount; exports.getPartIds = _chunkEWLB5X64js.getPartIds; exports.getPartIndex = _chunkEWLB5X64js.getPartIndex; exports.getPartInfo = _chunkOEX7NVZNjs.getPartInfo; exports.getPartName = _chunkOEX7NVZNjs.getPartName; exports.getPartNameMap = _chunkOEX7NVZNjs.getPartNameMap; exports.getPedalMarkings = _chunkEWLB5X64js.getPedalMarkings; exports.getPrevNote = _chunkEWLB5X64js.getPrevNote; exports.getRepeatStructure = _chunkEWLB5X64js.getRepeatStructure; exports.getSlurSpans = _chunkEWLB5X64js.getSlurSpans; exports.getSoundDamperPedal = _chunkOEX7NVZNjs.getSoundDamperPedal; exports.getSoundDynamics = _chunkOEX7NVZNjs.getSoundDynamics; exports.getSoundSoftPedal = _chunkOEX7NVZNjs.getSoundSoftPedal; exports.getSoundSostenutoPedal = _chunkOEX7NVZNjs.getSoundSostenutoPedal; exports.getSoundTempo = _chunkOEX7NVZNjs.getSoundTempo; exports.getStaffRange = _chunkEWLB5X64js.getStaffRange; exports.getStaveCount = _chunkEWLB5X64js.getStaveCount; exports.getStaves = _chunkEWLB5X64js.getStaves; exports.getStructuralChanges = _chunkEWLB5X64js.getStructuralChanges; exports.getTempoMarkings = _chunkEWLB5X64js.getTempoMarkings; exports.getTiedNoteGroups = _chunkEWLB5X64js.getTiedNoteGroups; exports.getTimeChanges = _chunkEWLB5X64js.getTimeChanges; exports.getTupletGroups = _chunkEWLB5X64js.getTupletGroups; exports.getVerseCount = _chunkEWLB5X64js.getVerseCount; exports.getVerticalSlice = _chunkEWLB5X64js.getVerticalSlice; exports.getVoiceLine = _chunkEWLB5X64js.getVoiceLine; exports.getVoiceLineInRange = _chunkEWLB5X64js.getVoiceLineInRange; exports.getVoices = _chunkEWLB5X64js.getVoices; exports.getVoicesForStaff = _chunkEWLB5X64js.getVoicesForStaff; exports.getWedges = _chunkEWLB5X64js.getWedges; exports.groupByStaff = _chunkEWLB5X64js.groupByStaff; exports.groupByVoice = _chunkEWLB5X64js.groupByVoice; exports.hasBeam = _chunkOEX7NVZNjs.hasBeam; exports.hasDirectionOfKind = _chunkOEX7NVZNjs.hasDirectionOfKind; exports.hasLyrics = _chunkOEX7NVZNjs.hasLyrics; exports.hasMultipleStaves = _chunkEWLB5X64js.hasMultipleStaves; exports.hasNotations = _chunkOEX7NVZNjs.hasNotations; exports.hasNotes = _chunkEWLB5X64js.hasNotes; exports.hasPlaybackControls = _chunkEWLB5X64js.hasPlaybackControls; exports.hasTie = _chunkOEX7NVZNjs.hasTie; exports.hasTieStart = _chunkOEX7NVZNjs.hasTieStart; exports.hasTieStop = _chunkOEX7NVZNjs.hasTieStop; exports.hasTuplet = _chunkOEX7NVZNjs.hasTuplet; exports.inferStaff = _chunkEWLB5X64js.inferStaff; exports.insertClefChange = _chunkJRXV2ECWjs.insertClefChange; exports.insertMeasure = _chunkJRXV2ECWjs.insertMeasure; exports.insertNote = _chunkJRXV2ECWjs.insertNote; exports.isChordNote = _chunkOEX7NVZNjs.isChordNote; exports.isCompressed = _chunkFP4TCD6Mjs.isCompressed; exports.isCueNote = _chunkOEX7NVZNjs.isCueNote; exports.isGraceNote = _chunkOEX7NVZNjs.isGraceNote; exports.isPartInfo = _chunkOEX7NVZNjs.isPartInfo; exports.isPitchedNote = _chunkOEX7NVZNjs.isPitchedNote; exports.isRest = _chunkOEX7NVZNjs.isRest; exports.isRestMeasure = _chunkEWLB5X64js.isRestMeasure; exports.isUnpitchedNote = _chunkOEX7NVZNjs.isUnpitchedNote; exports.isValid = _chunkJRXV2ECWjs.isValid; exports.iterateEntries = _chunkEWLB5X64js.iterateEntries; exports.iterateNotes = _chunkEWLB5X64js.iterateNotes; exports.lowerAccidental = _chunkJRXV2ECWjs.lowerAccidental; exports.measureRoundtrip = _chunkEWLB5X64js.measureRoundtrip; exports.modifyDynamics = _chunkJRXV2ECWjs.modifyDynamics; exports.modifyNoteDuration = _chunkJRXV2ECWjs.modifyNoteDuration; exports.modifyNoteDurationChecked = _chunkJRXV2ECWjs.modifyNoteDurationChecked; exports.modifyNotePitch = _chunkJRXV2ECWjs.modifyNotePitch; exports.modifyNotePitchChecked = _chunkJRXV2ECWjs.modifyNotePitchChecked; exports.modifyTempo = _chunkJRXV2ECWjs.modifyTempo; exports.moveNoteToStaff = _chunkJRXV2ECWjs.moveNoteToStaff; exports.parse = _chunkFP4TCD6Mjs.parse; exports.parseAbc = _chunkFP4TCD6Mjs.parseAbc; exports.parseAuto = _chunkFP4TCD6Mjs.parseAuto; exports.parseCompressed = _chunkFP4TCD6Mjs.parseCompressed; exports.pasteNotes = _chunkJRXV2ECWjs.pasteNotes; exports.pasteNotesMultiMeasure = _chunkJRXV2ECWjs.pasteNotesMultiMeasure; exports.pitchToSemitone = _chunkEWLB5X64js.pitchToSemitone; exports.raiseAccidental = _chunkJRXV2ECWjs.raiseAccidental; exports.removeArticulation = _chunkJRXV2ECWjs.removeArticulation; exports.removeBeam = _chunkJRXV2ECWjs.removeBeam; exports.removeBowing = _chunkJRXV2ECWjs.removeBowing; exports.removeBreathMark = _chunkJRXV2ECWjs.removeBreathMark; exports.removeCaesura = _chunkJRXV2ECWjs.removeCaesura; exports.removeChordSymbol = _chunkJRXV2ECWjs.removeChordSymbol; exports.removeDynamics = _chunkJRXV2ECWjs.removeDynamics; exports.removeEnding = _chunkJRXV2ECWjs.removeEnding; exports.removeFermata = _chunkJRXV2ECWjs.removeFermata; exports.removeFingering = _chunkJRXV2ECWjs.removeFingering; exports.removeGraceNote = _chunkJRXV2ECWjs.removeGraceNote; exports.removeHarmony = _chunkJRXV2ECWjs.removeHarmony; exports.removeLyric = _chunkJRXV2ECWjs.removeLyric; exports.removeNote = _chunkJRXV2ECWjs.removeNote; exports.removeOctaveShift = _chunkJRXV2ECWjs.removeOctaveShift; exports.removeOrnament = _chunkJRXV2ECWjs.removeOrnament; exports.removePart = _chunkJRXV2ECWjs.removePart; exports.removePedal = _chunkJRXV2ECWjs.removePedal; exports.removeRepeat = _chunkJRXV2ECWjs.removeRepeat; exports.removeRepeatBarline = _chunkJRXV2ECWjs.removeRepeatBarline; exports.removeSlur = _chunkJRXV2ECWjs.removeSlur; exports.removeStringNumber = _chunkJRXV2ECWjs.removeStringNumber; exports.removeTempo = _chunkJRXV2ECWjs.removeTempo; exports.removeTie = _chunkJRXV2ECWjs.removeTie; exports.removeTuplet = _chunkJRXV2ECWjs.removeTuplet; exports.removeWedge = _chunkJRXV2ECWjs.removeWedge; exports.scoresEqual = _chunkEWLB5X64js.scoresEqual; exports.serialize = _chunkFP4TCD6Mjs.serialize; exports.serializeAbc = _chunkFP4TCD6Mjs.serializeAbc; exports.serializeCompressed = _chunkFP4TCD6Mjs.serializeCompressed; exports.setBarline = _chunkJRXV2ECWjs.setBarline; exports.setBeaming = _chunkJRXV2ECWjs.setBeaming; exports.setNotePitch = _chunkJRXV2ECWjs.setNotePitch; exports.setNotePitchBySemitone = _chunkJRXV2ECWjs.setNotePitchBySemitone; exports.setStaves = _chunkJRXV2ECWjs.setStaves; exports.shiftNotePitch = _chunkJRXV2ECWjs.shiftNotePitch; exports.stopOctaveShift = _chunkJRXV2ECWjs.stopOctaveShift; exports.transpose = _chunkJRXV2ECWjs.transpose; exports.transposeChecked = _chunkJRXV2ECWjs.transposeChecked; exports.updateChordSymbol = _chunkJRXV2ECWjs.updateChordSymbol; exports.updateHarmony = _chunkJRXV2ECWjs.updateHarmony; exports.updateLyric = _chunkJRXV2ECWjs.updateLyric; exports.validate = _chunkJRXV2ECWjs.validate; exports.validateBackupForward = _chunkJRXV2ECWjs.validateBackupForward; exports.validateBeams = _chunkJRXV2ECWjs.validateBeams; exports.validateDivisions = _chunkJRXV2ECWjs.validateDivisions; exports.validateMeasureDuration = _chunkJRXV2ECWjs.validateMeasureDuration; exports.validateMeasureLocal = _chunkJRXV2ECWjs.validateMeasureLocal; exports.validatePartReferences = _chunkJRXV2ECWjs.validatePartReferences; exports.validatePartStructure = _chunkJRXV2ECWjs.validatePartStructure; exports.validateSlurs = _chunkJRXV2ECWjs.validateSlurs; exports.validateSlursAcrossMeasures = _chunkJRXV2ECWjs.validateSlursAcrossMeasures; exports.validateStaffStructure = _chunkJRXV2ECWjs.validateStaffStructure; exports.validateTies = _chunkJRXV2ECWjs.validateTies; exports.validateTiesAcrossMeasures = _chunkJRXV2ECWjs.validateTiesAcrossMeasures; exports.validateTuplets = _chunkJRXV2ECWjs.validateTuplets; exports.validateVoiceStaff = _chunkJRXV2ECWjs.validateVoiceStaff; exports.withAbsolutePositions = _chunkEWLB5X64js.withAbsolutePositions;
515
+
516
+
517
+
518
+
519
+
520
+ exports.ALL_COLOR_TARGETS = _chunkK7W4FSFVjs.ALL_COLOR_TARGETS; exports.STEPS = _chunkEWLB5X64js.STEPS; exports.STEP_SEMITONES = _chunkEWLB5X64js.STEP_SEMITONES; exports.ValidationException = _chunkK7W4FSFVjs.ValidationException; exports.addArticulation = _chunkK7W4FSFVjs.addArticulation; exports.addBeam = _chunkK7W4FSFVjs.addBeam; exports.addBowing = _chunkK7W4FSFVjs.addBowing; exports.addBreathMark = _chunkK7W4FSFVjs.addBreathMark; exports.addCaesura = _chunkK7W4FSFVjs.addCaesura; exports.addChord = _chunkK7W4FSFVjs.addChord; exports.addChordNote = _chunkK7W4FSFVjs.addChordNote; exports.addChordNoteChecked = _chunkK7W4FSFVjs.addChordNoteChecked; exports.addChordSymbol = _chunkK7W4FSFVjs.addChordSymbol; exports.addCoda = _chunkK7W4FSFVjs.addCoda; exports.addDaCapo = _chunkK7W4FSFVjs.addDaCapo; exports.addDalSegno = _chunkK7W4FSFVjs.addDalSegno; exports.addDynamics = _chunkK7W4FSFVjs.addDynamics; exports.addEnding = _chunkK7W4FSFVjs.addEnding; exports.addFermata = _chunkK7W4FSFVjs.addFermata; exports.addFine = _chunkK7W4FSFVjs.addFine; exports.addFingering = _chunkK7W4FSFVjs.addFingering; exports.addGraceNote = _chunkK7W4FSFVjs.addGraceNote; exports.addHarmony = _chunkK7W4FSFVjs.addHarmony; exports.addLyric = _chunkK7W4FSFVjs.addLyric; exports.addNote = _chunkK7W4FSFVjs.addNote; exports.addNoteChecked = _chunkK7W4FSFVjs.addNoteChecked; exports.addOctaveShift = _chunkK7W4FSFVjs.addOctaveShift; exports.addOrnament = _chunkK7W4FSFVjs.addOrnament; exports.addPart = _chunkK7W4FSFVjs.addPart; exports.addPedal = _chunkK7W4FSFVjs.addPedal; exports.addRehearsalMark = _chunkK7W4FSFVjs.addRehearsalMark; exports.addRepeat = _chunkK7W4FSFVjs.addRepeat; exports.addRepeatBarline = _chunkK7W4FSFVjs.addRepeatBarline; exports.addSegno = _chunkK7W4FSFVjs.addSegno; exports.addSlur = _chunkK7W4FSFVjs.addSlur; exports.addStringNumber = _chunkK7W4FSFVjs.addStringNumber; exports.addTempo = _chunkK7W4FSFVjs.addTempo; exports.addText = _chunkK7W4FSFVjs.addText; exports.addTextDirection = _chunkK7W4FSFVjs.addTextDirection; exports.addTie = _chunkK7W4FSFVjs.addTie; exports.addToCoda = _chunkK7W4FSFVjs.addToCoda; exports.addVoice = _chunkK7W4FSFVjs.addVoice; exports.addWedge = _chunkK7W4FSFVjs.addWedge; exports.assertMeasureValid = _chunkK7W4FSFVjs.assertMeasureValid; exports.assertValid = _chunkK7W4FSFVjs.assertValid; exports.autoBeam = _chunkK7W4FSFVjs.autoBeam; exports.buildVoiceToStaffMap = _chunkEWLB5X64js.buildVoiceToStaffMap; exports.buildVoiceToStaffMapForPart = _chunkEWLB5X64js.buildVoiceToStaffMapForPart; exports.changeBarline = _chunkK7W4FSFVjs.changeBarline; exports.changeClef = _chunkK7W4FSFVjs.changeClef; exports.changeKey = _chunkK7W4FSFVjs.changeKey; exports.changeNoteDuration = _chunkK7W4FSFVjs.changeNoteDuration; exports.changeTime = _chunkK7W4FSFVjs.changeTime; exports.clearColors = _chunkK7W4FSFVjs.clearColors; exports.convertToGrace = _chunkK7W4FSFVjs.convertToGrace; exports.copyNotes = _chunkK7W4FSFVjs.copyNotes; exports.copyNotesMultiMeasure = _chunkK7W4FSFVjs.copyNotesMultiMeasure; exports.countNotes = _chunkEWLB5X64js.countNotes; exports.createTuplet = _chunkK7W4FSFVjs.createTuplet; exports.cutNotes = _chunkK7W4FSFVjs.cutNotes; exports.deleteMeasure = _chunkK7W4FSFVjs.deleteMeasure; exports.deleteNote = _chunkK7W4FSFVjs.deleteNote; exports.deleteNoteChecked = _chunkK7W4FSFVjs.deleteNoteChecked; exports.duplicatePart = _chunkK7W4FSFVjs.duplicatePart; exports.exportMidi = _chunkSK2CA5RQjs.exportMidi; exports.exportMidiWithTimingMap = _chunkSK2CA5RQjs.exportMidiWithTimingMap; exports.extractPlaybackControls = _chunkEWLB5X64js.extractPlaybackControls; exports.findBarlines = _chunkEWLB5X64js.findBarlines; exports.findDirectionsByType = _chunkEWLB5X64js.findDirectionsByType; exports.findNotes = _chunkEWLB5X64js.findNotes; exports.findNotesWithNotation = _chunkEWLB5X64js.findNotesWithNotation; exports.formatLocation = _chunkK7W4FSFVjs.formatLocation; exports.generateId = _chunkK7W4FSFVjs.generateId; exports.generatePlaybackSequence = _chunkEWLB5X64js.generatePlaybackSequence; exports.generatePlaybackTimeline = _chunkEWLB5X64js.generatePlaybackTimeline; exports.getAbsolutePosition = _chunkEWLB5X64js.getAbsolutePosition; exports.getAdjacentNotes = _chunkEWLB5X64js.getAdjacentNotes; exports.getAllNotes = _chunkEWLB5X64js.getAllNotes; exports.getAllPartInfos = _chunkOEX7NVZNjs.getAllPartInfos; exports.getAttributesAtMeasure = _chunkEWLB5X64js.getAttributesAtMeasure; exports.getBeamGroups = _chunkEWLB5X64js.getBeamGroups; exports.getChordProgression = _chunkEWLB5X64js.getChordProgression; exports.getChords = _chunkEWLB5X64js.getChords; exports.getClefChanges = _chunkEWLB5X64js.getClefChanges; exports.getClefForStaff = _chunkEWLB5X64js.getClefForStaff; exports.getDirectionOfKind = _chunkOEX7NVZNjs.getDirectionOfKind; exports.getDirections = _chunkEWLB5X64js.getDirections; exports.getDirectionsAtPosition = _chunkEWLB5X64js.getDirectionsAtPosition; exports.getDirectionsOfKind = _chunkOEX7NVZNjs.getDirectionsOfKind; exports.getDivisions = _chunkEWLB5X64js.getDivisions; exports.getDuration = _chunkEWLB5X64js.getDuration; exports.getDynamics = _chunkEWLB5X64js.getDynamics; exports.getEffectiveStaff = _chunkEWLB5X64js.getEffectiveStaff; exports.getEndings = _chunkEWLB5X64js.getEndings; exports.getEntriesAtPosition = _chunkEWLB5X64js.getEntriesAtPosition; exports.getEntriesForStaff = _chunkEWLB5X64js.getEntriesForStaff; exports.getEntriesInRange = _chunkEWLB5X64js.getEntriesInRange; exports.getHarmonies = _chunkEWLB5X64js.getHarmonies; exports.getHarmonyAtPosition = _chunkEWLB5X64js.getHarmonyAtPosition; exports.getKeyChanges = _chunkEWLB5X64js.getKeyChanges; exports.getLyricText = _chunkEWLB5X64js.getLyricText; exports.getLyrics = _chunkEWLB5X64js.getLyrics; exports.getMeasure = _chunkEWLB5X64js.getMeasure; exports.getMeasureByIndex = _chunkEWLB5X64js.getMeasureByIndex; exports.getMeasureContext = _chunkK7W4FSFVjs.getMeasureContext; exports.getMeasureCount = _chunkEWLB5X64js.getMeasureCount; exports.getMeasureEndPosition = _chunkEWLB5X64js.getMeasureEndPosition; exports.getNextNote = _chunkEWLB5X64js.getNextNote; exports.getNormalizedDuration = _chunkEWLB5X64js.getNormalizedDuration; exports.getNormalizedPosition = _chunkEWLB5X64js.getNormalizedPosition; exports.getNotesAtPosition = _chunkEWLB5X64js.getNotesAtPosition; exports.getNotesForStaff = _chunkEWLB5X64js.getNotesForStaff; exports.getNotesForVoice = _chunkEWLB5X64js.getNotesForVoice; exports.getNotesInRange = _chunkEWLB5X64js.getNotesInRange; exports.getOctaveShifts = _chunkEWLB5X64js.getOctaveShifts; exports.getPartAbbreviation = _chunkOEX7NVZNjs.getPartAbbreviation; exports.getPartById = _chunkEWLB5X64js.getPartById; exports.getPartByIndex = _chunkEWLB5X64js.getPartByIndex; exports.getPartCount = _chunkEWLB5X64js.getPartCount; exports.getPartIds = _chunkEWLB5X64js.getPartIds; exports.getPartIndex = _chunkEWLB5X64js.getPartIndex; exports.getPartInfo = _chunkOEX7NVZNjs.getPartInfo; exports.getPartName = _chunkOEX7NVZNjs.getPartName; exports.getPartNameMap = _chunkOEX7NVZNjs.getPartNameMap; exports.getPedalMarkings = _chunkEWLB5X64js.getPedalMarkings; exports.getPrevNote = _chunkEWLB5X64js.getPrevNote; exports.getRepeatStructure = _chunkEWLB5X64js.getRepeatStructure; exports.getSlurSpans = _chunkEWLB5X64js.getSlurSpans; exports.getSoundDamperPedal = _chunkOEX7NVZNjs.getSoundDamperPedal; exports.getSoundDynamics = _chunkOEX7NVZNjs.getSoundDynamics; exports.getSoundSoftPedal = _chunkOEX7NVZNjs.getSoundSoftPedal; exports.getSoundSostenutoPedal = _chunkOEX7NVZNjs.getSoundSostenutoPedal; exports.getSoundTempo = _chunkOEX7NVZNjs.getSoundTempo; exports.getStaffRange = _chunkEWLB5X64js.getStaffRange; exports.getStaveCount = _chunkEWLB5X64js.getStaveCount; exports.getStaves = _chunkEWLB5X64js.getStaves; exports.getStructuralChanges = _chunkEWLB5X64js.getStructuralChanges; exports.getTempoMarkings = _chunkEWLB5X64js.getTempoMarkings; exports.getTiedNoteGroups = _chunkEWLB5X64js.getTiedNoteGroups; exports.getTimeChanges = _chunkEWLB5X64js.getTimeChanges; exports.getTupletGroups = _chunkEWLB5X64js.getTupletGroups; exports.getVerseCount = _chunkEWLB5X64js.getVerseCount; exports.getVerticalSlice = _chunkEWLB5X64js.getVerticalSlice; exports.getVoiceLine = _chunkEWLB5X64js.getVoiceLine; exports.getVoiceLineInRange = _chunkEWLB5X64js.getVoiceLineInRange; exports.getVoices = _chunkEWLB5X64js.getVoices; exports.getVoicesForStaff = _chunkEWLB5X64js.getVoicesForStaff; exports.getWedges = _chunkEWLB5X64js.getWedges; exports.groupByStaff = _chunkEWLB5X64js.groupByStaff; exports.groupByVoice = _chunkEWLB5X64js.groupByVoice; exports.hasBeam = _chunkOEX7NVZNjs.hasBeam; exports.hasDirectionOfKind = _chunkOEX7NVZNjs.hasDirectionOfKind; exports.hasLyrics = _chunkOEX7NVZNjs.hasLyrics; exports.hasMultipleStaves = _chunkEWLB5X64js.hasMultipleStaves; exports.hasNotations = _chunkOEX7NVZNjs.hasNotations; exports.hasNotes = _chunkEWLB5X64js.hasNotes; exports.hasPlaybackControls = _chunkEWLB5X64js.hasPlaybackControls; exports.hasTie = _chunkOEX7NVZNjs.hasTie; exports.hasTieStart = _chunkOEX7NVZNjs.hasTieStart; exports.hasTieStop = _chunkOEX7NVZNjs.hasTieStop; exports.hasTuplet = _chunkOEX7NVZNjs.hasTuplet; exports.inferStaff = _chunkEWLB5X64js.inferStaff; exports.insertClefChange = _chunkK7W4FSFVjs.insertClefChange; exports.insertMeasure = _chunkK7W4FSFVjs.insertMeasure; exports.insertNote = _chunkK7W4FSFVjs.insertNote; exports.isChordNote = _chunkOEX7NVZNjs.isChordNote; exports.isCompressed = _chunkSK2CA5RQjs.isCompressed; exports.isCueNote = _chunkOEX7NVZNjs.isCueNote; exports.isGraceNote = _chunkOEX7NVZNjs.isGraceNote; exports.isPartInfo = _chunkOEX7NVZNjs.isPartInfo; exports.isPitchedNote = _chunkOEX7NVZNjs.isPitchedNote; exports.isRest = _chunkOEX7NVZNjs.isRest; exports.isRestMeasure = _chunkEWLB5X64js.isRestMeasure; exports.isUnpitchedNote = _chunkOEX7NVZNjs.isUnpitchedNote; exports.isValid = _chunkK7W4FSFVjs.isValid; exports.iterateEntries = _chunkEWLB5X64js.iterateEntries; exports.iterateNotes = _chunkEWLB5X64js.iterateNotes; exports.lowerAccidental = _chunkK7W4FSFVjs.lowerAccidental; exports.measureRoundtrip = _chunkEWLB5X64js.measureRoundtrip; exports.modifyDynamics = _chunkK7W4FSFVjs.modifyDynamics; exports.modifyNoteDuration = _chunkK7W4FSFVjs.modifyNoteDuration; exports.modifyNoteDurationChecked = _chunkK7W4FSFVjs.modifyNoteDurationChecked; exports.modifyNotePitch = _chunkK7W4FSFVjs.modifyNotePitch; exports.modifyNotePitchChecked = _chunkK7W4FSFVjs.modifyNotePitchChecked; exports.modifyTempo = _chunkK7W4FSFVjs.modifyTempo; exports.moveNoteToStaff = _chunkK7W4FSFVjs.moveNoteToStaff; exports.parse = _chunkSK2CA5RQjs.parse; exports.parseAbc = _chunkSK2CA5RQjs.parseAbc; exports.parseAbcTunes = _chunkSK2CA5RQjs.parseAbcTunes; exports.parseAuto = _chunkSK2CA5RQjs.parseAuto; exports.parseCompressed = _chunkSK2CA5RQjs.parseCompressed; exports.pasteNotes = _chunkK7W4FSFVjs.pasteNotes; exports.pasteNotesMultiMeasure = _chunkK7W4FSFVjs.pasteNotesMultiMeasure; exports.pitchToSemitone = _chunkEWLB5X64js.pitchToSemitone; exports.raiseAccidental = _chunkK7W4FSFVjs.raiseAccidental; exports.removeArticulation = _chunkK7W4FSFVjs.removeArticulation; exports.removeBeam = _chunkK7W4FSFVjs.removeBeam; exports.removeBowing = _chunkK7W4FSFVjs.removeBowing; exports.removeBreathMark = _chunkK7W4FSFVjs.removeBreathMark; exports.removeCaesura = _chunkK7W4FSFVjs.removeCaesura; exports.removeChordSymbol = _chunkK7W4FSFVjs.removeChordSymbol; exports.removeDynamics = _chunkK7W4FSFVjs.removeDynamics; exports.removeEnding = _chunkK7W4FSFVjs.removeEnding; exports.removeFermata = _chunkK7W4FSFVjs.removeFermata; exports.removeFingering = _chunkK7W4FSFVjs.removeFingering; exports.removeGraceNote = _chunkK7W4FSFVjs.removeGraceNote; exports.removeHarmony = _chunkK7W4FSFVjs.removeHarmony; exports.removeLyric = _chunkK7W4FSFVjs.removeLyric; exports.removeNote = _chunkK7W4FSFVjs.removeNote; exports.removeOctaveShift = _chunkK7W4FSFVjs.removeOctaveShift; exports.removeOrnament = _chunkK7W4FSFVjs.removeOrnament; exports.removePart = _chunkK7W4FSFVjs.removePart; exports.removePedal = _chunkK7W4FSFVjs.removePedal; exports.removeRepeat = _chunkK7W4FSFVjs.removeRepeat; exports.removeRepeatBarline = _chunkK7W4FSFVjs.removeRepeatBarline; exports.removeSlur = _chunkK7W4FSFVjs.removeSlur; exports.removeStringNumber = _chunkK7W4FSFVjs.removeStringNumber; exports.removeTempo = _chunkK7W4FSFVjs.removeTempo; exports.removeTie = _chunkK7W4FSFVjs.removeTie; exports.removeTuplet = _chunkK7W4FSFVjs.removeTuplet; exports.removeWedge = _chunkK7W4FSFVjs.removeWedge; exports.scoresEqual = _chunkEWLB5X64js.scoresEqual; exports.serialize = _chunkSK2CA5RQjs.serialize; exports.serializeAbc = _chunkSK2CA5RQjs.serializeAbc; exports.serializeAbcTunes = _chunkSK2CA5RQjs.serializeAbcTunes; exports.serializeCompressed = _chunkSK2CA5RQjs.serializeCompressed; exports.setBarline = _chunkK7W4FSFVjs.setBarline; exports.setBeaming = _chunkK7W4FSFVjs.setBeaming; exports.setColor = _chunkK7W4FSFVjs.setColor; exports.setNotePitch = _chunkK7W4FSFVjs.setNotePitch; exports.setNotePitchBySemitone = _chunkK7W4FSFVjs.setNotePitchBySemitone; exports.setStaves = _chunkK7W4FSFVjs.setStaves; exports.shiftNotePitch = _chunkK7W4FSFVjs.shiftNotePitch; exports.stopOctaveShift = _chunkK7W4FSFVjs.stopOctaveShift; exports.transpose = _chunkK7W4FSFVjs.transpose; exports.transposeChecked = _chunkK7W4FSFVjs.transposeChecked; exports.updateChordSymbol = _chunkK7W4FSFVjs.updateChordSymbol; exports.updateHarmony = _chunkK7W4FSFVjs.updateHarmony; exports.updateLyric = _chunkK7W4FSFVjs.updateLyric; exports.validate = _chunkK7W4FSFVjs.validate; exports.validateBackupForward = _chunkK7W4FSFVjs.validateBackupForward; exports.validateBeams = _chunkK7W4FSFVjs.validateBeams; exports.validateDivisions = _chunkK7W4FSFVjs.validateDivisions; exports.validateMeasureDuration = _chunkK7W4FSFVjs.validateMeasureDuration; exports.validateMeasureLocal = _chunkK7W4FSFVjs.validateMeasureLocal; exports.validatePartReferences = _chunkK7W4FSFVjs.validatePartReferences; exports.validatePartStructure = _chunkK7W4FSFVjs.validatePartStructure; exports.validateSlurs = _chunkK7W4FSFVjs.validateSlurs; exports.validateSlursAcrossMeasures = _chunkK7W4FSFVjs.validateSlursAcrossMeasures; exports.validateStaffStructure = _chunkK7W4FSFVjs.validateStaffStructure; exports.validateTies = _chunkK7W4FSFVjs.validateTies; exports.validateTiesAcrossMeasures = _chunkK7W4FSFVjs.validateTiesAcrossMeasures; exports.validateTuplets = _chunkK7W4FSFVjs.validateTuplets; exports.validateVoiceStaff = _chunkK7W4FSFVjs.validateVoiceStaff; exports.withAbsolutePositions = _chunkEWLB5X64js.withAbsolutePositions;
package/dist/browser.mjs CHANGED
@@ -4,12 +4,14 @@ import {
4
4
  isCompressed,
5
5
  parse,
6
6
  parseAbc,
7
+ parseAbcTunes,
7
8
  parseAuto,
8
9
  parseCompressed,
9
10
  serialize,
10
11
  serializeAbc,
12
+ serializeAbcTunes,
11
13
  serializeCompressed
12
- } from "./chunk-67EEVKG4.mjs";
14
+ } from "./chunk-2GFWDBCV.mjs";
13
15
  import {
14
16
  getAllPartInfos,
15
17
  getDirectionOfKind,
@@ -40,6 +42,7 @@ import {
40
42
  isUnpitchedNote
41
43
  } from "./chunk-R6JMBTUB.mjs";
42
44
  import {
45
+ ALL_COLOR_TARGETS,
43
46
  ValidationException,
44
47
  addArticulation,
45
48
  addBeam,
@@ -88,6 +91,7 @@ import {
88
91
  changeKey,
89
92
  changeNoteDuration,
90
93
  changeTime,
94
+ clearColors,
91
95
  convertToGrace,
92
96
  copyNotes,
93
97
  copyNotesMultiMeasure,
@@ -143,6 +147,7 @@ import {
143
147
  removeWedge,
144
148
  setBarline,
145
149
  setBeaming,
150
+ setColor,
146
151
  setNotePitch,
147
152
  setNotePitchBySemitone,
148
153
  setStaves,
@@ -168,7 +173,7 @@ import {
168
173
  validateTiesAcrossMeasures,
169
174
  validateTuplets,
170
175
  validateVoiceStaff
171
- } from "./chunk-T6KNPR45.mjs";
176
+ } from "./chunk-SQSIGPRD.mjs";
172
177
  import {
173
178
  STEPS,
174
179
  STEP_SEMITONES,
@@ -257,6 +262,7 @@ import {
257
262
  withAbsolutePositions
258
263
  } from "./chunk-UMEH3ENQ.mjs";
259
264
  export {
265
+ ALL_COLOR_TARGETS,
260
266
  STEPS,
261
267
  STEP_SEMITONES,
262
268
  ValidationException,
@@ -309,6 +315,7 @@ export {
309
315
  changeKey,
310
316
  changeNoteDuration,
311
317
  changeTime,
318
+ clearColors,
312
319
  convertToGrace,
313
320
  copyNotes,
314
321
  copyNotesMultiMeasure,
@@ -443,6 +450,7 @@ export {
443
450
  moveNoteToStaff,
444
451
  parse,
445
452
  parseAbc,
453
+ parseAbcTunes,
446
454
  parseAuto,
447
455
  parseCompressed,
448
456
  pasteNotes,
@@ -478,9 +486,11 @@ export {
478
486
  scoresEqual,
479
487
  serialize,
480
488
  serializeAbc,
489
+ serializeAbcTunes,
481
490
  serializeCompressed,
482
491
  setBarline,
483
492
  setBeaming,
493
+ setColor,
484
494
  setNotePitch,
485
495
  setNotePitchBySemitone,
486
496
  setStaves,