@sudobility/music_drawing 0.0.35 → 0.0.37
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/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/keyboard-geometry.d.ts +6 -18
- package/dist/keyboard-geometry.d.ts.map +1 -1
- package/dist/keyboard-geometry.js.map +1 -1
- package/dist/keyboard-keys.d.ts +2 -2
- package/dist/keyboard-keys.d.ts.map +1 -1
- package/dist/keyboard-keys.js.map +1 -1
- package/dist/pagination.d.ts +1 -7
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +0 -4
- package/dist/pagination.js.map +1 -1
- package/dist/playback-binding.d.ts +2 -0
- package/dist/playback-binding.d.ts.map +1 -1
- package/dist/playback-binding.js +13 -0
- package/dist/playback-binding.js.map +1 -1
- package/dist/playback-scroll.d.ts +23 -1
- package/dist/playback-scroll.d.ts.map +1 -1
- package/dist/playback-scroll.js +0 -21
- package/dist/playback-scroll.js.map +1 -1
- package/dist/playing-pitches.d.ts +44 -0
- package/dist/playing-pitches.d.ts.map +1 -0
- package/dist/playing-pitches.js +50 -0
- package/dist/playing-pitches.js.map +1 -0
- package/dist/print-plan.d.ts +2 -19
- package/dist/print-plan.d.ts.map +1 -1
- package/dist/print-plan.js +1 -33
- package/dist/print-plan.js.map +1 -1
- package/dist/score-canvas.d.ts +20 -23
- package/dist/score-canvas.d.ts.map +1 -1
- package/dist/score-canvas.js +32 -2
- package/dist/score-canvas.js.map +1 -1
- package/dist/types.d.ts +5 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -17
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
- package/dist/out-of-range.d.ts +0 -67
- package/dist/out-of-range.d.ts.map +0 -1
- package/dist/out-of-range.js +0 -101
- package/dist/out-of-range.js.map +0 -1
- package/dist/press.d.ts +0 -66
- package/dist/press.d.ts.map +0 -1
- package/dist/press.js +0 -64
- package/dist/press.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -23,9 +23,7 @@ export * from './pagination.js';
|
|
|
23
23
|
export * from './print-layout.js';
|
|
24
24
|
export * from './print-plan.js';
|
|
25
25
|
export * from './note-colors.js';
|
|
26
|
-
export * from './out-of-range.js';
|
|
27
26
|
export * from './hit-test.js';
|
|
28
|
-
export * from './press.js';
|
|
29
27
|
export * from './track-gutter.js';
|
|
30
28
|
export * from './note-drag.js';
|
|
31
29
|
export * from './playback-scroll.js';
|
|
@@ -63,4 +61,9 @@ export * from './keyboard-labels.js';
|
|
|
63
61
|
* pitch display, with label rows and fills — so neither app composes them.
|
|
64
62
|
*/
|
|
65
63
|
export * from './keyboard-keys.js';
|
|
64
|
+
/**
|
|
65
|
+
* Which of those keys are lit: the active track's sounding pitches while the
|
|
66
|
+
* transport plays, plus the keys a finger holds.
|
|
67
|
+
*/
|
|
68
|
+
export * from './playing-pitches.js';
|
|
66
69
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAE9B;;;;GAIG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;;GAIG;AACH,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,cAAc,oBAAoB,CAAC;AAEnC;;;GAGG;AACH,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,9 +23,7 @@ export * from './pagination.js';
|
|
|
23
23
|
export * from './print-layout.js';
|
|
24
24
|
export * from './print-plan.js';
|
|
25
25
|
export * from './note-colors.js';
|
|
26
|
-
export * from './out-of-range.js';
|
|
27
26
|
export * from './hit-test.js';
|
|
28
|
-
export * from './press.js';
|
|
29
27
|
export * from './track-gutter.js';
|
|
30
28
|
export * from './note-drag.js';
|
|
31
29
|
export * from './playback-scroll.js';
|
|
@@ -63,4 +61,9 @@ export * from './keyboard-labels.js';
|
|
|
63
61
|
* pitch display, with label rows and fills — so neither app composes them.
|
|
64
62
|
*/
|
|
65
63
|
export * from './keyboard-keys.js';
|
|
64
|
+
/**
|
|
65
|
+
* Which of those keys are lit: the active track's sounding pitches while the
|
|
66
|
+
* transport plays, plus the keys a finger holds.
|
|
67
|
+
*/
|
|
68
|
+
export * from './playing-pitches.js';
|
|
66
69
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAE9B;;;;GAIG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;;GAIG;AACH,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,cAAc,oBAAoB,CAAC;AAEnC;;;GAGG;AACH,cAAc,sBAAsB,CAAC"}
|
|
@@ -18,18 +18,6 @@
|
|
|
18
18
|
* └──┴──┴──┴──┴──┘
|
|
19
19
|
*/
|
|
20
20
|
import { type MidiRange, type Track } from '@sudobility/music_types';
|
|
21
|
-
/**
|
|
22
|
-
* The keyboard is drawn over a caller-chosen range, not always all 88 keys:
|
|
23
|
-
* the active track's instrument decides it, so a piccolo part does not present
|
|
24
|
-
* three octaves of keys that will never sound.
|
|
25
|
-
*
|
|
26
|
-
* An **alias** of music_types' `MidiRange`, not a structural twin of it. What
|
|
27
|
-
* a caller passes is almost always `trackKeyboardRange(track)`, so the two were
|
|
28
|
-
* already the same shape by coincidence; saying so outright means a change to
|
|
29
|
-
* `MidiRange` reaches the keyboard rather than being silently accepted by a
|
|
30
|
-
* local copy that happens still to match.
|
|
31
|
-
*/
|
|
32
|
-
export type KeyboardRange = MidiRange;
|
|
33
21
|
/**
|
|
34
22
|
* The 88-key piano — `FULL_KEYBOARD` **by identity**, not a second pair of
|
|
35
23
|
* numbers that agrees with it today.
|
|
@@ -38,7 +26,7 @@ export type KeyboardRange = MidiRange;
|
|
|
38
26
|
* because it reads as this module's default range (`computeKeys(w, h)`) where
|
|
39
27
|
* `FULL_KEYBOARD` reads as a fact about instruments.
|
|
40
28
|
*/
|
|
41
|
-
export declare const FULL_RANGE:
|
|
29
|
+
export declare const FULL_RANGE: MidiRange;
|
|
42
30
|
/** A0 — the lowest key on a standard 88-key piano. */
|
|
43
31
|
export declare const KEYBOARD_MIN_MIDI: number;
|
|
44
32
|
/** C8 — the highest. */
|
|
@@ -58,9 +46,9 @@ export declare const WHITE_KEY_COUNT = 52;
|
|
|
58
46
|
* constant, so a local pair of numbers would be a second opinion on where the
|
|
59
47
|
* piano ends.
|
|
60
48
|
*/
|
|
61
|
-
export declare function snapToWhiteKeys(range:
|
|
49
|
+
export declare function snapToWhiteKeys(range: MidiRange): MidiRange;
|
|
62
50
|
/** How many white keys a range spans, which is what sets the keyboard's width. */
|
|
63
|
-
export declare function whiteKeyCount(range?:
|
|
51
|
+
export declare function whiteKeyCount(range?: MidiRange): number;
|
|
64
52
|
/**
|
|
65
53
|
* Below this the keys stop shrinking and the keyboard scrolls horizontally
|
|
66
54
|
* instead — 52 × 14 = 728px, so any narrower panel scrolls.
|
|
@@ -144,7 +132,7 @@ export declare function isBlackKey(midi: number): boolean;
|
|
|
144
132
|
/** A midi number as a pitch string, e.g. `C4`, `F#3` — sharp spelling, since a keyboard has no key signature to spell against. */
|
|
145
133
|
export declare function noteLabel(midi: number): string;
|
|
146
134
|
/** Total width of the keyboard at a given white-key width. */
|
|
147
|
-
export declare function keyboardWidth(whiteKeyWidth: number, range?:
|
|
135
|
+
export declare function keyboardWidth(whiteKeyWidth: number, range?: MidiRange): number;
|
|
148
136
|
/**
|
|
149
137
|
* Every key, whites first and blacks second.
|
|
150
138
|
*
|
|
@@ -152,12 +140,12 @@ export declare function keyboardWidth(whiteKeyWidth: number, range?: KeyboardRan
|
|
|
152
140
|
* and the blacks land on top of the whites they overlap, with no z-index
|
|
153
141
|
* bookkeeping.
|
|
154
142
|
*/
|
|
155
|
-
export declare function computeKeys(whiteKeyWidth: number, whiteKeyHeight: number, range?:
|
|
143
|
+
export declare function computeKeys(whiteKeyWidth: number, whiteKeyHeight: number, range?: MidiRange, naming?: KeyNaming,
|
|
156
144
|
/** What the instrument can play; keys outside it are `outOfRange`. Null marks none. */
|
|
157
145
|
playable?: MidiRange | null): PianoKey[];
|
|
158
146
|
export type TrackKeyboardSpan = {
|
|
159
147
|
/** The keys to draw, snapped to whole white keys. */
|
|
160
|
-
range:
|
|
148
|
+
range: MidiRange;
|
|
161
149
|
/**
|
|
162
150
|
* What the instrument can play, or null when its compass is not one the app
|
|
163
151
|
* enforces (`trackRangeIsBinding`) — in which case no key is marked, just as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-geometry.d.ts","sourceRoot":"","sources":["../src/keyboard-geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAWL,KAAK,SAAS,EACd,KAAK,KAAK,EACX,MAAM,yBAAyB,CAAC;AAEjC
|
|
1
|
+
{"version":3,"file":"keyboard-geometry.d.ts","sourceRoot":"","sources":["../src/keyboard-geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAWL,KAAK,SAAS,EACd,KAAK,KAAK,EACX,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,SAAyB,CAAC;AAEnD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,QAAoB,CAAC;AACnD,wBAAwB;AACxB,eAAO,MAAM,iBAAiB,QAAoB,CAAC;AACnD,4EAA4E;AAC5E,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAS3D;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,GAAE,SAAsB,GAAG,MAAM,CAKnE;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,YAAY,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,YAAY,CAAC;AAErD,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AAE/C,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,kIAAkI;AAClI,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,SAAsB,GAC5B,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,KAAK,GAAE,SAAsB,EAC7B,MAAM,GAAE,SAAmB;AAC3B,uFAAuF;AACvF,QAAQ,GAAE,SAAS,GAAG,IAAW,GAChC,QAAQ,EAAE,CA2DZ;AAMD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qDAAqD;IACrD,KAAK,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC,GACtD,iBAAiB,CA8BnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-geometry.js","sourceRoot":"","sources":["../src/keyboard-geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GAGpB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"keyboard-geometry.js","sourceRoot":"","sources":["../src/keyboard-geometry.ts"],"names":[],"mappings":"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"}
|
package/dist/keyboard-keys.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* black keys are named as well.
|
|
16
16
|
*/
|
|
17
17
|
import type { PitchDisplay, Track } from '@sudobility/music_types';
|
|
18
|
-
import { type KeyNaming, type
|
|
18
|
+
import { type KeyNaming, type PianoKey } from './keyboard-geometry.js';
|
|
19
19
|
import type { MidiRange } from '@sudobility/music_types';
|
|
20
20
|
import type { RenderTheme } from './types.js';
|
|
21
21
|
/**
|
|
@@ -54,7 +54,7 @@ export type KeyboardKeysOptions = {
|
|
|
54
54
|
};
|
|
55
55
|
export type KeyboardKeys = {
|
|
56
56
|
/** The keys drawn, snapped to whole white keys. */
|
|
57
|
-
range:
|
|
57
|
+
range: MidiRange;
|
|
58
58
|
/** What the instrument can play, or null when nothing is marked. */
|
|
59
59
|
playable: MidiRange | null;
|
|
60
60
|
naming: KeyNaming;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-keys.d.ts","sourceRoot":"","sources":["../src/keyboard-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAWL,KAAK,SAAS,EACd,KAAK,
|
|
1
|
+
{"version":3,"file":"keyboard-keys.d.ts","sourceRoot":"","sources":["../src/keyboard-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAWL,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,4BAA4B;AAC5B,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,4BAA4B;AAC5B,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3E,wFAAwF;IACxF,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC;IACjB,oEAAoE;IACpE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,8HAA8H;IAC9H,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,MAAM,EACN,KAAK,EACL,YAAwB,EACxB,GAAc,GACf,EAAE,mBAAmB,GAAG,YAAY,CAiCpC;AAED,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,GAAG;IACrB,0CAA0C;IAC1C,GAAG,EAAE,OAAO,CAAC;IACb,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,YAAY,CAAC,EAC7C,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,WAAW,GACjB,MAAM,CAMR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-keys.js","sourceRoot":"","sources":["../src/keyboard-keys.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,aAAa,
|
|
1
|
+
{"version":3,"file":"keyboard-keys.js","sourceRoot":"","sources":["../src/keyboard-keys.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,aAAa,GAGd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAI3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AA4CxC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,MAAM,EACN,KAAK,EACL,YAAY,GAAG,SAAS,EACxB,GAAG,GAAG,QAAQ,GACM;IACpB,MAAM,IAAI,GAAG,KAAK;QAChB,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEjC,wEAAwE;IACxE,MAAM,MAAM,GACV,KAAK,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IACxD,mEAAmE;IACnE,MAAM,WAAW,GACf,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,aAAa,GACjB,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAEnE,MAAM,IAAI,GAAG,WAAW,CACtB,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAC9D,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC,CAC5C,CAAC;IAEF,OAAO;QACL,KAAK;QACL,QAAQ;QACR,MAAM;QACN,IAAI;QACJ,WAAW;QACX,SAAS;QACT,aAAa;QACb,KAAK,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC;KAC3C,CAAC;AACJ,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,GAA6C,EAC7C,KAAe,EACf,KAAkB;IAElB,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC;IAC7D,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,YAAY,CAAC;IACxE,IAAI,GAAG,CAAC,OAAO;QACb,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC;IACvE,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC;AACvE,CAAC"}
|
package/dist/pagination.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import type { Track } from '@sudobility/music_types';
|
|
1
|
+
import type { PaperOrientation, PaperSize, Track } from '@sudobility/music_types';
|
|
2
2
|
import type { LayoutPlan } from './layout.js';
|
|
3
|
-
/** The papers a score prints on, in the order a picker offers them. */
|
|
4
|
-
export declare const PAPER_SIZES: readonly ["a4", "letter", "legal"];
|
|
5
|
-
export type PaperSize = (typeof PAPER_SIZES)[number];
|
|
6
|
-
/** Portrait first: it is the default and what almost every part is. */
|
|
7
|
-
export declare const PAPER_ORIENTATIONS: readonly ["portrait", "landscape"];
|
|
8
|
-
export type PaperOrientation = (typeof PAPER_ORIENTATIONS)[number];
|
|
9
3
|
/** Portrait dimensions in millimetres; landscape swaps them. */
|
|
10
4
|
export declare const PAPER_DIMENSIONS_MM: Record<PaperSize, {
|
|
11
5
|
width: number;
|
package/dist/pagination.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAEV,gBAAgB,EAChB,SAAS,EACT,KAAK,EACN,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AAE5D,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,SAAS,EACT;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKlC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAuB,GAChC,MAAM,CAOR;AAED,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG;IAAE,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAOpD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AA6B/B;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,MAAM,GACtB,MAAM,CAQR;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,KAAK,GAChB,SAAS,EAAE,CA+Bb"}
|
package/dist/pagination.js
CHANGED
|
@@ -10,10 +10,6 @@
|
|
|
10
10
|
* of a phrase costs a real player a hand.
|
|
11
11
|
*/
|
|
12
12
|
import { isSilentMeasure } from '@sudobility/music_types';
|
|
13
|
-
/** The papers a score prints on, in the order a picker offers them. */
|
|
14
|
-
export const PAPER_SIZES = ['a4', 'letter', 'legal'];
|
|
15
|
-
/** Portrait first: it is the default and what almost every part is. */
|
|
16
|
-
export const PAPER_ORIENTATIONS = ['portrait', 'landscape'];
|
|
17
13
|
/** Portrait dimensions in millimetres; landscape swaps them. */
|
|
18
14
|
export const PAPER_DIMENSIONS_MM = {
|
|
19
15
|
a4: { width: 210, height: 297 },
|
package/dist/pagination.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,8 @@ export type PlaybackCanvasTarget = {
|
|
|
26
26
|
writtenTicksPerSecond(tick: number): number;
|
|
27
27
|
/** How long lit notes take to draw here; see `ScoreCanvas.highlightLatencySeconds`. */
|
|
28
28
|
subscribeHighlightLatency?(listener: (seconds: number) => void): () => void;
|
|
29
|
+
/** The cursor has moved into a new system; see `ScoreCanvas.subscribeCursorSystem`. */
|
|
30
|
+
subscribeCursorSystem?(listener: (tick: number) => void): () => void;
|
|
29
31
|
};
|
|
30
32
|
export type PlaybackBindingOptions = {
|
|
31
33
|
position: IMusicPosition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback-binding.d.ts","sourceRoot":"","sources":["../src/playback-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wFAAwF;AACxF,eAAO,MAAM,aAAa,OAAO,CAAC;AAQlC,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1C,eAAe,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAAC;IACtD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,uFAAuF;IACvF,yBAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"playback-binding.d.ts","sourceRoot":"","sources":["../src/playback-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wFAAwF;AACxF,eAAO,MAAM,aAAa,OAAO,CAAC;AAQlC,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1C,eAAe,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAAC;IACtD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,uFAAuF;IACvF,yBAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5E,uFAAuF;IACvF,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACtE,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,wEAAwE;IACxE,UAAU,CAAC,EAAE,CACX,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,IAAI,KAC/C,MAAM,IAAI,CAAC;IAChB;;;;;;;;;OASG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,EACE,QAAQ,EACR,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,MAAa,EACb,GAAG,GACJ,EAAE,sBAAsB,GACxB,MAAM,IAAI,CA0HZ"}
|
package/dist/playback-binding.js
CHANGED
|
@@ -96,6 +96,18 @@ export function bindPlaybackToCanvas(canvas, { position, defer, onSounding, setS
|
|
|
96
96
|
? canvas.subscribeHighlightLatency(setSoundingRenderDelay)
|
|
97
97
|
: undefined;
|
|
98
98
|
const unsubscribeSounding = onSounding?.(notes => canvas.setPlayingNotes(notes));
|
|
99
|
+
/*
|
|
100
|
+
The page turn rides on the cursor's own clock, not on the next report.
|
|
101
|
+
|
|
102
|
+
`followTo` is still the one decision — the same once-per-bar guard, so the
|
|
103
|
+
report that arrives a moment later finds the bar already followed and does
|
|
104
|
+
nothing — but it is taken at the tick the caret actually crosses into the
|
|
105
|
+
new system. Waiting for a report meant the caret was placed in a system the
|
|
106
|
+
view had not scrolled to yet, and it was off screen until it caught up.
|
|
107
|
+
*/
|
|
108
|
+
const unsubscribeSystem = follow
|
|
109
|
+
? canvas.subscribeCursorSystem?.(tick => followTo(tick))
|
|
110
|
+
: undefined;
|
|
99
111
|
// The cursor starts where the playhead is, without scrolling anywhere.
|
|
100
112
|
canvas.setCursorTick(position.tick);
|
|
101
113
|
motion = { tick: position.tick, atMs: now(), ticksPerSecond: 0 };
|
|
@@ -105,6 +117,7 @@ export function bindPlaybackToCanvas(canvas, { position, defer, onSounding, setS
|
|
|
105
117
|
unsubscribePosition();
|
|
106
118
|
unsubscribeSounding?.();
|
|
107
119
|
unsubscribeLatency?.();
|
|
120
|
+
unsubscribeSystem?.();
|
|
108
121
|
};
|
|
109
122
|
}
|
|
110
123
|
//# sourceMappingURL=playback-binding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback-binding.js","sourceRoot":"","sources":["../src/playback-binding.ts"],"names":[],"mappings":"AAiBA,wFAAwF;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,6DAA6D;AAC7D,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,8DAA8D;AAC9D,MAAM,0BAA0B,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"playback-binding.js","sourceRoot":"","sources":["../src/playback-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where to scroll so the playing measure stays in view.
|
|
3
|
+
*
|
|
4
|
+
* Pure over the `LayoutPlan` — no DOM, no store — so the arithmetic is
|
|
5
|
+
* unit-testable, in the same shape as `autoscroll.ts` and `track-gutter.ts`.
|
|
6
|
+
*
|
|
7
|
+
* The rule that matters here is that following playback must not undo the
|
|
8
|
+
* reader's own vertical scroll. A multi-track score is taller than the viewport,
|
|
9
|
+
* so the reader picks a track to watch; scrolling to the top of each new system
|
|
10
|
+
* threw that away and snapped back to track 1 every time the music wrapped.
|
|
11
|
+
* Both modes therefore preserve vertical position, by different means:
|
|
12
|
+
*
|
|
13
|
+
* - **Page mode** scrolls only when the system being played is not already on
|
|
14
|
+
* screen, and then keeps the *offset within the system*: if track 3 sits at
|
|
15
|
+
* the top of the viewport, it still does after the wrap, because the new
|
|
16
|
+
* system's top replaces the old one's and the reader's offset into it is
|
|
17
|
+
* carried over.
|
|
18
|
+
* - **Continuous mode** is one very wide system, so following the music is
|
|
19
|
+
* purely horizontal and vertical scroll is left completely alone. It too
|
|
20
|
+
* moves only when the playing measure is reaching the edge of the viewport.
|
|
21
|
+
*/
|
|
22
|
+
import type { LayoutMode } from '@sudobility/music_types';
|
|
1
23
|
import type { LayoutPlan } from './layout.js';
|
|
2
24
|
export type PlaybackScrollParams = {
|
|
3
25
|
plan: LayoutPlan;
|
|
4
|
-
layoutMode:
|
|
26
|
+
layoutMode: LayoutMode;
|
|
5
27
|
zoom: number;
|
|
6
28
|
/** Index of the measure now playing. */
|
|
7
29
|
measureIndex: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback-scroll.d.ts","sourceRoot":"","sources":["../src/playback-scroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playback-scroll.d.ts","sourceRoot":"","sources":["../src/playback-scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AA4BjE;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,EACT,cAAc,EACd,MAAM,GACP,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,IAAI,CA4EpD"}
|
package/dist/playback-scroll.js
CHANGED
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Where to scroll so the playing measure stays in view.
|
|
3
|
-
*
|
|
4
|
-
* Pure over the `LayoutPlan` — no DOM, no store — so the arithmetic is
|
|
5
|
-
* unit-testable, in the same shape as `autoscroll.ts` and `track-gutter.ts`.
|
|
6
|
-
*
|
|
7
|
-
* The rule that matters here is that following playback must not undo the
|
|
8
|
-
* reader's own vertical scroll. A multi-track score is taller than the viewport,
|
|
9
|
-
* so the reader picks a track to watch; scrolling to the top of each new system
|
|
10
|
-
* threw that away and snapped back to track 1 every time the music wrapped.
|
|
11
|
-
* Both modes therefore preserve vertical position, by different means:
|
|
12
|
-
*
|
|
13
|
-
* - **Page mode** scrolls only when the system being played is not already on
|
|
14
|
-
* screen, and then keeps the *offset within the system*: if track 3 sits at
|
|
15
|
-
* the top of the viewport, it still does after the wrap, because the new
|
|
16
|
-
* system's top replaces the old one's and the reader's offset into it is
|
|
17
|
-
* carried over.
|
|
18
|
-
* - **Continuous mode** is one very wide system, so following the music is
|
|
19
|
-
* purely horizontal and vertical scroll is left completely alone. It too
|
|
20
|
-
* moves only when the playing measure is reaching the edge of the viewport.
|
|
21
|
-
*/
|
|
22
1
|
import { TRACK_INFO_WIDTH } from './layout.js';
|
|
23
2
|
/** The system containing `measureIndex`, or null if it is outside the plan. */
|
|
24
3
|
function systemOf(plan, measureIndex) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback-scroll.js","sourceRoot":"","sources":["../src/playback-scroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playback-scroll.js","sourceRoot":"","sources":["../src/playback-scroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which keyboard keys light up during playback: the MIDI pitches currently
|
|
3
|
+
* sounding on the active track.
|
|
4
|
+
*
|
|
5
|
+
* The engine reports sounding notes with their track and pitch already
|
|
6
|
+
* resolved — it knew both when it scheduled them — so this is a filter over
|
|
7
|
+
* data it was handed. It used to take bare note ids and call `findEvent` for
|
|
8
|
+
* each, which is a linear scan of every track, measure and voice in the score,
|
|
9
|
+
* run twenty times a second. On a large score that alone was measurable CPU.
|
|
10
|
+
*
|
|
11
|
+
* Shared because **both apps have a keyboard and only one had this rule**. The
|
|
12
|
+
* React Native app lit every sounding note on every track, so on a multi-track
|
|
13
|
+
* score its keys flickered with parts the reader could not see — the same
|
|
14
|
+
* mistake the notation highlighting made before `noteColorsFor`, and the same
|
|
15
|
+
* reason it is wrong: a lit key is meant to say "this is what you are hearing
|
|
16
|
+
* on the part you are reading".
|
|
17
|
+
*
|
|
18
|
+
* Here, beside `keyboardKeys`, because it is the keyboard's presentation — which
|
|
19
|
+
* keys draw pressed — rather than an edit: it changes no score.
|
|
20
|
+
*/
|
|
21
|
+
import type { SoundingNote, TransportState, UUID } from '@sudobility/music_types';
|
|
22
|
+
export declare function playingPitchesForTrack(sounding: readonly SoundingNote[], trackId: UUID | null): Set<number>;
|
|
23
|
+
/**
|
|
24
|
+
* Whether two sets of lit keys light the same keys.
|
|
25
|
+
*
|
|
26
|
+
* The sounding notes change on every note of every track, and the keyboard
|
|
27
|
+
* shows one: a new set per change is a new value to React even when not one of
|
|
28
|
+
* its keys moved, so on a multi-track score the whole keyboard re-rendered for
|
|
29
|
+
* notes it does not show. Both apps' keyboards keep the set they have when this
|
|
30
|
+
* says nothing changed.
|
|
31
|
+
*/
|
|
32
|
+
export declare function samePitchSet(a: ReadonlySet<number>, b: ReadonlySet<number>): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Every key the keyboard should draw pressed.
|
|
35
|
+
*
|
|
36
|
+
* The active track's sounding pitches — **only while playing** — plus the keys
|
|
37
|
+
* a finger is holding. Gated on the transport rather than on the set being
|
|
38
|
+
* non-empty because the engine clears sounding notes on `stop()` but not on
|
|
39
|
+
* `pause()`, so without the gate a pause left whatever was mid-chord stuck
|
|
40
|
+
* lit. The web keyboard had that gate and the held keys; the native keyboard
|
|
41
|
+
* had neither, so a paused chord stayed lit and a held key did not show.
|
|
42
|
+
*/
|
|
43
|
+
export declare function litKeys(sounding: readonly SoundingNote[], activeTrackId: UUID | null, transportState: TransportState, held: Iterable<number>): Set<number>;
|
|
44
|
+
//# sourceMappingURL=playing-pitches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playing-pitches.d.ts","sourceRoot":"","sources":["../src/playing-pitches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,IAAI,EACL,MAAM,yBAAyB,CAAC;AAEjC,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,OAAO,EAAE,IAAI,GAAG,IAAI,GACnB,GAAG,CAAC,MAAM,CAAC,CASb;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EACtB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GACrB,OAAO,CAKT;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,aAAa,EAAE,IAAI,GAAG,IAAI,EAC1B,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrB,GAAG,CAAC,MAAM,CAAC,CAOb"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export function playingPitchesForTrack(sounding, trackId) {
|
|
2
|
+
const pitches = new Set();
|
|
3
|
+
if (!trackId)
|
|
4
|
+
return pitches;
|
|
5
|
+
for (const note of sounding) {
|
|
6
|
+
// Lighting a key for a note the user cannot see would be noise, not
|
|
7
|
+
// information — the keyboard shows one track.
|
|
8
|
+
if (note.trackId === trackId)
|
|
9
|
+
pitches.add(note.midi);
|
|
10
|
+
}
|
|
11
|
+
return pitches;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Whether two sets of lit keys light the same keys.
|
|
15
|
+
*
|
|
16
|
+
* The sounding notes change on every note of every track, and the keyboard
|
|
17
|
+
* shows one: a new set per change is a new value to React even when not one of
|
|
18
|
+
* its keys moved, so on a multi-track score the whole keyboard re-rendered for
|
|
19
|
+
* notes it does not show. Both apps' keyboards keep the set they have when this
|
|
20
|
+
* says nothing changed.
|
|
21
|
+
*/
|
|
22
|
+
export function samePitchSet(a, b) {
|
|
23
|
+
if (a === b)
|
|
24
|
+
return true;
|
|
25
|
+
if (a.size !== b.size)
|
|
26
|
+
return false;
|
|
27
|
+
for (const midi of a)
|
|
28
|
+
if (!b.has(midi))
|
|
29
|
+
return false;
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Every key the keyboard should draw pressed.
|
|
34
|
+
*
|
|
35
|
+
* The active track's sounding pitches — **only while playing** — plus the keys
|
|
36
|
+
* a finger is holding. Gated on the transport rather than on the set being
|
|
37
|
+
* non-empty because the engine clears sounding notes on `stop()` but not on
|
|
38
|
+
* `pause()`, so without the gate a pause left whatever was mid-chord stuck
|
|
39
|
+
* lit. The web keyboard had that gate and the held keys; the native keyboard
|
|
40
|
+
* had neither, so a paused chord stayed lit and a held key did not show.
|
|
41
|
+
*/
|
|
42
|
+
export function litKeys(sounding, activeTrackId, transportState, held) {
|
|
43
|
+
const lit = transportState === 'playing'
|
|
44
|
+
? playingPitchesForTrack(sounding, activeTrackId)
|
|
45
|
+
: new Set();
|
|
46
|
+
for (const midi of held)
|
|
47
|
+
lit.add(midi);
|
|
48
|
+
return lit;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=playing-pitches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playing-pitches.js","sourceRoot":"","sources":["../src/playing-pitches.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,sBAAsB,CACpC,QAAiC,EACjC,OAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,oEAAoE;QACpE,8CAA8C;QAC9C,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,CAAsB,EACtB,CAAsB;IAEtB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CACrB,QAAiC,EACjC,aAA0B,EAC1B,cAA8B,EAC9B,IAAsB;IAEtB,MAAM,GAAG,GACP,cAAc,KAAK,SAAS;QAC1B,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC;QACjD,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,IAAI;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/print-plan.d.ts
CHANGED
|
@@ -1,25 +1,8 @@
|
|
|
1
|
-
import type { Score } from '@sudobility/music_types';
|
|
1
|
+
import type { PaperOrientation, PaperSize, Score } from '@sudobility/music_types';
|
|
2
2
|
import type { LayoutPlan } from './layout.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { PrintPage } from './pagination.js';
|
|
4
4
|
import { printRenderOptions } from './print-layout.js';
|
|
5
5
|
import type { PrintSystemSlice } from './print-layout.js';
|
|
6
|
-
/**
|
|
7
|
-
* The paper picker. `css` is the `@page` size keyword; an orientation's value
|
|
8
|
-
* is its own CSS keyword already.
|
|
9
|
-
*
|
|
10
|
-
* A4 has a key like the others even though it reads "A4" in both languages —
|
|
11
|
-
* one shape for every entry is what lets a picker map straight through, and the
|
|
12
|
-
* locales list it as shared by design.
|
|
13
|
-
*/
|
|
14
|
-
export declare const PAPER_OPTIONS: ReadonlyArray<{
|
|
15
|
-
value: PaperSize;
|
|
16
|
-
labelKey: string;
|
|
17
|
-
css: string;
|
|
18
|
-
}>;
|
|
19
|
-
export declare const ORIENTATION_OPTIONS: ReadonlyArray<{
|
|
20
|
-
value: PaperOrientation;
|
|
21
|
-
labelKey: string;
|
|
22
|
-
}>;
|
|
23
6
|
/** The whole score, as against one track's id. */
|
|
24
7
|
export declare const WHOLE_SCORE = "score";
|
|
25
8
|
export type PrintPlanOptions = {
|
package/dist/print-plan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-plan.d.ts","sourceRoot":"","sources":["../src/print-plan.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"print-plan.d.ts","sourceRoot":"","sources":["../src/print-plan.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,KAAK,EACN,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAEL,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,kDAAkD;AAClD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,qIAAqI;IACrI,KAAK,EAAE,KAAK,CAAC;IACb,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,2BAA2B;IAC3B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACrD,0EAA0E;IAC1E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,gBAAqB,GAC7B,SAAS,GAAG,IAAI,CAiClB"}
|
package/dist/print-plan.js
CHANGED
|
@@ -17,40 +17,8 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { displayScore, extractPart, withRehearsalMarks, } from '@sudobility/music_types';
|
|
19
19
|
import { computeLayout } from './layout.js';
|
|
20
|
-
import {
|
|
20
|
+
import { paginate, usablePageHeight } from './pagination.js';
|
|
21
21
|
import { PRINT_WIDTH, printRenderOptions, printSystems, } from './print-layout.js';
|
|
22
|
-
const PAPER_LABEL_KEY = {
|
|
23
|
-
a4: 'print.paperA4',
|
|
24
|
-
letter: 'print.paperLetter',
|
|
25
|
-
legal: 'print.paperLegal',
|
|
26
|
-
};
|
|
27
|
-
/** The CSS `@page { size }` keyword for each paper. */
|
|
28
|
-
const PAPER_CSS = {
|
|
29
|
-
a4: 'A4',
|
|
30
|
-
letter: 'letter',
|
|
31
|
-
legal: 'legal',
|
|
32
|
-
};
|
|
33
|
-
const ORIENTATION_LABEL_KEY = {
|
|
34
|
-
portrait: 'print.portrait',
|
|
35
|
-
landscape: 'print.landscape',
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* The paper picker. `css` is the `@page` size keyword; an orientation's value
|
|
39
|
-
* is its own CSS keyword already.
|
|
40
|
-
*
|
|
41
|
-
* A4 has a key like the others even though it reads "A4" in both languages —
|
|
42
|
-
* one shape for every entry is what lets a picker map straight through, and the
|
|
43
|
-
* locales list it as shared by design.
|
|
44
|
-
*/
|
|
45
|
-
export const PAPER_OPTIONS = PAPER_SIZES.map(value => ({
|
|
46
|
-
value,
|
|
47
|
-
labelKey: PAPER_LABEL_KEY[value],
|
|
48
|
-
css: PAPER_CSS[value],
|
|
49
|
-
}));
|
|
50
|
-
export const ORIENTATION_OPTIONS = PAPER_ORIENTATIONS.map(value => ({
|
|
51
|
-
value,
|
|
52
|
-
labelKey: ORIENTATION_LABEL_KEY[value],
|
|
53
|
-
}));
|
|
54
22
|
/** The whole score, as against one track's id. */
|
|
55
23
|
export const WHOLE_SCORE = 'score';
|
|
56
24
|
/**
|
package/dist/print-plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-plan.js","sourceRoot":"","sources":["../src/print-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"print-plan.js","sourceRoot":"","sources":["../src/print-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,kDAAkD;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AA2BnC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CACvB,KAAY,EACZ,UAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,KAAK,WAAW,CAAC;IAErC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAsB,MAAM;QACxC,CAAC,CAAC,CAAC,KAAK,CAAC;QACT,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,MAAM;IACxD,yDAAyD;IACzD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CACtC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,OAAO;QACd,QAAQ;QACR,IAAI;QACJ,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;QAC1B,KAAK;QACL,UAAU;QACV,aAAa;QACb,WAAW,EAAE,SAAS,EAAE,EAAE,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC"}
|