From 0beb9cddb5edad298b59950205ebf9d927dbf156 Mon Sep 17 00:00:00 2001 From: JotaChina Date: Thu, 25 Dec 2025 13:06:20 -0300 Subject: [PATCH] melhorando a leitura de projetos no mmpCreator --- assets/js/creations/file.js | 14 +++----------- assets/js/creations/main.js | 25 +++++++++++++------------ 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/assets/js/creations/file.js b/assets/js/creations/file.js index f7067f57..d5ec7e85 100755 --- a/assets/js/creations/file.js +++ b/assets/js/creations/file.js @@ -372,17 +372,9 @@ export async function parseMmpContent(xmlString) { // 1. Identifica colunas de beat/patterns (usado para mapear steps) // Normalmente ficam dentro do primeiro container de Bassline const bbTrackNodes = Array.from(xmlDoc.querySelectorAll('track[type="1"]')); - let sortedBBTrackNameNodes = []; - if (bbTrackNodes.length > 0) { - sortedBBTrackNameNodes = Array.from( - bbTrackNodes[0].querySelectorAll("bbtco") - ).sort((a, b) => { - return ( - (parseInt(a.getAttribute("pos"), 10) || 0) - - (parseInt(b.getAttribute("pos"), 10) || 0) - ); - }); - } + // Cada BBTrack do Song Editor representa uma “coluna/pattern” (pos 0, 192, 384...) + // então usamos o próprio array de BBTracks para nomear as patterns: + const sortedBBTrackNameNodes = bbTrackNodes; // ------------------------------------------------------------- // 2. EXTRAÇÃO DE INSTRUMENTOS DA RAIZ (SONG EDITOR) diff --git a/assets/js/creations/main.js b/assets/js/creations/main.js index 07bdf45b..44953e40 100755 --- a/assets/js/creations/main.js +++ b/assets/js/creations/main.js @@ -632,22 +632,23 @@ document.addEventListener("DOMContentLoaded", () => { // --- FUNÇÕES GLOBAIS DE FOCO NO PATTERN --- window.openPatternEditor = function (basslineTrack) { - console.log("Focando na Bassline:", basslineTrack.name); + console.log("Focando na Bassline:", basslineTrack.name); - appState.pattern.focusedBasslineId = basslineTrack.id; + appState.pattern.focusedBasslineId = basslineTrack.id; - // 🔥 chave: sincroniza a coluna/pattern com o BBTrack escolhido - if (Number.isInteger(basslineTrack.patternIndex)) { - appState.pattern.activePatternIndex = basslineTrack.patternIndex; + if (Number.isInteger(basslineTrack.patternIndex)) { + // fonte de verdade: aplica em TODAS as tracks (samplers/plugins) + sendAction({ type: "SET_ACTIVE_PATTERN", patternIndex: basslineTrack.patternIndex }); - // opcional: manter o selector UI consistente (se existir) - const sel = document.getElementById("global-pattern-selector"); - if (sel) sel.value = String(basslineTrack.patternIndex); - } + // opcional: manter selector sincronizado + const sel = document.getElementById("global-pattern-selector"); + if (sel) sel.value = String(basslineTrack.patternIndex); + } + + renderAll(); + showToast(`Editando: ${basslineTrack.name}`, "info"); + }; - renderAll(); - showToast(`Editando: ${basslineTrack.name}`, "info"); -}; window.exitPatternFocus = function() {