@sudobility/music_types 0.13.1 → 0.13.3
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/dist/domain/commands/repair-commands.d.ts +10 -0
- package/dist/domain/commands/repair-commands.d.ts.map +1 -0
- package/dist/domain/commands/repair-commands.js +25 -0
- package/dist/domain/commands/repair-commands.js.map +1 -0
- package/dist/domain/validation/limits.d.ts +32 -0
- package/dist/domain/validation/limits.d.ts.map +1 -0
- package/dist/domain/validation/limits.js +32 -0
- package/dist/domain/validation/limits.js.map +1 -0
- package/dist/domain/validation/repair.d.ts +48 -0
- package/dist/domain/validation/repair.d.ts.map +1 -0
- package/dist/domain/validation/repair.js +389 -0
- package/dist/domain/validation/repair.js.map +1 -0
- package/dist/domain/validation/validator.d.ts.map +1 -1
- package/dist/domain/validation/validator.js +1 -22
- package/dist/domain/validation/validator.js.map +1 -1
- 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/dist/model/api.d.ts +16 -0
- package/dist/model/api.d.ts.map +1 -1
- package/dist/model/api.js +6 -0
- package/dist/model/api.js.map +1 -1
- package/dist/model/position.d.ts +41 -0
- package/dist/model/position.d.ts.map +1 -1
- package/dist/position/music-position.d.ts +20 -1
- package/dist/position/music-position.d.ts.map +1 -1
- package/dist/position/music-position.js +56 -2
- package/dist/position/music-position.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ScoreCommand } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Repairs every validation issue that has an unambiguous fix.
|
|
4
|
+
*
|
|
5
|
+
* A no-op on a clean score: `repairScore` returns its input by reference, so
|
|
6
|
+
* the command produces an identical score and the caller can compare
|
|
7
|
+
* identities to decide whether anything happened.
|
|
8
|
+
*/
|
|
9
|
+
export declare function repairScoreCommand(label: string): ScoreCommand;
|
|
10
|
+
//# sourceMappingURL=repair-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-commands.d.ts","sourceRoot":"","sources":["../../../src/domain/commands/repair-commands.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAE9D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The "fix every issue you can" edit, as one undoable command.
|
|
3
|
+
*
|
|
4
|
+
* One command rather than one per rule, because that is what the reader asked
|
|
5
|
+
* for: the issue list is a single list and clearing it is a single decision.
|
|
6
|
+
* Splitting it would also make undo wrong — stepping back through twelve
|
|
7
|
+
* separate repairs to get the score you had before pressing one button.
|
|
8
|
+
*
|
|
9
|
+
* `kind` is left at the default `content`, so this is refused while the
|
|
10
|
+
* transport is playing like every other edit. Rewriting notes out from under
|
|
11
|
+
* a running engine is exactly what that lock exists to prevent.
|
|
12
|
+
*/
|
|
13
|
+
import { transformCommand } from "./snapshot.js";
|
|
14
|
+
import { repairScore } from "../validation/repair.js";
|
|
15
|
+
/**
|
|
16
|
+
* Repairs every validation issue that has an unambiguous fix.
|
|
17
|
+
*
|
|
18
|
+
* A no-op on a clean score: `repairScore` returns its input by reference, so
|
|
19
|
+
* the command produces an identical score and the caller can compare
|
|
20
|
+
* identities to decide whether anything happened.
|
|
21
|
+
*/
|
|
22
|
+
export function repairScoreCommand(label) {
|
|
23
|
+
return transformCommand(label, (score) => repairScore(score).score);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=repair-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-commands.js","sourceRoot":"","sources":["../../../src/domain/commands/repair-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The numeric bounds every validation rule is written against.
|
|
3
|
+
*
|
|
4
|
+
* Extracted so `validator.ts` and `repair.ts` cannot drift: a repair that
|
|
5
|
+
* clamped to its own idea of "valid" would hand back a score the validator
|
|
6
|
+
* still rejects, and the Fix button would appear to do nothing. One
|
|
7
|
+
* definition means a clamp to these bounds provably clears the rule that
|
|
8
|
+
* cited them.
|
|
9
|
+
*/
|
|
10
|
+
export declare const MIN_MIDI = 0;
|
|
11
|
+
export declare const MAX_MIDI = 127;
|
|
12
|
+
export declare const MIN_VELOCITY = 0;
|
|
13
|
+
export declare const MAX_VELOCITY = 127;
|
|
14
|
+
export declare const MIN_MIDI_PROGRAM = 0;
|
|
15
|
+
export declare const MAX_MIDI_PROGRAM = 127;
|
|
16
|
+
export declare const MIN_MIDI_CHANNEL = 0;
|
|
17
|
+
export declare const MAX_MIDI_CHANNEL = 15;
|
|
18
|
+
export declare const VALID_TIME_SIG_DENOMINATORS: Set<number>;
|
|
19
|
+
export declare const MIN_FIFTHS = -7;
|
|
20
|
+
export declare const MAX_FIFTHS = 7;
|
|
21
|
+
export declare const MIN_BPM = 20;
|
|
22
|
+
export declare const MAX_BPM = 400;
|
|
23
|
+
/**
|
|
24
|
+
* Maximum number of notes sounding at once (within a single track) before a
|
|
25
|
+
* "too many simultaneous notes" readability warning fires. Spec §23 names
|
|
26
|
+
* this rule but doesn't give a number; 10 is a deliberate implementer
|
|
27
|
+
* default (roughly as many notes as a two-hand piano voicing on one staff
|
|
28
|
+
* can render legibly), documented here so a later task can make it
|
|
29
|
+
* configurable if that turns out to be too strict/loose in practice.
|
|
30
|
+
*/
|
|
31
|
+
export declare const MAX_SIMULTANEOUS_NOTES = 10;
|
|
32
|
+
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/domain/validation/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,2BAA2B,aAAgC,CAAC;AACzE,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,OAAO,KAAK,CAAC;AAC1B,eAAO,MAAM,OAAO,MAAM,CAAC;AAE3B;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The numeric bounds every validation rule is written against.
|
|
3
|
+
*
|
|
4
|
+
* Extracted so `validator.ts` and `repair.ts` cannot drift: a repair that
|
|
5
|
+
* clamped to its own idea of "valid" would hand back a score the validator
|
|
6
|
+
* still rejects, and the Fix button would appear to do nothing. One
|
|
7
|
+
* definition means a clamp to these bounds provably clears the rule that
|
|
8
|
+
* cited them.
|
|
9
|
+
*/
|
|
10
|
+
export const MIN_MIDI = 0;
|
|
11
|
+
export const MAX_MIDI = 127;
|
|
12
|
+
export const MIN_VELOCITY = 0;
|
|
13
|
+
export const MAX_VELOCITY = 127;
|
|
14
|
+
export const MIN_MIDI_PROGRAM = 0;
|
|
15
|
+
export const MAX_MIDI_PROGRAM = 127;
|
|
16
|
+
export const MIN_MIDI_CHANNEL = 0;
|
|
17
|
+
export const MAX_MIDI_CHANNEL = 15;
|
|
18
|
+
export const VALID_TIME_SIG_DENOMINATORS = new Set([1, 2, 4, 8, 16, 32]);
|
|
19
|
+
export const MIN_FIFTHS = -7;
|
|
20
|
+
export const MAX_FIFTHS = 7;
|
|
21
|
+
export const MIN_BPM = 20;
|
|
22
|
+
export const MAX_BPM = 400;
|
|
23
|
+
/**
|
|
24
|
+
* Maximum number of notes sounding at once (within a single track) before a
|
|
25
|
+
* "too many simultaneous notes" readability warning fires. Spec §23 names
|
|
26
|
+
* this rule but doesn't give a number; 10 is a deliberate implementer
|
|
27
|
+
* default (roughly as many notes as a two-hand piano voicing on one staff
|
|
28
|
+
* can render legibly), documented here so a later task can make it
|
|
29
|
+
* configurable if that turns out to be too strict/loose in practice.
|
|
30
|
+
*/
|
|
31
|
+
export const MAX_SIMULTANEOUS_NOTES = 10;
|
|
32
|
+
//# sourceMappingURL=limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../src/domain/validation/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AAC1B,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automatic repair for the rules `validateScore` checks (`./validator.ts`).
|
|
3
|
+
*
|
|
4
|
+
* The validator's inverse, and deliberately its neighbour: a repair that
|
|
5
|
+
* clamped to its own idea of "valid" would hand back a score the validator
|
|
6
|
+
* still rejects, so both read their bounds from `./limits.ts` and this module
|
|
7
|
+
* *measures* its own result rather than asserting it — `repairScore`
|
|
8
|
+
* re-validates at the end and reports the before/after counts per code. That
|
|
9
|
+
* is what makes "Fix" honest about the issues it could not resolve instead of
|
|
10
|
+
* quietly claiming all of them.
|
|
11
|
+
*
|
|
12
|
+
* Pure: never mutates its input, and returns a fresh `Score`.
|
|
13
|
+
*
|
|
14
|
+
* Each pass repairs toward what the notation *means*, not toward whatever
|
|
15
|
+
* silences the rule fastest:
|
|
16
|
+
*
|
|
17
|
+
* - Two same-pitch notes that overlap are one note struck twice, so the
|
|
18
|
+
* earlier one is truncated to end where the later begins. An exact
|
|
19
|
+
* duplicate — same tick, same length, same spelling — cannot be played
|
|
20
|
+
* twice at once and is simply dropped.
|
|
21
|
+
* - A pitch out of MIDI range moves by whole **octaves**, keeping its pitch
|
|
22
|
+
* class, for the reason the tracker exporter does it: a bassline pushed to
|
|
23
|
+
* the boundary stops being that bassline.
|
|
24
|
+
* - A misordered measure is moved by shifting its events with it, because an
|
|
25
|
+
* event's `startTick` is absolute; rewriting the measure's own start alone
|
|
26
|
+
* would strand every note it contains outside it.
|
|
27
|
+
* - The count of notes sounding at once is left alone. There is no
|
|
28
|
+
* non-arbitrary choice of which note to delete, and it is a readability
|
|
29
|
+
* warning rather than a broken score.
|
|
30
|
+
*/
|
|
31
|
+
import type { Score } from "../../index.js";
|
|
32
|
+
export type ScoreRepair = {
|
|
33
|
+
/** The repaired score. Identical by reference to the input when nothing needed fixing. */
|
|
34
|
+
score: Score;
|
|
35
|
+
/** How many issues of each code the repair actually cleared, measured by re-validating. */
|
|
36
|
+
fixed: Record<string, number>;
|
|
37
|
+
/** What the repaired score still reports, by code — the rules this cannot resolve. */
|
|
38
|
+
remaining: Record<string, number>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Repairs every rule this can, and reports what it actually achieved.
|
|
42
|
+
*
|
|
43
|
+
* Returns the input score by reference when it was already clean, so a caller
|
|
44
|
+
* dispatching this as a command can tell "nothing to do" from "something
|
|
45
|
+
* changed" without diffing.
|
|
46
|
+
*/
|
|
47
|
+
export declare function repairScore(score: Score): ScoreRepair;
|
|
48
|
+
//# sourceMappingURL=repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../../src/domain/validation/repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAIV,KAAK,EAIN,MAAM,gBAAgB,CAAC;AAsBxB,MAAM,MAAM,WAAW,GAAG;IACxB,0FAA0F;IAC1F,KAAK,EAAE,KAAK,CAAC;IACb,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAuWF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CA2DrD"}
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { isNoteEvent } from "../../index.js";
|
|
2
|
+
import { pitchToMidi } from "../pitch/pitch.js";
|
|
3
|
+
import { ISSUE_CODES } from "./issues.js";
|
|
4
|
+
import { MAX_BPM, MAX_FIFTHS, MAX_MIDI, MAX_MIDI_CHANNEL, MAX_MIDI_PROGRAM, MAX_VELOCITY, MIN_BPM, MIN_FIFTHS, MIN_MIDI, MIN_MIDI_CHANNEL, MIN_MIDI_PROGRAM, MIN_VELOCITY, VALID_TIME_SIG_DENOMINATORS, } from "./limits.js";
|
|
5
|
+
import { validateScore } from "./validator.js";
|
|
6
|
+
const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
|
|
7
|
+
const countByCode = (issues) => {
|
|
8
|
+
const counts = {};
|
|
9
|
+
for (const issue of issues)
|
|
10
|
+
counts[issue.code] = (counts[issue.code] ?? 0) + 1;
|
|
11
|
+
return counts;
|
|
12
|
+
};
|
|
13
|
+
/** A spelling key, matching the validator's `samePitch` exactly: spelling, not sounding pitch. */
|
|
14
|
+
const spellingKey = (pitch) => `${pitch.step}|${pitch.accidental}|${pitch.octave}`;
|
|
15
|
+
/** A fresh id that no other object in the score is already using. */
|
|
16
|
+
function freshId(taken, base) {
|
|
17
|
+
let candidate = `${base}-fix`;
|
|
18
|
+
let n = 2;
|
|
19
|
+
while (taken.has(candidate)) {
|
|
20
|
+
candidate = `${base}-fix${n}`;
|
|
21
|
+
n += 1;
|
|
22
|
+
}
|
|
23
|
+
taken.add(candidate);
|
|
24
|
+
return candidate;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Every id made unique, walking in `checkUniqueIds`' own order so the *first*
|
|
28
|
+
* use of an id keeps it and later ones are renamed. Renaming a track or voice
|
|
29
|
+
* would strand the events pointing at it, which is why `repairEvents` rewrites
|
|
30
|
+
* those references from the owner afterwards rather than from the old value.
|
|
31
|
+
*/
|
|
32
|
+
function repairIds(score) {
|
|
33
|
+
const taken = new Set();
|
|
34
|
+
const claim = (id) => {
|
|
35
|
+
if (!taken.has(id)) {
|
|
36
|
+
taken.add(id);
|
|
37
|
+
return id;
|
|
38
|
+
}
|
|
39
|
+
return freshId(taken, id);
|
|
40
|
+
};
|
|
41
|
+
const id = claim(score.id);
|
|
42
|
+
const tempoMap = score.tempoMap.map((event) => ({
|
|
43
|
+
...event,
|
|
44
|
+
id: claim(event.id),
|
|
45
|
+
}));
|
|
46
|
+
const tracks = score.tracks.map((track) => ({
|
|
47
|
+
...track,
|
|
48
|
+
id: claim(track.id),
|
|
49
|
+
measures: track.measures.map((measure) => ({
|
|
50
|
+
...measure,
|
|
51
|
+
id: claim(measure.id),
|
|
52
|
+
voices: measure.voices.map((voice) => ({
|
|
53
|
+
...voice,
|
|
54
|
+
id: claim(voice.id),
|
|
55
|
+
events: voice.events.map((event) => ({
|
|
56
|
+
...event,
|
|
57
|
+
id: claim(event.id),
|
|
58
|
+
})),
|
|
59
|
+
})),
|
|
60
|
+
})),
|
|
61
|
+
}));
|
|
62
|
+
return { ...score, id, tempoMap, tracks };
|
|
63
|
+
}
|
|
64
|
+
/** Programs and channels clamped into range. */
|
|
65
|
+
function repairTrackHeader(track) {
|
|
66
|
+
return {
|
|
67
|
+
...track,
|
|
68
|
+
midiProgram: clamp(track.midiProgram, MIN_MIDI_PROGRAM, MAX_MIDI_PROGRAM),
|
|
69
|
+
midiChannel: clamp(track.midiChannel, MIN_MIDI_CHANNEL, MAX_MIDI_CHANNEL),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/** Time and key signatures brought into range; the denominator falls back to 4. */
|
|
73
|
+
function repairSignatures(measure) {
|
|
74
|
+
const { timeSignature, keySignature } = measure;
|
|
75
|
+
return {
|
|
76
|
+
...measure,
|
|
77
|
+
timeSignature: {
|
|
78
|
+
numerator: Math.max(1, Math.round(timeSignature.numerator)),
|
|
79
|
+
denominator: VALID_TIME_SIG_DENOMINATORS.has(timeSignature.denominator)
|
|
80
|
+
? timeSignature.denominator
|
|
81
|
+
: 4,
|
|
82
|
+
},
|
|
83
|
+
keySignature: {
|
|
84
|
+
...keySignature,
|
|
85
|
+
fifths: clamp(keySignature.fifths, MIN_FIFTHS, MAX_FIFTHS),
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** A pitch moved into MIDI range by whole octaves, so its pitch class survives. */
|
|
90
|
+
function repairPitch(pitch) {
|
|
91
|
+
let octave = pitch.octave;
|
|
92
|
+
let midi = pitchToMidi({ ...pitch, octave });
|
|
93
|
+
while (midi < MIN_MIDI && octave < 12) {
|
|
94
|
+
octave += 1;
|
|
95
|
+
midi = pitchToMidi({ ...pitch, octave });
|
|
96
|
+
}
|
|
97
|
+
while (midi > MAX_MIDI && octave > -2) {
|
|
98
|
+
octave -= 1;
|
|
99
|
+
midi = pitchToMidi({ ...pitch, octave });
|
|
100
|
+
}
|
|
101
|
+
return octave === pitch.octave ? pitch : { ...pitch, octave };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* One voice's events, each brought inside its measure and its own limits.
|
|
105
|
+
*
|
|
106
|
+
* An event whose length survives none of that is dropped rather than kept at
|
|
107
|
+
* zero: a note of no duration is not something a reader or a player can act
|
|
108
|
+
* on, and leaving it would only re-report as a non-positive duration.
|
|
109
|
+
*/
|
|
110
|
+
function repairEvents(events, measure, track, voice) {
|
|
111
|
+
const measureEnd = measure.startTick + measure.durationTicks;
|
|
112
|
+
const repaired = [];
|
|
113
|
+
for (const event of events) {
|
|
114
|
+
const startTick = clamp(event.startTick, measure.startTick, Math.max(measure.startTick, measureEnd - 1));
|
|
115
|
+
const durationTicks = Math.min(event.durationTicks, measureEnd - startTick);
|
|
116
|
+
if (durationTicks <= 0)
|
|
117
|
+
continue;
|
|
118
|
+
const base = {
|
|
119
|
+
...event,
|
|
120
|
+
startTick,
|
|
121
|
+
durationTicks,
|
|
122
|
+
trackId: track.id,
|
|
123
|
+
voiceId: voice.id,
|
|
124
|
+
};
|
|
125
|
+
repaired.push(isNoteEvent(base)
|
|
126
|
+
? {
|
|
127
|
+
...base,
|
|
128
|
+
velocity: clamp(base.velocity, MIN_VELOCITY, MAX_VELOCITY),
|
|
129
|
+
pitch: repairPitch(base.pitch),
|
|
130
|
+
}
|
|
131
|
+
: base);
|
|
132
|
+
}
|
|
133
|
+
return repaired;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Same-pitch overlaps resolved within one voice.
|
|
137
|
+
*
|
|
138
|
+
* Grouped by spelling because that is what the rule compares — two notes an
|
|
139
|
+
* enharmonic apart are different notes to it, and "fixing" them would edit
|
|
140
|
+
* music the validator never complained about.
|
|
141
|
+
*/
|
|
142
|
+
function repairOverlaps(events) {
|
|
143
|
+
const notes = events.filter(isNoteEvent);
|
|
144
|
+
if (notes.length < 2)
|
|
145
|
+
return [...events];
|
|
146
|
+
const dropped = new Set();
|
|
147
|
+
/** id -> its new, truncated length. */
|
|
148
|
+
const shortened = new Map();
|
|
149
|
+
const bySpelling = new Map();
|
|
150
|
+
for (const note of notes) {
|
|
151
|
+
const key = spellingKey(note.pitch);
|
|
152
|
+
const group = bySpelling.get(key);
|
|
153
|
+
if (group)
|
|
154
|
+
group.push(note);
|
|
155
|
+
else
|
|
156
|
+
bySpelling.set(key, [note]);
|
|
157
|
+
}
|
|
158
|
+
for (const group of bySpelling.values()) {
|
|
159
|
+
const ordered = [...group].sort((a, b) => a.startTick - b.startTick || a.durationTicks - b.durationTicks);
|
|
160
|
+
let previous = null;
|
|
161
|
+
for (const note of ordered) {
|
|
162
|
+
if (!previous) {
|
|
163
|
+
previous = note;
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
const previousLength = shortened.get(previous.id) ?? previous.durationTicks;
|
|
167
|
+
const previousEnd = previous.startTick + previousLength;
|
|
168
|
+
if (note.startTick >= previousEnd) {
|
|
169
|
+
previous = note;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
// A note that begins where the last one did, for as long, is the same
|
|
173
|
+
// strike written twice: there is nothing to shorten it to.
|
|
174
|
+
if (note.startTick === previous.startTick &&
|
|
175
|
+
note.durationTicks === previousLength) {
|
|
176
|
+
dropped.add(note.id);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const trimmed = note.startTick - previous.startTick;
|
|
180
|
+
if (trimmed <= 0)
|
|
181
|
+
dropped.add(previous.id);
|
|
182
|
+
else
|
|
183
|
+
shortened.set(previous.id, trimmed);
|
|
184
|
+
previous = note;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (dropped.size === 0 && shortened.size === 0)
|
|
188
|
+
return [...events];
|
|
189
|
+
return events
|
|
190
|
+
.filter((event) => !dropped.has(event.id))
|
|
191
|
+
.map((event) => {
|
|
192
|
+
const length = shortened.get(event.id);
|
|
193
|
+
return length === undefined ? event : { ...event, durationTicks: length };
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/** Merged, sorted spans of what a voice's events actually cover. */
|
|
197
|
+
function coveredSpans(events) {
|
|
198
|
+
const spans = events
|
|
199
|
+
.map((event) => [
|
|
200
|
+
event.startTick,
|
|
201
|
+
event.startTick + event.durationTicks,
|
|
202
|
+
])
|
|
203
|
+
.sort((a, b) => a[0] - b[0]);
|
|
204
|
+
const merged = [];
|
|
205
|
+
for (const [start, end] of spans) {
|
|
206
|
+
const last = merged[merged.length - 1];
|
|
207
|
+
if (last && start <= last[1])
|
|
208
|
+
last[1] = Math.max(last[1], end);
|
|
209
|
+
else
|
|
210
|
+
merged.push([start, end]);
|
|
211
|
+
}
|
|
212
|
+
return merged;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Rests written into whatever the voice leaves uncovered.
|
|
216
|
+
*
|
|
217
|
+
* A bar that does not add up renders short, so the gap has to become something
|
|
218
|
+
* — and a rest is what a reader expects to see where nothing sounds.
|
|
219
|
+
*/
|
|
220
|
+
function fillGaps(events, measure, track, voice, taken) {
|
|
221
|
+
const measureEnd = measure.startTick + measure.durationTicks;
|
|
222
|
+
const filled = [...events];
|
|
223
|
+
let cursor = measure.startTick;
|
|
224
|
+
for (const [start, end] of coveredSpans(events)) {
|
|
225
|
+
if (start > cursor)
|
|
226
|
+
filled.push({
|
|
227
|
+
id: freshId(taken, `${voice.id}-rest-${cursor}`),
|
|
228
|
+
startTick: cursor,
|
|
229
|
+
durationTicks: start - cursor,
|
|
230
|
+
trackId: track.id,
|
|
231
|
+
voiceId: voice.id,
|
|
232
|
+
});
|
|
233
|
+
cursor = Math.max(cursor, end);
|
|
234
|
+
}
|
|
235
|
+
if (cursor < measureEnd)
|
|
236
|
+
filled.push({
|
|
237
|
+
id: freshId(taken, `${voice.id}-rest-${cursor}`),
|
|
238
|
+
startTick: cursor,
|
|
239
|
+
durationTicks: measureEnd - cursor,
|
|
240
|
+
trackId: track.id,
|
|
241
|
+
voiceId: voice.id,
|
|
242
|
+
});
|
|
243
|
+
return filled.sort((a, b) => a.startTick - b.startTick);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Measures made contiguous and sequentially indexed.
|
|
247
|
+
*
|
|
248
|
+
* The events move with their measure. An event's `startTick` is absolute, so
|
|
249
|
+
* correcting a measure's start without shifting its contents would push every
|
|
250
|
+
* note it holds outside it and trade one issue for a bar's worth of others.
|
|
251
|
+
*/
|
|
252
|
+
function repairMeasureOrdering(track) {
|
|
253
|
+
let expected = 0;
|
|
254
|
+
const measures = track.measures.map((measure, index) => {
|
|
255
|
+
const delta = expected - measure.startTick;
|
|
256
|
+
expected += measure.durationTicks;
|
|
257
|
+
if (delta === 0 && measure.index === index)
|
|
258
|
+
return measure;
|
|
259
|
+
return {
|
|
260
|
+
...measure,
|
|
261
|
+
index,
|
|
262
|
+
startTick: measure.startTick + delta,
|
|
263
|
+
voices: measure.voices.map((voice) => ({
|
|
264
|
+
...voice,
|
|
265
|
+
events: voice.events.map((event) => ({
|
|
266
|
+
...event,
|
|
267
|
+
startTick: event.startTick + delta,
|
|
268
|
+
})),
|
|
269
|
+
})),
|
|
270
|
+
};
|
|
271
|
+
});
|
|
272
|
+
return { ...track, measures };
|
|
273
|
+
}
|
|
274
|
+
/** Ticks and tempi in range, and the map put back in tick order. */
|
|
275
|
+
function repairTempoMap(tempoMap) {
|
|
276
|
+
return tempoMap
|
|
277
|
+
.map((event) => ({
|
|
278
|
+
...event,
|
|
279
|
+
tick: Math.max(0, event.tick),
|
|
280
|
+
bpm: clamp(event.bpm, MIN_BPM, MAX_BPM),
|
|
281
|
+
}))
|
|
282
|
+
.sort((a, b) => a.tick - b.tick);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Tie flags that point at nothing, cleared.
|
|
286
|
+
*
|
|
287
|
+
* Driven by the validator's own report rather than by a second implementation
|
|
288
|
+
* of "does this note have a partner": that question is subtle enough — voice
|
|
289
|
+
* channels, adjoining ticks, spelling — that a private copy of the rule here
|
|
290
|
+
* would be a second thing to keep in step, and the first to fall out of it.
|
|
291
|
+
*/
|
|
292
|
+
function clearDanglingTies(score, issues) {
|
|
293
|
+
const dangling = new Set(issues
|
|
294
|
+
.filter((issue) => issue.code === ISSUE_CODES.MISSING_TIE_TARGET)
|
|
295
|
+
.map((issue) => issue.objectId)
|
|
296
|
+
.filter((id) => id !== undefined));
|
|
297
|
+
if (dangling.size === 0)
|
|
298
|
+
return score;
|
|
299
|
+
return {
|
|
300
|
+
...score,
|
|
301
|
+
tracks: score.tracks.map((track) => ({
|
|
302
|
+
...track,
|
|
303
|
+
measures: track.measures.map((measure) => ({
|
|
304
|
+
...measure,
|
|
305
|
+
voices: measure.voices.map((voice) => ({
|
|
306
|
+
...voice,
|
|
307
|
+
events: voice.events.map((event) => {
|
|
308
|
+
if (!dangling.has(event.id) || !isNoteEvent(event))
|
|
309
|
+
return event;
|
|
310
|
+
// Rebuilt without the flags rather than destructured around them:
|
|
311
|
+
// an unused binding is exactly what the lint forbids, and naming
|
|
312
|
+
// the two keys here says which ones a dangling tie loses.
|
|
313
|
+
const cleared = { ...event };
|
|
314
|
+
delete cleared.tieStart;
|
|
315
|
+
delete cleared.tieStop;
|
|
316
|
+
return cleared;
|
|
317
|
+
}),
|
|
318
|
+
})),
|
|
319
|
+
})),
|
|
320
|
+
})),
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Repairs every rule this can, and reports what it actually achieved.
|
|
325
|
+
*
|
|
326
|
+
* Returns the input score by reference when it was already clean, so a caller
|
|
327
|
+
* dispatching this as a command can tell "nothing to do" from "something
|
|
328
|
+
* changed" without diffing.
|
|
329
|
+
*/
|
|
330
|
+
export function repairScore(score) {
|
|
331
|
+
const before = validateScore(score);
|
|
332
|
+
if (before.length === 0)
|
|
333
|
+
return { score, fixed: {}, remaining: {} };
|
|
334
|
+
let working = repairIds(score);
|
|
335
|
+
working = { ...working, tempoMap: repairTempoMap(working.tempoMap) };
|
|
336
|
+
const taken = new Set();
|
|
337
|
+
const collect = (candidate) => {
|
|
338
|
+
taken.add(candidate.id);
|
|
339
|
+
for (const tempo of candidate.tempoMap)
|
|
340
|
+
taken.add(tempo.id);
|
|
341
|
+
for (const track of candidate.tracks) {
|
|
342
|
+
taken.add(track.id);
|
|
343
|
+
for (const measure of track.measures) {
|
|
344
|
+
taken.add(measure.id);
|
|
345
|
+
for (const voice of measure.voices) {
|
|
346
|
+
taken.add(voice.id);
|
|
347
|
+
for (const event of voice.events)
|
|
348
|
+
taken.add(event.id);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
collect(working);
|
|
354
|
+
working = {
|
|
355
|
+
...working,
|
|
356
|
+
tracks: working.tracks.map((rawTrack) => {
|
|
357
|
+
const track = repairMeasureOrdering(repairTrackHeader(rawTrack));
|
|
358
|
+
return {
|
|
359
|
+
...track,
|
|
360
|
+
measures: track.measures.map((rawMeasure) => {
|
|
361
|
+
const measure = repairSignatures(rawMeasure);
|
|
362
|
+
return {
|
|
363
|
+
...measure,
|
|
364
|
+
voices: measure.voices.map((voice) => {
|
|
365
|
+
const inside = repairEvents(voice.events, measure, track, voice);
|
|
366
|
+
const separated = repairOverlaps(inside);
|
|
367
|
+
return {
|
|
368
|
+
...voice,
|
|
369
|
+
events: fillGaps(separated, measure, track, voice, taken),
|
|
370
|
+
};
|
|
371
|
+
}),
|
|
372
|
+
};
|
|
373
|
+
}),
|
|
374
|
+
};
|
|
375
|
+
}),
|
|
376
|
+
};
|
|
377
|
+
working = clearDanglingTies(working, validateScore(working));
|
|
378
|
+
const after = validateScore(working);
|
|
379
|
+
const beforeCounts = countByCode(before);
|
|
380
|
+
const remaining = countByCode(after);
|
|
381
|
+
const fixed = {};
|
|
382
|
+
for (const [code, count] of Object.entries(beforeCounts)) {
|
|
383
|
+
const cleared = count - (remaining[code] ?? 0);
|
|
384
|
+
if (cleared > 0)
|
|
385
|
+
fixed[code] = cleared;
|
|
386
|
+
}
|
|
387
|
+
return { score: working, fixed, remaining };
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=repair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../src/domain/validation/repair.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/domain/validation/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAkB,KAAK,EAAgB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/domain/validation/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAkB,KAAK,EAAgB,MAAM,gBAAgB,CAAC;AAsB1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkkBnD,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,EAAE,CAsB7D"}
|
|
@@ -1,29 +1,8 @@
|
|
|
1
1
|
import { isNoteEvent } from "../../index.js";
|
|
2
2
|
import { pitchToMidi } from "../pitch/pitch.js";
|
|
3
3
|
import { voiceChannel } from "../score/ties.js";
|
|
4
|
+
import { MAX_BPM, MAX_FIFTHS, MAX_MIDI, MAX_MIDI_CHANNEL, MAX_MIDI_PROGRAM, MAX_SIMULTANEOUS_NOTES, MAX_VELOCITY, MIN_BPM, MIN_FIFTHS, MIN_MIDI, MIN_MIDI_CHANNEL, MIN_MIDI_PROGRAM, MIN_VELOCITY, VALID_TIME_SIG_DENOMINATORS, } from "./limits.js";
|
|
4
5
|
import { ISSUE_CODES } from "./issues.js";
|
|
5
|
-
const MIN_MIDI = 0;
|
|
6
|
-
const MAX_MIDI = 127;
|
|
7
|
-
const MIN_VELOCITY = 0;
|
|
8
|
-
const MAX_VELOCITY = 127;
|
|
9
|
-
const MIN_MIDI_PROGRAM = 0;
|
|
10
|
-
const MAX_MIDI_PROGRAM = 127;
|
|
11
|
-
const MIN_MIDI_CHANNEL = 0;
|
|
12
|
-
const MAX_MIDI_CHANNEL = 15;
|
|
13
|
-
const VALID_TIME_SIG_DENOMINATORS = new Set([1, 2, 4, 8, 16, 32]);
|
|
14
|
-
const MIN_FIFTHS = -7;
|
|
15
|
-
const MAX_FIFTHS = 7;
|
|
16
|
-
const MIN_BPM = 20;
|
|
17
|
-
const MAX_BPM = 400;
|
|
18
|
-
/**
|
|
19
|
-
* Maximum number of notes sounding at once (within a single track) before a
|
|
20
|
-
* "too many simultaneous notes" readability warning fires. Spec §23 names
|
|
21
|
-
* this rule but doesn't give a number; 10 is a deliberate implementer
|
|
22
|
-
* default (roughly as many notes as a two-hand piano voicing on one staff
|
|
23
|
-
* can render legibly), documented here so a later task can make it
|
|
24
|
-
* configurable if that turns out to be too strict/loose in practice.
|
|
25
|
-
*/
|
|
26
|
-
const MAX_SIMULTANEOUS_NOTES = 10;
|
|
27
6
|
function samePitch(a, b) {
|
|
28
7
|
return (a.step === b.step && a.accidental === b.accidental && a.octave === b.octave);
|
|
29
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/domain/validation/validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/domain/validation/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export * from "./domain/time/ticks.js";
|
|
|
49
49
|
export * from "./domain/voicing/allocate.js";
|
|
50
50
|
export * from "./domain/validation/issues.js";
|
|
51
51
|
export * from "./domain/validation/validator.js";
|
|
52
|
+
export * from "./domain/validation/limits.js";
|
|
53
|
+
export * from "./domain/validation/repair.js";
|
|
52
54
|
export * from "./domain/commands/types.js";
|
|
53
55
|
export * from "./domain/commands/reflow.js";
|
|
54
56
|
export * from "./domain/commands/snapshot.js";
|
|
@@ -57,6 +59,7 @@ export * from "./domain/commands/track-commands.js";
|
|
|
57
59
|
export * from "./domain/commands/region-commands.js";
|
|
58
60
|
export * from "./domain/commands/note-commands.js";
|
|
59
61
|
export * from "./domain/commands/note-marks.js";
|
|
62
|
+
export * from "./domain/commands/repair-commands.js";
|
|
60
63
|
export * from "./domain/commands/edit-commands.js";
|
|
61
64
|
export * from "./domain/commands/relocate-commands.js";
|
|
62
65
|
export * from "./domain/commands/ripple-commands.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAQ5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,oBAAoB,CAAC;AAKnC,cAAc,qBAAqB,CAAC;AAMpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAQ5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,oBAAoB,CAAC;AAKnC,cAAc,qBAAqB,CAAC;AAMpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAM9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AAItD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -68,6 +68,8 @@ export * from "./domain/time/ticks.js";
|
|
|
68
68
|
export * from "./domain/voicing/allocate.js";
|
|
69
69
|
export * from "./domain/validation/issues.js";
|
|
70
70
|
export * from "./domain/validation/validator.js";
|
|
71
|
+
export * from "./domain/validation/limits.js";
|
|
72
|
+
export * from "./domain/validation/repair.js";
|
|
71
73
|
// ---------------------------------------------------------------------------
|
|
72
74
|
// 11. Score commands (pure Score -> Score transformations, shared by both sides)
|
|
73
75
|
// ---------------------------------------------------------------------------
|
|
@@ -79,6 +81,7 @@ export * from "./domain/commands/track-commands.js";
|
|
|
79
81
|
export * from "./domain/commands/region-commands.js";
|
|
80
82
|
export * from "./domain/commands/note-commands.js";
|
|
81
83
|
export * from "./domain/commands/note-marks.js";
|
|
84
|
+
export * from "./domain/commands/repair-commands.js";
|
|
82
85
|
export * from "./domain/commands/edit-commands.js";
|
|
83
86
|
export * from "./domain/commands/relocate-commands.js";
|
|
84
87
|
export * from "./domain/commands/ripple-commands.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,8EAA8E;AAC9E,+CAA+C;AAC/C,EAAE;AACF,8EAA8E;AAC9E,sEAAsE;AACtE,iEAAiE;AACjE,8EAA8E;AAC9E,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAE5C,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,oBAAoB,CAAC;AAEnC,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AAEpC,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/model/api.d.ts
CHANGED
|
@@ -104,12 +104,23 @@ export type Snapshot = {
|
|
|
104
104
|
publicId?: string;
|
|
105
105
|
/** Shown on the Community list. Never the account email. */
|
|
106
106
|
publisherName?: string;
|
|
107
|
+
/**
|
|
108
|
+
* The title a stranger sees, set when published.
|
|
109
|
+
*
|
|
110
|
+
* Kept apart from `name`, which is the version label this project's own
|
|
111
|
+
* picker draws: "Version 1" is what the tree needs and not what a public
|
|
112
|
+
* page should be called, and renaming for the public must not rewrite the
|
|
113
|
+
* history's labels.
|
|
114
|
+
*/
|
|
115
|
+
publicName?: string;
|
|
107
116
|
createdAt: string;
|
|
108
117
|
};
|
|
109
118
|
/** What an anonymous visitor receives. Carries no owner identity, by construction. */
|
|
110
119
|
export type PublishedSnapshot = {
|
|
111
120
|
publicId: string;
|
|
112
121
|
name: string;
|
|
122
|
+
/** The public title. Falls back to `name` for anything published before it existed. */
|
|
123
|
+
publicName: string;
|
|
113
124
|
publisherName: string;
|
|
114
125
|
score: Score;
|
|
115
126
|
createdAt: string;
|
|
@@ -473,6 +484,7 @@ export declare const snapshotSummarySchema: z.ZodObject<{
|
|
|
473
484
|
createdAt: z.ZodString;
|
|
474
485
|
publicId: z.ZodOptional<z.ZodString>;
|
|
475
486
|
publisherName: z.ZodOptional<z.ZodString>;
|
|
487
|
+
publicName: z.ZodOptional<z.ZodString>;
|
|
476
488
|
}, z.core.$strip>;
|
|
477
489
|
export declare const snapshotSchema: z.ZodObject<{
|
|
478
490
|
id: z.ZodString;
|
|
@@ -482,6 +494,7 @@ export declare const snapshotSchema: z.ZodObject<{
|
|
|
482
494
|
createdAt: z.ZodString;
|
|
483
495
|
publicId: z.ZodOptional<z.ZodString>;
|
|
484
496
|
publisherName: z.ZodOptional<z.ZodString>;
|
|
497
|
+
publicName: z.ZodOptional<z.ZodString>;
|
|
485
498
|
score: z.ZodObject<{
|
|
486
499
|
id: z.ZodString;
|
|
487
500
|
version: z.ZodNumber;
|
|
@@ -781,6 +794,7 @@ export declare const snapshotSchema: z.ZodObject<{
|
|
|
781
794
|
export declare const publishedSnapshotSchema: z.ZodObject<{
|
|
782
795
|
publicId: z.ZodString;
|
|
783
796
|
name: z.ZodString;
|
|
797
|
+
publicName: z.ZodString;
|
|
784
798
|
publisherName: z.ZodString;
|
|
785
799
|
score: z.ZodObject<{
|
|
786
800
|
id: z.ZodString;
|
|
@@ -1079,10 +1093,12 @@ export declare const communityItemSchema: z.ZodObject<{
|
|
|
1079
1093
|
name: z.ZodString;
|
|
1080
1094
|
createdAt: z.ZodString;
|
|
1081
1095
|
publicId: z.ZodString;
|
|
1096
|
+
publicName: z.ZodString;
|
|
1082
1097
|
publisherName: z.ZodString;
|
|
1083
1098
|
}, z.core.$strip>;
|
|
1084
1099
|
export declare const publishRequestSchema: z.ZodObject<{
|
|
1085
1100
|
publisherName: z.ZodString;
|
|
1101
|
+
publicName: z.ZodString;
|
|
1086
1102
|
}, z.core.$strip>;
|
|
1087
1103
|
export declare const snapshotCreateRequestSchema: z.ZodObject<{
|
|
1088
1104
|
name: z.ZodString;
|
package/dist/model/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/model/api.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/model/api.ts"],"names":[],"mappings":"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"}
|
package/dist/model/api.js
CHANGED
|
@@ -38,6 +38,7 @@ export const snapshotSummarySchema = z.object({
|
|
|
38
38
|
// picker badges from, and it is also all a publish response needs to return.
|
|
39
39
|
publicId: z.string().min(1).optional(),
|
|
40
40
|
publisherName: z.string().min(1).optional(),
|
|
41
|
+
publicName: z.string().min(1).optional(),
|
|
41
42
|
});
|
|
42
43
|
export const snapshotSchema = snapshotSummarySchema.extend({
|
|
43
44
|
score: scoreSchema,
|
|
@@ -47,6 +48,7 @@ export const snapshotSchema = snapshotSummarySchema.extend({
|
|
|
47
48
|
export const publishedSnapshotSchema = z.object({
|
|
48
49
|
publicId: z.string().min(1),
|
|
49
50
|
name: z.string().min(1),
|
|
51
|
+
publicName: z.string().min(1),
|
|
50
52
|
publisherName: z.string().min(1),
|
|
51
53
|
score: scoreSchema,
|
|
52
54
|
createdAt: z.string().min(1),
|
|
@@ -57,6 +59,10 @@ export const communityItemSchema = publishedSnapshotSchema.omit({
|
|
|
57
59
|
});
|
|
58
60
|
export const publishRequestSchema = z.object({
|
|
59
61
|
publisherName: z.string().min(1).max(80),
|
|
62
|
+
// Required: publishing without a public title would put "Version 1" on a
|
|
63
|
+
// page strangers read. Re-publishing an already-public snapshot is how a
|
|
64
|
+
// title is changed, so this arrives on every publish, not only the first.
|
|
65
|
+
publicName: z.string().min(1).max(200),
|
|
60
66
|
});
|
|
61
67
|
export const snapshotCreateRequestSchema = z.object({
|
|
62
68
|
name: z.string().min(1).max(200),
|
package/dist/model/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/model/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/model/api.ts"],"names":[],"mappings":"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"}
|
package/dist/model/position.d.ts
CHANGED
|
@@ -39,6 +39,22 @@ export interface IMusicPosition {
|
|
|
39
39
|
* fresher than the last event and is the number the caret should draw at.
|
|
40
40
|
*/
|
|
41
41
|
readonly tick: number;
|
|
42
|
+
/**
|
|
43
|
+
* The last position the transport actually vouched for.
|
|
44
|
+
*
|
|
45
|
+
* Exposed beside {@link tick} deliberately: a smoothed playhead and the
|
|
46
|
+
* report it was projected from are both wanted — a caret glides, while a
|
|
47
|
+
* scrubber, a bar/beat readout or a scroll that follows the music wants the
|
|
48
|
+
* position something corroborated. Keeping the pair on one implementation is
|
|
49
|
+
* what stops them drifting; when the bus kept its own copy of the report and
|
|
50
|
+
* the playhead projected from another, a producer that stopped reporting
|
|
51
|
+
* left the caret gliding the length of the score while everything reading
|
|
52
|
+
* the copy sat at bar one.
|
|
53
|
+
*
|
|
54
|
+
* "Vouched for" rather than "reported": the transport also banks a position
|
|
55
|
+
* when it starts or stops, and that is equally authoritative.
|
|
56
|
+
*/
|
|
57
|
+
readonly reportedTick: number;
|
|
42
58
|
/** Whether the transport is advancing, which is when smoothing applies. */
|
|
43
59
|
readonly isPlaying: boolean;
|
|
44
60
|
/**
|
|
@@ -58,6 +74,31 @@ export interface IMusicPosition {
|
|
|
58
74
|
* {@link IMusicPosition} and cannot move the playhead by accident.
|
|
59
75
|
*/
|
|
60
76
|
export interface IMusicPositionSource extends IMusicPosition {
|
|
77
|
+
/**
|
|
78
|
+
* Move the playhead, because something other than the transport decided to.
|
|
79
|
+
*
|
|
80
|
+
* A click on the stave, an arrow key, a note written at the caret: all of
|
|
81
|
+
* them are somebody saying where the position *should be*, and they are the
|
|
82
|
+
* opposite of {@link report}, which is the transport saying where it already
|
|
83
|
+
* is. Keeping the two apart is what lets the transport follow this one
|
|
84
|
+
* without following its own reports around a loop.
|
|
85
|
+
*
|
|
86
|
+
* It is on this interface rather than the read one so a passive follower
|
|
87
|
+
* still cannot move the playhead by accident — but note that moving it is
|
|
88
|
+
* not a transport privilege. The editor moves the playhead; it just has no
|
|
89
|
+
* business knowing that a transport exists, so it says where the position is
|
|
90
|
+
* and whatever is playing follows.
|
|
91
|
+
*/
|
|
92
|
+
moveTo(tick: number): void;
|
|
93
|
+
/**
|
|
94
|
+
* Observe deliberate moves, and *only* those.
|
|
95
|
+
*
|
|
96
|
+
* The transport subscribes here to follow a seek. It must not use
|
|
97
|
+
* {@link IMusicPosition.subscribe}, which also fires on its own reports:
|
|
98
|
+
* following those would mean seeking to where it already is, thirty times a
|
|
99
|
+
* second, forever.
|
|
100
|
+
*/
|
|
101
|
+
subscribeToMoves(listener: (tick: number) => void): UnsubscribePosition;
|
|
61
102
|
/**
|
|
62
103
|
* Report an authoritative position, in score ticks.
|
|
63
104
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/model/position.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,mBAAmB,CAAC;CAClE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/C,kEAAkE;IAClE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5D;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC"}
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/model/position.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,mBAAmB,CAAC;CAClE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;;;;;OAOG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,mBAAmB,CAAC;IAExE;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/C,kEAAkE;IAClE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5D;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC"}
|
|
@@ -30,9 +30,11 @@
|
|
|
30
30
|
* into the playhead: under load the anchor is stamped late and everything
|
|
31
31
|
* derived from it lags the audio, which is exactly the drift this replaces.
|
|
32
32
|
*/
|
|
33
|
-
import type { IMusicPositionSource, UnsubscribePosition } from
|
|
33
|
+
import type { IMusicPositionSource, UnsubscribePosition } from "../model/position.js";
|
|
34
34
|
export declare class MusicPosition implements IMusicPositionSource {
|
|
35
35
|
private readonly listeners;
|
|
36
|
+
/** Kept apart from `listeners`: the transport follows these and must not follow its own reports. */
|
|
37
|
+
private readonly moveListeners;
|
|
36
38
|
/** The last authoritative report, and the clock reading it belongs to. */
|
|
37
39
|
private anchorTick;
|
|
38
40
|
private anchorSeconds;
|
|
@@ -48,7 +50,24 @@ export declare class MusicPosition implements IMusicPositionSource {
|
|
|
48
50
|
* the reports land.
|
|
49
51
|
*/
|
|
50
52
|
get tick(): number;
|
|
53
|
+
/**
|
|
54
|
+
* The last vouched-for position: the last report, or the position banked
|
|
55
|
+
* when the transport last changed state. `tick` projects from exactly this,
|
|
56
|
+
* so the two cannot describe different moments.
|
|
57
|
+
*/
|
|
58
|
+
get reportedTick(): number;
|
|
51
59
|
report(tick: number, atSeconds?: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* Somebody moved the playhead.
|
|
62
|
+
*
|
|
63
|
+
* Anchors exactly as `report` does — the position *is* here now, and a
|
|
64
|
+
* projection from the old anchor would glide away from it — then tells the
|
|
65
|
+
* ordinary subscribers, so anything drawing the caret sees one number change
|
|
66
|
+
* whoever moved it, and finally the movement subscribers, which is how the
|
|
67
|
+
* transport learns to follow.
|
|
68
|
+
*/
|
|
69
|
+
moveTo(tick: number): void;
|
|
70
|
+
subscribeToMoves(listener: (tick: number) => void): UnsubscribePosition;
|
|
52
71
|
/**
|
|
53
72
|
* Update the tick rate without disturbing the anchor.
|
|
54
73
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"music-position.d.ts","sourceRoot":"","sources":["../../src/position/music-position.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"music-position.d.ts","sourceRoot":"","sources":["../../src/position/music-position.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AA8B9B,qBAAa,aAAc,YAAW,oBAAoB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IAEnE,0EAA0E;IAC1E,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAK;IAE3B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,MAAM,CAcjB;IAED;;;;OAIG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAM9C;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ1B,gBAAgB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,mBAAmB;IAKvE;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIrC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAY3D,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,mBAAmB;CAIjE"}
|
|
@@ -1,12 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How far the playhead may be projected past its last report.
|
|
3
|
+
*
|
|
4
|
+
* Dead reckoning is an interpolation between reports, not a substitute for
|
|
5
|
+
* them. Reports arrive about thirty times a second and in clumps, so the bound
|
|
6
|
+
* has to absorb a clump — but past that, continuing to advance is asserting a
|
|
7
|
+
* position nothing has corroborated.
|
|
8
|
+
*
|
|
9
|
+
* That distinction is not academic: when the engine's own report throttle
|
|
10
|
+
* silenced it, this projected on regardless and the caret glided the length of
|
|
11
|
+
* the score while every consumer of the *reported* tick — the scroll, the
|
|
12
|
+
* bar/beat readout, the scrubber — sat at bar one. One writer, but two
|
|
13
|
+
* behaviours, and they disagreed by the whole piece. Bounded, a stalled
|
|
14
|
+
* producer stops the playhead everywhere at once, which reads as the one fault
|
|
15
|
+
* it is instead of as a caret that works and a page that does not.
|
|
16
|
+
*
|
|
17
|
+
* Half a second is roughly fifteen missed reports: far beyond any clump, far
|
|
18
|
+
* short of anything a reader would call motion.
|
|
19
|
+
*/
|
|
20
|
+
const MAX_PROJECTION_SECONDS = 0.5;
|
|
1
21
|
/** Wall-clock seconds, monotonic where the platform offers it. */
|
|
2
22
|
function nowSeconds() {
|
|
3
|
-
return typeof performance !==
|
|
23
|
+
return typeof performance !== "undefined"
|
|
4
24
|
? performance.now() / 1000
|
|
5
25
|
: Date.now() / 1000;
|
|
6
26
|
}
|
|
7
27
|
export class MusicPosition {
|
|
8
28
|
constructor() {
|
|
9
29
|
this.listeners = new Set();
|
|
30
|
+
/** Kept apart from `listeners`: the transport follows these and must not follow its own reports. */
|
|
31
|
+
this.moveListeners = new Set();
|
|
10
32
|
/** The last authoritative report, and the clock reading it belongs to. */
|
|
11
33
|
this.anchorTick = 0;
|
|
12
34
|
this.anchorSeconds = nowSeconds();
|
|
@@ -27,17 +49,49 @@ export class MusicPosition {
|
|
|
27
49
|
get tick() {
|
|
28
50
|
if (!this.playing || this.ticksPerSecond <= 0)
|
|
29
51
|
return this.anchorTick;
|
|
30
|
-
|
|
52
|
+
// Capped: see `MAX_PROJECTION_SECONDS`. Past the bound the playhead holds
|
|
53
|
+
// its last corroborated position rather than inventing motion.
|
|
54
|
+
const elapsed = Math.min(nowSeconds() - this.anchorSeconds, MAX_PROJECTION_SECONDS);
|
|
31
55
|
// Never backwards: a report that arrives late would otherwise pull the
|
|
32
56
|
// playhead back a few ticks, which reads as a stutter.
|
|
33
57
|
return Math.max(this.anchorTick, this.anchorTick + elapsed * this.ticksPerSecond);
|
|
34
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* The last vouched-for position: the last report, or the position banked
|
|
61
|
+
* when the transport last changed state. `tick` projects from exactly this,
|
|
62
|
+
* so the two cannot describe different moments.
|
|
63
|
+
*/
|
|
64
|
+
get reportedTick() {
|
|
65
|
+
return this.anchorTick;
|
|
66
|
+
}
|
|
35
67
|
report(tick, atSeconds) {
|
|
36
68
|
this.anchorTick = tick;
|
|
37
69
|
this.anchorSeconds = atSeconds ?? nowSeconds();
|
|
38
70
|
for (const listener of this.listeners)
|
|
39
71
|
listener(tick);
|
|
40
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Somebody moved the playhead.
|
|
75
|
+
*
|
|
76
|
+
* Anchors exactly as `report` does — the position *is* here now, and a
|
|
77
|
+
* projection from the old anchor would glide away from it — then tells the
|
|
78
|
+
* ordinary subscribers, so anything drawing the caret sees one number change
|
|
79
|
+
* whoever moved it, and finally the movement subscribers, which is how the
|
|
80
|
+
* transport learns to follow.
|
|
81
|
+
*/
|
|
82
|
+
moveTo(tick) {
|
|
83
|
+
const target = Math.max(0, tick);
|
|
84
|
+
this.anchorTick = target;
|
|
85
|
+
this.anchorSeconds = nowSeconds();
|
|
86
|
+
for (const listener of this.listeners)
|
|
87
|
+
listener(target);
|
|
88
|
+
for (const listener of this.moveListeners)
|
|
89
|
+
listener(target);
|
|
90
|
+
}
|
|
91
|
+
subscribeToMoves(listener) {
|
|
92
|
+
this.moveListeners.add(listener);
|
|
93
|
+
return () => this.moveListeners.delete(listener);
|
|
94
|
+
}
|
|
41
95
|
/**
|
|
42
96
|
* Update the tick rate without disturbing the anchor.
|
|
43
97
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"music-position.js","sourceRoot":"","sources":["../../src/position/music-position.ts"],"names":[],"mappings":"AAqCA,kEAAkE;AAClE,SAAS,UAAU;IACjB,OAAO,OAAO,WAAW,KAAK,WAAW;QACvC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,OAAO,aAAa;IAA1B;QACmB,cAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"music-position.js","sourceRoot":"","sources":["../../src/position/music-position.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,kEAAkE;AAClE,SAAS,UAAU;IACjB,OAAO,OAAO,WAAW,KAAK,WAAW;QACvC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,OAAO,aAAa;IAA1B;QACmB,cAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC/D,oGAAoG;QACnF,kBAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEnE,0EAA0E;QAClE,eAAU,GAAG,CAAC,CAAC;QACf,kBAAa,GAAG,UAAU,EAAE,CAAC;QAE7B,YAAO,GAAG,KAAK,CAAC;QAChB,mBAAc,GAAG,CAAC,CAAC;IA8F7B,CAAC;IA5FC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,IAAI;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QACtE,0EAA0E;QAC1E,+DAA+D;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EACjC,sBAAsB,CACvB,CAAC;QACF,uEAAuE;QACvE,uDAAuD;QACvD,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAChD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,SAAkB;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;QAC/C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC;QAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa;YAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,gBAAgB,CAAC,QAAgC;QAC/C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,cAAsB;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,OAAgB,EAAE,cAAuB;QAClD,uEAAuE;QACvE,oEAAoE;QACpE,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,cAAc,KAAK,SAAS;YAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACvE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,SAAS,CAAC,QAAgC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
package/package.json
CHANGED