@sudobility/music_types 0.13.18 → 0.13.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +7 -3
- package/dist/domain/commands/clipboard-commands.d.ts +41 -0
- package/dist/domain/commands/clipboard-commands.d.ts.map +1 -0
- package/dist/domain/commands/clipboard-commands.js +246 -0
- package/dist/domain/commands/clipboard-commands.js.map +1 -0
- package/dist/domain/generation/replacement-region.d.ts.map +1 -1
- package/dist/domain/generation/replacement-region.js +3 -0
- package/dist/domain/generation/replacement-region.js.map +1 -1
- package/dist/domain/generation/style-presets.d.ts +34 -0
- package/dist/domain/generation/style-presets.d.ts.map +1 -0
- package/dist/domain/generation/style-presets.js +274 -0
- package/dist/domain/generation/style-presets.js.map +1 -0
- package/dist/domain/instruments/arrangement-order.js +4 -4
- package/dist/domain/instruments/arrangement-order.js.map +1 -1
- package/dist/domain/notation/notation-icon-art.d.ts +10 -10
- package/dist/domain/notation/notation-icon-art.d.ts.map +1 -1
- package/dist/domain/notation/notation-icon-art.js +850 -817
- package/dist/domain/notation/notation-icon-art.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model/generation.d.ts +29 -1
- package/dist/model/generation.d.ts.map +1 -1
- package/dist/model/generation.js +33 -1
- package/dist/model/generation.js.map +1 -1
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -35,7 +35,7 @@ Everything exports from a single sectioned `src/index.ts`:
|
|
|
35
35
|
8. Zod schemas for the project API
|
|
36
36
|
9. Response envelope (`ApiResponse<T>`, `successResponse`, `errorResponse`, `API_ERROR_CODES`)
|
|
37
37
|
|
|
38
|
-
`src/test-helpers.ts` is a test-only
|
|
38
|
+
`src/test-helpers.ts` is a test-only fixture helper (excluded from the published build); shared score factories live in this package under `domain/score/`.
|
|
39
39
|
|
|
40
40
|
## Gotchas
|
|
41
41
|
|
|
@@ -65,7 +65,11 @@ Everything exports from a single sectioned `src/index.ts`:
|
|
|
65
65
|
`PlaybackObserver` and `AuditionVoice` did move, because that package is the
|
|
66
66
|
only thing that implements or calls them.
|
|
67
67
|
|
|
68
|
-
-
|
|
68
|
+
- Pure shared domain logic belongs here when both frontend and backend need it:
|
|
69
|
+
tick math, factories, commands, validation, instrument knowledge, generation
|
|
70
|
+
presets and prompt-facing shared data. This package must never depend on
|
|
71
|
+
`music_lib`, and `music_api` must never pull in frontend UI/audio code just
|
|
72
|
+
to reach a shared rule.
|
|
69
73
|
- `noteEventSchema`/`restEventSchema` are `.strict()` on purpose (a stray `pitch` key must not pass as a rest); other schemas strip unknown keys for forward compatibility.
|
|
70
74
|
- Ticks are integers at 480 PPQ by convention; `startTick` is absolute.
|
|
71
75
|
- **A picker's option list belongs beside the vocabulary it is built from**
|
|
@@ -116,7 +120,7 @@ Everything exports from a single sectioned `src/index.ts`:
|
|
|
116
120
|
|
|
117
121
|
- `music_api` — backend (Hono/Drizzle/OpenAI proxy), consumes schemas for validation
|
|
118
122
|
- `music_client` — typed network client + React Query hooks
|
|
119
|
-
- `music_lib` —
|
|
123
|
+
- `music_lib` — frontend app logic, adapters, store
|
|
120
124
|
- `music_app` — web app (UI/routing only)
|
|
121
125
|
|
|
122
126
|
## Git Workflow
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ScoreCommand } from "./types.js";
|
|
2
|
+
import type { Measure, Track, UUID } from "../../model/score.js";
|
|
3
|
+
/**
|
|
4
|
+
* The bars at one span of indices, across every track.
|
|
5
|
+
*
|
|
6
|
+
* `tracks[i]` holds the measures copied from `score.tracks[i]`, so putting a
|
|
7
|
+
* slice back is a positional match. A score with fewer tracks than the slice
|
|
8
|
+
* takes what fits and drops the rest, rather than refusing: pasting four bars
|
|
9
|
+
* of a quartet into a piano part should give you the piano's two staves' worth,
|
|
10
|
+
* not an error.
|
|
11
|
+
*/
|
|
12
|
+
export type MeasureSlice = {
|
|
13
|
+
/** How many bars the slice is long. Every entry in `tracks` has this many. */
|
|
14
|
+
count: number;
|
|
15
|
+
tracks: Measure[][];
|
|
16
|
+
};
|
|
17
|
+
/** Empties the named bars, keeping the bars themselves and their markings. */
|
|
18
|
+
export declare function clearMeasuresCommand(measureIds: readonly UUID[], label: string): ScoreCommand;
|
|
19
|
+
/** Empties every bar of a track, keeping the track, its instrument and its mix. */
|
|
20
|
+
export declare function clearTrackCommand(trackId: UUID, label: string): ScoreCommand;
|
|
21
|
+
/**
|
|
22
|
+
* Inserts the slice before `atIndex`, in every track.
|
|
23
|
+
*
|
|
24
|
+
* Everything from that bar on moves later by `slice.count` bars — which is what
|
|
25
|
+
* "insert" means and why this is not `replaceMeasuresCommand` with a longer
|
|
26
|
+
* score afterwards.
|
|
27
|
+
*/
|
|
28
|
+
export declare function insertMeasuresCommand(atIndex: number, slice: MeasureSlice, label: string): ScoreCommand;
|
|
29
|
+
/**
|
|
30
|
+
* Overwrites `slice.count` bars starting at `atIndex`, in every track.
|
|
31
|
+
*
|
|
32
|
+
* The score's length does not change and nothing moves, so a slice running past
|
|
33
|
+
* the end simply stops — replacing bars that are not there would be an insert
|
|
34
|
+
* wearing the wrong name.
|
|
35
|
+
*/
|
|
36
|
+
export declare function replaceMeasuresCommand(atIndex: number, slice: MeasureSlice, label: string): ScoreCommand;
|
|
37
|
+
/** Adds the track at `atIndex`, fitted to the score's own measure grid. */
|
|
38
|
+
export declare function insertTrackCommand(source: Track, atIndex: number, label: string): ScoreCommand;
|
|
39
|
+
/** Replaces one track with a copied one, in place, keeping the score's grid. */
|
|
40
|
+
export declare function replaceTrackCommand(trackId: UUID, source: Track, label: string): ScoreCommand;
|
|
41
|
+
//# sourceMappingURL=clipboard-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard-commands.d.ts","sourceRoot":"","sources":["../../../src/domain/commands/clipboard-commands.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EACV,OAAO,EAEP,KAAK,EACL,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;CACrB,CAAC;AAgCF,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,SAAS,IAAI,EAAE,EAC3B,KAAK,EAAE,MAAM,GACZ,YAAY,CAad;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,EACb,KAAK,EAAE,MAAM,GACZ,YAAY,CAgBd;AA6ED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,GACZ,YAAY,CAsBd;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,GACZ,YAAY,CAiBd;AA2BD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,YAAY,CAUd;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,MAAM,GACZ,YAAY,CAWd"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clearing, and pasting a whole object.
|
|
3
|
+
*
|
|
4
|
+
* These are the score half of the context menu: the commands behind Clear,
|
|
5
|
+
* Delete and the two shapes of Paste, for each of the three things a reader can
|
|
6
|
+
* select. Delete already existed at every level (`deleteEventsCommand`,
|
|
7
|
+
* `deleteMeasureCommand`, `deleteTrackCommand`); what did not was **Clear**,
|
|
8
|
+
* and the two are genuinely different edits rather than two names for one.
|
|
9
|
+
*
|
|
10
|
+
* **Clear keeps the container and empties it.** A cleared bar is still a bar —
|
|
11
|
+
* it keeps its number, its signatures, its barline, its repeats and its clef
|
|
12
|
+
* change, and only the notes become a rest; a cleared track is still a track,
|
|
13
|
+
* with its instrument, clef and mix intact. Delete removes the container, and
|
|
14
|
+
* everything behind it moves up. Offering only Delete meant "empty these four
|
|
15
|
+
* bars" had to be done by deleting them and adding four back, which loses every
|
|
16
|
+
* marking on them and renumbers the rest of the score twice.
|
|
17
|
+
*
|
|
18
|
+
* **A bar is the same bar on every stave, so anything that changes the grid
|
|
19
|
+
* changes it everywhere.** `deleteMeasureCommand` already worked that way. The
|
|
20
|
+
* measure clipboard is therefore a *vertical slice* — the bars at those indices
|
|
21
|
+
* across every track, not one part's — and inserting or replacing puts the
|
|
22
|
+
* slice back across every track. A slice that inserted into one part would
|
|
23
|
+
* leave the score's parts disagreeing about where bar 40 is, which is the thing
|
|
24
|
+
* `changeRepeatsCommand` and `setPickupCommand` both refuse to allow.
|
|
25
|
+
*
|
|
26
|
+
* Nothing here is a store action: each is a pure `(Score) => Score` like every
|
|
27
|
+
* other command, so `music_api` can apply one with no store, and the deciding —
|
|
28
|
+
* insert or replace, clear or delete — stays with whoever asked.
|
|
29
|
+
*/
|
|
30
|
+
import { createId } from "../score/ids.js";
|
|
31
|
+
import { rebuildMeasureTicks } from "../score/factory.js";
|
|
32
|
+
import { transformCommand } from "./snapshot.js";
|
|
33
|
+
import { withTracks } from "./reflow.js";
|
|
34
|
+
/** One rest filling a whole bar — what an emptied measure holds. */
|
|
35
|
+
function restVoice(measure, trackId) {
|
|
36
|
+
const voiceId = createId();
|
|
37
|
+
return {
|
|
38
|
+
id: voiceId,
|
|
39
|
+
name: "Voice 1",
|
|
40
|
+
events: [
|
|
41
|
+
{
|
|
42
|
+
id: createId(),
|
|
43
|
+
startTick: measure.startTick,
|
|
44
|
+
durationTicks: measure.durationTicks,
|
|
45
|
+
voiceId,
|
|
46
|
+
trackId,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The same bar with nothing played in it.
|
|
53
|
+
*
|
|
54
|
+
* Spread rather than rebuilt, so every field this module does not know about
|
|
55
|
+
* survives — a barline, a repeat, an ending, a clef change, a pickup flag, and
|
|
56
|
+
* whatever is added to `Measure` next. Rebuilding the measure from its known
|
|
57
|
+
* fields is how a clear comes to silently drop a marking somebody added later.
|
|
58
|
+
*/
|
|
59
|
+
function clearedMeasure(measure, trackId) {
|
|
60
|
+
return { ...measure, voices: [restVoice(measure, trackId)] };
|
|
61
|
+
}
|
|
62
|
+
/** Empties the named bars, keeping the bars themselves and their markings. */
|
|
63
|
+
export function clearMeasuresCommand(measureIds, label) {
|
|
64
|
+
const wanted = new Set(measureIds);
|
|
65
|
+
return transformCommand(label, (score) => withTracks(score, score.tracks.map((track) => ({
|
|
66
|
+
...track,
|
|
67
|
+
measures: track.measures.map((measure) => wanted.has(measure.id) ? clearedMeasure(measure, track.id) : measure),
|
|
68
|
+
}))));
|
|
69
|
+
}
|
|
70
|
+
/** Empties every bar of a track, keeping the track, its instrument and its mix. */
|
|
71
|
+
export function clearTrackCommand(trackId, label) {
|
|
72
|
+
return transformCommand(label, (score) => withTracks(score, score.tracks.map((track) => track.id === trackId
|
|
73
|
+
? {
|
|
74
|
+
...track,
|
|
75
|
+
measures: track.measures.map((measure) => clearedMeasure(measure, track.id)),
|
|
76
|
+
}
|
|
77
|
+
: track)));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* A copied event, re-identified for the track it is landing in.
|
|
81
|
+
*
|
|
82
|
+
* Fresh ids on every paste, because an id is what the caret lights, what the
|
|
83
|
+
* selection holds and what `findEvent` resolves — two events sharing one would
|
|
84
|
+
* make a paste select its own source.
|
|
85
|
+
*/
|
|
86
|
+
function adoptEvent(event, voiceId, trackId) {
|
|
87
|
+
return { ...event, id: createId(), voiceId, trackId };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A copied bar, re-identified for the track it is landing in.
|
|
91
|
+
*
|
|
92
|
+
* **Its `startTick` is deliberately left as the source's.** A measure and its
|
|
93
|
+
* events state absolute ticks and have to agree with each other;
|
|
94
|
+
* `rebuildMeasureTicks` re-times the whole score afterwards by shifting each
|
|
95
|
+
* measure *and its events* by the same delta, so a bar that arrives internally
|
|
96
|
+
* consistent lands correctly wherever it is spliced. Stamping the destination's
|
|
97
|
+
* tick on the measure alone breaks that agreement and leaves every pasted note
|
|
98
|
+
* sitting outside the bar that holds it — which looks like an empty bar, not
|
|
99
|
+
* like an error.
|
|
100
|
+
*
|
|
101
|
+
* A pasted bar arrives **whole**: its notes, its signatures and its length. That
|
|
102
|
+
* is plainly what inserting a bar means, and it is what keeps replace honest
|
|
103
|
+
* too — a 3/4 bar pasted over a 4/4 one replaces the bar, not just its
|
|
104
|
+
* contents. The grid stays consistent because a slice is a vertical one, so
|
|
105
|
+
* every track receives the same lengths.
|
|
106
|
+
*/
|
|
107
|
+
function adoptMeasure(source, trackId) {
|
|
108
|
+
return {
|
|
109
|
+
...source,
|
|
110
|
+
id: createId(),
|
|
111
|
+
voices: source.voices.map((voice) => {
|
|
112
|
+
const voiceId = createId();
|
|
113
|
+
return {
|
|
114
|
+
...voice,
|
|
115
|
+
id: voiceId,
|
|
116
|
+
events: voice.events.map((event) => adoptEvent(event, voiceId, trackId)),
|
|
117
|
+
};
|
|
118
|
+
}),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* A silent bar of the same shape, for a track the slice has nothing for.
|
|
123
|
+
*
|
|
124
|
+
* Pasting a two-track slice into a four-track score still has to give all four
|
|
125
|
+
* the same bar, or the parts stop agreeing about where each bar is — so the
|
|
126
|
+
* shape comes from the *slice*, never from the destination. Taking the
|
|
127
|
+
* destination's shape is the subtle version of the same bug: two tracks would
|
|
128
|
+
* get the pasted 3/4 bar and the rest would keep a 4/4 one.
|
|
129
|
+
*/
|
|
130
|
+
function blankLike(shape, trackId) {
|
|
131
|
+
const blank = { ...shape, id: createId() };
|
|
132
|
+
return { ...blank, voices: [restVoice(blank, trackId)] };
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* The bar every track should receive at this offset.
|
|
136
|
+
*
|
|
137
|
+
* The first track the slice actually has something for: they all came from one
|
|
138
|
+
* score's grid, so any of them states the length and signatures the whole
|
|
139
|
+
* column must share.
|
|
140
|
+
*/
|
|
141
|
+
function shapeAt(slice, offset) {
|
|
142
|
+
for (const measures of slice.tracks) {
|
|
143
|
+
const measure = measures?.[offset];
|
|
144
|
+
if (measure)
|
|
145
|
+
return measure;
|
|
146
|
+
}
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Inserts the slice before `atIndex`, in every track.
|
|
151
|
+
*
|
|
152
|
+
* Everything from that bar on moves later by `slice.count` bars — which is what
|
|
153
|
+
* "insert" means and why this is not `replaceMeasuresCommand` with a longer
|
|
154
|
+
* score afterwards.
|
|
155
|
+
*/
|
|
156
|
+
export function insertMeasuresCommand(atIndex, slice, label) {
|
|
157
|
+
return transformCommand(label, (score) => {
|
|
158
|
+
if (slice.count <= 0)
|
|
159
|
+
return score;
|
|
160
|
+
const tracks = score.tracks.map((track, trackIndex) => {
|
|
161
|
+
const source = slice.tracks[trackIndex];
|
|
162
|
+
const added = [];
|
|
163
|
+
for (let offset = 0; offset < slice.count; offset += 1) {
|
|
164
|
+
const from = source?.[offset];
|
|
165
|
+
if (from) {
|
|
166
|
+
added.push(adoptMeasure(from, track.id));
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const shape = shapeAt(slice, offset);
|
|
170
|
+
if (shape)
|
|
171
|
+
added.push(blankLike(shape, track.id));
|
|
172
|
+
}
|
|
173
|
+
if (added.length === 0)
|
|
174
|
+
return track;
|
|
175
|
+
const measures = [...track.measures];
|
|
176
|
+
measures.splice(Math.max(0, atIndex), 0, ...added);
|
|
177
|
+
return { ...track, measures };
|
|
178
|
+
});
|
|
179
|
+
return rebuildMeasureTicks(withTracks(score, tracks));
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Overwrites `slice.count` bars starting at `atIndex`, in every track.
|
|
184
|
+
*
|
|
185
|
+
* The score's length does not change and nothing moves, so a slice running past
|
|
186
|
+
* the end simply stops — replacing bars that are not there would be an insert
|
|
187
|
+
* wearing the wrong name.
|
|
188
|
+
*/
|
|
189
|
+
export function replaceMeasuresCommand(atIndex, slice, label) {
|
|
190
|
+
return transformCommand(label, (score) => {
|
|
191
|
+
if (slice.count <= 0)
|
|
192
|
+
return score;
|
|
193
|
+
const tracks = score.tracks.map((track, trackIndex) => {
|
|
194
|
+
const source = slice.tracks[trackIndex];
|
|
195
|
+
const measures = track.measures.map((measure, index) => {
|
|
196
|
+
const offset = index - atIndex;
|
|
197
|
+
if (offset < 0 || offset >= slice.count)
|
|
198
|
+
return measure;
|
|
199
|
+
const from = source?.[offset];
|
|
200
|
+
if (from)
|
|
201
|
+
return adoptMeasure(from, track.id);
|
|
202
|
+
const shape = shapeAt(slice, offset);
|
|
203
|
+
return shape ? blankLike(shape, track.id) : clearedMeasure(measure, track.id);
|
|
204
|
+
});
|
|
205
|
+
return { ...track, measures };
|
|
206
|
+
});
|
|
207
|
+
return rebuildMeasureTicks(withTracks(score, tracks));
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* A copied track, re-identified and fitted to the score it is joining.
|
|
212
|
+
*
|
|
213
|
+
* The bars are matched to the destination's grid by position: the score decides
|
|
214
|
+
* how many bars there are and how long each is, and a pasted part fills what it
|
|
215
|
+
* can. A part longer than the score is truncated rather than lengthening it,
|
|
216
|
+
* because adding bars is `insertMeasuresCommand`'s job and doing it here would
|
|
217
|
+
* make "paste a track" silently change every other part's length.
|
|
218
|
+
*/
|
|
219
|
+
function adoptTrack(source, grid) {
|
|
220
|
+
const trackId = createId();
|
|
221
|
+
const measures = (grid?.measures ?? source.measures).map((at, index) => {
|
|
222
|
+
const from = source.measures[index];
|
|
223
|
+
// Shaped by the *destination's* grid here, unlike a measure paste: a part
|
|
224
|
+
// joining a score adopts that score's bars, where a pasted bar brings its
|
|
225
|
+
// own and every part receives it.
|
|
226
|
+
return from
|
|
227
|
+
? { ...adoptMeasure(from, trackId), startTick: at.startTick, index: at.index,
|
|
228
|
+
durationTicks: at.durationTicks, timeSignature: at.timeSignature,
|
|
229
|
+
keySignature: at.keySignature }
|
|
230
|
+
: blankLike(at, trackId);
|
|
231
|
+
});
|
|
232
|
+
return { ...source, id: trackId, measures };
|
|
233
|
+
}
|
|
234
|
+
/** Adds the track at `atIndex`, fitted to the score's own measure grid. */
|
|
235
|
+
export function insertTrackCommand(source, atIndex, label) {
|
|
236
|
+
return transformCommand(label, (score) => {
|
|
237
|
+
const tracks = [...score.tracks];
|
|
238
|
+
tracks.splice(Math.max(0, Math.min(atIndex, tracks.length)), 0, adoptTrack(source, score.tracks[0]));
|
|
239
|
+
return rebuildMeasureTicks(withTracks(score, tracks));
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/** Replaces one track with a copied one, in place, keeping the score's grid. */
|
|
243
|
+
export function replaceTrackCommand(trackId, source, label) {
|
|
244
|
+
return transformCommand(label, (score) => rebuildMeasureTicks(withTracks(score, score.tracks.map((track) => track.id === trackId ? adoptTrack(source, score.tracks[0]) : track))));
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=clipboard-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard-commands.js","sourceRoot":"","sources":["../../../src/domain/commands/clipboard-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replacement-region.d.ts","sourceRoot":"","sources":["../../../src/domain/generation/replacement-region.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAI3D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAoCF;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,KAAK,EAAE,YAAY,GAClB,iBAAiB,GAAG,IAAI,CAkE1B;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"replacement-region.d.ts","sourceRoot":"","sources":["../../../src/domain/generation/replacement-region.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAI3D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAoCF;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,KAAK,EAAE,YAAY,GAClB,iBAAiB,GAAG,IAAI,CAkE1B;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,KAAK,CAezE"}
|
|
@@ -92,6 +92,9 @@ export function emptyScoreForRequest(request) {
|
|
|
92
92
|
tracks: request.tracks.map((t) => ({
|
|
93
93
|
name: t.name,
|
|
94
94
|
instrumentName: t.instrumentName,
|
|
95
|
+
// `createTrack` defaults this to 0, so leaving it off made every
|
|
96
|
+
// placeholder an all-piano score whatever ensemble was asked for.
|
|
97
|
+
midiProgram: t.midiProgram,
|
|
95
98
|
clef: t.clef,
|
|
96
99
|
})),
|
|
97
100
|
...(request.timeSignature ? { timeSignature: request.timeSignature } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replacement-region.js","sourceRoot":"","sources":["../../../src/domain/generation/replacement-region.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAcxE,qIAAqI;AACrI,SAAS,cAAc,CAAC,KAAY,EAAE,KAAiB;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ;YAClC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM;gBAChC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM;oBAC9B,IACE,WAAW,CAAC,KAAK,CAAC;wBAClB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;wBAC/B,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS;wBAEvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CACjB,KAAY,EACZ,KAAiB,EACjB,cAAuB,EACvB,WAAwB;IAExB,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO;QACL,KAAK;QACL,cAAc;QACd,SAAS,EAAE,OAAO,CAAC,MAAM;QACzB,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;KACzE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,SAAyB,EACzB,aAA4B,EAC5B,KAAmB;IAEnB,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,UAAU,CACf,KAAK,EACL;YACE,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa;YAC5C,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;SACrB,EACD,IAAI,EACJ,IAAI,GAAG,EAAE,CACV,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU;aAClC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,4EAA4E;QAC5E,yDAAyD;QACzD,MAAM,QAAQ,GAAG;YACf,GAAG,IAAI,GAAG,CACR,SAAS,CAAC,UAAU;iBACjB,GAAG,CACF,CAAC,EAAE,EAAE,EAAE,CACL,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACpE;iBACA,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CACpC;SACF,CAAC;QACF,OAAO,UAAU,CACf,KAAK,EACL;YACE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACxD,OAAO,EAAE,IAAI,CAAC,GAAG,CACf,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CACtD;YACD,QAAQ;SACT,EACD,IAAI,EACJ,IAAI,GAAG,EAAE,CACV,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ;SAC7B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,UAAU,CACf,KAAK,EACL;QACE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;QACrE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACpD,EACD,KAAK,EACL,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAChC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA6B;IAChE,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,UAAU;QAC1C,QAAQ,EAAE,OAAO,CAAC,gBAAgB;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"replacement-region.js","sourceRoot":"","sources":["../../../src/domain/generation/replacement-region.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { KeySignature } from "../../model/score.js";
|
|
2
|
+
/**
|
|
3
|
+
* The keyword values the generation prompt parser branches on.
|
|
4
|
+
*
|
|
5
|
+
* These are shared product data: the app offers them, and the backend needs to
|
|
6
|
+
* know that every offered prompt phrase has genre mechanics.
|
|
7
|
+
*/
|
|
8
|
+
declare const GENERATE_SCORE_STYLE_KEYS: readonly ["waltz", "jazz", "pop", "cinematic", "ambient", "battle", "rock", "punk", "heavyMetal", "blues", "country", "bluegrass", "funk", "soul", "ragtime", "swing", "bossaNova", "samba", "salsa", "tango", "reggae", "hipHop", "trap", "lofi", "house", "techno", "trance", "edm", "electroSwing", "disco", "classical", "baroque", "march"];
|
|
9
|
+
export type GenerateScoreStyle = (typeof GENERATE_SCORE_STYLE_KEYS)[number];
|
|
10
|
+
export declare const GENERATE_SCORE_STYLE_OPTIONS: readonly string[];
|
|
11
|
+
export type GenerateScoreStylePreset = {
|
|
12
|
+
/** What the model is told the style is. */
|
|
13
|
+
prompt: string;
|
|
14
|
+
/** Picker values, in ensemble order. */
|
|
15
|
+
instruments: readonly string[];
|
|
16
|
+
/** Beats per minute, in the middle of the range the genre is played at. */
|
|
17
|
+
tempo: number;
|
|
18
|
+
/** Bars the piece runs for, derived from the preset's tempo and meter. */
|
|
19
|
+
measures: number;
|
|
20
|
+
/** How long this style's pieces run, in seconds. Defaults to a typical song. */
|
|
21
|
+
seconds?: number;
|
|
22
|
+
/** The genre's form in bars, where it has one. */
|
|
23
|
+
formBars?: number;
|
|
24
|
+
/** A key of the app's generate-score time signature options. */
|
|
25
|
+
timeSignature: string;
|
|
26
|
+
/** The mode the genre usually sits in; absent where it is not typical. */
|
|
27
|
+
mode?: KeySignature["mode"];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The styles, each with the bars its own tempo and meter need for a song.
|
|
31
|
+
*/
|
|
32
|
+
export declare const GENERATE_SCORE_STYLE_PRESETS: Readonly<Record<string, GenerateScoreStylePreset>>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=style-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-presets.d.ts","sourceRoot":"","sources":["../../../src/domain/generation/style-presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD;;;;;GAKG;AACH,QAAA,MAAM,yBAAyB,kVAkCrB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAC/B,CAAC;AAE5B,MAAM,MAAM,wBAAwB,GAAG;IACrC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AA6PF;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CACjD,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAczC,CAAC"}
|