@sudobility/music_types 0.13.25 → 0.13.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/CLAUDE.md +33 -3
  2. package/dist/domain/documents/document-state.d.ts +17 -0
  3. package/dist/domain/documents/document-state.d.ts.map +1 -0
  4. package/dist/domain/documents/document-state.js +6 -0
  5. package/dist/domain/documents/document-state.js.map +1 -0
  6. package/dist/domain/documents/export-formats.d.ts +74 -0
  7. package/dist/domain/documents/export-formats.d.ts.map +1 -0
  8. package/dist/domain/documents/export-formats.js +53 -0
  9. package/dist/domain/documents/export-formats.js.map +1 -0
  10. package/dist/domain/documents/formats.d.ts +17 -0
  11. package/dist/domain/documents/formats.d.ts.map +1 -0
  12. package/dist/domain/documents/formats.js +61 -0
  13. package/dist/domain/documents/formats.js.map +1 -0
  14. package/dist/domain/documents/project-file.d.ts +33 -0
  15. package/dist/domain/documents/project-file.d.ts.map +1 -0
  16. package/dist/domain/documents/project-file.js +14 -0
  17. package/dist/domain/documents/project-file.js.map +1 -0
  18. package/dist/domain/documents/publish.d.ts +6 -0
  19. package/dist/domain/documents/publish.d.ts.map +1 -0
  20. package/dist/domain/documents/publish.js +2 -0
  21. package/dist/domain/documents/publish.js.map +1 -0
  22. package/dist/domain/documents/templates.d.ts +21 -0
  23. package/dist/domain/documents/templates.d.ts.map +1 -0
  24. package/dist/domain/documents/templates.js +22 -0
  25. package/dist/domain/documents/templates.js.map +1 -0
  26. package/dist/domain/editor/app-errors.d.ts +16 -0
  27. package/dist/domain/editor/app-errors.d.ts.map +1 -0
  28. package/dist/domain/editor/app-errors.js +8 -0
  29. package/dist/domain/editor/app-errors.js.map +1 -0
  30. package/dist/domain/editor/context-menu.d.ts +74 -0
  31. package/dist/domain/editor/context-menu.d.ts.map +1 -0
  32. package/dist/domain/editor/context-menu.js +19 -0
  33. package/dist/domain/editor/context-menu.js.map +1 -0
  34. package/dist/domain/editor/device-prefs.d.ts +107 -0
  35. package/dist/domain/editor/device-prefs.d.ts.map +1 -0
  36. package/dist/domain/editor/device-prefs.js +66 -0
  37. package/dist/domain/editor/device-prefs.js.map +1 -0
  38. package/dist/domain/editor/docs.d.ts +56 -0
  39. package/dist/domain/editor/docs.d.ts.map +1 -0
  40. package/dist/domain/editor/docs.js +41 -0
  41. package/dist/domain/editor/docs.js.map +1 -0
  42. package/dist/domain/editor/edit-mode.d.ts +31 -0
  43. package/dist/domain/editor/edit-mode.d.ts.map +1 -0
  44. package/dist/domain/editor/edit-mode.js +40 -0
  45. package/dist/domain/editor/edit-mode.js.map +1 -0
  46. package/dist/domain/editor/editing-copy.d.ts +91 -0
  47. package/dist/domain/editor/editing-copy.d.ts.map +1 -0
  48. package/dist/domain/editor/editing-copy.js +88 -0
  49. package/dist/domain/editor/editing-copy.js.map +1 -0
  50. package/dist/domain/editor/inspector.d.ts +45 -0
  51. package/dist/domain/editor/inspector.d.ts.map +1 -0
  52. package/dist/domain/editor/inspector.js +34 -0
  53. package/dist/domain/editor/inspector.js.map +1 -0
  54. package/dist/domain/editor/labelled-option.d.ts +6 -0
  55. package/dist/domain/editor/labelled-option.d.ts.map +1 -0
  56. package/dist/domain/editor/labelled-option.js +2 -0
  57. package/dist/domain/editor/labelled-option.js.map +1 -0
  58. package/dist/domain/editor/library-copy.d.ts +61 -0
  59. package/dist/domain/editor/library-copy.d.ts.map +1 -0
  60. package/dist/domain/editor/library-copy.js +2 -0
  61. package/dist/domain/editor/library-copy.js.map +1 -0
  62. package/dist/domain/editor/print.d.ts +30 -0
  63. package/dist/domain/editor/print.d.ts.map +1 -0
  64. package/dist/domain/editor/print.js +43 -0
  65. package/dist/domain/editor/print.js.map +1 -0
  66. package/dist/domain/editor/score-input.d.ts +158 -0
  67. package/dist/domain/editor/score-input.d.ts.map +1 -0
  68. package/dist/domain/editor/score-input.js +2 -0
  69. package/dist/domain/editor/score-input.js.map +1 -0
  70. package/dist/domain/editor/toast.d.ts +32 -0
  71. package/dist/domain/editor/toast.d.ts.map +1 -0
  72. package/dist/domain/editor/toast.js +5 -0
  73. package/dist/domain/editor/toast.js.map +1 -0
  74. package/dist/domain/editor/toolbar.d.ts +62 -0
  75. package/dist/domain/editor/toolbar.d.ts.map +1 -0
  76. package/dist/domain/editor/toolbar.js +83 -0
  77. package/dist/domain/editor/toolbar.js.map +1 -0
  78. package/dist/domain/editor/view-settings.d.ts +22 -0
  79. package/dist/domain/editor/view-settings.d.ts.map +1 -0
  80. package/dist/domain/editor/view-settings.js +30 -0
  81. package/dist/domain/editor/view-settings.js.map +1 -0
  82. package/dist/domain/generation/replace-drafts.d.ts +78 -0
  83. package/dist/domain/generation/replace-drafts.d.ts.map +1 -0
  84. package/dist/domain/generation/replace-drafts.js +40 -0
  85. package/dist/domain/generation/replace-drafts.js.map +1 -0
  86. package/dist/domain/generation/request-drafts.d.ts +226 -0
  87. package/dist/domain/generation/request-drafts.d.ts.map +1 -0
  88. package/dist/domain/generation/request-drafts.js +52 -0
  89. package/dist/domain/generation/request-drafts.js.map +1 -0
  90. package/dist/domain/instruments/gm-catalogue.d.ts +27 -3
  91. package/dist/domain/instruments/gm-catalogue.d.ts.map +1 -1
  92. package/dist/domain/instruments/gm-catalogue.js +4 -3
  93. package/dist/domain/instruments/gm-catalogue.js.map +1 -1
  94. package/dist/domain/instruments/gm-polyphony.d.ts +25 -2
  95. package/dist/domain/instruments/gm-polyphony.d.ts.map +1 -1
  96. package/dist/domain/instruments/gm-polyphony.js +9 -3
  97. package/dist/domain/instruments/gm-polyphony.js.map +1 -1
  98. package/dist/domain/instruments/gm-range.d.ts +10 -6
  99. package/dist/domain/instruments/gm-range.d.ts.map +1 -1
  100. package/dist/domain/instruments/gm-range.js +18 -3
  101. package/dist/domain/instruments/gm-range.js.map +1 -1
  102. package/dist/domain/instruments/out-of-range.d.ts +70 -0
  103. package/dist/domain/instruments/out-of-range.d.ts.map +1 -0
  104. package/dist/domain/instruments/out-of-range.js +106 -0
  105. package/dist/domain/instruments/out-of-range.js.map +1 -0
  106. package/dist/domain/instruments/track-instrument.d.ts +23 -0
  107. package/dist/domain/instruments/track-instrument.d.ts.map +1 -1
  108. package/dist/domain/instruments/track-instrument.js +26 -0
  109. package/dist/domain/instruments/track-instrument.js.map +1 -1
  110. package/dist/domain/notation/music-vocabulary.d.ts +17 -0
  111. package/dist/domain/notation/music-vocabulary.d.ts.map +1 -1
  112. package/dist/domain/notation/music-vocabulary.js +25 -1
  113. package/dist/domain/notation/music-vocabulary.js.map +1 -1
  114. package/dist/domain/notation/picker-options.d.ts +42 -2
  115. package/dist/domain/notation/picker-options.d.ts.map +1 -1
  116. package/dist/domain/notation/picker-options.js +41 -2
  117. package/dist/domain/notation/picker-options.js.map +1 -1
  118. package/dist/domain/notation/toolbar-icons.d.ts +1 -16
  119. package/dist/domain/notation/toolbar-icons.d.ts.map +1 -1
  120. package/dist/domain/notation/toolbar-icons.js +0 -29
  121. package/dist/domain/notation/toolbar-icons.js.map +1 -1
  122. package/dist/domain/score/transport-settings.d.ts +29 -0
  123. package/dist/domain/score/transport-settings.d.ts.map +1 -0
  124. package/dist/domain/score/transport-settings.js +2 -0
  125. package/dist/domain/score/transport-settings.js.map +1 -0
  126. package/dist/formats/audio-import.d.ts +15 -0
  127. package/dist/formats/audio-import.d.ts.map +1 -0
  128. package/dist/formats/audio-import.js +26 -0
  129. package/dist/formats/audio-import.js.map +1 -0
  130. package/dist/formats/index.d.ts +10 -0
  131. package/dist/formats/index.d.ts.map +1 -1
  132. package/dist/formats/index.js +10 -0
  133. package/dist/formats/index.js.map +1 -1
  134. package/dist/formats/midi-import.d.ts +128 -0
  135. package/dist/formats/midi-import.d.ts.map +1 -0
  136. package/dist/formats/midi-import.js +2 -0
  137. package/dist/formats/midi-import.js.map +1 -0
  138. package/dist/formats/musicxml.d.ts +44 -0
  139. package/dist/formats/musicxml.d.ts.map +1 -0
  140. package/dist/formats/musicxml.js +2 -0
  141. package/dist/formats/musicxml.js.map +1 -0
  142. package/dist/formats/tracker-export.d.ts +55 -0
  143. package/dist/formats/tracker-export.d.ts.map +1 -0
  144. package/dist/formats/tracker-export.js +18 -0
  145. package/dist/formats/tracker-export.js.map +1 -0
  146. package/dist/index.d.ts +24 -1
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +30 -1
  149. package/dist/index.js.map +1 -1
  150. package/dist/platform/index.d.ts +2 -0
  151. package/dist/platform/index.d.ts.map +1 -1
  152. package/dist/platform/index.js +2 -0
  153. package/dist/platform/index.js.map +1 -1
  154. package/dist/platform/score-files.d.ts +36 -0
  155. package/dist/platform/score-files.d.ts.map +1 -0
  156. package/dist/platform/score-files.js +2 -0
  157. package/dist/platform/score-files.js.map +1 -0
  158. package/dist/platform/storage.d.ts +19 -0
  159. package/dist/platform/storage.d.ts.map +1 -0
  160. package/dist/platform/storage.js +10 -0
  161. package/dist/platform/storage.js.map +1 -0
  162. package/package.json +1 -1
  163. package/dist/domain/generation/credits.d.ts +0 -13
  164. package/dist/domain/generation/credits.d.ts.map +0 -1
  165. package/dist/domain/generation/credits.js +0 -17
  166. package/dist/domain/generation/credits.js.map +0 -1
@@ -17,7 +17,18 @@
17
17
  * "nothing chosen" (Radix refuses it outright, and the native `Select` behaves
18
18
  * the same way).
19
19
  */
20
- import { ACCIDENTALS, ARTICULATIONS, BARLINE_STYLES, DYNAMICS, ORNAMENTS, } from "../../index.js";
20
+ /*
21
+ * Imported from `model/score.js`, which declares them, and deliberately NOT
22
+ * from the package barrel. A module that reads a *value* out of `index.js`
23
+ * joins a cycle with everything the barrel re-exports — and the option lists
24
+ * below are built while this module loads, so the read happens at
25
+ * module-evaluation time, which is where such a cycle throws. That is what made
26
+ * `music-vocabulary.js` unimportable as an entry point: it reaches this module,
27
+ * this module pulled in the whole barrel, and `style-presets.js` then built its
28
+ * table from a `SONG_SECONDS` that `music-vocabulary` had not defined yet.
29
+ * Import the declaring module, never the barrel.
30
+ */
31
+ import { ACCIDENTALS, ARTICULATIONS, BARLINE_STYLES, CLEFS, DYNAMICS, ORNAMENTS, } from "../../model/score.js";
21
32
  /** "No marking here", distinct from a marking that happens to be quiet. */
22
33
  export const NO_MARK = "none";
23
34
  /**
@@ -54,7 +65,7 @@ export const ACCIDENTAL_OPTIONS = ACCIDENTALS.map((value) => ({ value, labelKey:
54
65
  /** Dynamics, with "no dynamic" first. A level is not a loudness of zero. */
55
66
  export const DYNAMIC_OPTIONS = [
56
67
  { value: NO_MARK, labelKey: "inspector.noDynamic" },
57
- ...DYNAMICS.map((value) => ({ value, labelKey: `dynamic.${value}` })),
68
+ ...DYNAMICS.map((value) => ({ value })),
58
69
  ];
59
70
  /**
60
71
  * The grids a MIDI import may be quantized onto, coarsest first.
@@ -127,4 +138,32 @@ export const KEY_MODE_OPTIONS = ["major", "minor"].map((value) => ({
127
138
  value,
128
139
  labelKey: `key.${value}`,
129
140
  }));
141
+ /**
142
+ * The word for each clef.
143
+ *
144
+ * Every clef picker used to print the model's own token — `treble`, `bass` — so
145
+ * a reader chose a clef in lower-case English whatever their language. Both
146
+ * apps then fixed that the same way and each kept its own copy of this table,
147
+ * which is exactly the drift this file exists to prevent: a `Record`, so a
148
+ * sixth clef fails to compile here rather than printing its token in somebody's
149
+ * picker.
150
+ *
151
+ * Published as the record *and* as the options below, because both shapes are
152
+ * in use: the Bar tab names the clef *in force* ("carry on with Treble"), which
153
+ * is one lookup rather than a list.
154
+ */
155
+ export const CLEF_LABEL_KEY = {
156
+ treble: "clef.treble",
157
+ bass: "clef.bass",
158
+ alto: "clef.alto",
159
+ tenor: "clef.tenor",
160
+ percussion: "clef.percussion",
161
+ };
162
+ /**
163
+ * Every clef, in the model's order.
164
+ *
165
+ * There is no "none" here: a stave always has a clef, so the absence a *bar*
166
+ * can express is `INHERIT_CLEF`, which the Bar tab prepends itself.
167
+ */
168
+ export const CLEF_OPTIONS = CLEFS.map((value) => ({ value, labelKey: CLEF_LABEL_KEY[value] }));
130
169
  //# sourceMappingURL=picker-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-options.js","sourceRoot":"","sources":["../../../src/domain/notation/picker-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker-options.js","sourceRoot":"","sources":["../../../src/domain/notation/picker-options.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The shapes are `NOTATION_ICONS` (generated, next door); this is the part
5
5
  * both toolbars had each written out as a list — note value to glyph,
6
- * accidental to glyph, edit mode to glyph — and that agreed only because
6
+ * accidental to glyph — and that agreed only because
7
7
  * nobody had redrawn one. Records keyed by the vocabulary, never parallel
8
8
  * arrays, so a sixth accidental or a seventh base duration fails to compile
9
9
  * here instead of drawing nothing in one app.
@@ -18,19 +18,4 @@ import type { NotationIconName } from "./notation-icon-art.js";
18
18
  export declare const DURATION_ICON: Record<BaseDuration, NotationIconName>;
19
19
  /** The glyph for each accidental. */
20
20
  export declare const ACCIDENTAL_ICON: Record<Accidental, NotationIconName>;
21
- /**
22
- * What a click on a stave does to music already there, in toolbar order.
23
- *
24
- * The value is spelled as music_editing's `EditMode` spells it; the type is
25
- * not imported from there because this package may not depend on it. Stack's
26
- * hint has a second form, `editor.stackModeUnavailable`, for a track whose
27
- * instrument cannot play a chord — that depends on the track, so the app picks
28
- * it.
29
- */
30
- export declare const EDIT_MODE_OPTIONS: ReadonlyArray<{
31
- value: "insert" | "replace" | "stack";
32
- icon: NotationIconName;
33
- labelKey: string;
34
- hintKey: string;
35
- }>;
36
21
  //# sourceMappingURL=toolbar-icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-icons.d.ts","sourceRoot":"","sources":["../../../src/domain/notation/toolbar-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,6CAA6C;AAC7C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAOhE,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAMhE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC;IAC5C,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACtC,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAmBA,CAAC"}
1
+ {"version":3,"file":"toolbar-icons.d.ts","sourceRoot":"","sources":["../../../src/domain/notation/toolbar-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,6CAA6C;AAC7C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAOhE,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAMhE,CAAC"}
@@ -15,33 +15,4 @@ export const ACCIDENTAL_ICON = {
15
15
  [1]: "SharpIcon",
16
16
  [2]: "DoubleSharpIcon",
17
17
  };
18
- /**
19
- * What a click on a stave does to music already there, in toolbar order.
20
- *
21
- * The value is spelled as music_editing's `EditMode` spells it; the type is
22
- * not imported from there because this package may not depend on it. Stack's
23
- * hint has a second form, `editor.stackModeUnavailable`, for a track whose
24
- * instrument cannot play a chord — that depends on the track, so the app picks
25
- * it.
26
- */
27
- export const EDIT_MODE_OPTIONS = [
28
- {
29
- value: "insert",
30
- icon: "InsertModeIcon",
31
- labelKey: "editor.insertMode",
32
- hintKey: "editor.insertModeHint",
33
- },
34
- {
35
- value: "replace",
36
- icon: "ReplaceModeIcon",
37
- labelKey: "editor.replaceMode",
38
- hintKey: "editor.replaceModeHint",
39
- },
40
- {
41
- value: "stack",
42
- icon: "ChordIcon",
43
- labelKey: "editor.stackMode",
44
- hintKey: "editor.stackModeHint",
45
- },
46
- ];
47
18
  //# sourceMappingURL=toolbar-icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-icons.js","sourceRoot":"","sources":["../../../src/domain/notation/toolbar-icons.ts"],"names":[],"mappings":"AAiBA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,aAAa,GAA2C;IACnE,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,mBAAmB;IAC9B,YAAY,EAAE,sBAAsB;CACrC,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAyC;IACnE,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB;IACtB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU;IAChB,CAAC,CAAC,CAAC,EAAE,aAAa;IAClB,CAAC,CAAC,CAAC,EAAE,WAAW;IAChB,CAAC,CAAC,CAAC,EAAE,iBAAiB;CACvB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAKzB;IACH;QACE,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,uBAAuB;KACjC;IACD;QACE,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,oBAAoB;QAC9B,OAAO,EAAE,wBAAwB;KAClC;IACD;QACE,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,sBAAsB;KAChC;CACF,CAAC"}
1
+ {"version":3,"file":"toolbar-icons.js","sourceRoot":"","sources":["../../../src/domain/notation/toolbar-icons.ts"],"names":[],"mappings":"AAiBA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,aAAa,GAA2C;IACnE,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,mBAAmB;IAC9B,YAAY,EAAE,sBAAsB;CACrC,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAyC;IACnE,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB;IACtB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU;IAChB,CAAC,CAAC,CAAC,EAAE,aAAa;IAClB,CAAC,CAAC,CAAC,EAAE,WAAW;IAChB,CAAC,CAAC,CAAC,EAAE,iBAAiB;CACvB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The transport settings a store keeps beside a player, and how binding one
3
+ * can fail — as vocabulary. The binder itself (`bindPlayer`) and the defaults
4
+ * are music_lib's.
5
+ */
6
+ import type { ScoreRange } from "../../model/score.js";
7
+ import type { PlaybackLoadState } from "../../platform/playback.js";
8
+ /**
9
+ * Transport settings the binder keeps in the store beside the player.
10
+ *
11
+ * In the store so a transport bar can render them; beside the player because
12
+ * the player is what obeys them. **Optional on an editing store**: music_lib's
13
+ * playback slice and its document store carry all five, while a bare editing
14
+ * store carries none — the binder writes them into whichever store it is
15
+ * given.
16
+ */
17
+ export type TransportSettings = {
18
+ loopRange: ScoreRange | null;
19
+ tempoMultiplier: number;
20
+ metronome: boolean;
21
+ masterVolume: number;
22
+ synthLoad: PlaybackLoadState;
23
+ };
24
+ /**
25
+ * What went wrong binding a player, as a kind rather than a sentence — no
26
+ * library holds words. The host turns it into its own toast.
27
+ */
28
+ export type PlayerFailure = "scoreLoadFailed" | "playbackFailed";
29
+ //# sourceMappingURL=transport-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-settings.d.ts","sourceRoot":"","sources":["../../../src/domain/score/transport-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transport-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-settings.js","sourceRoot":"","sources":["../../../src/domain/score/transport-settings.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * What a recording import accepts.
3
+ *
4
+ * The file goes to the server, which separates and transcribes it — nothing is
5
+ * decoded on the device — so these name the upload: which files to offer and
6
+ * what MIME type each is sent as. Vocabulary only, and so declared here; the
7
+ * helpers that read a file name (`audioMimeFor`, `isLongAudio`) are about
8
+ * files and live in `@sudobility/music_io`.
9
+ */
10
+ /** The formats offered by the file picker, which the transcriber decodes. */
11
+ export declare const AUDIO_IMPORT_EXTENSIONS: readonly ["wav", "mp3", "mpa", "m4a", "aac"];
12
+ export type AudioImportExtension = (typeof AUDIO_IMPORT_EXTENSIONS)[number];
13
+ /** MIME types by extension. React Native will not infer one for an upload. */
14
+ export declare const AUDIO_MIME: Record<AudioImportExtension, string>;
15
+ //# sourceMappingURL=audio-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-import.d.ts","sourceRoot":"","sources":["../../src/formats/audio-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,8CAM1B,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,8EAA8E;AAC9E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAM3D,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * What a recording import accepts.
3
+ *
4
+ * The file goes to the server, which separates and transcribes it — nothing is
5
+ * decoded on the device — so these name the upload: which files to offer and
6
+ * what MIME type each is sent as. Vocabulary only, and so declared here; the
7
+ * helpers that read a file name (`audioMimeFor`, `isLongAudio`) are about
8
+ * files and live in `@sudobility/music_io`.
9
+ */
10
+ /** The formats offered by the file picker, which the transcriber decodes. */
11
+ export const AUDIO_IMPORT_EXTENSIONS = [
12
+ "wav",
13
+ "mp3",
14
+ "mpa",
15
+ "m4a",
16
+ "aac",
17
+ ];
18
+ /** MIME types by extension. React Native will not infer one for an upload. */
19
+ export const AUDIO_MIME = {
20
+ wav: "audio/wav",
21
+ mp3: "audio/mpeg",
22
+ mpa: "audio/mpeg",
23
+ m4a: "audio/mp4",
24
+ aac: "audio/aac",
25
+ };
26
+ //# sourceMappingURL=audio-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-import.js","sourceRoot":"","sources":["../../src/formats/audio-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACG,CAAC;AAGX,8EAA8E;AAC9E,MAAM,CAAC,MAAM,UAAU,GAAyC;IAC9D,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;CACjB,CAAC"}
@@ -9,4 +9,14 @@
9
9
  */
10
10
  export * from "./midi.js";
11
11
  export * from "./mod.js";
12
+ /**
13
+ * What the codecs are asked and answer: import options and results, the MIDI
14
+ * wizard's summary, the MusicXML warning contract and the tracker fit report.
15
+ * Types and vocabulary only — the codecs themselves are music_codecs'.
16
+ */
17
+ export * from "./midi-import.js";
18
+ export * from "./musicxml.js";
19
+ export * from "./tracker-export.js";
20
+ /** The recordings the audio import offers, and the MIME type each uploads as. */
21
+ export * from "./audio-import.js";
12
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formats/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formats/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AAEzB;;;;GAIG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AAEpC,iFAAiF;AACjF,cAAc,mBAAmB,CAAC"}
@@ -9,4 +9,14 @@
9
9
  */
10
10
  export * from "./midi.js";
11
11
  export * from "./mod.js";
12
+ /**
13
+ * What the codecs are asked and answer: import options and results, the MIDI
14
+ * wizard's summary, the MusicXML warning contract and the tracker fit report.
15
+ * Types and vocabulary only — the codecs themselves are music_codecs'.
16
+ */
17
+ export * from "./midi-import.js";
18
+ export * from "./musicxml.js";
19
+ export * from "./tracker-export.js";
20
+ /** The recordings the audio import offers, and the MIME type each uploads as. */
21
+ export * from "./audio-import.js";
12
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formats/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formats/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AAEzB;;;;GAIG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AAEpC,iFAAiF;AACjF,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * The shapes a MIDI import is described in: the read-only summary the import
3
+ * wizard opens with, the options it writes, and what an import returns.
4
+ *
5
+ * Types only. The analysis and the importer that produce and consume them live
6
+ * in `@sudobility/music_codecs`, which decodes MIDI on both sides of the
7
+ * network; the form rules that edit the options live in music_lib. Both apps
8
+ * name these shapes, so they are declared once here.
9
+ */
10
+ import type { Clef, DurationName, Score, TimeSignature } from "../model/score.js";
11
+ export type MidiTrackSummary = {
12
+ index: number;
13
+ name: string;
14
+ channel: number;
15
+ program: number;
16
+ instrumentName: string;
17
+ noteCount: number;
18
+ durationSeconds: number;
19
+ /** True when the track's channel is 9 (GM channel 10), the standard percussion channel. */
20
+ isPercussion: boolean;
21
+ /** Mean MIDI note number of the track's notes, or `null` if it has none — used to default a target clef. */
22
+ averageMidi: number | null;
23
+ };
24
+ export type MidiTempoEventSummary = {
25
+ tick: number;
26
+ bpm: number;
27
+ };
28
+ export type MidiTimeSignatureSummary = {
29
+ tick: number;
30
+ numerator: number;
31
+ denominator: number;
32
+ };
33
+ /**
34
+ * The grid a MIDI file's onsets already sit on.
35
+ *
36
+ * Detected rather than assumed: import used to snap every file to a fixed
37
+ * sixteenth grid, which turns an even eighth-note triplet into a limping
38
+ * dotted-sixteenth figure. See `grid-detection.ts` in music_codecs.
39
+ */
40
+ export type DetectedGrid = {
41
+ grid: DurationName | null;
42
+ /** Triplet subdivision of `grid` — 2/3 of it, matching `quantize`'s `tripletGrid`. */
43
+ triplet: boolean;
44
+ };
45
+ /**
46
+ * Read-only summary of a raw MIDI file, for the import wizard (spec §15):
47
+ * per-track name/channel/program/note-count/duration, tempo events, and
48
+ * time signatures, without importing anything into the score model yet.
49
+ */
50
+ export type MidiSummary = {
51
+ ppq: number;
52
+ durationSeconds: number;
53
+ tracks: MidiTrackSummary[];
54
+ tempoEvents: MidiTempoEventSummary[];
55
+ timeSignatures: MidiTimeSignatureSummary[];
56
+ /**
57
+ * The grid the file's onsets already sit on, which the wizard opens
58
+ * pre-filled with. Detected rather than assumed so that importing a file
59
+ * written in triplets or swing does not snap it onto a straight grid — see
60
+ * `grid-detection.ts`.
61
+ */
62
+ detectedGrid: DetectedGrid;
63
+ };
64
+ export type MidiTrackSelection = {
65
+ sourceIndex: number;
66
+ include: boolean;
67
+ clef: Clef;
68
+ name: string;
69
+ };
70
+ /**
71
+ * MIDI import wizard options (spec §15): what to include, how to clean up
72
+ * performance timing, and how to lay tracks out on staves.
73
+ * `defaultMidiImportOptions` in music_codecs derives starting values from a
74
+ * `MidiSummary` so the wizard can open pre-filled.
75
+ */
76
+ export type MidiImportOptions = {
77
+ trackSelections: MidiTrackSelection[];
78
+ /** Quantization grid value (spec §15's "whole" .. "sixteenth triplet" list); `null` skips start/duration quantization entirely. */
79
+ quantizeGrid: DurationName | null;
80
+ /** Use a triplet subdivision of `quantizeGrid` when quantizing. */
81
+ tripletDetection: boolean;
82
+ /** Notes shorter than this (at 480 ppq) are dropped as accidental/ornamental noise; `1` preserves every representable note. */
83
+ minDurationTicks: number;
84
+ /** Cluster near-simultaneous onsets within a small tolerance onto a shared start tick. */
85
+ mergeNearDuplicates: boolean;
86
+ /** `"extend"` lengthens notes to the sustain-pedal release point; `"ignore"` uses raw note-off timing. */
87
+ sustainPedal: "extend" | "ignore";
88
+ /** Split a single MIDI track into two linked grand-staff tracks ("Piano RH"/"Piano LH") instead of one track on `defaultClefFor`'s guessed clef. */
89
+ pianoStaffSplit: boolean;
90
+ /** MIDI note number at/above which a note is placed on the upper (RH/treble) staff when `pianoStaffSplit` is set. */
91
+ splitPointMidi: number;
92
+ /** Estimate a key signature from the included tracks' notes (Krumhansl-style) instead of defaulting to C major. */
93
+ detectKey: boolean;
94
+ };
95
+ /**
96
+ * A change to the options: any plain field, and optionally one track's row,
97
+ * addressed by its `sourceIndex` — the track's index in the file, which is
98
+ * what the wizard's rows are keyed by. Position in `trackSelections` is not
99
+ * the same thing once a file has empty tracks.
100
+ */
101
+ export type MidiImportPatch = Partial<Omit<MidiImportOptions, "trackSelections" | "splitPointMidi" | "minDurationTicks">> & {
102
+ /**
103
+ * The two number fields take `null` for a **cleared** field, which is what
104
+ * `parseNumericDraft(text)` answers for empty text.
105
+ *
106
+ * Not `Number(text)`: that reads an emptied field as 0, so clearing the split
107
+ * point to type a new one moved the split to the lowest note there is — the
108
+ * same class of bug as the `|| 60` this replaces, from the other direction.
109
+ */
110
+ splitPointMidi?: number | null;
111
+ minDurationTicks?: number | null;
112
+ track?: Pick<MidiTrackSelection, "sourceIndex"> & Partial<Pick<MidiTrackSelection, "include" | "clef">>;
113
+ };
114
+ export type MidiImportResult = {
115
+ score: Score;
116
+ warnings: string[];
117
+ };
118
+ export type TimeSignatureChange = {
119
+ tick: number;
120
+ timeSignature: TimeSignature;
121
+ };
122
+ export type MeasureSpan = {
123
+ index: number;
124
+ startTick: number;
125
+ durationTicks: number;
126
+ timeSignature: TimeSignature;
127
+ };
128
+ //# sourceMappingURL=midi-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midi-import.d.ts","sourceRoot":"","sources":["../../src/formats/midi-import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=midi-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"midi-import.js","sourceRoot":"","sources":["../../src/formats/midi-import.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The shapes a MusicXML import is described in.
3
+ *
4
+ * Types only; the importer lives in `@sudobility/music_codecs`. The warning
5
+ * catalogue is a contract the host fills in — each app hands over a translated
6
+ * sentence per key — so it is declared here, where both the importer and the
7
+ * hosts that satisfy it can name it without either depending on the other.
8
+ */
9
+ import type { Score } from "../model/score.js";
10
+ /**
11
+ * Every warning the MusicXML importer can raise, in the caller's words.
12
+ *
13
+ * Functions where the warning names something it found — a clef, a tag, a
14
+ * tempo — so the host can put the value where its own grammar wants it rather
15
+ * than having English word order baked in by the importer.
16
+ *
17
+ * Every key must have a call site in the importer: music_codecs'
18
+ * `warning-contract.test.ts` fails on one that cannot fire.
19
+ */
20
+ export type MusicXmlWarnings = {
21
+ unsupportedClef: (sign: string, line: number) => string;
22
+ unsupportedKeyMode: (mode: string) => string;
23
+ unsupportedTime: (measureNumber: number) => string;
24
+ complexTimeSignature: string;
25
+ unsupportedPitchStep: (step: string) => string;
26
+ alterRounded: (alter: string, clamped: number) => string;
27
+ unsupportedNotation: (tag: string) => string;
28
+ unsupportedNoteElement: (tag: string) => string;
29
+ unsupportedArticulation: (tag: string) => string;
30
+ multipleArticulations: string;
31
+ unpitched: string;
32
+ noPitchOrRest: string;
33
+ noDuration: string;
34
+ nonPositiveDuration: string;
35
+ noteTrimmed: string;
36
+ unsupportedMeasureElement: (tag: string) => string;
37
+ noTempo: (defaultBpm: number) => string;
38
+ tempoClamped: (bpm: number, min: number, max: number, clamped: number) => string;
39
+ };
40
+ export type MusicXmlImportResult = {
41
+ score: Score;
42
+ warnings: string[];
43
+ };
44
+ //# sourceMappingURL=musicxml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"musicxml.d.ts","sourceRoot":"","sources":["../../src/formats/musicxml.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,sBAAsB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,YAAY,EAAE,CACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,KACZ,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=musicxml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"musicxml.js","sourceRoot":"","sources":["../../src/formats/musicxml.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The shapes a tracker export is described in: which formats can be written,
3
+ * what each can hold, and what an export lost.
4
+ *
5
+ * Types and vocabulary only. `TRACKER_LIMITS` (the numbers, anchored to our own
6
+ * decoder) and the exporter itself live in `@sudobility/music_codecs`.
7
+ */
8
+ import type { TrackerModule } from "./mod.js";
9
+ /** The formats export can write. A subset of `TrackerFormat`, which import also covers. */
10
+ export type WritableTrackerFormat = "mod" | "s3m" | "xm" | "it";
11
+ export type TrackerLimits = {
12
+ channels: number;
13
+ instruments: number;
14
+ /** Inclusive MIDI note range this format can express. */
15
+ lowestMidi: number;
16
+ highestMidi: number;
17
+ };
18
+ export type TrackerExportOptions = {
19
+ format: WritableTrackerFormat;
20
+ /** Rows per quarter note. 4 gives sixteenths and cannot express triplets. */
21
+ rowsPerBeat?: number;
22
+ };
23
+ /**
24
+ * What an export lost. **Everything lossy is counted, never hidden**: a
25
+ * tracker row grid, a channel count and a three-octave range are all narrower
26
+ * than a score, and the app shows these counts before writing.
27
+ */
28
+ export type TrackerFitReport = {
29
+ /** Notes moved into range. */
30
+ clampedNotes: number;
31
+ /** Voices that did not fit the format's channel count. */
32
+ droppedVoices: number;
33
+ /** Notes shorter than one row, lost to the grid. */
34
+ droppedShortNotes: number;
35
+ /** Notes whose start moved to land on a row. */
36
+ quantisedNotes: number;
37
+ };
38
+ export type TrackerExportResult = {
39
+ module: TrackerModule;
40
+ report: TrackerFitReport;
41
+ };
42
+ /**
43
+ * What this export actually lost, as a list something can be said about.
44
+ *
45
+ * Each entry names a *kind* of loss. Which kinds exist, and the order a reader
46
+ * should meet them in, is a fact about the format rather than about a dialog —
47
+ * so every app that shows a fit report shows the same four in the same order
48
+ * (`trackerFitLosses` in music_codecs omits the zero counts).
49
+ *
50
+ * The strings are keys, not prose: the count has to pluralise in the reader's
51
+ * own language, which appending an "s" does not do.
52
+ */
53
+ export declare const TRACKER_FIT_LOSSES: readonly ["clampedNotes", "droppedVoices", "droppedShortNotes", "quantisedNotes"];
54
+ export type TrackerFitLoss = (typeof TRACKER_FIT_LOSSES)[number];
55
+ //# sourceMappingURL=tracker-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-export.d.ts","sourceRoot":"","sources":["../../src/formats/tracker-export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,2FAA2F;AAC3F,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,mFAKyB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * What this export actually lost, as a list something can be said about.
3
+ *
4
+ * Each entry names a *kind* of loss. Which kinds exist, and the order a reader
5
+ * should meet them in, is a fact about the format rather than about a dialog —
6
+ * so every app that shows a fit report shows the same four in the same order
7
+ * (`trackerFitLosses` in music_codecs omits the zero counts).
8
+ *
9
+ * The strings are keys, not prose: the count has to pluralise in the reader's
10
+ * own language, which appending an "s" does not do.
11
+ */
12
+ export const TRACKER_FIT_LOSSES = [
13
+ "clampedNotes",
14
+ "droppedVoices",
15
+ "droppedShortNotes",
16
+ "quantisedNotes",
17
+ ];
18
+ //# sourceMappingURL=tracker-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-export.js","sourceRoot":"","sources":["../../src/formats/tracker-export.ts"],"names":[],"mappings":"AA+CA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,gBAAgB;CACsC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -78,6 +78,7 @@ export * from "./domain/instruments/gm-transposition.js";
78
78
  export * from "./domain/instruments/gm-percussion.js";
79
79
  export * from "./domain/generation/style-presets.js";
80
80
  export * from "./domain/generation/option-order.js";
81
+ export * from "./domain/documents/project-file.js";
81
82
  export * from "./domain/generation/score-presets.js";
82
83
  export * from "./domain/selection/selection.js";
83
84
  export * from "./services/regeneration/controller.js";
@@ -97,7 +98,6 @@ export * from "./domain/notation/toolbar-icons.js";
97
98
  export * from "./domain/score/transport-readouts.js";
98
99
  export * from "./domain/instruments/instrument-menus.js";
99
100
  export * from "./domain/instruments/instrument-reference.js";
100
- export * from "./domain/generation/credits.js";
101
101
  export * from "./domain/score/articulation.js";
102
102
  export * from "./domain/score/bar-numbers.js";
103
103
  export * from "./domain/score/collapse-rests.js";
@@ -130,4 +130,27 @@ export * from "./domain/time/tuplets.js";
130
130
  * Generated; see the module header.
131
131
  */
132
132
  export * from "./domain/notation/notation-icon-art.js";
133
+ export * from "./domain/instruments/out-of-range.js";
134
+ export * from "./domain/documents/document-state.js";
135
+ export * from "./domain/documents/export-formats.js";
136
+ export * from "./domain/documents/formats.js";
137
+ export * from "./domain/documents/publish.js";
138
+ export * from "./domain/documents/templates.js";
139
+ export * from "./domain/generation/request-drafts.js";
140
+ export * from "./domain/generation/replace-drafts.js";
141
+ export * from "./domain/score/transport-settings.js";
142
+ export * from "./domain/editor/app-errors.js";
143
+ export * from "./domain/editor/context-menu.js";
144
+ export * from "./domain/editor/device-prefs.js";
145
+ export * from "./domain/editor/docs.js";
146
+ export * from "./domain/editor/edit-mode.js";
147
+ export * from "./domain/editor/editing-copy.js";
148
+ export * from "./domain/editor/inspector.js";
149
+ export * from "./domain/editor/labelled-option.js";
150
+ export * from "./domain/editor/library-copy.js";
151
+ export * from "./domain/editor/print.js";
152
+ export * from "./domain/editor/score-input.js";
153
+ export * from "./domain/editor/toast.js";
154
+ export * from "./domain/editor/toolbar.js";
155
+ export * from "./domain/editor/view-settings.js";
133
156
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}