melhorando a leitura de projetos no mmpCreator
Deploy / Deploy (push) Successful in 2m14s
Details
Deploy / Deploy (push) Successful in 2m14s
Details
This commit is contained in:
parent
a6291ef60a
commit
47a9b92b5a
|
|
@ -264,19 +264,17 @@ export async function parseMmpContent(xmlString) {
|
||||||
.filter((t) => t !== null);
|
.filter((t) => t !== null);
|
||||||
|
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
// 3. EXTRAÇÃO DAS TRILHAS DE BASSLINE E SEUS FILHOS
|
// 3. EXTRAÇÃO DAS TRILHAS DE BASSLINE (BBTracks) E RACK COMPARTILHADO
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
|
|
||||||
// -------------------------------------------------------------
|
// 3.1) Acha um node que realmente contém o rack de instrumentos do BBE
|
||||||
// 3. EXTRAÇÃO DAS TRILHAS DE BASSLINE E DO RACK COMPARTILHADO
|
const bbTrackNodes = Array.from(xmlDoc.querySelectorAll('track[type="1"]'));
|
||||||
// -------------------------------------------------------------
|
|
||||||
|
|
||||||
// 3.1) Acha o "rack" que realmente contém os instrumentos do Beat/Bassline Editor
|
|
||||||
const bbRackNode = bbTrackNodes.find((n) =>
|
const bbRackNode = bbTrackNodes.find((n) =>
|
||||||
n.querySelector('bbtrack > trackcontainer > track[type="0"]')
|
n.querySelector('bbtrack > trackcontainer > track[type="0"]')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Cria um ID único para o rack
|
// ID do rack compartilhado
|
||||||
const rackId = bbRackNode
|
const rackId = bbRackNode
|
||||||
? `bbRack_${Date.now()}_${Math.random().toString(36).slice(2)}`
|
? `bbRack_${Date.now()}_${Math.random().toString(36).slice(2)}`
|
||||||
: null;
|
: null;
|
||||||
|
|
@ -289,12 +287,13 @@ if (bbRackNode && rackId) {
|
||||||
);
|
);
|
||||||
|
|
||||||
bbRackInstruments = internalInstrumentNodes
|
bbRackInstruments = internalInstrumentNodes
|
||||||
.map((node) => parseInstrumentNode(node, sortedBBTrackNameNodes, pathMap, rackId))
|
.map((node) =>
|
||||||
.filter(Boolean);
|
parseInstrumentNode(node, sortedBBTrackNameNodes, pathMap, rackId)
|
||||||
|
)
|
||||||
|
.filter((t) => t !== null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3.3) Agora cria os BBTracks (Caixa, Kick, etc) como "containers/patterns"
|
// 3.3) Cria os containers “Caixa/Kick/…” como patterns (sem instrumentos próprios)
|
||||||
// Eles não carregam instrumentos próprios: só apontam para o rack.
|
|
||||||
const basslineContainers = bbTrackNodes
|
const basslineContainers = bbTrackNodes
|
||||||
.map((trackNode, idx) => {
|
.map((trackNode, idx) => {
|
||||||
const trackName = trackNode.getAttribute("name") || "Beat/Bassline";
|
const trackName = trackNode.getAttribute("name") || "Beat/Bassline";
|
||||||
|
|
@ -315,10 +314,10 @@ const basslineContainers = bbTrackNodes
|
||||||
type: "bassline",
|
type: "bassline",
|
||||||
playlist_clips: playlistClips,
|
playlist_clips: playlistClips,
|
||||||
|
|
||||||
// qual "pattern/coluna" este BBTrack representa
|
// 🔥 importante: qual “coluna/pattern” este BBTrack representa
|
||||||
patternIndex: idx,
|
patternIndex: idx,
|
||||||
|
|
||||||
// aponta pro rack real (se não achou rack, cai nele mesmo)
|
// 🔥 importante: de onde vêm os instrumentos
|
||||||
instrumentSourceId: rackId,
|
instrumentSourceId: rackId,
|
||||||
|
|
||||||
volume: 1,
|
volume: 1,
|
||||||
|
|
@ -333,13 +332,13 @@ const basslineContainers = bbTrackNodes
|
||||||
// 4. COMBINAÇÃO E FINALIZAÇÃO
|
// 4. COMBINAÇÃO E FINALIZAÇÃO
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
|
|
||||||
// A lista final plana contém TODOS:
|
// A lista final plana contém:
|
||||||
// 1. Instrumentos da Raiz
|
// 1) Instrumentos do Song Editor
|
||||||
// 2. Instrumentos dentro de Basslines
|
// 2) Instrumentos do rack compartilhado do Beat/Bassline Editor
|
||||||
// 3. As próprias Basslines (Containers)
|
// 3) Containers (Caixa/Kick/...) que só referenciam o rack
|
||||||
const newTracks = [
|
const newTracks = [
|
||||||
...songTracks,
|
...songTracks,
|
||||||
...allBasslineInstruments,
|
...bbRackInstruments,
|
||||||
...basslineContainers,
|
...basslineContainers,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue