musicxml-io 0.12.0 → 0.12.2
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 +96 -8
- package/dist/abc-HXITSXCS.js +9 -0
- package/dist/abc-IAD53SFI.mjs +11 -0
- package/dist/abc-MTGVOYKS.js +11 -0
- package/dist/abc-R7DIJSHG.mjs +9 -0
- package/dist/abc.d.mts +67 -0
- package/dist/abc.d.ts +67 -0
- package/dist/abc.js +17 -0
- package/dist/abc.mjs +17 -0
- package/dist/accessors/index.d.mts +1 -1
- package/dist/accessors/index.d.ts +1 -1
- package/dist/browser.d.mts +11 -187
- package/dist/browser.d.ts +11 -187
- package/dist/browser.js +30 -6
- package/dist/browser.mjs +96 -72
- package/dist/chunk-2EH2MGBY.js +1799 -0
- package/dist/chunk-33IQXDOH.js +1 -0
- package/dist/chunk-5EK7K5X3.js +29 -0
- package/dist/chunk-5VF442RA.mjs +29 -0
- package/dist/chunk-626TXMVP.js +706 -0
- package/dist/chunk-63UT3IEY.mjs +2788 -0
- package/dist/chunk-6EKVRPFF.js +407 -0
- package/dist/chunk-776XPK66.js +45 -0
- package/dist/chunk-7D4MLQKO.js +69 -0
- package/dist/chunk-A2CGW2UF.js +25 -0
- package/dist/chunk-AOSK4RGV.mjs +45 -0
- package/dist/{chunk-FQ3NEYIV.js → chunk-ASPCIBWD.js} +127 -1249
- package/dist/chunk-BDHPMB7Q.mjs +61 -0
- package/dist/chunk-BHHOS2E6.mjs +407 -0
- package/dist/chunk-F2UCOAO6.mjs +155 -0
- package/dist/chunk-HP4DAUGT.js +2788 -0
- package/dist/chunk-JF5TM534.js +1065 -0
- package/dist/chunk-K6DSQPVF.mjs +706 -0
- package/dist/chunk-KJK2IGNN.mjs +0 -0
- package/dist/chunk-KYGLANYG.mjs +2354 -0
- package/dist/chunk-LFQXT7PV.mjs +69 -0
- package/dist/chunk-LS5SHP75.js +155 -0
- package/dist/chunk-MMIZQMIO.mjs +25 -0
- package/dist/chunk-NIUEAHPN.js +2354 -0
- package/dist/{chunk-EWLB5X64.js → chunk-PMPROVJW.js} +66 -770
- package/dist/chunk-QFYOH4DY.mjs +0 -0
- package/dist/chunk-QKUNJEVW.mjs +1401 -0
- package/dist/chunk-SBT2RMUW.mjs +1065 -0
- package/dist/chunk-TCXDBRRT.mjs +1799 -0
- package/dist/chunk-WNQIUYWY.js +61 -0
- package/dist/{chunk-I4X4GRMP.mjs → chunk-WS5LSW3S.mjs} +13 -1135
- package/dist/chunk-YKMNCYOD.js +1 -0
- package/dist/{chunk-UMEH3ENQ.mjs → chunk-ZRKJKEP7.mjs} +0 -704
- package/dist/chunk-ZSEJQPBO.js +1401 -0
- package/dist/core.d.mts +33 -0
- package/dist/core.d.ts +33 -0
- package/dist/core.js +524 -0
- package/dist/core.mjs +524 -0
- package/dist/file.d.mts +37 -0
- package/dist/file.d.ts +37 -0
- package/dist/file.js +14 -0
- package/dist/file.mjs +14 -0
- package/dist/index-C9lLZwol.d.mts +185 -0
- package/dist/index-DNA970t1.d.ts +185 -0
- package/dist/index.d.mts +12 -38
- package/dist/index.d.ts +12 -38
- package/dist/index.js +34 -49
- package/dist/index.mjs +101 -116
- package/dist/midi.d.mts +54 -0
- package/dist/midi.d.ts +54 -0
- package/dist/midi.js +10 -0
- package/dist/midi.mjs +10 -0
- package/dist/musicxml-DWPClEqa.d.ts +25 -0
- package/dist/musicxml-DzuFr2c3.d.mts +25 -0
- package/dist/musicxml-compressed-7NUEGLSF.mjs +8 -0
- package/dist/musicxml-compressed-7RL6QRF7.js +12 -0
- package/dist/musicxml-compressed-WPEIBOZ3.js +8 -0
- package/dist/musicxml-compressed-ZHZYFJ7H.mjs +12 -0
- package/dist/musicxml-compressed.d.mts +33 -0
- package/dist/musicxml-compressed.d.ts +33 -0
- package/dist/musicxml-compressed.js +18 -0
- package/dist/musicxml-compressed.mjs +18 -0
- package/dist/musicxml.d.mts +8 -0
- package/dist/musicxml.d.ts +8 -0
- package/dist/musicxml.js +14 -0
- package/dist/musicxml.mjs +14 -0
- package/dist/operations/index.d.mts +1234 -2
- package/dist/operations/index.d.ts +1234 -2
- package/dist/operations/index.js +7 -3
- package/dist/operations/index.mjs +6 -2
- package/dist/playback-timeline-CVRHsikj.d.mts +129 -0
- package/dist/playback-timeline-CmWA8YDy.d.ts +129 -0
- package/dist/query/index.d.mts +3 -128
- package/dist/query/index.d.ts +3 -128
- package/dist/query/index.js +4 -2
- package/dist/query/index.mjs +7 -5
- package/dist/{types-Cy0veafI.d.mts → types-B-RGHY0c.d.mts} +1 -1
- package/dist/{types-Cy0veafI.d.ts → types-B-RGHY0c.d.ts} +1 -1
- package/package.json +36 -2
- package/dist/chunk-T2USSS5E.mjs +0 -8939
- package/dist/chunk-UT7LQW6V.js +0 -8939
- package/dist/index-CbUtBHLD.d.ts +0 -1415
- 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,95 @@ import { parseAbcTunes, serializeAbcTunes } from 'musicxml-io';
|
|
|
95
97
|
const tunes = parseAbcTunes(abcString); // Score[]
|
|
96
98
|
const book = serializeAbcTunes(tunes);
|
|
97
99
|
|
|
98
|
-
// Auto-detect
|
|
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`, `serializeUnchecked`, serialization options 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
|
+
For export paths that do not request validation, use `serializeUnchecked` to
|
|
157
|
+
keep the validator out of the bundle. Its output is identical to `serialize`
|
|
158
|
+
with validation disabled (the default), and it accepts `version` and `indent`:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
import { serializeUnchecked as serialize } from 'musicxml-io/musicxml';
|
|
162
|
+
|
|
163
|
+
const xml = serialize(score);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
For example, Octava's `src/data/musicxml-exporter.ts` can use this import after
|
|
167
|
+
upgrading the dependency. Keep using `serialize` for callers that pass
|
|
168
|
+
`validate`, `validateOptions`, `throwOnValidationError` or `onValidation`.
|
|
169
|
+
The existing `serialize` API and its validation behavior remain unchanged.
|
|
170
|
+
|
|
171
|
+
`npm run check:bundle` builds the package, measures minified/gzipped consumer
|
|
172
|
+
bundles, checks that ABC stays out of initial MusicXML bundles (including a
|
|
173
|
+
lazy ABC consumer), checks that unchecked export excludes validation, and
|
|
174
|
+
smoke-tests the published ESM and CommonJS exports.
|
|
175
|
+
`npm run bench:loading` measures XML/MXL parsing and ID generation; the MXL
|
|
176
|
+
benchmark includes an embedded asset to verify that unused files are not inflated.
|
|
177
|
+
`npm run bench:io` measures XML import/export at several sizes and peak import
|
|
178
|
+
RSS in a separate process. The largest case repeats ActorPrelude's measures
|
|
179
|
+
eight times (about 10 MB). To compare against a saved previous build, run
|
|
180
|
+
`npm run bench:io -- --baseline=/absolute/path/to/previous/dist`.
|
|
181
|
+
Timings are medians of nine runs, with baseline/current execution order
|
|
182
|
+
alternated. No performance thresholds are imposed on shared CI machines.
|
|
183
|
+
|
|
184
|
+
The importer converts completed measures immediately and releases their XML
|
|
185
|
+
subtrees. The exporter joins lines per measure and avoids temporary notation
|
|
186
|
+
groups on the common single-container path, reducing allocation and GC for
|
|
187
|
+
large scores while preserving the existing XML formatting.
|
|
188
|
+
|
|
103
189
|
`parseAbc` returns the first tune of a multi-tune file; use `parseAbcTunes`
|
|
104
190
|
to get them all.
|
|
105
191
|
|
|
@@ -476,19 +562,21 @@ import { isRest, getPartName } from 'musicxml-io/accessors';
|
|
|
476
562
|
```
|
|
477
563
|
|
|
478
564
|
The package declares `"sideEffects": false`, so bundlers can drop everything
|
|
479
|
-
you don't import — pulling in only `parse` costs roughly
|
|
480
|
-
(~
|
|
565
|
+
you don't import — pulling in only `parse` costs roughly 48 KB minified
|
|
566
|
+
(~13 KB gzip).
|
|
481
567
|
|
|
482
568
|
Approximate cost of common imports (minified / gzipped, measured with
|
|
483
569
|
esbuild against the published ESM build):
|
|
484
570
|
|
|
485
571
|
| Import | Size |
|
|
486
572
|
|--------|------|
|
|
487
|
-
| `parse` (.xml only) | ~
|
|
488
|
-
| `parseAuto` (.xml + .mxl, adds fflate's unzip) | ~
|
|
489
|
-
| `serialize` (includes the validator behind `validate: true`) | ~
|
|
490
|
-
| `
|
|
491
|
-
|
|
|
573
|
+
| `parse` (.xml only) | ~48 KB / ~13 KB |
|
|
574
|
+
| `parseAuto` (.xml + .mxl, adds fflate's unzip) | ~54 KB / ~16 KB |
|
|
575
|
+
| `serialize` (includes the validator behind `validate: true`) | ~58 KB / ~14 KB |
|
|
576
|
+
| `serializeUnchecked` (no validator) | ~45 KB / ~10 KB |
|
|
577
|
+
| `parse` + `serialize` | ~106 KB / ~27 KB |
|
|
578
|
+
| `parse` + `serializeUnchecked` | ~93 KB / ~23 KB |
|
|
579
|
+
| everything (browser entry) | ~324 KB / ~81 KB |
|
|
492
580
|
|
|
493
581
|
The ABC notation codecs (`parseAbc`, `serializeAbc`), MIDI export, query
|
|
494
582
|
helpers, operations, and the validator are all separate modules — they only
|
|
@@ -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
|
+
"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;
|
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-
|
|
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-
|
|
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
|
package/dist/browser.d.mts
CHANGED
|
@@ -1,188 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
export {
|
|
5
|
-
|
|
6
|
-
export {
|
|
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, b as SerializeUncheckedOptions, s as serialize, a as serializeUnchecked } from './musicxml-DzuFr2c3.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
|
-
|
|
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';
|