﻿// =====================================================================
// Textos de letra da recriação: lidos de ae/letra.json (preenchido pelo autor).
// LETRA(id) -> {texto, palavras[], canta_em[]}; usa "texto" se preenchido, senão "reserva".
// A digitação divide o texto em palavras pelos espaços e usa os tempos "canta_em" do slot
// (se o texto colado tiver mais palavras que tempos, as extras entram espaçadas pelo último intervalo).
// Uso (ES3): $.evalFile(P + "ae/letra.jsx"); var s = LETRA("A1"); DIGITAR(camada, s.palavras, s.tempos, fim, {...});
// =====================================================================
var LETRA_P = (function () { try { return File($.fileName).parent.parent.fsName.replace(/\\/g, "/") + "/"; } catch (e) { return File.decode("<HOME>/Documents/Cria%C3%A7%C3%A3o%20de%20conteudo/07-videos/projetos/2026-10-17-subzmotion-recriacao/"); } })();   // pasta do projeto = a pasta acima de ae/ (rodar com $.evalFile)
var LETRA_DADOS = null;
function LETRA(id) {
  if (!LETRA_DADOS) { var f = new File(LETRA_P + "ae/letra.json"); f.encoding = "UTF-8"; f.open("r"); LETRA_DADOS = eval("(" + f.read() + ")"); f.close(); }
  var s = null, i;
  for (i = 0; i < LETRA_DADOS.slots.length; i++) if (LETRA_DADOS.slots[i].id == id) s = LETRA_DADOS.slots[i];
  if (!s) throw new Error("slot de letra inexistente: " + id);
  var txt = (s.texto && s.texto.replace(/\s/g, "") !== "") ? s.texto : s.reserva;
  var pal = txt.replace(/^\s+|\s+$/g, "").split(/\s+/), passo = 0.3;
  // com a letra colada, letra_automatica.py grava o instante de cada palavra em "tempos_texto"
  var t = (txt == s.texto && s.tempos_texto && s.tempos_texto.length) ? s.tempos_texto.slice(0) : s.canta_em.slice(0);
  for (var k = 0; k < t.length; k++) if (t[k] === null) t[k] = (k ? t[k - 1] + passo : s.canta_em[0]);
  if (t.length >= 2) passo = t[t.length - 1] - t[t.length - 2];
  while (t.length < pal.length) t.push((t.length ? t[t.length - 1] : 0) + passo);
  return { id: id, texto: txt, palavras: pal, tempos: t.slice(0, pal.length), preenchido: txt == s.texto };
}
