new song structure

This commit is contained in:
2025-10-22 16:04:12 +02:00
parent 7b68a8c101
commit da001a491b
6 changed files with 420 additions and 86 deletions
+49
View File
@@ -16,6 +16,20 @@ const STRUCTURE_PROMPT_LABELS = {
short_intro: "introduction instrumentale courte",
long_intro: "introduction instrumentale longue",
pre_chorus: "pré-refrain",
pre_refrain_instrumental: "pré-refrain instrumental",
pont: "pont",
solo_de_guitare: "solo de guitare",
solo_de_guitare_electrique: "solo de guitare électrique",
solo_de_batterie: "solo de batterie",
solo_de_saxophone: "solo de saxophone",
solo_de_violon: "solo de violon",
break: "break",
interlude: "interlude",
interlude_melodique: "interlude mélodique",
final_apogee: "final apogée",
arret_net: "arrêt net",
fade_out: "fade out",
transition_douce: "transition douce vers le silence",
};
const STRUCTURE_ALIASES = {
@@ -30,6 +44,20 @@ const STRUCTURE_ALIASES = {
"pre chorus": "pre_chorus",
"pre-chorus": "pre_chorus",
prechorus: "pre_chorus",
"pré-refrain instrumental": "pre_refrain_instrumental",
"pre-refrain instrumental": "pre_refrain_instrumental",
"instrumental pre-chorus": "pre_refrain_instrumental",
"instrumental pre chorus": "pre_refrain_instrumental",
bridge: "pont",
guitar_solo: "solo_de_guitare",
electric_guitar_solo: "solo_de_guitare_electrique",
drum_solo: "solo_de_batterie",
sax_solo: "solo_de_saxophone",
violin_solo: "solo_de_violon",
melodic_interlude: "interlude_melodique",
grand_finale: "final_apogee",
sudden_stop: "arret_net",
soft_transition: "transition_douce",
};
const normalizeStructureValue = (value) => {
@@ -61,6 +89,27 @@ const sanitizeStructureEntries = (structure = []) => {
if (!output.includes("pre_chorus")) output.push("pre_chorus");
return;
}
if (normalized === "pre_refrain_instrumental") {
if (!output.includes("pre_refrain_instrumental")) {
output.push("pre_refrain_instrumental");
}
return;
}
if (
normalized === "final_apogee" ||
normalized === "arret_net" ||
normalized === "fade_out" ||
normalized === "transition_douce"
) {
const outroIndex = output.findIndex((item) =>
["final_apogee", "arret_net", "fade_out", "transition_douce"].includes(
item,
),
);
if (outroIndex !== -1) {
output.splice(outroIndex, 1);
}
}
output.push(normalized);
});
return output;