Etapa 1 / 9 · Estructura
Preparar el proyecto y los controles
Pasar de una idea a una base que se pueda abrir, entender y revisar.
Conceptos del temaHTML mínimo · canvas a pantalla completa · unidades relativas · controles que no estorban · primer archivo de lógica.
El avance que buscamosUna página negra a pantalla completa con un canvas, una barra de controles discreta y tres archivos listos para crecer.
Explorar la etapa
Qué pedirle a la IA
Prompt 1 · estructuraDesarrollá solamente la etapa 1. Creá index.html, style.css y app.js. En el HTML poné una barra superior con un selector de canción, un botón «Reproducir», un deslizador de tempo y uno de volumen; un canvas que ocupe toda la ventana y un contenedor para la letra de la canción. Fondo casi negro. No agregues librerías. Al final, explicame cómo abrirlo.Prompt 2 · un televisor en mente
Quiero poder usarlo en un televisor 4k desde el sillón. Hacé que los controles y los textos crezcan con el tamaño de la pantalla, y que la barra se aclare solo cuando paso el mouse por encima.
position: fixed; inset: 0, de modo que siempre cubre la ventana. Para el escalado, definió el tamaño de letra de toda la página con clamp() y usó rem en los controles: 1 rem equivale a 16 px en una pantalla de 1920 y llega a 32 px en una 4k. La barra queda al 35 % de opacidad y pasa al 100 % con :hover.Qué verificar antes de continuar
Abrir index.html, comprobar que el canvas negro llena la ventana, que no aparecen barras de desplazamiento, que la consola no muestra errores y que los controles se ven y se aclaran al pasar el mouse. Achicar y agrandar la ventana para ver que todo se acomoda.
Archivos que se estudiarán
index.htmlstyle.cssapp.js
<header>
<div class="controls">
<select id="piece" title="Tema"></select>
<label title="Al terminar una canción, pasa a la siguiente de la lista"><input id="auto" type="checkbox" checked> Reproducción automática</label>
<button id="play">▶ Reproducir</button>
<label>Tempo <input id="tempo" type="range" min="50" max="200" value="100"></label>
<label>Volumen <input id="vol" type="range" min="0" max="100" value="60"></label>
</div>
</header>
<canvas id="stage"></canvas>
<div id="lyrics" aria-live="polite"></div>
<script src="app.js"></script>
Es toda la interfaz. Lo demás (papel, notas, personajes, estrellas, partículas) se dibuja dentro del canvas. Los controles ya tienen identificadores, así que app.js los puede conectar sin reconstruir la página. Los dos controles que hoy parecen sobrar, el selector y la casilla de reproducción automática, se activan en etapas posteriores.
El fragmento pertenece a la versión final de la aplicación; en esta primera etapa la barra solo tenía el botón y los deslizadores.