testando ui otimista
Deploy / Deploy (push) Successful in 48s Details

This commit is contained in:
JotaChina 2026-03-26 19:34:47 -03:00
parent acc8881073
commit db9bbada25
1 changed files with 22 additions and 5 deletions

View File

@ -764,7 +764,7 @@ function ensureBbTrackCount(xmlDoc, neededCount) {
// senão o bbtrack clonado pode ficar mudo no LMMS.
// (Então NÃO faça: inner.querySelectorAll('track[type="0"]').remove())
clone.setAttribute("name", `Beat/Bassline ${bbTracks.length + 1}`);
clone.setAttribute("name", `Caixa de Steps ${bbTracks.length + 1}`);
songTc.appendChild(clone);
bbTracks.push(clone);
@ -814,10 +814,27 @@ function createTrackXml(track) {
const lmmsVolume = Math.round(track.volume * 100);
const lmmsPan = Math.round(track.pan * 100);
const instrName = track.instrumentName || "kicker";
const instrXml =
track.instrumentXml ||
`<kicker><env amt="0" attack="0.01" hold="0.1" decay="0.1" release="0.1" sustain="0.5" sync_mode="0"/></kicker>`;
let instrName = track.instrumentName || "kicker";
let instrXml = track.instrumentXml;
// 🔥 CORREÇÃO: Identificar se a faixa é um leitor de áudio (sampler)
const isSampler = track.type === "sampler" || track.samplePath || track.filePath || track.sampleName;
if (isSampler) {
instrName = "audiofileprocessor";
// Extrai apenas o nome do ficheiro (ex: "snare02.ogg")
const rawSrc = track.samplePath || track.filePath || track.sampleName || track.name || "";
const fileName = String(rawSrc).split(/[\\/]/).pop();
// Substitui o XML pelo leitor de áudio apontando para a pasta "samples/"
if (!instrXml || instrXml.includes("<kicker>")) {
instrXml = `<audiofileprocessor src="samples/${fileName}" />`;
}
} else if (!instrXml) {
// Fallback original para o Kicker caso seja realmente uma faixa de sintetizador vazia
instrXml = `<kicker><env amt="0" attack="0.01" hold="0.1" decay="0.1" release="0.1" sustain="0.5" sync_mode="0"/></kicker>`;
}
const patternsXml = track.patterns
.map((pattern) => {