@sudobility/music_types 0.13.12 → 0.13.14
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/CLAUDE.md +42 -0
- package/dist/domain/notation/music-vocabulary.d.ts +16 -0
- package/dist/domain/notation/music-vocabulary.d.ts.map +1 -1
- package/dist/domain/notation/music-vocabulary.js +22 -0
- package/dist/domain/notation/music-vocabulary.js.map +1 -1
- package/dist/domain/notation/picker-options.d.ts +42 -0
- package/dist/domain/notation/picker-options.d.ts.map +1 -0
- package/dist/domain/notation/picker-options.js +79 -0
- package/dist/domain/notation/picker-options.js.map +1 -0
- package/dist/domain/score/common-value.d.ts +21 -0
- package/dist/domain/score/common-value.d.ts.map +1 -0
- package/dist/domain/score/common-value.js +29 -0
- package/dist/domain/score/common-value.js.map +1 -0
- package/dist/domain/score/community-search.d.ts +24 -0
- package/dist/domain/score/community-search.d.ts.map +1 -0
- package/dist/domain/score/community-search.js +25 -0
- package/dist/domain/score/community-search.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -68,6 +68,48 @@ Everything exports from a single sectioned `src/index.ts`:
|
|
|
68
68
|
- No domain logic here: tick math, factories, commands, validation logic all live in `@sudobility/music_lib`. This package must never depend on music_lib (music_api depends on this package and must not pull in UI/audio code).
|
|
69
69
|
- `noteEventSchema`/`restEventSchema` are `.strict()` on purpose (a stray `pitch` key must not pass as a rest); other schemas strip unknown keys for forward compatibility.
|
|
70
70
|
- Ticks are integers at 480 PPQ by convention; `startTick` is absolute.
|
|
71
|
+
- **A picker's option list belongs beside the vocabulary it is built from**
|
|
72
|
+
(`picker-options.ts`). `ARTICULATION_OPTIONS` existed in music_app's
|
|
73
|
+
inspector, in music_app_rn's toolbar *and* in its Note tab, and the three
|
|
74
|
+
agreed only because nobody had added a fifth articulation yet — a hand-written
|
|
75
|
+
list goes on offering the old set in silence, which is the exact failure the
|
|
76
|
+
`Record<T, …>` rule next to this one exists to prevent. Each list is `map`ped
|
|
77
|
+
off the vocabulary, so a new member reaches every picker in both apps without
|
|
78
|
+
anybody remembering to. Two shapes are load-bearing. They carry an **i18n key,
|
|
79
|
+
never a translated string** — the words belong to the app, and a key is not
|
|
80
|
+
prose but the name of a fact. And "none" travels under the `NO_MARK`
|
|
81
|
+
sentinel, because a picker's value is a string and an empty one is
|
|
82
|
+
indistinguishable from "nothing chosen" (Radix refuses it outright; the native
|
|
83
|
+
`Select` behaves the same). The one thing that stays in each app is a
|
|
84
|
+
**drawing**: the toolbar attaches its own glyph to the shared value, since a
|
|
85
|
+
React component is the one thing a vocabulary cannot carry.
|
|
86
|
+
|
|
87
|
+
- **`commonValue` is here because a property panel acts on a *selection*.** A
|
|
88
|
+
field that showed the first object's value would say "Staccato" for a
|
|
89
|
+
selection that is mostly not, and setting it would look like a no-op on
|
|
90
|
+
everything that already agreed. It compares by **structure, not identity** —
|
|
91
|
+
pitches, time and key signatures are small objects rebuilt on every read, so
|
|
92
|
+
`===` reports every multi-note selection as mixed. Written once per app before
|
|
93
|
+
this, which is how the two came to disagree about whether an empty selection
|
|
94
|
+
was `null` or mixed.
|
|
95
|
+
|
|
96
|
+
- **Saying a stored value the way a musician says it belongs here**
|
|
97
|
+
(`music-vocabulary.ts`). A score stores ticks, fifths and zero-based voice
|
|
98
|
+
indexes because those are the right things to compute with, and none of them
|
|
99
|
+
is the right thing to *show* — `Duration 480` and `Key (fifths) 2` state the
|
|
100
|
+
storage format. The conversions are facts about music rather than details of
|
|
101
|
+
a panel, and there are now **two** apps drawing the same panels, which is
|
|
102
|
+
what settles where they live: a display conversion transcribed into the
|
|
103
|
+
native app agrees with the web's copy right up until one of them is edited,
|
|
104
|
+
and nothing fails when they part. `panReadout` arrived exactly that way — it
|
|
105
|
+
was three lines in `music_app/src/features/tracks/pan-readout.ts` and three
|
|
106
|
+
identical lines in music_app_rn the moment the native property sheet gained a
|
|
107
|
+
pan row. A conversion qualifies for this file under the same four rules as
|
|
108
|
+
anything else here: it works on both sides, adds no dependency, has no hook
|
|
109
|
+
and no async in it. No user-facing prose, though — note values and key names
|
|
110
|
+
are terms of the domain, fixed across locales the way General MIDI's
|
|
111
|
+
instrument names are, but anything a translator would touch is the app's.
|
|
112
|
+
|
|
71
113
|
- **A guard test enforces that this package runs on React Native** (`src/platform-free.test.ts`): no web-only global and no `import.meta`. This matters more here than anywhere else — these are the platform *interfaces* every other repo implements, so one DOM type in a signature spreads to all of them. That is why `FileExporter.save` takes `Uint8Array | string` rather than a `Blob`, and the codecs take `ArrayBuffer`. `tsconfig.json` still sets `lib: [..., "DOM"]` (for `AbortSignal`) and `eslint.config.js` still spreads `globals.browser`, so nothing else would object.
|
|
72
114
|
|
|
73
115
|
## Related Projects
|
|
@@ -56,4 +56,20 @@ export declare function tickForBarBeat(score: Score, bar: number, beat: number):
|
|
|
56
56
|
* rather than an F is the key signature, which is applied elsewhere.
|
|
57
57
|
*/
|
|
58
58
|
export declare function pitchAtStavePosition(clef: Clef, positionsBelowTopLine: number): Pitch;
|
|
59
|
+
/**
|
|
60
|
+
* A pan position, said the way a mixer says it: `C`, `L40`, `R25`.
|
|
61
|
+
*
|
|
62
|
+
* `Track.pan` runs -1 to 1 because that is the right thing to compute with, and
|
|
63
|
+
* it is the wrong thing to show — "0.4" tells a reader neither which side nor
|
|
64
|
+
* how far without knowing the convention. At the centre there is no side to
|
|
65
|
+
* name at all, hence `C` rather than `L0`.
|
|
66
|
+
*
|
|
67
|
+
* Here rather than in either app for the reason every other conversion in this
|
|
68
|
+
* file is: both apps draw the same mixer row, and two copies of this agree
|
|
69
|
+
* right up until one of them is edited. It lived in `music_app`'s
|
|
70
|
+
* `features/tracks/pan-readout.ts` and was transcribed into `music_app_rn` when
|
|
71
|
+
* the native property sheet gained the same control — which is exactly the
|
|
72
|
+
* moment to stop transcribing.
|
|
73
|
+
*/
|
|
74
|
+
export declare function panReadout(value: number): string;
|
|
59
75
|
//# sourceMappingURL=music-vocabulary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"music-vocabulary.d.ts","sourceRoot":"","sources":["../../../src/domain/notation/music-vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,KAAK,EAEN,MAAM,gBAAgB,CAAC;AAOxB,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAA6B,YAAY,EAAE,CAAC;AAuBvE,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAExD;AAyCD,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAI1D;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CASD;AAID;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA2BzE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAef;AAuBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,qBAAqB,EAAE,MAAM,GAC5B,KAAK,CAEP"}
|
|
1
|
+
{"version":3,"file":"music-vocabulary.d.ts","sourceRoot":"","sources":["../../../src/domain/notation/music-vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,KAAK,EAEN,MAAM,gBAAgB,CAAC;AAOxB,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAA6B,YAAY,EAAE,CAAC;AAuBvE,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAExD;AAyCD,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAI1D;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CASD;AAID;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA2BzE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAef;AAuBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,qBAAqB,EAAE,MAAM,GAC5B,KAAK,CAEP;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD"}
|
|
@@ -161,4 +161,26 @@ const TOP_LINE_PITCH = {
|
|
|
161
161
|
export function pitchAtStavePosition(clef, positionsBelowTopLine) {
|
|
162
162
|
return shiftDiatonic(TOP_LINE_PITCH[clef], -positionsBelowTopLine);
|
|
163
163
|
}
|
|
164
|
+
// ---- mixing ----------------------------------------------------------------
|
|
165
|
+
/**
|
|
166
|
+
* A pan position, said the way a mixer says it: `C`, `L40`, `R25`.
|
|
167
|
+
*
|
|
168
|
+
* `Track.pan` runs -1 to 1 because that is the right thing to compute with, and
|
|
169
|
+
* it is the wrong thing to show — "0.4" tells a reader neither which side nor
|
|
170
|
+
* how far without knowing the convention. At the centre there is no side to
|
|
171
|
+
* name at all, hence `C` rather than `L0`.
|
|
172
|
+
*
|
|
173
|
+
* Here rather than in either app for the reason every other conversion in this
|
|
174
|
+
* file is: both apps draw the same mixer row, and two copies of this agree
|
|
175
|
+
* right up until one of them is edited. It lived in `music_app`'s
|
|
176
|
+
* `features/tracks/pan-readout.ts` and was transcribed into `music_app_rn` when
|
|
177
|
+
* the native property sheet gained the same control — which is exactly the
|
|
178
|
+
* moment to stop transcribing.
|
|
179
|
+
*/
|
|
180
|
+
export function panReadout(value) {
|
|
181
|
+
const amount = Math.round(Math.abs(value) * 100);
|
|
182
|
+
if (amount === 0)
|
|
183
|
+
return "C";
|
|
184
|
+
return `${value < 0 ? "L" : "R"}${amount}`;
|
|
185
|
+
}
|
|
164
186
|
//# sourceMappingURL=music-vocabulary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"music-vocabulary.js","sourceRoot":"","sources":["../../../src/domain/notation/music-vocabulary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"music-vocabulary.js","sourceRoot":"","sources":["../../../src/domain/notation/music-vocabulary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Accidental, Articulation, DurationName, Dynamic, Ornament } from "../../index.js";
|
|
2
|
+
/** "No marking here", distinct from a marking that happens to be quiet. */
|
|
3
|
+
export declare const NO_MARK = "none";
|
|
4
|
+
/** An entry in a picker: the value it sets, and the key naming it. */
|
|
5
|
+
export type PickerOption<T> = {
|
|
6
|
+
value: T;
|
|
7
|
+
labelKey: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Articulations, with "none" first.
|
|
11
|
+
*
|
|
12
|
+
* The keys are `articulation.<member>` and `articulation.none`, which both apps
|
|
13
|
+
* already carry — so this changes no copy, only where the list is stated.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ARTICULATION_OPTIONS: ReadonlyArray<PickerOption<Articulation | typeof NO_MARK>>;
|
|
16
|
+
/**
|
|
17
|
+
* Ornament signs, with "none" first.
|
|
18
|
+
*
|
|
19
|
+
* `inverted-mordent` is keyed `ornament.invertedMordent`: the vocabulary member
|
|
20
|
+
* is kebab-case because that is what MusicXML and the model use, and i18n keys
|
|
21
|
+
* across this family are camelCase. Mapping it here is what stops each app
|
|
22
|
+
* inventing its own spelling of the key — and one of them getting it wrong,
|
|
23
|
+
* which shows up as the untranslated key name printed in the picker.
|
|
24
|
+
*/
|
|
25
|
+
export declare const ORNAMENT_OPTIONS: ReadonlyArray<PickerOption<Ornament | typeof NO_MARK>>;
|
|
26
|
+
/** Accidentals, keyed `accidental.<fifths>` — `accidental.-1` is Flat. */
|
|
27
|
+
export declare const ACCIDENTAL_OPTIONS: ReadonlyArray<PickerOption<Accidental>>;
|
|
28
|
+
/** Dynamics, with "no dynamic" first. A level is not a loudness of zero. */
|
|
29
|
+
export declare const DYNAMIC_OPTIONS: ReadonlyArray<PickerOption<Dynamic | typeof NO_MARK>>;
|
|
30
|
+
/**
|
|
31
|
+
* The grids a MIDI import may be quantized onto, coarsest first.
|
|
32
|
+
*
|
|
33
|
+
* `none` is a real answer and the right one for a performance already sitting
|
|
34
|
+
* on a grid the analyser could not confidently name: snapping such a file onto
|
|
35
|
+
* a straight grid is how a swung or triplet performance arrives mechanical.
|
|
36
|
+
*
|
|
37
|
+
* Written out rather than mapped off `DURATION_NAMES`, and deliberately: that
|
|
38
|
+
* list includes dotted and triplet values, which are not grids a performance is
|
|
39
|
+
* quantized *to*. A shorter list here is the decision, not an omission.
|
|
40
|
+
*/
|
|
41
|
+
export declare const MIDI_GRID_OPTIONS: ReadonlyArray<PickerOption<DurationName | typeof NO_MARK>>;
|
|
42
|
+
//# sourceMappingURL=picker-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picker-options.d.ts","sourceRoot":"","sources":["../../../src/domain/notation/picker-options.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAExB,2EAA2E;AAC3E,eAAO,MAAM,OAAO,SAAS,CAAC;AAE9B,sEAAsE;AACtE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAC9C,YAAY,CAAC,YAAY,GAAG,OAAO,OAAO,CAAC,CAO5C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAC1C,YAAY,CAAC,QAAQ,GAAG,OAAO,OAAO,CAAC,CASxC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,CACG,CAAC;AAE3E,4EAA4E;AAC5E,eAAO,MAAM,eAAe,EAAE,aAAa,CACzC,YAAY,CAAC,OAAO,GAAG,OAAO,OAAO,CAAC,CAIvC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAC3C,YAAY,CAAC,YAAY,GAAG,OAAO,OAAO,CAAC,CAS5C,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The option lists a picker offers, derived from the vocabularies.
|
|
3
|
+
*
|
|
4
|
+
* **A list keyed by a closed vocabulary belongs beside the vocabulary**, not in
|
|
5
|
+
* whichever app happened to need a picker first. Every one of these was written
|
|
6
|
+
* out by hand in more than one place: the articulation list existed in
|
|
7
|
+
* `music_app`'s inspector, in `music_app_rn`'s toolbar and in its Note tab, and
|
|
8
|
+
* the three agreed only because nobody had added a fifth articulation yet. Each
|
|
9
|
+
* is now `map`ped off the vocabulary itself, so adding a member reaches every
|
|
10
|
+
* picker in both apps without anybody remembering to.
|
|
11
|
+
*
|
|
12
|
+
* **They carry an i18n *key*, never a translated string.** The words belong to
|
|
13
|
+
* the app — a Chinese reader must get Chinese — and a key is not prose: it is
|
|
14
|
+
* the name of a fact, which is exactly the kind of thing that may live here.
|
|
15
|
+
* `none` travels under a sentinel string rather than `undefined` because a
|
|
16
|
+
* picker's value is a string, and an empty one is indistinguishable from
|
|
17
|
+
* "nothing chosen" (Radix refuses it outright, and the native `Select` behaves
|
|
18
|
+
* the same way).
|
|
19
|
+
*/
|
|
20
|
+
import { ACCIDENTALS, ARTICULATIONS, DYNAMICS, ORNAMENTS } from "../../index.js";
|
|
21
|
+
/** "No marking here", distinct from a marking that happens to be quiet. */
|
|
22
|
+
export const NO_MARK = "none";
|
|
23
|
+
/**
|
|
24
|
+
* Articulations, with "none" first.
|
|
25
|
+
*
|
|
26
|
+
* The keys are `articulation.<member>` and `articulation.none`, which both apps
|
|
27
|
+
* already carry — so this changes no copy, only where the list is stated.
|
|
28
|
+
*/
|
|
29
|
+
export const ARTICULATION_OPTIONS = [
|
|
30
|
+
{ value: NO_MARK, labelKey: "articulation.none" },
|
|
31
|
+
...ARTICULATIONS.map((value) => ({
|
|
32
|
+
value,
|
|
33
|
+
labelKey: `articulation.${value}`,
|
|
34
|
+
})),
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* Ornament signs, with "none" first.
|
|
38
|
+
*
|
|
39
|
+
* `inverted-mordent` is keyed `ornament.invertedMordent`: the vocabulary member
|
|
40
|
+
* is kebab-case because that is what MusicXML and the model use, and i18n keys
|
|
41
|
+
* across this family are camelCase. Mapping it here is what stops each app
|
|
42
|
+
* inventing its own spelling of the key — and one of them getting it wrong,
|
|
43
|
+
* which shows up as the untranslated key name printed in the picker.
|
|
44
|
+
*/
|
|
45
|
+
export const ORNAMENT_OPTIONS = [
|
|
46
|
+
{ value: NO_MARK, labelKey: "ornament.none" },
|
|
47
|
+
...ORNAMENTS.map((value) => ({
|
|
48
|
+
value,
|
|
49
|
+
labelKey: `ornament.${value === "inverted-mordent" ? "invertedMordent" : value}`,
|
|
50
|
+
})),
|
|
51
|
+
];
|
|
52
|
+
/** Accidentals, keyed `accidental.<fifths>` — `accidental.-1` is Flat. */
|
|
53
|
+
export const ACCIDENTAL_OPTIONS = ACCIDENTALS.map((value) => ({ value, labelKey: `accidental.${value}` }));
|
|
54
|
+
/** Dynamics, with "no dynamic" first. A level is not a loudness of zero. */
|
|
55
|
+
export const DYNAMIC_OPTIONS = [
|
|
56
|
+
{ value: NO_MARK, labelKey: "inspector.noDynamic" },
|
|
57
|
+
...DYNAMICS.map((value) => ({ value, labelKey: `dynamic.${value}` })),
|
|
58
|
+
];
|
|
59
|
+
/**
|
|
60
|
+
* The grids a MIDI import may be quantized onto, coarsest first.
|
|
61
|
+
*
|
|
62
|
+
* `none` is a real answer and the right one for a performance already sitting
|
|
63
|
+
* on a grid the analyser could not confidently name: snapping such a file onto
|
|
64
|
+
* a straight grid is how a swung or triplet performance arrives mechanical.
|
|
65
|
+
*
|
|
66
|
+
* Written out rather than mapped off `DURATION_NAMES`, and deliberately: that
|
|
67
|
+
* list includes dotted and triplet values, which are not grids a performance is
|
|
68
|
+
* quantized *to*. A shorter list here is the decision, not an omission.
|
|
69
|
+
*/
|
|
70
|
+
export const MIDI_GRID_OPTIONS = [
|
|
71
|
+
{ value: NO_MARK, labelKey: "importMidi.gridNone" },
|
|
72
|
+
{ value: "whole", labelKey: "importMidi.gridWhole" },
|
|
73
|
+
{ value: "half", labelKey: "importMidi.gridHalf" },
|
|
74
|
+
{ value: "quarter", labelKey: "importMidi.gridQuarter" },
|
|
75
|
+
{ value: "eighth", labelKey: "importMidi.gridEighth" },
|
|
76
|
+
{ value: "sixteenth", labelKey: "importMidi.gridSixteenth" },
|
|
77
|
+
{ value: "thirtysecond", labelKey: "importMidi.gridThirtySecond" },
|
|
78
|
+
];
|
|
79
|
+
//# sourceMappingURL=picker-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picker-options.js","sourceRoot":"","sources":["../../../src/domain/notation/picker-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AASjF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAK9B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAE7B;IACF,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE;IACjD,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK;QACL,QAAQ,EAAE,gBAAgB,KAAK,EAAE;KAClC,CAAC,CAAC;CACJ,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAEzB;IACF,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE;IAC7C,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3B,KAAK;QACL,QAAQ,EAAE,YACR,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KACrD,EAAE;KACH,CAAC,CAAC;CACJ,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAC7B,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAE3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAExB;IACF,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACnD,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,KAAK,EAAE,EAAE,CAAC,CAAC;CACtE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAE1B;IACF,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACnD,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE;IACpD,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IAClD,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,EAAE;IACxD,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,uBAAuB,EAAE;IACtD,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,0BAA0B,EAAE;IAC5D,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,6BAA6B,EAAE;CACnE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one value a set of objects agrees on, or `null` where they differ.
|
|
3
|
+
*
|
|
4
|
+
* This is what lets a property panel act on a *selection* rather than on one
|
|
5
|
+
* object. A field that showed the first item's value would say "Staccato" for a
|
|
6
|
+
* selection that is mostly not, and setting it would then look like a no-op on
|
|
7
|
+
* everything that already agreed.
|
|
8
|
+
*
|
|
9
|
+
* Compared by **structure, not identity**: pitches, time signatures and key
|
|
10
|
+
* signatures are all small objects rebuilt on every read, so `===` would report
|
|
11
|
+
* every multi-note selection as mixed. `JSON.stringify` is enough here because
|
|
12
|
+
* everything it is asked about is plain score data with a stable key order —
|
|
13
|
+
* these are model objects, not arbitrary user values.
|
|
14
|
+
*
|
|
15
|
+
* In music_types because both apps' inspectors need it and the rule is about
|
|
16
|
+
* *a selection of score objects*, not about a panel. It was written twice, once
|
|
17
|
+
* per app, which is how the two came to disagree about whether an empty
|
|
18
|
+
* selection was `null` or mixed.
|
|
19
|
+
*/
|
|
20
|
+
export declare function commonValue<T>(values: readonly T[]): T | null;
|
|
21
|
+
//# sourceMappingURL=common-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-value.d.ts","sourceRoot":"","sources":["../../../src/domain/score/common-value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAO7D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one value a set of objects agrees on, or `null` where they differ.
|
|
3
|
+
*
|
|
4
|
+
* This is what lets a property panel act on a *selection* rather than on one
|
|
5
|
+
* object. A field that showed the first item's value would say "Staccato" for a
|
|
6
|
+
* selection that is mostly not, and setting it would then look like a no-op on
|
|
7
|
+
* everything that already agreed.
|
|
8
|
+
*
|
|
9
|
+
* Compared by **structure, not identity**: pitches, time signatures and key
|
|
10
|
+
* signatures are all small objects rebuilt on every read, so `===` would report
|
|
11
|
+
* every multi-note selection as mixed. `JSON.stringify` is enough here because
|
|
12
|
+
* everything it is asked about is plain score data with a stable key order —
|
|
13
|
+
* these are model objects, not arbitrary user values.
|
|
14
|
+
*
|
|
15
|
+
* In music_types because both apps' inspectors need it and the rule is about
|
|
16
|
+
* *a selection of score objects*, not about a panel. It was written twice, once
|
|
17
|
+
* per app, which is how the two came to disagree about whether an empty
|
|
18
|
+
* selection was `null` or mixed.
|
|
19
|
+
*/
|
|
20
|
+
export function commonValue(values) {
|
|
21
|
+
if (values.length === 0)
|
|
22
|
+
return null;
|
|
23
|
+
const first = values[0];
|
|
24
|
+
const firstKey = JSON.stringify(first);
|
|
25
|
+
return values.every((value) => JSON.stringify(value) === firstKey)
|
|
26
|
+
? first
|
|
27
|
+
: null;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=common-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-value.js","sourceRoot":"","sources":["../../../src/domain/score/common-value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CAAI,MAAoB;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAM,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;QAChE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filtering the community list by what somebody typed.
|
|
3
|
+
*
|
|
4
|
+
* **On the client, over the list already fetched.** That is honest at this
|
|
5
|
+
* size: the page shows what a single request returned, and filtering it is a
|
|
6
|
+
* reading aid rather than a query. Real server-side search belongs with a
|
|
7
|
+
* `music_api` route and a plan of its own, and pretending to have one — by
|
|
8
|
+
* paging on the client, say — would be worse than not having it.
|
|
9
|
+
*
|
|
10
|
+
* Matches the **title and the publisher**, which is what somebody scanning this
|
|
11
|
+
* list is actually reading. Case-insensitive and by substring, because a person
|
|
12
|
+
* typing three letters of a name means "find that", not "starts with".
|
|
13
|
+
*
|
|
14
|
+
* Here rather than in an app because both of them show this list, and a filter
|
|
15
|
+
* that differed between them would mean the same search found different music
|
|
16
|
+
* depending on which app you ran it in.
|
|
17
|
+
*/
|
|
18
|
+
/** The fields a community row is searched on. Structural, so callers may pass more. */
|
|
19
|
+
export type CommunitySearchable = {
|
|
20
|
+
publicName: string;
|
|
21
|
+
publisherName: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function filterCommunity<T extends CommunitySearchable>(items: readonly T[], query: string): readonly T[];
|
|
24
|
+
//# sourceMappingURL=community-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-search.d.ts","sourceRoot":"","sources":["../../../src/domain/score/community-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,uFAAuF;AACvF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,eAAe,CAAC,CAAC,SAAS,mBAAmB,EAC3D,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,GACZ,SAAS,CAAC,EAAE,CAQd"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filtering the community list by what somebody typed.
|
|
3
|
+
*
|
|
4
|
+
* **On the client, over the list already fetched.** That is honest at this
|
|
5
|
+
* size: the page shows what a single request returned, and filtering it is a
|
|
6
|
+
* reading aid rather than a query. Real server-side search belongs with a
|
|
7
|
+
* `music_api` route and a plan of its own, and pretending to have one — by
|
|
8
|
+
* paging on the client, say — would be worse than not having it.
|
|
9
|
+
*
|
|
10
|
+
* Matches the **title and the publisher**, which is what somebody scanning this
|
|
11
|
+
* list is actually reading. Case-insensitive and by substring, because a person
|
|
12
|
+
* typing three letters of a name means "find that", not "starts with".
|
|
13
|
+
*
|
|
14
|
+
* Here rather than in an app because both of them show this list, and a filter
|
|
15
|
+
* that differed between them would mean the same search found different music
|
|
16
|
+
* depending on which app you ran it in.
|
|
17
|
+
*/
|
|
18
|
+
export function filterCommunity(items, query) {
|
|
19
|
+
const needle = query.trim().toLowerCase();
|
|
20
|
+
if (!needle)
|
|
21
|
+
return items;
|
|
22
|
+
return items.filter((item) => item.publicName.toLowerCase().includes(needle) ||
|
|
23
|
+
item.publisherName.toLowerCase().includes(needle));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=community-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community-search.js","sourceRoot":"","sources":["../../../src/domain/score/community-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,KAAa;IAEb,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CACpD,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -85,9 +85,12 @@ export * from "./domain/instruments/track-instrument.js";
|
|
|
85
85
|
export * from "./domain/notation/chord-symbol.js";
|
|
86
86
|
export * from "./domain/notation/lyric-syllables.js";
|
|
87
87
|
export * from "./domain/notation/music-vocabulary.js";
|
|
88
|
+
export * from "./domain/notation/picker-options.js";
|
|
88
89
|
export * from "./domain/score/articulation.js";
|
|
89
90
|
export * from "./domain/score/bar-numbers.js";
|
|
90
91
|
export * from "./domain/score/collapse-rests.js";
|
|
92
|
+
export * from "./domain/score/common-value.js";
|
|
93
|
+
export * from "./domain/score/community-search.js";
|
|
91
94
|
export * from "./domain/score/cue-notes.js";
|
|
92
95
|
export * from "./domain/score/dynamics.js";
|
|
93
96
|
export * from "./domain/score/effective-clef.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/index.js
CHANGED
|
@@ -109,9 +109,12 @@ export * from "./domain/instruments/track-instrument.js";
|
|
|
109
109
|
export * from "./domain/notation/chord-symbol.js";
|
|
110
110
|
export * from "./domain/notation/lyric-syllables.js";
|
|
111
111
|
export * from "./domain/notation/music-vocabulary.js";
|
|
112
|
+
export * from "./domain/notation/picker-options.js";
|
|
112
113
|
export * from "./domain/score/articulation.js";
|
|
113
114
|
export * from "./domain/score/bar-numbers.js";
|
|
114
115
|
export * from "./domain/score/collapse-rests.js";
|
|
116
|
+
export * from "./domain/score/common-value.js";
|
|
117
|
+
export * from "./domain/score/community-search.js";
|
|
115
118
|
export * from "./domain/score/cue-notes.js";
|
|
116
119
|
export * from "./domain/score/dynamics.js";
|
|
117
120
|
export * from "./domain/score/effective-clef.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED