@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 +5 -0
- package/dist/domain/generation/score-presets.d.ts +83 -0
- package/dist/domain/generation/score-presets.d.ts.map +1 -0
- package/dist/domain/generation/score-presets.js +89 -0
- package/dist/domain/generation/score-presets.js.map +1 -0
- package/dist/domain/generation/style-presets.d.ts +33 -0
- package/dist/domain/generation/style-presets.d.ts.map +1 -1
- package/dist/domain/generation/style-presets.js +69 -1
- package/dist/domain/generation/style-presets.js.map +1 -1
- package/dist/domain/instruments/range-fit.d.ts +36 -0
- package/dist/domain/instruments/range-fit.d.ts.map +1 -0
- package/dist/domain/instruments/range-fit.js +20 -0
- package/dist/domain/instruments/range-fit.js.map +1 -0
- package/dist/domain/instruments/track-instrument.d.ts +11 -3
- package/dist/domain/instruments/track-instrument.d.ts.map +1 -1
- package/dist/domain/instruments/track-instrument.js +11 -8
- package/dist/domain/instruments/track-instrument.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 +33 -21
- package/dist/model/generation.d.ts.map +1 -1
- package/dist/model/generation.js +10 -9
- package/dist/model/generation.js.map +1 -1
- package/package.json +1 -1
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;
|
|
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":"AACA,OAAO,EACL,kBAAkB,EAClB,YAAY,GACb,MAAM,iCAAiC,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG;IAChC,OAAO;IACP,MAAM;IACN,KAAK;IACL,WAAW;IACX,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,YAAY;IACZ,OAAO;IACP,SAAS;IACT,WAAW;IACX,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,WAAW;IACX,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,cAAc;IACd,OAAO;IACP,WAAW;IACX,SAAS;IACT,OAAO;CACC,CAAC;AAIX,MAAM,CAAC,MAAM,4BAA4B,GACvC,yBAAyB,CAAC;
|
|
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
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
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
|
|
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
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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", "
|
|
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":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,aAAa,EACb,KAAK,EACL,IAAI,EACL,MAAM,YAAY,CAAC;AAKpB,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpB,
|
|
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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"}
|
package/dist/model/generation.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/model/generation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED