Mapping - Los clips salian del reves: mapper.js activaba UNPACK_FLIP_Y_WEBGL, pero el modelo va con origen arriba-izquierda y texImage2D ya sube la primera fila en t=0, asi que el flip la mandaba al final. Comprobado renderizando el mapper real en Chromium headless con una fuente mitad roja / mitad azul. - projectM se puede usar YA en una capa: los .milk de data/presets-projectm se traducen a Butterchurn en el navegador al elegirlos (milkdrop-preset- converter). La capa MilkDrop gana 'biblioteca' (butter | projectm) sin cambiar su firma, para no recrear el contexto WebGL al cambiar de una a otra. Medido: 100/100 presets de una muestra convierten, 84/84 de los que llevan shaders warp/comp; ~7 ms por preset. - Cada capa tiene su pestana arriba y su propia vista, y '+ CAPA' crea una y entra en ella: con varias capas, ir y volver a MAPPING no era viable. - Dos capas MilkDrop sin preset ya no salen identicas (cogian el indice 0): cada instancia elige uno al azar y lo escribe en el estado. - Una capa nueva ya no nace en la fuente "motor", que es el lienzo del motor activo y hacia que dos capas ensenaran lo mismo. Galeria de visuales - scripts/catalogar-visuales.py: ficha de cada clip (pelicula, personajes, duracion) y, sobre todo, si es una silueta de verdad y cuanta figura tiene. Distingue silueta de corte crudo por el negro puro del fondo: 0,63-0,90 frente a 0,04-0,06, sin zona gris. - El panel lista los clips agrupados por pelicula, con nombre legible y aviso de los que casi no tienen figura, en vez del nombre del archivo. - Soporte de siluetas con canal alfa (.webm VP9): transparencia de verdad, sin recorte por luminancia. El shader del mapper ya la respeta. Documentacion - docs/visuales.md nuevo; pendiente.md al dia con lo hecho y lo que queda. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
182 lines
8 KiB
Markdown
182 lines
8 KiB
Markdown
# El Mezclador VJ (mezclas)
|
|
|
|
El **Mezclador** es el motor de vídeo de FOSFENO. No es un motor de visuales
|
|
generativas como los otros: es una **mesa de mezclas de dos capas** que combina
|
|
en directo una capa de fondo con un clip, y les aplica efectos de color.
|
|
|
|
Se elige con el botón redondo **Mezcla** del apartado *Motor de visuales*, en la
|
|
pestaña **MOTORES**.
|
|
|
|
## El modelo mental: siempre dos capas
|
|
|
|
Todo el mezclador se entiende con esta idea. Hay **dos capas y solo dos**, y
|
|
siempre son las mismas:
|
|
|
|
```
|
|
┌──────────────────────────────────────────────┐
|
|
│ CAPA DE ENCIMA :: el CLIP │ un vídeo o una imagen
|
|
│ (data/videos/…) │ de la galería
|
|
├──────────────────────────────────────────────┤
|
|
│ CAPA DE ABAJO :: el FONDO │ la cámara web
|
|
│ (cámara o visuales Butter / MilkDrop) │ o las visuales Butter
|
|
└──────────────────────────────────────────────┘
|
|
▼
|
|
[ modo de mezcla ] → proyector
|
|
```
|
|
|
|
La tarjeta del panel está numerada en ese mismo orden, y ese orden es la
|
|
respuesta a casi cualquier duda:
|
|
|
|
| Paso | Qué decide |
|
|
|------|------------|
|
|
| **1 · Qué se ve** | si sale solo el fondo, solo el clip, o los dos |
|
|
| **2 · Fondo** | qué hay en la capa de abajo: **cámara** o **visuales Butter** |
|
|
| **3 · Clip** | qué vídeo o imagen va en la capa de encima |
|
|
| **4 · Cómo se juntan** | el modo de mezcla (solo aparece si se ven los dos) |
|
|
|
|
Debajo del paso 4 hay una **línea naranja de resumen** que dice, en una frase,
|
|
lo que va a salir por el proyector con los ajustes que tengas puestos. Si en
|
|
algún momento no sabes qué estás montando, esa línea lo dice.
|
|
|
|
<div align="center">
|
|
<img src="assets/mezclador.png" alt="La tarjeta del Mezclador VJ" width="480">
|
|
</div>
|
|
|
|
## Poner visuales de fondo (MilkDrop detrás del vídeo)
|
|
|
|
Esto es lo que suele costar encontrar, así que va aparte. **Sí está integrado**
|
|
y funciona así:
|
|
|
|
1. Motor **Mezcla**.
|
|
2. Paso 2, desplegable **Fondo (capa de abajo)** → **Visuales Butter
|
|
(MilkDrop)**.
|
|
3. La cámara se apaga sola (piloto incluido) y su sitio en la capa de abajo lo
|
|
ocupan las visuales de MilkDrop.
|
|
4. Justo debajo aparece el **preset de MilkDrop** que hace de fondo, con
|
|
**« Anterior / Siguiente »** y la casilla **Cambiar el fondo solo**.
|
|
|
|
Ese preset es **el mismo del motor Butter**: lo que elijas aquí queda elegido
|
|
también allí, y al revés. El cambio automático también es el mismo (los
|
|
segundos o los compases se ajustan en la tarjeta del motor Butter).
|
|
|
|
> **projectM no puede ir de fondo.** projectM es un programa nativo que corre
|
|
> en su propia ventana, fuera del navegador, así que el mezclador no puede
|
|
> leerlo como capa. El fondo de visuales es siempre Butterchurn — que es el
|
|
> mismo MilkDrop, con los mismos presets, dentro del navegador.
|
|
|
|
## Receta: un personaje recortado sobre las visuales
|
|
|
|
Es el uso estrella del mezclador y encadena todo lo anterior:
|
|
|
|
1. **1 · Qué se ve** → **Los dos**.
|
|
2. **2 · Fondo** → **Visuales Butter (MilkDrop)**, y elige ahí el preset.
|
|
3. **3 · Clip** → un clip de silueta sobre negro (los `_silueta-negro` que
|
|
genera DETEKTION, el proyecto hermano de `VISUALES/`, o cualquier vídeo con
|
|
fondo negro).
|
|
4. **4 · Cómo se juntan** → **Recorte (personaje delante)**.
|
|
|
|
El negro del clip se vuelve transparente y la figura queda **delante** de
|
|
MilkDrop, latiendo con la música. En este modo el primer deslizador deja de ser
|
|
la mezcla A/B y pasa a llamarse **Umbral del recorte**: súbelo si queda un halo
|
|
oscuro alrededor de la figura, bájalo si se está comiendo partes del personaje.
|
|
|
|
## Paso 1 · Qué se ve
|
|
|
|
- **Solo el fondo** — a pantalla completa. El clip no se usa.
|
|
- **Solo el clip** — a pantalla completa. El fondo no se usa (ni la cámara ni
|
|
las visuales Butter: si eliges esto, el fondo queda atenuado en el panel).
|
|
- **Los dos** — se combinan según el paso 4.
|
|
|
|
Los controles que en ese momento no pintan nada **no desaparecen: se atenúan**,
|
|
para que se vea que existen sin que despisten.
|
|
|
|
## Paso 2 · Fondo (capa de abajo)
|
|
|
|
**Cámara.** Con la casilla *Cámara activada* y, si tienes más de una, el
|
|
desplegable para elegirla. Si la cámara falla, el aviso sale en la banda de
|
|
arriba del panel; para reintentar, apaga y enciende la casilla.
|
|
|
|
**Visuales Butter (MilkDrop).** Lo explicado más arriba. La cámara se libera de
|
|
verdad mientras tanto.
|
|
|
|
## Paso 3 · Clip (capa de encima)
|
|
|
|
Los clips salen de la carpeta `data/videos/`. Hay dos formas de meterlos:
|
|
|
|
- **Copiándolos a la carpeta** y pulsando **Actualizar lista**.
|
|
- **Con el botón Subir vídeo o imagen**, desde el móvil o el ordenador, sin
|
|
tocar carpetas.
|
|
|
|
Formatos que van bien:
|
|
|
|
| Tipo | Formatos | Nota |
|
|
|------|----------|------|
|
|
| Vídeo | `.mp4` (H.264), `.webm` | En Raspberry, 720p o menos |
|
|
| Imagen | `.jpg`, `.png`, `.gif`, `.webp` | Se queda fija como capa |
|
|
|
|
Los vídeos se reproducen **en bucle y sin sonido** (FOSFENO escucha la música de
|
|
la sala, no la del clip).
|
|
|
|
## Paso 4 · Cómo se juntan
|
|
|
|
Solo aparece con **Los dos**.
|
|
|
|
| Modo | Qué hace |
|
|
|------|----------|
|
|
| **Recorte** | El negro del clip se vuelve transparente: la figura queda **delante** del fondo. El deslizador pasa a ser el umbral |
|
|
| **Fundido** | Disuelve una capa sobre la otra según el deslizador de mezcla |
|
|
| **Diferencia** | Resta las dos capas: contornos y colores invertidos donde coinciden |
|
|
| **Multiplicar** | Oscurece: solo sobrevive lo que es claro en las dos |
|
|
| **Sumar** | Aclara: suma la luz de las dos capas |
|
|
| **Capa** | Superpone el clip usando su canal alfa |
|
|
|
|
## Los efectos de color
|
|
|
|
Se aplican **al resultado ya mezclado**, en este orden (importa: el
|
|
caleidoscopio deforma antes de que el color entre en juego):
|
|
|
|
```
|
|
caleidoscopio → rotación → pixelado → tono → saturación → contraste →
|
|
brillo → colorama → posterizar → invertir → pulso al ritmo → feedback
|
|
```
|
|
|
|
- **Mezcla A/B** — cuánta capa de encima frente a la de abajo (o el umbral, en
|
|
modo Recorte).
|
|
- **Tono / Saturación / Contraste / Brillo** — corrección de color de toda la
|
|
vida.
|
|
- **Colorama** — recicla los colores; en valores altos psicodelia pura.
|
|
- **Posterizar** — reduce el número de colores por franjas.
|
|
- **Pixelado** — baja la resolución aparente en bloques.
|
|
- **Caleidoscopio** — repite la imagen en N sectores en espejo.
|
|
- **Rotación** — gira la imagen.
|
|
- **Feedback** — realimenta el fotograma anterior: estelas y túneles. Con
|
|
valores altos la imagen tarda en limpiarse.
|
|
- **Invertir colores** — el negativo.
|
|
- **Pulso al ritmo** — la imagen late con los graves detectados (usa el mismo
|
|
análisis de audio que alimenta el BPM).
|
|
|
|
## Por debajo
|
|
|
|
El mezclador **no es un motor aparte**: genera código [Hydra](https://hydra.ojack.xyz/)
|
|
a partir de los controles y lo ejecuta. La cámara entra como fuente `s0` (o el
|
|
lienzo de Butterchurn, si el fondo son visuales) y el clip como `s1`. Por eso
|
|
el mezclador y el motor Hydra comparten el mismo lienzo y nunca están activos a
|
|
la vez.
|
|
|
|
Como todo lo que corre en el navegador, la salida del mezclador **se puede
|
|
mapear**: ver [Projection mapping](mapping.md).
|
|
|
|
## Si algo no se ve
|
|
|
|
FOSFENO no se queda callado: el motivo sale en la banda de avisos, arriba del
|
|
panel.
|
|
|
|
| Aviso | Qué hacer |
|
|
|-------|-----------|
|
|
| «La cámara está apagada» | Marca *Cámara activada* en el paso 2 |
|
|
| «No hay vídeo elegido» | Elige uno en el paso 3 |
|
|
| «No hay vídeos» | Sube uno, o copia archivos a `data/videos` y pulsa *Actualizar lista* |
|
|
| «No se pudo activar la cámara» | Comprueba el cable, pulsa *Buscar dispositivos de nuevo* y apaga/enciende la casilla |
|
|
| «No se pudo cargar …» | El formato no lo traga el navegador: pásalo a `.mp4` (H.264) o `.webm` |
|
|
|
|
Más casos en [Solución de problemas](problemas.md).
|