fix structure
This commit is contained in:
+44
-75
@@ -65,26 +65,6 @@ export const STRUCTURE_SEGMENTS = {
|
||||
"intro instrumentale longue",
|
||||
],
|
||||
},
|
||||
// pre_chorus: {
|
||||
// label: "Pré-refrain",
|
||||
// promptLabel: "Pré-refrain",
|
||||
// showIndex: false,
|
||||
pre_chorus: {
|
||||
label: "Pré-refrain",
|
||||
promptLabel: "Pré-refrain",
|
||||
showIndex: false,
|
||||
allowMultiple: false,
|
||||
optional: true,
|
||||
inputHeight: 150,
|
||||
requiresLyrics: true,
|
||||
aliases: [
|
||||
"pré-refrain",
|
||||
"pre-refrain",
|
||||
"prechorus",
|
||||
"pre chorus",
|
||||
"pré chorus",
|
||||
],
|
||||
},
|
||||
pre_refrain_instrumental: {
|
||||
label: "Pré-refrain instrumental",
|
||||
promptLabel: "Pré-refrain instrumental",
|
||||
@@ -94,7 +74,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
inputHeight: 150,
|
||||
exclusiveGroup: "pre_chorus",
|
||||
requiresLyrics: false,
|
||||
aliases: ["instrumental_pre_chorus"],
|
||||
aliases: [],
|
||||
},
|
||||
pont: {
|
||||
label: "Pont",
|
||||
@@ -103,8 +83,8 @@ export const STRUCTURE_SEGMENTS = {
|
||||
allowMultiple: true,
|
||||
optional: true,
|
||||
inputHeight: 225,
|
||||
requiresLyrics: true,
|
||||
aliases: ["bridge"],
|
||||
requiresLyrics: false,
|
||||
aliases: [],
|
||||
},
|
||||
solo_de_guitare: {
|
||||
label: "Solo de guitare",
|
||||
@@ -114,7 +94,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
optional: true,
|
||||
inputHeight: 150,
|
||||
requiresLyrics: false,
|
||||
aliases: ["guitar_solo", "solo_guitare"],
|
||||
aliases: [],
|
||||
},
|
||||
solo_de_guitare_electrique: {
|
||||
label: "Solo de guitare électrique",
|
||||
@@ -124,7 +104,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
optional: true,
|
||||
inputHeight: 150,
|
||||
requiresLyrics: false,
|
||||
aliases: ["electric_guitar_solo", "solo_guitare_electrique"],
|
||||
aliases: [],
|
||||
},
|
||||
solo_de_batterie: {
|
||||
label: "Solo de batterie",
|
||||
@@ -134,7 +114,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
optional: true,
|
||||
inputHeight: 150,
|
||||
requiresLyrics: false,
|
||||
aliases: ["drum_solo", "solo_batterie"],
|
||||
aliases: [],
|
||||
},
|
||||
solo_de_saxophone: {
|
||||
label: "Solo de saxophone",
|
||||
@@ -144,7 +124,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
optional: true,
|
||||
inputHeight: 150,
|
||||
requiresLyrics: false,
|
||||
aliases: ["sax_solo", "solo_saxo"],
|
||||
aliases: [],
|
||||
},
|
||||
solo_de_violon: {
|
||||
label: "Solo de violon",
|
||||
@@ -154,7 +134,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
optional: true,
|
||||
inputHeight: 150,
|
||||
requiresLyrics: false,
|
||||
aliases: ["violin_solo", "solo_violon"],
|
||||
aliases: [],
|
||||
},
|
||||
break: {
|
||||
label: "Break",
|
||||
@@ -184,7 +164,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
optional: true,
|
||||
inputHeight: 150,
|
||||
requiresLyrics: false,
|
||||
aliases: ["melodic_interlude"],
|
||||
aliases: [],
|
||||
},
|
||||
final_apogee: {
|
||||
label: "Final apogée",
|
||||
@@ -195,7 +175,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
inputHeight: 170,
|
||||
exclusiveGroup: "outro",
|
||||
requiresLyrics: false,
|
||||
aliases: ["grand_finale"],
|
||||
aliases: [],
|
||||
},
|
||||
arret_net: {
|
||||
label: "Arrêt net",
|
||||
@@ -206,7 +186,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
inputHeight: 150,
|
||||
exclusiveGroup: "outro",
|
||||
requiresLyrics: false,
|
||||
aliases: ["sudden_stop"],
|
||||
aliases: [],
|
||||
},
|
||||
fade_out: {
|
||||
label: "Fade out",
|
||||
@@ -228,7 +208,7 @@ export const STRUCTURE_SEGMENTS = {
|
||||
inputHeight: 150,
|
||||
exclusiveGroup: "outro",
|
||||
requiresLyrics: false,
|
||||
aliases: ["soft_transition"],
|
||||
aliases: [],
|
||||
},
|
||||
};
|
||||
|
||||
@@ -243,6 +223,32 @@ const ALIAS_TO_KEY = Object.entries(STRUCTURE_SEGMENTS).reduce(
|
||||
{}
|
||||
);
|
||||
|
||||
const LEGACY_STRUCTURE_ALIASES = {
|
||||
pre_chorus: "pre_refrain_instrumental",
|
||||
"pré-refrain": "pre_refrain_instrumental",
|
||||
"pre-refrain": "pre_refrain_instrumental",
|
||||
"pre_refrain": "pre_refrain_instrumental",
|
||||
prechorus: "pre_refrain_instrumental",
|
||||
"pre chorus": "pre_refrain_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",
|
||||
};
|
||||
|
||||
Object.entries(LEGACY_STRUCTURE_ALIASES).forEach(([alias, target]) => {
|
||||
const key = String(alias).toLowerCase();
|
||||
ALIAS_TO_KEY[key] = target;
|
||||
});
|
||||
|
||||
const sanitizeToken = (value) =>
|
||||
String(value || "")
|
||||
.trim()
|
||||
@@ -281,7 +287,6 @@ export const normalizeStructureType = (value) => {
|
||||
export const sanitizeStructureList = (structure = []) => {
|
||||
if (!Array.isArray(structure)) return [];
|
||||
const output = [];
|
||||
let shouldInjectPreChorus = false;
|
||||
let shouldInjectInstrumentalPreChorus = false;
|
||||
|
||||
structure.forEach((segment) => {
|
||||
@@ -306,10 +311,6 @@ export const sanitizeStructureList = (structure = []) => {
|
||||
}
|
||||
}
|
||||
|
||||
if (type === "pre_chorus") {
|
||||
shouldInjectPreChorus = true;
|
||||
return;
|
||||
}
|
||||
if (type === "pre_refrain_instrumental") {
|
||||
shouldInjectInstrumentalPreChorus = true;
|
||||
return;
|
||||
@@ -320,54 +321,22 @@ export const sanitizeStructureList = (structure = []) => {
|
||||
|
||||
let result = output;
|
||||
|
||||
if (shouldInjectPreChorus) {
|
||||
const baseWithoutPre = result.filter((item) => item !== "pre_chorus");
|
||||
const hasRefrain = baseWithoutPre.some((item) => item === "refrain");
|
||||
if (shouldInjectInstrumentalPreChorus) {
|
||||
const expanded = [];
|
||||
let hasRefrain = false;
|
||||
|
||||
baseWithoutPre.forEach((item, idx) => {
|
||||
result.forEach((item) => {
|
||||
if (item === "refrain") {
|
||||
hasRefrain = true;
|
||||
const previous = expanded[expanded.length - 1];
|
||||
if (previous !== "pre_chorus") {
|
||||
expanded.push("pre_chorus");
|
||||
if (previous !== "pre_refrain_instrumental") {
|
||||
expanded.push("pre_refrain_instrumental");
|
||||
}
|
||||
}
|
||||
expanded.push(item);
|
||||
});
|
||||
|
||||
if (!hasRefrain) {
|
||||
expanded.push("pre_chorus");
|
||||
}
|
||||
|
||||
result = expanded;
|
||||
}
|
||||
|
||||
if (shouldInjectInstrumentalPreChorus) {
|
||||
const baseWithoutInstrumental = result.filter(
|
||||
(item) => item !== "pre_refrain_instrumental"
|
||||
);
|
||||
const expanded = [];
|
||||
|
||||
baseWithoutInstrumental.forEach((item) => {
|
||||
if (item === "pre_chorus") {
|
||||
const previous = expanded[expanded.length - 1];
|
||||
if (previous !== "pre_refrain_instrumental") {
|
||||
expanded.push("pre_refrain_instrumental");
|
||||
}
|
||||
}
|
||||
if (item === "refrain") {
|
||||
const previous = expanded[expanded.length - 1];
|
||||
if (
|
||||
previous !== "pre_refrain_instrumental" &&
|
||||
previous !== "pre_chorus"
|
||||
) {
|
||||
expanded.push("pre_refrain_instrumental");
|
||||
}
|
||||
}
|
||||
expanded.push(item);
|
||||
});
|
||||
|
||||
if (!expanded.includes("pre_refrain_instrumental")) {
|
||||
expanded.push("pre_refrain_instrumental");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user