FOSFENO/docs/uso.md
hacklab 61543e1987 MOTORES: pastillas configurables y destino (salida o capa)
Las pestanas de capa de la barra superior no valian: mezclaban navegar por el
panel con elegir sobre que se trabaja, y sacaban del panel de directo. Se
quitan y todo pasa a MOTORES, con dos decisiones separadas:

  DONDE  -> fila 'Donde se ve': SALIDA o una capa del mapping (+ crea una).
  QUE    -> las pastillas: combinaciones guardadas por el usuario.

Pinchar una pastilla la manda al destino elegido: con SALIDA cambia el motor
global, con una capa cambia SOLO esa capa y el resto sigue igual. Con una capa
elegida sus ajustes salen en MOTORES (la tarjeta de propiedades se mueve, no
se duplica: dos formularios para lo mismo se desincronizan a la primera).

Las pastillas son configurables: motor + preset + ajustes y su nombre, con
'Configurar pastillas'. Persisten en data/slots.json (gitignorado, es de cada
instalacion). De fabrica vienen los cinco motores de siempre, asi que quien
actualice se encuentra lo mismo que tenia. Hydra, Mezcla y projectM nativo
solo pueden ir a la salida, y al intentar mandarlos a una capa se dice.

Comprobado en Chromium por CDP, no con --dump-dom: ese fotografia el DOM al
cargar, antes de que llegue el estado por socket, y daba falsos "esta vacio".
Verificado que disparar sobre una capa deja el motor global intacto, que la
tarjeta de propiedades va y vuelve de su sitio, y que las pastillas nuevas se
guardan en disco.

De paso, dos fallos que aparecieron al probarlo:
- Restaurar la vista guardada corria al principio del fichero y llamaba a
  codigo que usa variables declaradas con let mas abajo: ReferenceError que
  se llevaba por delante el resto del script (socket incluido) y dejaba el
  panel en blanco. Ahora se restaura al final.
- #card-destino no estaba en la lista de 'order' del CSS, asi que caia a 0 y
  se colaba encima de las pastillas pese a ir despues en el HTML.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 16:47:01 +02:00

164 lines
7.1 KiB
Markdown

# Uso del panel
Cuando la Raspberry arranca, las visuales salen solas por el proyector. Todo
lo demás se controla desde el panel.
## Entrar en el panel
Al arrancar, el proyector muestra una pantalla con un código QR y la dirección
del panel. Escanea el QR con la cámara del móvil y el panel se abre solo. Si
prefieres escribirla, la dirección es `http://fosfeno.local/`.
El móvil tiene que estar en la misma red que la Raspberry. La explicación
completa, con las tres formas de conectar y los detalles del router, está en
[Conectarse al panel](conexion.md).
Arriba a la derecha del panel hay un punto. Verde quiere decir que está
conectado con la Raspberry. Rojo quiere decir que se ha perdido la conexión.
![Panel de control de FOSFENO](assets/panel.png)
## Las dos pestañas: MOTORES y MAPPING
A la derecha del título **FOSFENO** hay dos pestañas. Separan las dos cosas que
se hacen con el panel, que no tienen nada que ver entre sí:
- **MOTORES** — el directo. Encendido, audio, sensibilidad, el motor de
visuales y sus controles. Es la pestaña de siempre y la que está abierta al
arrancar.
- **MAPPING** — el montaje. Encajar la imagen sobre la superficie física:
superficies, malla y máscaras, con una previsualización grande para arrastrar
los puntos.
Lo normal es pasar por MAPPING una vez al montar y quedarse en MOTORES el resto
de la noche. Si el mapping está activado, aparece un **punto verde** en su
pestaña, para que se sepa que la salida se está deformando aunque estés mirando
MOTORES.
El panel recuerda en qué pestaña lo dejaste.
## Avisos y errores
Justo debajo de la cabecera aparecen los avisos. Si algo va mal (la cámara no
responde, un shader tiene un error de código, projectM no está instalado), el
mensaje sale ahí en lugar de quedarse el sistema callado. Los avisos
informativos desaparecen solos. Los errores se quedan hasta que los cierras,
para que no se te escapen.
## Encendido
El botón grande de encendido pone las visuales en marcha o las apaga. Apagar
deja el proyector en negro sin tener que apagar la Raspberry.
## Pastillas y destino
La pestaña MOTORES se maneja con **dos decisiones separadas**, y esa
separación es lo que la hace usable en directo:
- **Dónde se ve** — la fila de arriba: `SALIDA` (el proyector entero) o una
`CAPA` del mapping. El `+` crea una capa nueva y te deja ya sobre ella.
- **Pastillas** — los círculos: combinaciones tuyas guardadas (motor + preset
+ ajustes) con el nombre que les pongas.
Pinchar una pastilla la manda **al destino que tengas elegido**. Con `SALIDA`
cambia todo el proyector; con una capa elegida cambia solo esa zona y el resto
sigue igual. Con una capa elegida, además, sus ajustes (fuente, preset,
opacidad, mezcla) salen ahí mismo: no hace falta ir a MAPPING.
Con **Configurar pastillas** el toque deja de lanzar y pasa a editar: decides
qué hace cada una, la renombras, añades con el `+` o la borras. Se guardan en
el equipo (`data/slots.json`), así que al volver siguen ahí.
De fábrica vienen los cinco motores de siempre, así que puedes seguir usándolo
como antes y montarte las tuyas cuando quieras.
> **Hydra, Mezcla y projectM nativo solo van a pantalla completa.** Son
> motores globales, no fuentes que una capa sepa pintar. Si intentas mandarlos
> a una capa, el panel te lo dice en vez de no hacer nada.
## Los cinco motores
Son los que vienen de fábrica en las pastillas. Solo uno está activo a la vez
en la salida.
![Visuales estilo MilkDrop](assets/milkdrop.jpg)
**projectM.** El visualizador clásico de MilkDrop, compilado en la propia
Raspberry. Reacciona al audio por sí solo y va rotando entre miles de
presets. Es un programa nativo, así que cuando lo eliges su ventana se pone
por encima de las demás visuales.
**Butterchurn.** Es MilkDrop reescrito para el navegador. Tiene los mismos
miles de presets. Puedes elegir un preset concreto, dejar que cambie solo cada
ciertos segundos, o que cambie sincronizado con el ritmo de la música.
**Hydra.** Visuales generados por código. Trae un editor integrado donde
puedes escribir o pegar código de Hydra y ejecutarlo al momento. Incluye una
librería de fragmentos listos para usar; eliges uno y se carga en el editor.
![El entorno de Hydra](assets/hydra.png)
**Shaders.** Shaders GLSL, el tipo de visual de Shadertoy. También trae editor
de código. Los shaders reciben información del audio y del ritmo, así que se
mueven con la música.
**Mezclador.** El modo de vídeo. Monta dos capas —un fondo (la webcam o las
propias visuales de MilkDrop) y un clip encima— y las combina con efectos de
color. Es lo más parecido a un programa de VJ como Resolume, pero funcionando
dentro de la Raspberry.
## Audio y BPM
La tarjeta de audio se elige en el apartado Audio del panel. Por defecto
FOSFENO coge el micrófono USB automáticamente, pero si tienes varias entradas
puedes cambiarla ahí.
Justo al lado se ve el BPM detectado. FOSFENO analiza el sonido y estima a
cuántos pulsos por minuto va la música. Ese valor lo usan los motores para
sincronizarse: los shaders, Hydra y el cambio de preset de Butterchurn al
compás. El BPM tarda unos segundos en estabilizarse y funciona mejor con
música de pulso marcado.
La sensibilidad ajusta cuánto reaccionan las visuales al volumen. Si la sala
suena floja, súbela. Si todo se ve saturado, bájala.
## El editor de código
En Hydra y en Shaders aparece un editor. Funciona igual en los dos:
- El desplegable de la librería carga un ejemplo. Al elegirlo, el código entra
en el editor y se ejecuta al momento.
- Puedes modificar ese código o pegar uno tuyo. El botón Ejecutar lanza lo que
haya en el editor.
- El botón Limpiar vacía el editor.
En Hydra el código es JavaScript de Hydra y tienes disponibles `time`, los
valores de audio `a.fft[0]` a `a.fft[4]` y la variable `bpm`. En Shaders el
código es GLSL y tienes los uniforms `u_time`, `u_bass`, `u_mid`, `u_treble`,
`u_bpm`, `u_beat` y la textura `u_fft`.
## El modo Mezclador
El mezclador monta **dos capas**: un **fondo** (la cámara web, o las visuales
Butter/MilkDrop) y un **clip** encima (un vídeo o una imagen de la galería). La
tarjeta del panel va numerada en ese orden: qué se ve, el fondo, el clip y cómo
se juntan. Debajo hay una línea de resumen que dice, en una frase, lo que va a
salir por el proyector.
Para **poner visuales de fondo**, en el paso 2 cambia el desplegable de *Cámara*
a **Visuales Butter (MilkDrop)**: la cámara se apaga y su sitio lo ocupan las
visuales, con su propio selector de preset ahí mismo. Combinado con un clip de
silueta y el modo *Recorte*, el personaje queda delante de MilkDrop.
Los clips se copian a `data/videos` o se suben desde el propio panel con el
botón *Subir vídeo o imagen*. Para que vayan finos en la Raspberry conviene que
sean cortos, en 720p o menos y en H.264.
La guía completa, con los modos de mezcla, los efectos de color y las recetas:
[El Mezclador VJ](mezclador.md).
## Apagar y reiniciar
Abajo del todo están los botones para reiniciar y apagar la Raspberry. Piden
confirmación. Apagar desde aquí es la forma correcta de apagar la placa al
terminar, mejor que cortar la corriente.