// === voz.jsx — los beats de cada escena salen de la toma real ===
// audio/align.js trae, por escena, [carácter del guion, segundo del mp3] de cada palabra (de la
// transcripción de la toma de ElevenLabs). B(texto, frase) devuelve el segundo en que la voz empieza
// esa frase. Sin align.js (antes de tener la toma) cae a un ritmo nominal de 14,5 caracteres/s.
const CPS = 14.5;
const ALIGN = window.ALIGN || null;

function B(texto, frase){
  const i = texto.indexOf(frase);
  if (i < 0) { console.warn('[voz] beat sin su frase en el guion:', frase); return 0; }
  if (!ALIGN) return i / CPS;
  const palabras = ALIGN[window.GUION.indexOf(texto)];
  const p = palabras.find(p => p[0] >= i);
  return p ? p[1] : palabras[palabras.length - 1][1];
}

Object.assign(window, { B, CPS });
