@sudobility/music_types 0.13.20 → 0.13.22

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 CHANGED
@@ -120,6 +120,11 @@ Everything exports from a single sectioned `src/index.ts`:
120
120
  - **The singer is written first, ahead of the genre order.** In `rankTracksForGeneration`, `voiceFirst` used to be a tiebreak among equally ranked parts, so it only did anything where `lead` already came first. `GROOVE_FIRST` writes the lead **last** — in reggae the bassline is the material and the melody decorates it, which is true of an instrumental and inverts the moment somebody is singing over it — so in eleven genres every backing part was composed before the voice existed, `vocalSupportRule` in music_api had no singer to point at, and the vocal was bent to fit a finished arrangement instead of the other way round. It is now the primary sort key, and `roleOrderForStyle` is untouched, so a roster with no voice is arranged exactly as it was. A percussion track is never promoted, whatever its program addresses: on the drum channel, program 53 is a kit.
121
121
  - **A closed vocabulary is offered in the order it is read, not the order it was declared.** `sortOptionsByLabel` sorts on the **translated** label under the active language. Both halves matter: the value is `electroSwing` while the reader sees "Electro Swing", so sorting the keys puts entries wherever their camel-case identifier happens to fall; and collating Chinese labels by the English they were translated from produces an order with no visible logic at all. The 33 styles and 6 moods go through it in both apps — an ordering rule written twice is one that eventually disagrees with itself.
122
122
 
123
+ - **The preset briefs are the server's list and the hosts' words.** `SCORE_PRESET_KEYS` is the closed vocabulary; which of them suit which genre lives in `music_api` and is served by `GET /public/presets?style=`, so it can be retuned without shipping an app and two apps cannot offer different starting points for the same style. The *text* stays in each app's locale files, because the brief a reader picks is also the prompt sent to the model and a Chinese reader should be prompting in Chinese — the same division `MusicXmlWarnings` uses. The vocabulary is here rather than only on the server because **both ends need it**: the server must not serve a brief no app can name, and each app must be able to prove offline, in a test, that it has words for every brief it could be sent. A list only the server had would make the second impossible, which is exactly how a menu comes to print `openingTitle` at a reader. A brief names a subject and a shape and never a genre, since `style` already travels as its own expanded phrase — which is what lets one brief serve several genres instead of 33 sets of bespoke copy.
124
+ - **`weak` is gone and `default` is called "Open AI".** The label said only that it was the default, which is a fact about the picker rather than about which company's model writes the music. The wire value is still `default`, and the default is still expressed by sending **no field at all**, so an ordinary request is byte-for-byte what it was.
125
+
126
+ - **The lyric's subject is its own field, and it replaces rather than adds.** `lyricsTheme` was once deliberately absent, on the grounds that `prompt` already says what the piece is and a second subject line is a place for the two to disagree. What that missed is that they are different questions: "a slow waltz in D minor" describes the music, and the words over it can be about coming home. The disagreement is avoided by there being exactly **one** "the words are about" clause on the server, which this fills when present and `prompt` fills otherwise — so a request that says nothing about it produces the lyric it always did, and `prompt` still reaches the model in its own right. Never sent without `lyrics`: `buildGenerateScoreRequest` drops both on the same rule.
127
+
123
128
  ## Related Projects
124
129
 
125
130
  - `music_api` — backend (Hono/Drizzle/OpenAI proxy), consumes schemas for validation
@@ -0,0 +1,83 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * The briefs a reader can start a generation from, as ids rather than as text.
4
+ *
5
+ * Which briefs suit which genre is **product data the server owns** — it is
6
+ * served by `GET /public/presets` so it can be retuned without shipping an app,
7
+ * and so two apps offering "the presets for reggae" cannot offer different
8
+ * ones. The *words* stay with the hosts, which is the same division
9
+ * `MusicXmlWarnings` uses and the reason a Chinese reader gets Chinese: a
10
+ * library that held the copy would hold it in one language.
11
+ *
12
+ * The vocabulary itself lives here rather than on the server because both ends
13
+ * need it. The server must not serve a brief no app can name, and each app must
14
+ * be able to prove — offline, in a test — that it has words for every brief it
15
+ * could ever be sent. A list only the server had would make the second
16
+ * impossible, which is exactly how a menu comes to print `openingTitle` at a
17
+ * reader.
18
+ *
19
+ * A brief names a subject and a shape, never a genre: `style` already travels
20
+ * as its own expanded phrase, so a preset that said "reggae" would say it twice
21
+ * and would be wrong the moment it were served under another style. That is
22
+ * what lets one brief be assigned to several genres.
23
+ */
24
+ export declare const SCORE_PRESET_KEYS: readonly ["gentleMelody", "simpleBeginner", "openingTitle", "slowBuild", "loopableLoop", "callAndResponse", "quietEnding", "singleHook", "verseChorus", "loveSong", "leavingHome", "lateNightDrive", "breakupSong", "crowdSinger", "rainyWindow", "summerDay", "walkingBass", "lockedGroove", "handclapBackbeat", "halfTimeDrop", "drivingEighths", "syncopatedRiff", "triumphant", "menacing", "bittersweet", "playfulDance", "lullaby", "restless", "lonely", "celebration", "chaseScene", "battleTheme", "creditsRoll", "marketScene", "sunriseScene", "ceremonyProcession", "twelveBarShuffle", "improvisedSolo", "fiddleAnswers", "organStabs", "brassStabs", "pedalDrone", "palmMutedRiff", "threeChordRush"];
25
+ export type ScorePresetKey = (typeof SCORE_PRESET_KEYS)[number];
26
+ /** Whether a string is a brief this vocabulary knows. */
27
+ export declare function isScorePresetKey(value: string): value is ScorePresetKey;
28
+ /**
29
+ * What `GET /public/presets` answers.
30
+ *
31
+ * An object rather than a bare array, so the response can gain a field without
32
+ * every client having to be changed on the same day.
33
+ */
34
+ export declare const scorePresetsResponseSchema: z.ZodObject<{
35
+ presets: z.ZodArray<z.ZodEnum<{
36
+ gentleMelody: "gentleMelody";
37
+ simpleBeginner: "simpleBeginner";
38
+ openingTitle: "openingTitle";
39
+ slowBuild: "slowBuild";
40
+ loopableLoop: "loopableLoop";
41
+ callAndResponse: "callAndResponse";
42
+ quietEnding: "quietEnding";
43
+ singleHook: "singleHook";
44
+ verseChorus: "verseChorus";
45
+ loveSong: "loveSong";
46
+ leavingHome: "leavingHome";
47
+ lateNightDrive: "lateNightDrive";
48
+ breakupSong: "breakupSong";
49
+ crowdSinger: "crowdSinger";
50
+ rainyWindow: "rainyWindow";
51
+ summerDay: "summerDay";
52
+ walkingBass: "walkingBass";
53
+ lockedGroove: "lockedGroove";
54
+ handclapBackbeat: "handclapBackbeat";
55
+ halfTimeDrop: "halfTimeDrop";
56
+ drivingEighths: "drivingEighths";
57
+ syncopatedRiff: "syncopatedRiff";
58
+ triumphant: "triumphant";
59
+ menacing: "menacing";
60
+ bittersweet: "bittersweet";
61
+ playfulDance: "playfulDance";
62
+ lullaby: "lullaby";
63
+ restless: "restless";
64
+ lonely: "lonely";
65
+ celebration: "celebration";
66
+ chaseScene: "chaseScene";
67
+ battleTheme: "battleTheme";
68
+ creditsRoll: "creditsRoll";
69
+ marketScene: "marketScene";
70
+ sunriseScene: "sunriseScene";
71
+ ceremonyProcession: "ceremonyProcession";
72
+ twelveBarShuffle: "twelveBarShuffle";
73
+ improvisedSolo: "improvisedSolo";
74
+ fiddleAnswers: "fiddleAnswers";
75
+ organStabs: "organStabs";
76
+ brassStabs: "brassStabs";
77
+ pedalDrone: "pedalDrone";
78
+ palmMutedRiff: "palmMutedRiff";
79
+ threeChordRush: "threeChordRush";
80
+ }>>;
81
+ }, z.core.$strip>;
82
+ export type ScorePresetsResponse = z.infer<typeof scorePresetsResponseSchema>;
83
+ //# sourceMappingURL=score-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-presets.d.ts","sourceRoot":"","sources":["../../../src/domain/generation/score-presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,qrBAmDpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAED;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAErC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * The briefs a reader can start a generation from, as ids rather than as text.
4
+ *
5
+ * Which briefs suit which genre is **product data the server owns** — it is
6
+ * served by `GET /public/presets` so it can be retuned without shipping an app,
7
+ * and so two apps offering "the presets for reggae" cannot offer different
8
+ * ones. The *words* stay with the hosts, which is the same division
9
+ * `MusicXmlWarnings` uses and the reason a Chinese reader gets Chinese: a
10
+ * library that held the copy would hold it in one language.
11
+ *
12
+ * The vocabulary itself lives here rather than on the server because both ends
13
+ * need it. The server must not serve a brief no app can name, and each app must
14
+ * be able to prove — offline, in a test — that it has words for every brief it
15
+ * could ever be sent. A list only the server had would make the second
16
+ * impossible, which is exactly how a menu comes to print `openingTitle` at a
17
+ * reader.
18
+ *
19
+ * A brief names a subject and a shape, never a genre: `style` already travels
20
+ * as its own expanded phrase, so a preset that said "reggae" would say it twice
21
+ * and would be wrong the moment it were served under another style. That is
22
+ * what lets one brief be assigned to several genres.
23
+ */
24
+ export const SCORE_PRESET_KEYS = [
25
+ // Shape and craft
26
+ "gentleMelody",
27
+ "simpleBeginner",
28
+ "openingTitle",
29
+ "slowBuild",
30
+ "loopableLoop",
31
+ "callAndResponse",
32
+ "quietEnding",
33
+ "singleHook",
34
+ // Songs
35
+ "verseChorus",
36
+ "loveSong",
37
+ "leavingHome",
38
+ "lateNightDrive",
39
+ "breakupSong",
40
+ "crowdSinger",
41
+ "rainyWindow",
42
+ "summerDay",
43
+ // Groove
44
+ "walkingBass",
45
+ "lockedGroove",
46
+ "handclapBackbeat",
47
+ "halfTimeDrop",
48
+ "drivingEighths",
49
+ "syncopatedRiff",
50
+ // Character
51
+ "triumphant",
52
+ "menacing",
53
+ "bittersweet",
54
+ "playfulDance",
55
+ "lullaby",
56
+ "restless",
57
+ "lonely",
58
+ "celebration",
59
+ // Scenes
60
+ "chaseScene",
61
+ "battleTheme",
62
+ "creditsRoll",
63
+ "marketScene",
64
+ "sunriseScene",
65
+ "ceremonyProcession",
66
+ // Idioms a genre owns
67
+ "twelveBarShuffle",
68
+ "improvisedSolo",
69
+ "fiddleAnswers",
70
+ "organStabs",
71
+ "brassStabs",
72
+ "pedalDrone",
73
+ "palmMutedRiff",
74
+ "threeChordRush",
75
+ ];
76
+ /** Whether a string is a brief this vocabulary knows. */
77
+ export function isScorePresetKey(value) {
78
+ return SCORE_PRESET_KEYS.includes(value);
79
+ }
80
+ /**
81
+ * What `GET /public/presets` answers.
82
+ *
83
+ * An object rather than a bare array, so the response can gain a field without
84
+ * every client having to be changed on the same day.
85
+ */
86
+ export const scorePresetsResponseSchema = z.object({
87
+ presets: z.array(z.enum(SCORE_PRESET_KEYS)),
88
+ });
89
+ //# sourceMappingURL=score-presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-presets.js","sourceRoot":"","sources":["../../../src/domain/generation/score-presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,aAAa;IACb,WAAW;IACX,SAAS;IACT,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,aAAa;IACb,cAAc;IACd,SAAS;IACT,UAAU;IACV,QAAQ;IACR,aAAa;IACb,SAAS;IACT,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,oBAAoB;IACpB,sBAAsB;IACtB,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,gBAAgB;CACR,CAAC;AAIX,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;CAC5C,CAAC,CAAC"}
@@ -21,11 +21,44 @@ export type GenerateScoreStylePreset = {
21
21
  seconds?: number;
22
22
  /** The genre's form in bars, where it has one. */
23
23
  formBars?: number;
24
+ /**
25
+ * The keys this genre is actually played in, as key-signature `fifths`.
26
+ *
27
+ * Read with `mode` below, so a minor-mode genre's list is minor tonics: 0 is
28
+ * A minor there and C major elsewhere. One is chosen per generation rather
29
+ * than fixed, for the reason `styleInstrumentsWithGuest` picks a guest —
30
+ * two goes at one genre are otherwise the same piece twice.
31
+ *
32
+ * Why the list is short and per-genre rather than "any of the twelve": a key
33
+ * is not neutral. Horn music lives in flat keys because that is where the
34
+ * instruments are comfortable, guitar music in E and A because that is where
35
+ * the open strings are, and a big band asked for E major is a big band
36
+ * playing badly.
37
+ */
38
+ keys?: readonly number[];
24
39
  /** A key of the app's generate-score time signature options. */
25
40
  timeSignature: string;
26
41
  /** The mode the genre usually sits in; absent where it is not typical. */
27
42
  mode?: KeySignature["mode"];
28
43
  };
44
+ /**
45
+ * How far either side of a style's nominal tempo a generation may land, as a
46
+ * fraction of it.
47
+ *
48
+ * A rule rather than a number per genre, because `tempo` already documents
49
+ * itself as "in the middle of the range the genre is played at" — the spread is
50
+ * the other half of that sentence, and 33 hand-written pairs would be 33
51
+ * chances to disagree with the one number beside them.
52
+ *
53
+ * Six percent is a bar or two of drift at either end: salsa 179-201, punk
54
+ * 169-191, ambient 66-74. Wide enough that two generations of one genre are
55
+ * not the same piece at the same speed, narrow enough that every one of them
56
+ * is still that genre — a 40% swing would make a "slow blues" out of a shuffle
57
+ * and nobody asked it to.
58
+ */
59
+ export declare const TEMPO_SPREAD = 0.06;
60
+ /** The bpm range a style may be generated at, rounded to whole beats. */
61
+ export declare function styleTempoRange(style: string): readonly [number, number] | null;
29
62
  /**
30
63
  * The styles, each with the bars its own tempo and meter need for a song.
31
64
  */
@@ -1 +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"}
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;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAySF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAK/E;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CACjD,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAczC,CAAC"}
@@ -47,24 +47,28 @@ const STYLE_PRESET_SOURCE = {
47
47
  prompt: 'waltz — a lilting three-four with the weight on beat one and a light "oom-pah-pah" accompaniment',
48
48
  instruments: ["0", "48", "43"],
49
49
  tempo: 160,
50
+ keys: [0, 1, -1, 2],
50
51
  timeSignature: "3/4",
51
52
  },
52
53
  jazz: {
53
54
  prompt: "jazz — swung eighth notes, walking bass, extended chords, and a melody that phrases across the barline rather than sitting on the beat",
54
55
  instruments: ["66", "0", "32", KIT],
55
56
  tempo: 132,
57
+ keys: [-2, -3, -1, 0, 1],
56
58
  timeSignature: "4/4",
57
59
  },
58
60
  pop: {
59
61
  prompt: "pop — a clear singable hook, four-bar phrases, a backbeat on two and four, and space between the phrases",
60
62
  instruments: ["0", "27", "33", KIT],
61
63
  tempo: 120,
64
+ keys: [0, 1, 2, -1, 3],
62
65
  timeSignature: "4/4",
63
66
  },
64
67
  cinematic: {
65
68
  prompt: "cinematic orchestral — long sustained lines that build, a rising dynamic arc, and rhythm that serves the swell rather than a groove",
66
69
  instruments: ["48", "40", "42", "60", "47"],
67
70
  tempo: 90,
71
+ keys: [-1, 0, 1, -2],
68
72
  timeSignature: "4/4",
69
73
  mode: "minor",
70
74
  },
@@ -72,12 +76,14 @@ const STYLE_PRESET_SOURCE = {
72
76
  prompt: "ambient — slow evolving pads, very long note values, no strong pulse, and silence used as a voice",
73
77
  instruments: ["89", "0", "48"],
74
78
  tempo: 70,
79
+ keys: [0, -1, 1, 2],
75
80
  timeSignature: "4/4",
76
81
  },
77
82
  battle: {
78
83
  prompt: "driving battle music — insistent ostinato, hard accents, brass stabs against a relentless low pulse",
79
84
  instruments: ["61", "48", "47", KIT],
80
85
  tempo: 150,
86
+ keys: [-1, 0, 1, -2],
81
87
  timeSignature: "4/4",
82
88
  mode: "minor",
83
89
  },
@@ -85,18 +91,21 @@ const STYLE_PRESET_SOURCE = {
85
91
  prompt: "rock — a hard backbeat on two and four, power-chord riffing, and a bass locked to the kick",
86
92
  instruments: ["29", "27", "33", KIT],
87
93
  tempo: 128,
94
+ keys: [4, 3, 1, 2, 0],
88
95
  timeSignature: "4/4",
89
96
  },
90
97
  punk: {
91
98
  prompt: "punk — fast straight eighths on downstrokes, three chords, no ornament, and a snare driving every backbeat. The guitar figure repeats unchanged through a section; the energy comes from the tempo and the drive, never from varying the part.",
92
99
  instruments: ["30", "29", "34", KIT],
93
100
  tempo: 180,
101
+ keys: [4, 3, 1, 2],
94
102
  timeSignature: "4/4",
95
103
  },
96
104
  heavyMetal: {
97
105
  prompt: "heavy metal — built on ONE palm-muted galloping low riff, repeated bar after bar through a section rather than rewritten each bar; minor and modal, double-kick drive underneath, and long held high notes over the top. The riff is the song: keep it the same and let the drums and the held lead supply the variation. ONE riff means one FIGURE, not one note - the riff moves between several pitches (root, flat-7, flat-6 and back is the classic shape), and a bar of the same pitch struck eight times is a pedal, not a riff.",
98
106
  instruments: ["30", "29", "34", KIT],
99
107
  tempo: 152,
108
+ keys: [1, -1, 0, 2],
100
109
  timeSignature: "4/4",
101
110
  mode: "minor",
102
111
  },
@@ -105,30 +114,35 @@ const STYLE_PRESET_SOURCE = {
105
114
  prompt: "twelve-bar blues — shuffle feel, blue notes and bends, call-and-response between a voice-like melody and answering fills, dominant seventh chords",
106
115
  instruments: ["27", "22", "33", KIT],
107
116
  tempo: 88,
117
+ keys: [4, 3, 1, -2, 0],
108
118
  timeSignature: "4/4",
109
119
  },
110
120
  country: {
111
121
  prompt: 'country — a two-beat "boom-chick" bass and guitar, bright major harmony, fiddle and steel fills answering the melody',
112
122
  instruments: ["25", "110", "27", "32", KIT],
113
123
  tempo: 118,
124
+ keys: [1, 2, 3, 0, -1],
114
125
  timeSignature: "4/4",
115
126
  },
116
127
  bluegrass: {
117
128
  prompt: "bluegrass — fast acoustic picking, banjo rolls in constant eighths under a syncopated fiddle melody, driving upright bass on one and three",
118
129
  instruments: ["105", "110", "25", "32"],
119
130
  tempo: 160,
131
+ keys: [1, 2, 3, 0],
120
132
  timeSignature: "4/4",
121
133
  },
122
134
  funk: {
123
135
  prompt: "funk — heavily syncopated sixteenth-note groove, everything locked to a hard downbeat on the one, staccato stabs and plenty of rests",
124
136
  instruments: ["36", "28", "61", "4", KIT],
125
137
  tempo: 104,
138
+ keys: [-1, -2, 0, 1],
126
139
  timeSignature: "4/4",
127
140
  },
128
141
  soul: {
129
142
  prompt: "soul — a laid-back backbeat sitting slightly behind the beat, gospel-tinged chords, horn stabs answering a vocal-style melody",
130
143
  instruments: ["16", "4", "33", "61", KIT],
131
144
  tempo: 96,
145
+ keys: [-1, -2, -3, 0, 1],
132
146
  timeSignature: "4/4",
133
147
  },
134
148
  ragtime: {
@@ -136,36 +150,53 @@ const STYLE_PRESET_SOURCE = {
136
150
  prompt: "ragtime — a syncopated right-hand melody against a steady striding left-hand bass in two, cheerful and precise",
137
151
  instruments: ["0"],
138
152
  tempo: 96,
153
+ keys: [-1, -2, 0, 1],
139
154
  timeSignature: "2/4",
140
155
  },
141
156
  swing: {
142
157
  prompt: "big-band swing — swung eighth notes, brass and reed sections trading riffs, walking bass, ride-cymbal pulse with accents on two and four",
143
158
  instruments: ["56", "66", "57", "0", "32", KIT],
144
159
  tempo: 168,
160
+ keys: [-2, -3, -1, 0],
145
161
  timeSignature: "4/4",
146
162
  },
147
163
  bossaNova: {
148
164
  prompt: "bossa nova — a gentle syncopated guitar pattern, soft brushed drums, a lyrical melody sitting behind the beat, rich seventh and ninth chords",
149
165
  instruments: ["24", "0", "32", KIT],
150
166
  tempo: 132,
167
+ keys: [-1, -2, 0, 1],
151
168
  timeSignature: "4/4",
152
169
  },
153
170
  samba: {
154
171
  prompt: "samba — fast two-beat percussion-driven groove, heavy syncopation on the offbeats, surdo pulse landing on beat two",
155
172
  instruments: ["24", "61", "32", KIT],
156
173
  tempo: 100,
174
+ keys: [0, 1, -1, -2],
157
175
  timeSignature: "2/4",
158
176
  },
159
177
  salsa: {
160
- prompt: "salsa — clave-driven, a montuno piano ostinato, syncopated brass hits, busy percussion, bass playing the tumbao rather than the downbeat",
178
+ prompt: "salsa — clave-driven and minor-mode, a montuno piano ostinato, syncopated brass hits, busy percussion, bass playing the tumbao rather than the downbeat",
161
179
  instruments: ["0", "56", "57", "32", KIT],
162
180
  tempo: 190,
181
+ /*
182
+ Minor, and the keys below are minor tonics: -1 is D minor here.
183
+
184
+ Salsa was a major-mode preset, which put it in the same tonality as the
185
+ big-band styles it already shares most of a horn section with — a salsa
186
+ and a swing generated side by side came back in C major with six of
187
+ their seven instruments the same, and sounded like each other whatever
188
+ their rhythms did. Son montuno lives in minor; this is the same
189
+ correction electro swing already carries, for the same reason.
190
+ */
191
+ keys: [-1, -3, 0, -2],
163
192
  timeSignature: "4/4",
193
+ mode: "minor",
164
194
  },
165
195
  tango: {
166
196
  prompt: "tango — sharp dotted rhythms and dramatic accents, minor key, sudden stops and rubato pulls against a strict pulse",
167
197
  instruments: ["23", "40", "0", "43"],
168
198
  tempo: 120,
199
+ keys: [0, -1, 1, -2],
169
200
  timeSignature: "4/4",
170
201
  mode: "minor",
171
202
  },
@@ -173,12 +204,14 @@ const STYLE_PRESET_SOURCE = {
173
204
  prompt: "reggae — one-drop: the kick lands on beat three, not one; guitar and organ chop the offbeat eighths; bass plays a heavy melodic line, low and sparse",
174
205
  instruments: ["28", "18", "33", KIT],
175
206
  tempo: 78,
207
+ keys: [0, 1, -1, 2],
176
208
  timeSignature: "4/4",
177
209
  },
178
210
  hipHop: {
179
211
  prompt: "hip-hop — a hard boom-bap drum pattern with swung sixteenths, a deep sustained sub bass, sparse looping keys, and space left for a vocal",
180
212
  instruments: ["39", "4", "48", KIT],
181
213
  tempo: 90,
214
+ keys: [0, -1, -2, -3, 1],
182
215
  timeSignature: "4/4",
183
216
  mode: "minor",
184
217
  },
@@ -186,6 +219,7 @@ const STYLE_PRESET_SOURCE = {
186
219
  prompt: "trap — half-time: the snare lands on beat three alone, an 808 sub bass slides between long tuned notes, and hi-hats roll in fast subdivisions over large gaps",
187
220
  instruments: ["38", "11", "89", KIT],
188
221
  tempo: 140,
222
+ keys: [-4, -3, -2, 0],
189
223
  timeSignature: "4/4",
190
224
  mode: "minor",
191
225
  },
@@ -193,6 +227,7 @@ const STYLE_PRESET_SOURCE = {
193
227
  prompt: "lo-fi hip-hop — slow swung drums slightly off the grid, warm jazzy minor seventh chords, a sparse melody, unhurried and repetitive",
194
228
  instruments: ["4", "33", "89", KIT],
195
229
  tempo: 74,
230
+ keys: [-1, 0, -2, -3],
196
231
  timeSignature: "4/4",
197
232
  mode: "minor",
198
233
  },
@@ -200,12 +235,14 @@ const STYLE_PRESET_SOURCE = {
200
235
  prompt: "house — four-on-the-floor kick, offbeat open hats, a repetitive synth riff, and a bassline locked to the eighths between the kicks",
201
236
  instruments: ["81", "38", "89", KIT],
202
237
  tempo: 126,
238
+ keys: [0, -1, 1, -2],
203
239
  timeSignature: "4/4",
204
240
  },
205
241
  techno: {
206
242
  prompt: "techno — machine-like and loop-based: four-on-the-floor kick, sixteenth-note hats, one short synth-bass cell repeated, and timbre rather than chord changes carrying the track",
207
243
  instruments: ["38", "81", "89", KIT],
208
244
  tempo: 132,
245
+ keys: [0, -1, -2, 1],
209
246
  timeSignature: "4/4",
210
247
  mode: "minor",
211
248
  },
@@ -213,6 +250,7 @@ const STYLE_PRESET_SOURCE = {
213
250
  prompt: "trance — four-on-the-floor with an offbeat synth bass after every kick, supersaw arpeggios, and long builds and releases in sixteen-bar blocks",
214
251
  instruments: ["81", "38", "89", KIT],
215
252
  tempo: 138,
253
+ keys: [0, -1, 1, -3],
216
254
  timeSignature: "4/4",
217
255
  mode: "minor",
218
256
  },
@@ -220,6 +258,7 @@ const STYLE_PRESET_SOURCE = {
220
258
  prompt: "edm — electronic dance built on a clear build, drop and breakdown in eight-bar blocks, four-on-the-floor underneath and a big repeated lead hook through the drop",
221
259
  instruments: ["81", "38", "89", KIT],
222
260
  tempo: 128,
261
+ keys: [0, -1, -3, -4],
223
262
  timeSignature: "4/4",
224
263
  mode: "minor",
225
264
  },
@@ -227,6 +266,7 @@ const STYLE_PRESET_SOURCE = {
227
266
  prompt: "electro swing — vintage swing horns over a modern four-on-the-floor electronic beat, minor and bluesy in a gypsy-jazz vein; hard-swung eighths, syncopated and playful, with clarinet and trumpet riffs answering each other",
228
267
  instruments: ["56", "71", "38", KIT],
229
268
  tempo: 122,
269
+ keys: [-1, 0, -2, 1],
230
270
  timeSignature: "4/4",
231
271
  mode: "minor",
232
272
  },
@@ -234,27 +274,55 @@ const STYLE_PRESET_SOURCE = {
234
274
  prompt: "disco — four-on-the-floor kick, offbeat hi-hats, an octave-jumping bassline, and string and guitar figures on the sixteenths",
235
275
  instruments: ["48", "28", "33", KIT],
236
276
  tempo: 120,
277
+ keys: [0, -1, 1, -2],
237
278
  timeSignature: "4/4",
238
279
  },
239
280
  classical: {
240
281
  prompt: "classical — balanced four-bar phrases answering each other, an Alberti or broken-chord accompaniment under a clear diatonic melody, and a cadence every four or eight bars",
241
282
  instruments: ["0", "40", "42"],
242
283
  tempo: 108,
284
+ keys: [0, 1, -1, 2, -2],
243
285
  timeSignature: "4/4",
244
286
  },
245
287
  baroque: {
246
288
  prompt: "baroque — a steady walking bass, contrapuntal interweaving voices, sequences and ornamented melodic lines, terraced dynamics",
247
289
  instruments: ["6", "40", "42"],
248
290
  tempo: 100,
291
+ keys: [1, -1, 0, 2, -2],
249
292
  timeSignature: "4/4",
250
293
  },
251
294
  march: {
252
295
  prompt: "march — a firm two-beat pulse, dotted fanfare rhythms, a brass melody over a low oom-pah, crisp snare figures",
253
296
  instruments: ["56", "57", "58", KIT],
254
297
  tempo: 116,
298
+ keys: [-2, -3, -1, 0],
255
299
  timeSignature: "2/4",
256
300
  },
257
301
  };
302
+ /**
303
+ * How far either side of a style's nominal tempo a generation may land, as a
304
+ * fraction of it.
305
+ *
306
+ * A rule rather than a number per genre, because `tempo` already documents
307
+ * itself as "in the middle of the range the genre is played at" — the spread is
308
+ * the other half of that sentence, and 33 hand-written pairs would be 33
309
+ * chances to disagree with the one number beside them.
310
+ *
311
+ * Six percent is a bar or two of drift at either end: salsa 179-201, punk
312
+ * 169-191, ambient 66-74. Wide enough that two generations of one genre are
313
+ * not the same piece at the same speed, narrow enough that every one of them
314
+ * is still that genre — a 40% swing would make a "slow blues" out of a shuffle
315
+ * and nobody asked it to.
316
+ */
317
+ export const TEMPO_SPREAD = 0.06;
318
+ /** The bpm range a style may be generated at, rounded to whole beats. */
319
+ export function styleTempoRange(style) {
320
+ const preset = GENERATE_SCORE_STYLE_PRESETS[style];
321
+ if (!preset)
322
+ return null;
323
+ const spread = Math.round(preset.tempo * TEMPO_SPREAD);
324
+ return [preset.tempo - spread, preset.tempo + spread];
325
+ }
258
326
  /**
259
327
  * The styles, each with the bars its own tempo and meter need for a song.
260
328
  */
@@ -1 +1 @@
1
- {"version":3,"file":"style-presets.js","sourceRoot":"","sources":["../../../src/domain/generation/style-presets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style-presets.js","sourceRoot":"","sources":["../../../src/domain/generation/style-presets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Deciding whether a note fits an instrument.
3
+ *
4
+ * The compass itself comes from `trackKeyboardRange` — this module is the
5
+ * shared vocabulary everything else uses to act on it, so that "is this note
6
+ * playable" is answered the same way by generation, validation, the score
7
+ * sheet, note entry and the keyboard. Before this existed the answer was
8
+ * computed five times: the keyboard drew one range, the prompt described a
9
+ * second (or none at all), the validator warned against a third, and the
10
+ * renderer knew about none of them, which is how a timpani part came back with
11
+ * notes the on-screen keyboard had no keys for.
12
+ *
13
+ * All of these numbers are SOUNDING pitch, matching `gm-catalogue.ts`. Convert
14
+ * written pitch to sounding before asking (see `soundingPitchForTrack`).
15
+ *
16
+ * There is deliberately no "fold it into range" here. Moving a note by octaves
17
+ * to make it fit was tried and rejected: it rewrites music somebody may have
18
+ * chosen, and an octave displacement in a bass line is audible. What every
19
+ * consumer does instead is say so — the prompt states the compass before a note
20
+ * is written, the validator warns, the notation marks the note, and note entry
21
+ * refuses it outright.
22
+ */
23
+ import type { Track } from "../../index.js";
24
+ import type { MidiRange } from "./gm-range.js";
25
+ /** Whether `midi` is inside `range`, which is inclusive at both ends. */
26
+ export declare function midiIsInRange(midi: number, range: MidiRange): boolean;
27
+ /**
28
+ * Whether `track`'s range is firm enough to refuse a note against.
29
+ *
30
+ * A catalogue row marked `assumed`, `tunable`, `synthetic` or `unpitched` is a
31
+ * plausible span rather than a measured one, and refusing music against a guess
32
+ * is worse than letting it through — `gm-catalogue.ts` says so in its own doc.
33
+ * Percussion is always binding: a kit has the pieces it has.
34
+ */
35
+ export declare function trackRangeIsBinding(track: Pick<Track, "clef" | "midiProgram">): boolean;
36
+ //# sourceMappingURL=range-fit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range-fit.d.ts","sourceRoot":"","sources":["../../../src/domain/instruments/range-fit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,OAAO,CAGT"}
@@ -0,0 +1,20 @@
1
+ import { gmRangeIsBinding } from "./gm-catalogue.js";
2
+ import { isPercussionTrack } from "./track-instrument.js";
3
+ /** Whether `midi` is inside `range`, which is inclusive at both ends. */
4
+ export function midiIsInRange(midi, range) {
5
+ return midi >= range.min && midi <= range.max;
6
+ }
7
+ /**
8
+ * Whether `track`'s range is firm enough to refuse a note against.
9
+ *
10
+ * A catalogue row marked `assumed`, `tunable`, `synthetic` or `unpitched` is a
11
+ * plausible span rather than a measured one, and refusing music against a guess
12
+ * is worse than letting it through — `gm-catalogue.ts` says so in its own doc.
13
+ * Percussion is always binding: a kit has the pieces it has.
14
+ */
15
+ export function trackRangeIsBinding(track) {
16
+ if (isPercussionTrack(track))
17
+ return true;
18
+ return gmRangeIsBinding(track.midiProgram);
19
+ }
20
+ //# sourceMappingURL=range-fit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range-fit.js","sourceRoot":"","sources":["../../../src/domain/instruments/range-fit.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAgB;IAC1D,OAAO,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA0C;IAE1C,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC"}
@@ -88,9 +88,17 @@ export declare function scoreWithResolvedKits(score: Score): Score;
88
88
  * the pitches are drum numbers rather than notes, and the result was a part
89
89
  * that treated the kick as a metronome.
90
90
  *
91
- * Range and polyphony come from the track's own program through
92
- * `trackKeyboardRange`/`trackMaxPolyphony`, so a drum track answers about its
93
- * kit rather than about whatever melodic instrument shares its program number.
91
+ * Polyphony comes from the track's own program through `trackMaxPolyphony`, so
92
+ * a drum track answers about its kit rather than about whatever melodic
93
+ * instrument shares its program number.
94
+ *
95
+ * The compass is deliberately NOT sent. It is a fact about the program, which
96
+ * the server derives for itself from `gm-catalogue.ts` — so there is one answer
97
+ * rather than one per caller, and a caller that forgets to send it cannot leave
98
+ * the model writing against no compass at all. That is what used to happen on
99
+ * the new-score path, which builds its roster from a picker and never called
100
+ * this function: measured on one generated score, a timpani came back with 482
101
+ * of its 1,067 notes below its lowest drum.
94
102
  */
95
103
  export declare function describeTrackForGeneration(track: Track): GenerateScoreRequestTrack;
96
104
  //# sourceMappingURL=track-instrument.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"track-instrument.d.ts","sourceRoot":"","sources":["../../../src/domain/instruments/track-instrument.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EACV,yBAAyB,EACzB,KAAK,EACL,KAAK,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAMlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,SAAS,CAGX;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAGR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAIR;AAED,0FAA0F;AAC1F,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,iBAAiB,CAInB;AAED,sGAAsG;AACtG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAezD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,KAAK,GACX,yBAAyB,CAqB3B"}
1
+ {"version":3,"file":"track-instrument.d.ts","sourceRoot":"","sources":["../../../src/domain/instruments/track-instrument.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EACV,yBAAyB,EACzB,KAAK,EACL,KAAK,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAMlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,SAAS,CAGX;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAGR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAIR;AAED,0FAA0F;AAC1F,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,iBAAiB,CAInB;AAED,sGAAsG;AACtG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,GACzC,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAezD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,KAAK,GACX,yBAAyB,CAgB3B"}
@@ -110,15 +110,19 @@ export function scoreWithResolvedKits(score) {
110
110
  * the pitches are drum numbers rather than notes, and the result was a part
111
111
  * that treated the kick as a metronome.
112
112
  *
113
- * Range and polyphony come from the track's own program through
114
- * `trackKeyboardRange`/`trackMaxPolyphony`, so a drum track answers about its
115
- * kit rather than about whatever melodic instrument shares its program number.
113
+ * Polyphony comes from the track's own program through `trackMaxPolyphony`, so
114
+ * a drum track answers about its kit rather than about whatever melodic
115
+ * instrument shares its program number.
116
+ *
117
+ * The compass is deliberately NOT sent. It is a fact about the program, which
118
+ * the server derives for itself from `gm-catalogue.ts` — so there is one answer
119
+ * rather than one per caller, and a caller that forgets to send it cannot leave
120
+ * the model writing against no compass at all. That is what used to happen on
121
+ * the new-score path, which builds its roster from a picker and never called
122
+ * this function: measured on one generated score, a timpani came back with 482
123
+ * of its 1,067 notes below its lowest drum.
116
124
  */
117
125
  export function describeTrackForGeneration(track) {
118
- // `MidiRange` is {min,max} and the wire's `range` is
119
- // {lowestMidi,highestMidi} — the same fact under two names, mapped here
120
- // rather than left for each call site to get right.
121
- const range = trackKeyboardRange(track);
122
126
  const polyphony = trackMaxPolyphony(track);
123
127
  return {
124
128
  name: track.name,
@@ -130,7 +134,6 @@ export function describeTrackForGeneration(track) {
130
134
  instrumentName: trackInstrumentLabel(track),
131
135
  midiProgram: track.midiProgram,
132
136
  clef: track.clef,
133
- range: { lowestMidi: range.min, highestMidi: range.max },
134
137
  // A keyboard's ceiling is `UNLIMITED_POLYPHONY` (Infinity), which is not a
135
138
  // number the wire can carry; omitting it says the same thing.
136
139
  ...(Number.isFinite(polyphony) ? { maximumPolyphony: polyphony } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"track-instrument.js","sourceRoot":"","sources":["../../../src/domain/instruments/track-instrument.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"track-instrument.js","sourceRoot":"","sources":["../../../src/domain/instruments/track-instrument.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -72,11 +72,13 @@ export * from "./domain/instruments/arrangement-order.js";
72
72
  export * from "./domain/instruments/midi-protocol.js";
73
73
  export * from "./domain/instruments/gm-kit.js";
74
74
  export * from "./domain/instruments/gm-range.js";
75
+ export * from "./domain/instruments/range-fit.js";
75
76
  export * from "./domain/instruments/gm-polyphony.js";
76
77
  export * from "./domain/instruments/gm-transposition.js";
77
78
  export * from "./domain/instruments/gm-percussion.js";
78
79
  export * from "./domain/generation/style-presets.js";
79
80
  export * from "./domain/generation/option-order.js";
81
+ export * from "./domain/generation/score-presets.js";
80
82
  export * from "./domain/selection/selection.js";
81
83
  export * from "./services/regeneration/controller.js";
82
84
  export * from "./domain/commands/history.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -94,11 +94,13 @@ export * from "./domain/instruments/arrangement-order.js";
94
94
  export * from "./domain/instruments/midi-protocol.js";
95
95
  export * from "./domain/instruments/gm-kit.js";
96
96
  export * from "./domain/instruments/gm-range.js";
97
+ export * from "./domain/instruments/range-fit.js";
97
98
  export * from "./domain/instruments/gm-polyphony.js";
98
99
  export * from "./domain/instruments/gm-transposition.js";
99
100
  export * from "./domain/instruments/gm-percussion.js";
100
101
  export * from "./domain/generation/style-presets.js";
101
102
  export * from "./domain/generation/option-order.js";
103
+ export * from "./domain/generation/score-presets.js";
102
104
  export * from "./domain/selection/selection.js";
103
105
  export * from "./services/regeneration/controller.js";
104
106
  // Absorbed from music_lib: pure, synchronous, dependency-free model code
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,15 +6,22 @@
6
6
  */
7
7
  import { z } from "zod";
8
8
  import type { Score, ScoreFragment, KeySignature, ScoreRange, TimeSignature, Track, UUID } from "./score.js";
9
+ /**
10
+ * A part to write, as the request names it.
11
+ *
12
+ * There is deliberately no `range` here. An instrument's compass is a fact
13
+ * about its GM program, which `gm-catalogue.ts` already states and
14
+ * `trackKeyboardRange` already answers — so the server derives it and no client
15
+ * has to agree with it. It used to be an optional field that no client in the
16
+ * family ever filled, which meant the generation prompt stated no compass at
17
+ * all: measured on one generated score, a timpani came back with 482 of its
18
+ * 1,067 notes below its lowest drum.
19
+ */
9
20
  export type GenerateScoreRequestTrack = {
10
21
  name: string;
11
22
  instrumentName: string;
12
23
  midiProgram: number;
13
24
  clef: Track["clef"];
14
- range?: {
15
- lowestMidi: number;
16
- highestMidi: number;
17
- };
18
25
  maximumPolyphony?: number;
19
26
  };
20
27
  /**
@@ -31,7 +38,7 @@ export type GenerateScoreRequestTrack = {
31
38
  * brief can be run through two backends and compared by ear, which became worth
32
39
  * doing once the provider was a configuration change rather than a code change.
33
40
  */
34
- export declare const GENERATION_VARIANTS: readonly ["default", "deepseek", "weak", "local"];
41
+ export declare const GENERATION_VARIANTS: readonly ["default", "deepseek", "local"];
35
42
  export type GenerationVariant = (typeof GENERATION_VARIANTS)[number];
36
43
  /**
37
44
  * What to call each one in a picker.
@@ -93,6 +100,26 @@ export type GenerateScoreRequest = {
93
100
  * for the two to disagree.
94
101
  */
95
102
  lyrics?: boolean;
103
+ /**
104
+ * What the words are about, when that is not simply what the piece is about.
105
+ *
106
+ * This field once did not exist on the grounds that `prompt` already says
107
+ * what the piece is, and a second subject line is a place for the two to
108
+ * disagree. What it missed is that they are genuinely different questions:
109
+ * "a slow waltz in D minor" describes the music, and the words over it can be
110
+ * about coming home without the music brief being about coming home.
111
+ *
112
+ * The disagreement is avoided by **replacing rather than adding**: the server
113
+ * has exactly one "the words are about" clause, and this fills it when it is
114
+ * present. Absent or blank, that clause falls back to `prompt` and the lyric
115
+ * is what it always was. `prompt` still reaches the model in its own right, so
116
+ * narrowing the words' subject never hides the piece's brief.
117
+ *
118
+ * Never sent without `lyrics`: `buildGenerateScoreRequest` drops it in the
119
+ * same breath it drops `lyrics` for a roster with nobody to sing, so a theme
120
+ * for a lyric that was not asked for cannot reach the wire.
121
+ */
122
+ lyricsTheme?: string;
96
123
  };
97
124
  /** Never a rendered/notation payload and never raw MIDI: always a structured `Score`. */
98
125
  export type GenerateScoreResult = {
@@ -478,10 +505,6 @@ export declare const generateScoreRequestTrackSchema: z.ZodObject<{
478
505
  tenor: "tenor";
479
506
  percussion: "percussion";
480
507
  }>;
481
- range: z.ZodOptional<z.ZodObject<{
482
- lowestMidi: z.ZodNumber;
483
- highestMidi: z.ZodNumber;
484
- }, z.core.$strip>>;
485
508
  maximumPolyphony: z.ZodOptional<z.ZodNumber>;
486
509
  }, z.core.$strip>;
487
510
  export declare const generateScoreRequestSchema: z.ZodObject<{
@@ -513,10 +536,6 @@ export declare const generateScoreRequestSchema: z.ZodObject<{
513
536
  tenor: "tenor";
514
537
  percussion: "percussion";
515
538
  }>;
516
- range: z.ZodOptional<z.ZodObject<{
517
- lowestMidi: z.ZodNumber;
518
- highestMidi: z.ZodNumber;
519
- }, z.core.$strip>>;
520
539
  maximumPolyphony: z.ZodOptional<z.ZodNumber>;
521
540
  }, z.core.$strip>>;
522
541
  complexity: z.ZodOptional<z.ZodEnum<{
@@ -526,6 +545,7 @@ export declare const generateScoreRequestSchema: z.ZodObject<{
526
545
  }>>;
527
546
  variant: z.ZodOptional<z.ZodString>;
528
547
  lyrics: z.ZodOptional<z.ZodBoolean>;
548
+ lyricsTheme: z.ZodOptional<z.ZodString>;
529
549
  }, z.core.$strip>;
530
550
  export declare const generateScoreResultSchema: z.ZodObject<{
531
551
  score: z.ZodObject<{
@@ -1667,10 +1687,6 @@ export declare const regenerateRegionRequestSchema: z.ZodObject<{
1667
1687
  tenor: "tenor";
1668
1688
  percussion: "percussion";
1669
1689
  }>;
1670
- range: z.ZodOptional<z.ZodObject<{
1671
- lowestMidi: z.ZodNumber;
1672
- highestMidi: z.ZodNumber;
1673
- }, z.core.$strip>>;
1674
1690
  maximumPolyphony: z.ZodOptional<z.ZodNumber>;
1675
1691
  }, z.core.$strip>>>;
1676
1692
  accompaniment: z.ZodOptional<z.ZodObject<{
@@ -1685,10 +1701,6 @@ export declare const regenerateRegionRequestSchema: z.ZodObject<{
1685
1701
  tenor: "tenor";
1686
1702
  percussion: "percussion";
1687
1703
  }>;
1688
- range: z.ZodOptional<z.ZodObject<{
1689
- lowestMidi: z.ZodNumber;
1690
- highestMidi: z.ZodNumber;
1691
- }, z.core.$strip>>;
1692
1704
  maximumPolyphony: z.ZodOptional<z.ZodNumber>;
1693
1705
  }, z.core.$strip>>;
1694
1706
  fragment: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/model/generation.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGpC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;iBAUxC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/model/generation.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGpC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;iBAUxC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -20,12 +20,7 @@ import { clefSchema, keySignatureSchema, measureSchema, scoreSchema, timeSignatu
20
20
  * brief can be run through two backends and compared by ear, which became worth
21
21
  * doing once the provider was a configuration change rather than a code change.
22
22
  */
23
- export const GENERATION_VARIANTS = [
24
- "default",
25
- "deepseek",
26
- "weak",
27
- "local",
28
- ];
23
+ export const GENERATION_VARIANTS = ["default", "deepseek", "local"];
29
24
  /**
30
25
  * What to call each one in a picker.
31
26
  *
@@ -34,9 +29,15 @@ export const GENERATION_VARIANTS = [
34
29
  * the old set.
35
30
  */
36
31
  export const GENERATION_VARIANT_LABELS = {
37
- default: "Default",
32
+ /*
33
+ Named after the provider it reaches, not after its position in the list.
34
+
35
+ "Default" told a reader only that it was the one already selected, which is
36
+ a fact about the picker; what they are choosing between is which company's
37
+ model writes the music.
38
+ */
39
+ default: "Open AI",
38
40
  deepseek: "DeepSeek",
39
- weak: "Cheap model",
40
41
  /*
41
42
  A model running on the machine, served by LM Studio through ShapeShyft.
42
43
 
@@ -84,7 +85,6 @@ export const generateScoreRequestTrackSchema = z.object({
84
85
  instrumentName: z.string(),
85
86
  midiProgram: z.number().int().min(0).max(127),
86
87
  clef: clefSchema,
87
- range: midiRangeSchema.optional(),
88
88
  maximumPolyphony: z.number().int().positive().optional(),
89
89
  });
90
90
  export const generateScoreRequestSchema = z.object({
@@ -102,6 +102,7 @@ export const generateScoreRequestSchema = z.object({
102
102
  // than trusted: see `GenerateScoreRequest.variant`.
103
103
  variant: z.string().optional(),
104
104
  lyrics: z.boolean().optional(),
105
+ lyricsTheme: z.string().optional(),
105
106
  });
106
107
  export const generateScoreResultSchema = z.object({
107
108
  score: scoreSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/model/generation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/model/generation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudobility/music_types",
3
- "version": "0.13.20",
3
+ "version": "0.13.22",
4
4
  "description": "TypeScript types and Zod schemas for the ScoreSmith music API - scores, generation contracts, project payloads",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",