@sudobility/music_drawing 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/canvas-renderer.d.ts +180 -0
  2. package/dist/canvas-renderer.d.ts.map +1 -0
  3. package/dist/canvas-renderer.js +831 -0
  4. package/dist/canvas-renderer.js.map +1 -0
  5. package/dist/convert.d.ts +122 -0
  6. package/dist/convert.d.ts.map +1 -0
  7. package/dist/convert.js +426 -0
  8. package/dist/convert.js.map +1 -0
  9. package/dist/display-timing.d.ts +68 -0
  10. package/dist/display-timing.d.ts.map +1 -0
  11. package/dist/display-timing.js +192 -0
  12. package/dist/display-timing.js.map +1 -0
  13. package/dist/icon-canvas.d.ts +12 -0
  14. package/dist/icon-canvas.d.ts.map +1 -0
  15. package/dist/icon-canvas.js +62 -0
  16. package/dist/icon-canvas.js.map +1 -0
  17. package/dist/index.d.ts +30 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +30 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/layout.d.ts +159 -0
  22. package/dist/layout.d.ts.map +1 -0
  23. package/dist/layout.js +362 -0
  24. package/dist/layout.js.map +1 -0
  25. package/dist/measure-content.d.ts +114 -0
  26. package/dist/measure-content.d.ts.map +1 -0
  27. package/dist/measure-content.js +553 -0
  28. package/dist/measure-content.js.map +1 -0
  29. package/dist/note-color.d.ts +48 -0
  30. package/dist/note-color.d.ts.map +1 -0
  31. package/dist/note-color.js +81 -0
  32. package/dist/note-color.js.map +1 -0
  33. package/dist/pagination.d.ts +57 -0
  34. package/dist/pagination.d.ts.map +1 -0
  35. package/dist/pagination.js +152 -0
  36. package/dist/pagination.js.map +1 -0
  37. package/dist/percussion.d.ts +47 -0
  38. package/dist/percussion.d.ts.map +1 -0
  39. package/dist/percussion.js +172 -0
  40. package/dist/percussion.js.map +1 -0
  41. package/dist/playhead.d.ts +37 -0
  42. package/dist/playhead.d.ts.map +1 -0
  43. package/dist/playhead.js +89 -0
  44. package/dist/playhead.js.map +1 -0
  45. package/dist/test/canvas-stub.d.ts +21 -0
  46. package/dist/test/canvas-stub.d.ts.map +1 -0
  47. package/dist/test/canvas-stub.js +51 -0
  48. package/dist/test/canvas-stub.js.map +1 -0
  49. package/dist/test/fixtures.d.ts +47 -0
  50. package/dist/test/fixtures.d.ts.map +1 -0
  51. package/dist/test/fixtures.js +433 -0
  52. package/dist/test/fixtures.js.map +1 -0
  53. package/dist/types.d.ts +74 -0
  54. package/dist/types.d.ts.map +1 -0
  55. package/dist/types.js +9 -0
  56. package/dist/types.js.map +1 -0
  57. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-renderer.js","sourceRoot":"","sources":["../src/canvas-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Domain -> VexFlow conversion helpers (spec §7, §26): pitch/duration/key
3
+ * spelling, chord grouping, and building `StaveNote`s (with dots,
4
+ * articulations, rest handling, and per-key tie metadata) for one voice's
5
+ * worth of events. Accidental *glyphs* are deliberately NOT decided here —
6
+ * see the comment above the `Articulation`/`Dot` modifier block in
7
+ * `buildVoiceContent` — `renderer.ts` derives them per measure via
8
+ * VexFlow's own `Accidental.applyAccidentals`, which is key-signature- and
9
+ * context-aware.
10
+ *
11
+ * Pure-ish: builds VexFlow objects but never touches the DOM, a `Stave`'s
12
+ * position, or a rendering context. No store/React imports (spec §3, §37).
13
+ */
14
+ import { StaveNote } from 'vexflow';
15
+ import type { StemmableNote } from 'vexflow';
16
+ import type { Hairpin as DomainHairpin, Ottava as DomainOttava, KeySignature, MusicalEvent, Pitch } from '@sudobility/music_types';
17
+ import type { DisplayGroup } from './display-timing.js';
18
+ /** `Pitch` -> VexFlow key string, e.g. `{step:'C',accidental:1,octave:4}` -> `"c#/4"`. */
19
+ export declare function pitchToVexKey(pitch: Pitch): string;
20
+ export type VexDuration = {
21
+ code: string;
22
+ dots: 0 | 1;
23
+ };
24
+ /**
25
+ * Maps a tick length to a VexFlow duration code + dot count. `decomposeDuration`
26
+ * (domain layer) already greedily breaks a span into the largest renderable
27
+ * chunks, but its documented fallback is to emit a non-standard remainder
28
+ * tick length verbatim when nothing fits exactly (e.g. a span shorter than a
29
+ * thirty-second note, or one that doesn't land on any named duration at this
30
+ * PPQ). For that fallback case we approximate to the *nearest* renderable
31
+ * duration by tick distance so rendering never throws; the visual duration
32
+ * won't be tick-exact in that rare case (documented limitation, spec §26
33
+ * treats layout as heuristic).
34
+ */
35
+ export declare function ticksToVexDuration(ticks: number, ppq: number): VexDuration;
36
+ /** `KeySignature` -> VexFlow key spec string (e.g. `{fifths:-2,mode:'major'}` -> `"Bb"`). Clamped to [-7,7]. */
37
+ export declare function keySignatureToVexSpec(ks: KeySignature): string;
38
+ /** Groups events by identical `(startTick, durationTicks)` — VexFlow chord candidates within a single voice. */
39
+ export declare function groupSimultaneous(events: MusicalEvent[]): MusicalEvent[][];
40
+ /**
41
+ * Per-key tie state, parallel to a chord `StaveNote`'s `keys`/`getKeys()`
42
+ * array (index-for-index — both are built from the same `group` in
43
+ * `buildVoiceContent`). Ties must be matched between two adjacent notes by
44
+ * *pitch*, never by array index/adjacency alone: a chord where only one of
45
+ * several members ties into the next chord must produce exactly one
46
+ * `StaveTie`, on the matching key indices on each side — see
47
+ * `domain/score/ties.ts`'s `findForwardPartner`/`findBackwardPartner`,
48
+ * which documents the same requirement for the domain-level tie chain.
49
+ */
50
+ export type KeyTie = {
51
+ pitch: Pitch;
52
+ tieStart: boolean;
53
+ tieStop: boolean;
54
+ };
55
+ /** One produced `StaveNote` (possibly a chord, possibly one segment of a tie-decomposed event) and the metadata needed to build id maps and cross-note ties. */
56
+ export type NoteMeta = {
57
+ /** The id set via `note.setAttribute('id', vexId)`; the drawn SVG group's id is `vf-${vexId}`. */
58
+ vexId: string;
59
+ /** Domain event ids this VexFlow note represents (>1 for a chord). */
60
+ eventIds: string[];
61
+ /** `true` if any key ties out of/into this note — a cheap pre-filter; the actual tie must still be resolved per-key via `keyTies` (see its doc). */
62
+ tieStart: boolean;
63
+ tieStop: boolean;
64
+ isRest: boolean;
65
+ /** Per-key tie state, parallel to the `StaveNote`'s keys. Empty for rests. */
66
+ keyTies: KeyTie[];
67
+ /**
68
+ * Whether a phrase mark starts or ends here.
69
+ *
70
+ * Not per-key, unlike ties: a slur is one curve over a run of notes, so a
71
+ * chord under one carries it as a whole rather than per notehead.
72
+ */
73
+ slurStart: boolean;
74
+ slurStop: boolean;
75
+ /**
76
+ * The ends of a hairpin, carried for the same reason and with the same rule
77
+ * as the slur above: one wedge over a run of notes, so a chord under one
78
+ * carries it whole rather than per notehead.
79
+ *
80
+ * The start keeps its direction rather than being a boolean, because that is
81
+ * what decides which way the wedge opens.
82
+ */
83
+ hairpinStart: DomainHairpin | null;
84
+ hairpinStop: boolean;
85
+ /** The ends of an octave bracket, carried like the hairpin's. */
86
+ ottavaStart: DomainOttava | null;
87
+ ottavaStop: boolean;
88
+ /** The ends of a slide. */
89
+ glissandoStart: boolean;
90
+ glissandoStop: boolean;
91
+ };
92
+ export type VoiceContent = {
93
+ /**
94
+ * Everything the VexFlow voice holds, spacers included — this is what goes
95
+ * into `Voice.addTickables` and into beaming, and what the formatter counts.
96
+ */
97
+ tickables: StemmableNote[];
98
+ /** The drawn notes only, parallel to `metas`; spacers are not notes. */
99
+ notes: StaveNote[];
100
+ metas: NoteMeta[];
101
+ };
102
+ /**
103
+ * Builds VexFlow `StaveNote`s for one voice's worth of display groups, as
104
+ * decided by `displayGroups` — which is where a measure's timing is resolved
105
+ * into durations that can actually be drawn. Each group becomes one
106
+ * `StaveNote`, with several events in a group drawn as a chord.
107
+ *
108
+ * A group whose duration isn't representable as a single VexFlow duration is
109
+ * decomposed (`decomposeDuration`) into consecutive `StaveNote`s tied
110
+ * together, mirroring the domain's own `splitNoteAcrossMeasures` convention
111
+ * (first/middle/last tie flags).
112
+ *
113
+ * Returns `notes`/`metas` as parallel arrays (same length, same order).
114
+ */
115
+ export declare function buildVoiceContent(groups: DisplayGroup[], ppq: number, glyphScale?: number,
116
+ /**
117
+ * Draw the events as drums rather than pitches: fixed staff positions and
118
+ * cross noteheads, per `percussion.ts`. A drum's "pitch" says which drum was
119
+ * struck, so drawn literally a kick lands six ledger lines below the staff.
120
+ */
121
+ isPercussion?: boolean): VoiceContent;
122
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAUL,SAAS,EAEV,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAGV,OAAO,IAAI,aAAa,EAExB,MAAM,IAAI,YAAY,EAEtB,YAAY,EACZ,YAAY,EAEZ,KAAK,EACN,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAaxD,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAElD;AAsBD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAa1E;AAqCD,gHAAgH;AAChH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAM9D;AA8CD,gHAAgH;AAChH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,EAAE,CAY1E;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3E,gKAAgK;AAChK,MAAM,MAAM,QAAQ,GAAG;IACrB,kGAAkG;IAClG,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oJAAoJ;IACpJ,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB;;;OAGG;IACH,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,wEAAwE;IACxE,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,CAAC;AAIF;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,EAAE,EACtB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM;AACnB;;;;GAIG;AACH,YAAY,UAAQ,GACnB,YAAY,CAiSd"}
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Domain -> VexFlow conversion helpers (spec §7, §26): pitch/duration/key
3
+ * spelling, chord grouping, and building `StaveNote`s (with dots,
4
+ * articulations, rest handling, and per-key tie metadata) for one voice's
5
+ * worth of events. Accidental *glyphs* are deliberately NOT decided here —
6
+ * see the comment above the `Articulation`/`Dot` modifier block in
7
+ * `buildVoiceContent` — `renderer.ts` derives them per measure via
8
+ * VexFlow's own `Accidental.applyAccidentals`, which is key-signature- and
9
+ * context-aware.
10
+ *
11
+ * Pure-ish: builds VexFlow objects but never touches the DOM, a `Stave`'s
12
+ * position, or a rendering context. No store/React imports (spec §3, §37).
13
+ */
14
+ import { Annotation, AnnotationVerticalJustify, Articulation, Dot, GhostNote, GraceNote, GraceNoteGroup, FretHandFinger, Ornament, StaveNote, Stroke, } from 'vexflow';
15
+ import { isNoteEvent } from '@sudobility/music_types';
16
+ import { ticksFor } from '@sudobility/music_types';
17
+ import { decomposeDuration } from '@sudobility/music_types';
18
+ import { crossHeadStemOffsets, percussionVexKey } from './percussion.js';
19
+ import { pitchToMidi } from '@sudobility/music_types';
20
+ /** `Pitch.accidental` (-2..2) -> VexFlow accidental suffix/code (`''` for natural, no glyph drawn). */
21
+ const ACCIDENTAL_SUFFIX = {
22
+ [-2]: 'bb',
23
+ [-1]: 'b',
24
+ [0]: '',
25
+ [1]: '#',
26
+ [2]: '##',
27
+ };
28
+ /** `Pitch` -> VexFlow key string, e.g. `{step:'C',accidental:1,octave:4}` -> `"c#/4"`. */
29
+ export function pitchToVexKey(pitch) {
30
+ return `${pitch.step.toLowerCase()}${ACCIDENTAL_SUFFIX[pitch.accidental]}/${pitch.octave}`;
31
+ }
32
+ /** Non-triplet `DurationName`s mapped to VexFlow's duration code, largest first (matches `decomposeDuration`'s candidate order). */
33
+ const VEX_DURATION_CODES = [
34
+ { name: 'whole', code: 'w', dots: 0 },
35
+ { name: 'dotted-whole', code: 'w', dots: 1 },
36
+ { name: 'half', code: 'h', dots: 0 },
37
+ { name: 'dotted-half', code: 'h', dots: 1 },
38
+ { name: 'quarter', code: 'q', dots: 0 },
39
+ { name: 'dotted-quarter', code: 'q', dots: 1 },
40
+ { name: 'eighth', code: '8', dots: 0 },
41
+ { name: 'dotted-eighth', code: '8', dots: 1 },
42
+ { name: 'sixteenth', code: '16', dots: 0 },
43
+ { name: 'dotted-sixteenth', code: '16', dots: 1 },
44
+ { name: 'thirtysecond', code: '32', dots: 0 },
45
+ { name: 'dotted-thirtysecond', code: '32', dots: 1 },
46
+ ];
47
+ /**
48
+ * Maps a tick length to a VexFlow duration code + dot count. `decomposeDuration`
49
+ * (domain layer) already greedily breaks a span into the largest renderable
50
+ * chunks, but its documented fallback is to emit a non-standard remainder
51
+ * tick length verbatim when nothing fits exactly (e.g. a span shorter than a
52
+ * thirty-second note, or one that doesn't land on any named duration at this
53
+ * PPQ). For that fallback case we approximate to the *nearest* renderable
54
+ * duration by tick distance so rendering never throws; the visual duration
55
+ * won't be tick-exact in that rare case (documented limitation, spec §26
56
+ * treats layout as heuristic).
57
+ */
58
+ export function ticksToVexDuration(ticks, ppq) {
59
+ let best = VEX_DURATION_CODES[0];
60
+ let bestDelta = Infinity;
61
+ for (const candidate of VEX_DURATION_CODES) {
62
+ const candidateTicks = ticksFor(candidate.name, ppq);
63
+ const delta = Math.abs(candidateTicks - ticks);
64
+ if (delta === 0)
65
+ return { code: candidate.code, dots: candidate.dots };
66
+ if (delta < bestDelta) {
67
+ bestDelta = delta;
68
+ best = candidate;
69
+ }
70
+ }
71
+ return { code: best.code, dots: best.dots };
72
+ }
73
+ const MAJOR_KEYS_BY_FIFTHS = [
74
+ 'Cb',
75
+ 'Gb',
76
+ 'Db',
77
+ 'Ab',
78
+ 'Eb',
79
+ 'Bb',
80
+ 'F',
81
+ 'C',
82
+ 'G',
83
+ 'D',
84
+ 'A',
85
+ 'E',
86
+ 'B',
87
+ 'F#',
88
+ 'C#',
89
+ ];
90
+ const MINOR_KEYS_BY_FIFTHS = [
91
+ 'Abm',
92
+ 'Ebm',
93
+ 'Bbm',
94
+ 'Fm',
95
+ 'Cm',
96
+ 'Gm',
97
+ 'Dm',
98
+ 'Am',
99
+ 'Em',
100
+ 'Bm',
101
+ 'F#m',
102
+ 'C#m',
103
+ 'G#m',
104
+ 'D#m',
105
+ 'A#m',
106
+ ];
107
+ /** `KeySignature` -> VexFlow key spec string (e.g. `{fifths:-2,mode:'major'}` -> `"Bb"`). Clamped to [-7,7]. */
108
+ export function keySignatureToVexSpec(ks) {
109
+ const clamped = Math.max(-7, Math.min(7, ks.fifths));
110
+ const index = clamped + 7;
111
+ return ks.mode === 'minor'
112
+ ? MINOR_KEYS_BY_FIFTHS[index]
113
+ : MAJOR_KEYS_BY_FIFTHS[index];
114
+ }
115
+ const ARTICULATION_CODE = {
116
+ staccato: 'a.',
117
+ accent: 'a>',
118
+ tenuto: 'a-',
119
+ marcato: 'a^',
120
+ };
121
+ /**
122
+ * The fermata glyph: upright, above the stave.
123
+ *
124
+ * Always above, which is what an engraver does in single-voice music — the
125
+ * inverted form (`a@u`) belongs to the lower part of a two-voice texture, not
126
+ * to any stem-down note. **Known simplification**: a lower voice therefore
127
+ * gets its pause above the stave too, where it should hang below.
128
+ *
129
+ * Deliberately not chosen from the note's stem direction, which is the obvious
130
+ * wrong answer: `StaveNote.getStemDirection()` reports `Stem.UP` for *every*
131
+ * pitch at construction — the real direction is resolved later, during
132
+ * formatting — so keying off it here silently inverts every fermata in the
133
+ * score. Measured: c/4, g/3, e/5 and a/5 all report UP.
134
+ */
135
+ const FERMATA_ABOVE = 'a@a';
136
+ /**
137
+ * Domain ornament -> VexFlow `Ornament` code.
138
+ *
139
+ * **Two of these look transposed and are not.** VexFlow's `'mordent'` draws
140
+ * the `ornamentShortTrill` glyph — the one *without* the vertical stroke,
141
+ * which musicians call an inverted (upper) mordent — while its
142
+ * `'mordent_inverted'` draws `ornamentMordent`, the stroked one that is
143
+ * simply "a mordent". So the two words are used the other way round from the
144
+ * way a player uses them, and mapping them by name draws both backwards.
145
+ * Verified against the constructed glyph codes rather than the docs.
146
+ *
147
+ * `'tr'`, not `'trill'`: the latter is not a code VexFlow knows and throws
148
+ * inside the constructor.
149
+ */
150
+ const ORNAMENT_CODE = {
151
+ trill: 'tr',
152
+ mordent: 'mordent_inverted',
153
+ 'inverted-mordent': 'mordent',
154
+ turn: 'turn',
155
+ };
156
+ /** Groups events by identical `(startTick, durationTicks)` — VexFlow chord candidates within a single voice. */
157
+ export function groupSimultaneous(events) {
158
+ const groups = [];
159
+ let currentKey = null;
160
+ for (const event of events) {
161
+ const key = `${event.startTick}:${event.durationTicks}`;
162
+ if (key !== currentKey) {
163
+ groups.push([]);
164
+ currentKey = key;
165
+ }
166
+ groups[groups.length - 1].push(event);
167
+ }
168
+ return groups;
169
+ }
170
+ const REST_KEY = 'b/4';
171
+ /**
172
+ * Builds VexFlow `StaveNote`s for one voice's worth of display groups, as
173
+ * decided by `displayGroups` — which is where a measure's timing is resolved
174
+ * into durations that can actually be drawn. Each group becomes one
175
+ * `StaveNote`, with several events in a group drawn as a chord.
176
+ *
177
+ * A group whose duration isn't representable as a single VexFlow duration is
178
+ * decomposed (`decomposeDuration`) into consecutive `StaveNote`s tied
179
+ * together, mirroring the domain's own `splitNoteAcrossMeasures` convention
180
+ * (first/middle/last tie flags).
181
+ *
182
+ * Returns `notes`/`metas` as parallel arrays (same length, same order).
183
+ */
184
+ export function buildVoiceContent(groups, ppq, glyphScale,
185
+ /**
186
+ * Draw the events as drums rather than pitches: fixed staff positions and
187
+ * cross noteheads, per `percussion.ts`. A drum's "pitch" says which drum was
188
+ * struck, so drawn literally a kick lands six ledger lines below the staff.
189
+ */
190
+ isPercussion = false) {
191
+ const tickables = [];
192
+ const notes = [];
193
+ const metas = [];
194
+ for (const { events: group, durationTicks } of groups) {
195
+ // A spacer: time the voice must account for so it still sums to the bar,
196
+ // drawing nothing. Two voices on one drum staff need these wherever the
197
+ // other voice is the one playing.
198
+ if (group.length === 0) {
199
+ for (const segmentTicks of decomposeDuration(durationTicks, ppq)) {
200
+ const { code, dots } = ticksToVexDuration(segmentTicks, ppq);
201
+ tickables.push(new GhostNote({ duration: code, dots }));
202
+ }
203
+ continue;
204
+ }
205
+ const first = group[0];
206
+ const isRest = !isNoteEvent(first);
207
+ // The group's display duration, not the event's recorded one: a recorded
208
+ // duration is rarely a note value, and rounding each one independently is
209
+ // what put voices of the same bar on different timelines. See
210
+ // `display-timing.ts`.
211
+ const segments = decomposeDuration(durationTicks, ppq);
212
+ segments.forEach((segmentTicks, segmentIndex) => {
213
+ const isFirstSegment = segmentIndex === 0;
214
+ const isLastSegment = segmentIndex === segments.length - 1;
215
+ const { code, dots } = ticksToVexDuration(segmentTicks, ppq);
216
+ const keys = isRest
217
+ ? [REST_KEY]
218
+ : group.map(e => isPercussion
219
+ ? percussionVexKey(pitchToMidi(e.pitch))
220
+ : pitchToVexKey(e.pitch));
221
+ const staveNote = new StaveNote({
222
+ keys,
223
+ duration: code,
224
+ dots,
225
+ type: isRest ? 'r' : undefined,
226
+ // Omitted rather than passed as undefined: VexFlow reads the key's
227
+ // presence, not its value.
228
+ ...(glyphScale === undefined ? {} : { glyph_font_scale: glyphScale }),
229
+ });
230
+ // A cross notehead is hollow where a stem meets it, so the stem has to
231
+ // reach further in to join up. See `crossHeadStemOffsets`.
232
+ const stemOffsets = crossHeadStemOffsets(keys);
233
+ if (stemOffsets)
234
+ staveNote.getStem()?.setOptions(stemOffsets);
235
+ for (let i = 0; i < dots; i += 1) {
236
+ Dot.buildAndAttach([staveNote], { all: true });
237
+ }
238
+ // Accidental glyphs are NOT added here: `keys` already embeds each
239
+ // note's absolute spelling (e.g. "f#/4"), and `renderer.ts` calls
240
+ // VexFlow's `Accidental.applyAccidentals(voices, keySpec)` once per
241
+ // measure, which decides — in light of the measure's key signature
242
+ // and any earlier accidental on the same pitch/octave in the measure
243
+ // — whether a sharp/flat/natural glyph is actually needed. Adding a
244
+ // modifier unconditionally here would draw a redundant accidental on
245
+ // every in-key altered note (e.g. every F# in G major).
246
+ if (!isRest) {
247
+ group.forEach((event, keyIndex) => {
248
+ const noteEvent = event;
249
+ if (noteEvent.articulation) {
250
+ staveNote.addModifier(new Articulation(ARTICULATION_CODE[noteEvent.articulation]), keyIndex);
251
+ }
252
+ /*
253
+ The pause, above the stave — see `FERMATA_ABOVE`.
254
+
255
+ Added after the articulation deliberately: VexFlow stacks
256
+ modifiers outward in the order they arrive, so a staccato dot sits
257
+ against the notehead and the fermata arches over it, rather than
258
+ the dot floating outside the arc.
259
+ */
260
+ if (noteEvent.fermata) {
261
+ staveNote.addModifier(new Articulation(FERMATA_ABOVE), keyIndex);
262
+ }
263
+ /*
264
+ The ornament sign. A modifier like the others, and only ever one —
265
+ the model holds a single sign, because a trill that is also a turn
266
+ is not a marking anybody writes.
267
+ */
268
+ if (noteEvent.ornament) {
269
+ staveNote.addModifier(new Ornament(ORNAMENT_CODE[noteEvent.ornament]), keyIndex);
270
+ }
271
+ /*
272
+ A rolled chord. Added once, on the first key, because the stroke is
273
+ drawn beside the whole chord rather than beside a notehead — adding
274
+ it per member would stack one wavy line per note.
275
+
276
+ Meaningless on a single note and skipped there: there is only one
277
+ notehead to roll through.
278
+ */
279
+ if (noteEvent.arpeggiate && keyIndex === 0 && group.length > 1) {
280
+ staveNote.addStroke(0, new Stroke(Stroke.Type.ROLL_UP));
281
+ }
282
+ /*
283
+ The finger to play with, beside its own notehead — per key, unlike
284
+ the marks above, because in a chord each note has its own finger.
285
+ */
286
+ if (noteEvent.fingering) {
287
+ staveNote.addModifier(new FretHandFinger(noteEvent.fingering), keyIndex);
288
+ }
289
+ /*
290
+ The dynamic marking, under the stave where it is read.
291
+ `Annotation` rather than VexFlow's `TextDynamics`, which is a
292
+ tickable and would need a voice of its own aligned to this one —
293
+ a whole parallel layout for a piece of text that belongs to a
294
+ note. Only on the first key of a chord: a dynamic marks the
295
+ moment, not each notehead in it.
296
+ */
297
+ /*
298
+ The chord symbol, above the stave where a player reads it — the
299
+ opposite side from the lyric and the dynamic, which is what keeps
300
+ the three legible at once on a lead sheet.
301
+ */
302
+ if (noteEvent.chordSymbol && keyIndex === 0) {
303
+ const symbol = new Annotation(noteEvent.chordSymbol);
304
+ symbol.setVerticalJustification(AnnotationVerticalJustify.TOP);
305
+ symbol.setFont('serif', 12, 'bold');
306
+ staveNote.addModifier(symbol, keyIndex);
307
+ }
308
+ /*
309
+ Ornaments, drawn small and ahead of the note they decorate.
310
+
311
+ A `GraceNoteGroup` is a modifier on the principal, which is the
312
+ same relationship the model stores — the notes are not tickables in
313
+ the voice and take none of the bar's time, so nothing that sums a
314
+ measure has to know they exist.
315
+
316
+ First key only: an ornament leads into the moment, not into each
317
+ notehead of a chord.
318
+ */
319
+ if (noteEvent.graceNotes?.length && keyIndex === 0) {
320
+ const graceNotes = noteEvent.graceNotes.map(grace => {
321
+ const { code, dots } = ticksToVexDuration(grace.durationTicks, ppq);
322
+ return new GraceNote({
323
+ keys: [pitchToVexKey(grace.pitch)],
324
+ duration: code,
325
+ dots,
326
+ slash: grace.slashed ?? false,
327
+ });
328
+ });
329
+ const group = new GraceNoteGroup(graceNotes, true);
330
+ // Beamed when there is more than one, the way a run of ornaments
331
+ // is engraved.
332
+ if (graceNotes.length > 1)
333
+ group.beamNotes();
334
+ staveNote.addModifier(group, keyIndex);
335
+ }
336
+ /*
337
+ The sung syllable, under the stave.
338
+
339
+ Added before the dynamic so VexFlow's modifier context stacks it
340
+ nearest the notes, which is where a singer reads it — a dynamic
341
+ belongs below the words, not between them and the staff. A
342
+ hyphenated syllable prints its own trailing hyphen, because the
343
+ model records that the word continues and nothing else in the draw
344
+ path knows it.
345
+ */
346
+ if (noteEvent.lyric && keyIndex === 0) {
347
+ const continues = noteEvent.lyric.syllabic === 'begin' ||
348
+ noteEvent.lyric.syllabic === 'middle';
349
+ const text = new Annotation(continues ? `${noteEvent.lyric.text}-` : noteEvent.lyric.text);
350
+ text.setVerticalJustification(AnnotationVerticalJustify.BOTTOM);
351
+ text.setFont('serif', 11, 'normal');
352
+ staveNote.addModifier(text, keyIndex);
353
+ }
354
+ if (noteEvent.dynamic && keyIndex === 0) {
355
+ const mark = new Annotation(noteEvent.dynamic);
356
+ mark.setVerticalJustification(AnnotationVerticalJustify.BOTTOM);
357
+ // Bold italic serif is how a dynamic is engraved, and is what
358
+ // distinguishes it from a lyric or a chord symbol at a glance.
359
+ mark.setFont('serif', 12, 'bold', 'italic');
360
+ staveNote.addModifier(mark, keyIndex);
361
+ }
362
+ });
363
+ }
364
+ // Segment vexIds must be unique per drawn StaveNote: reuse the group's
365
+ // primary event id for the first segment (the common, non-decomposed
366
+ // case) so `#vf-<eventId>` resolves directly; later segments (only
367
+ // reached for the non-standard-duration fallback) get a suffix.
368
+ const vexId = isFirstSegment
369
+ ? first.id
370
+ : `${first.id}::seg${segmentIndex}`;
371
+ staveNote.setAttribute('id', vexId);
372
+ // Every segment of a decomposed (non-standard-duration) note repeats
373
+ // the same chord keys, so per-key ties there are unconditional
374
+ // (`!isLastSegment` / `!isFirstSegment`) — only the *last* segment's
375
+ // outgoing tie and the *first* segment's incoming tie depend on the
376
+ // underlying domain event's own tieStart/tieStop.
377
+ const keyTies = isRest
378
+ ? []
379
+ : group.map(event => {
380
+ const noteEvent = event;
381
+ return {
382
+ pitch: noteEvent.pitch,
383
+ tieStart: !isLastSegment || Boolean(noteEvent.tieStart),
384
+ tieStop: !isFirstSegment || Boolean(noteEvent.tieStop),
385
+ };
386
+ });
387
+ const tieStart = keyTies.some(k => k.tieStart);
388
+ const tieStop = keyTies.some(k => k.tieStop);
389
+ tickables.push(staveNote);
390
+ notes.push(staveNote);
391
+ metas.push({
392
+ vexId,
393
+ eventIds: group.map(e => e.id),
394
+ tieStart,
395
+ tieStop,
396
+ isRest,
397
+ keyTies,
398
+ // Only the segment a decomposed note actually begins or ends on can
399
+ // carry the mark, or a note split across a barline would sprout a
400
+ // curve at every join.
401
+ slurStart: isFirstSegment &&
402
+ group.some(e => isNoteEvent(e) && Boolean(e.slurStart)),
403
+ slurStop: isLastSegment &&
404
+ group.some(e => isNoteEvent(e) && Boolean(e.slurStop)),
405
+ // Same first/last-segment rule: a note decomposed across a barline
406
+ // must open its wedge once, not at every tied join.
407
+ hairpinStart: isFirstSegment
408
+ ? (group.find(e => isNoteEvent(e) && e.hairpinStart)?.hairpinStart ?? null)
409
+ : null,
410
+ hairpinStop: isLastSegment &&
411
+ group.some(e => isNoteEvent(e) && Boolean(e.hairpinStop)),
412
+ ottavaStart: isFirstSegment
413
+ ? (group.find(e => isNoteEvent(e) && e.ottavaStart)?.ottavaStart ?? null)
414
+ : null,
415
+ ottavaStop: isLastSegment &&
416
+ group.some(e => isNoteEvent(e) && Boolean(e.ottavaStop)),
417
+ glissandoStart: isFirstSegment &&
418
+ group.some(e => isNoteEvent(e) && Boolean(e.glissandoStart)),
419
+ glissandoStop: isLastSegment &&
420
+ group.some(e => isNoteEvent(e) && Boolean(e.glissandoStop)),
421
+ });
422
+ });
423
+ }
424
+ return { tickables, notes, metas };
425
+ }
426
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}