# La skill «mesa»: escribir, depurar y rodar pliegos

> La guía de trabajo de los agentes: arranque rápido, las capas de la lengua, el bucle de trabajo, las tablas, los errores del lint y cada familia de líneas (cartel, cámara, vida, piezas y collage, metraje, 3D, fútbol, géneros, tomas y película) con sus ejemplos.

URL: https://torculo.joseluissaorin.com/referencia/skill-mesa · Revisado: 2026-10-16 · English: https://torculo.joseluissaorin.com/en/reference.md

Fuente: skills/mesa/SKILL.md (generada al construir la web).


Un pliego es **un guion que se lee de arriba abajo como un texto** y del que
sale un vídeo. Si leerlo no es leer el vídeo, está mal escrito.

> **LA LEY.** El pliego dice cuentas humanas y maneras; **los números los
> pone el motor**. Escribe «la piedra rueda hasta los pies de primero,
> pesado», no una curva y una duración. Si te ves escribiendo cifras, casi
> siempre es que hay una palabra que no conoces todavía.

Esta skill tiene tres partes. **Lee la primera siempre; la segunda, capa a
capa, según lo que necesites; la tercera, solo para consultar.**

1. **Arranque rápido**: un pliego de diez líneas y las cuatro órdenes.
2. **Las capas**: cada capa añade una cosa, y cada una ya se puede mirar.
3. **Referencia completa**: todo lo que hay (vocabularios, cine, sonido,
   aspecto, cámara), lo que hace el motor solo y las trampas.

---

## 1 · Arranque rápido

```
MESA «El faro»
REPARTO MARTA: ultramar, cita_f

*
di: Cada noche, el farero subía los ciento doce escalones de la torre.
MARTA: —¿Por qué nunca se cansa?

*
di: Aun así, encendió la luz.
```

```bash
PY=/opt/homebrew/Cellar/manim/0.20.1/libexec/bin/python
MESA="$PY -m manim_saorin.formato.cli"        # en zsh: ${=MESA} lee …
${=MESA} lee faro.mesa                        # 1 · ¿está bien escrito?
${=MESA} graba faro.mesa                      # 2 · la voz (Supertonic)
~/Developer/torculo/tools/pesado ${=MESA} animatica faro.mesa --motor gx --sonido   # 3 · mirar
~/Developer/torculo/tools/pesado ${=MESA} toca faro.mesa --motor gx --sonido -o /tmp/faro.mp4
```

Eso ya es un vídeo digno: la voz, y en el papel la frase de cada beat con
la pieza que le toca (la pregunta a mano y en minio, el grito en nota de
rescate, la cita recortada de un periódico, el resto a máquina). Es **la
capa de la casa**: se apaga sola en cuanto el beat enseña algo propio.

Para empezar un proyecto entero: `mesa nuevo "El faro"` (plantilla comentada
por capas, bestiario de ejemplo y carpetas) o `mesa nuevo "El faro" --desde
cuento.md` (un primer pliego sacado del texto). En la shell, el título va
entre comillas rectas; las «» las pone el pliego.

**Cuando dudes, pregunta a la mesa, no adivines:**

```bash
${=MESA} explica "python: congelador · cerrado"   # qué entiende de una línea
${=MESA} explica solemne                         # qué es una palabra y dónde va
${=MESA} chuleta                                 # la lengua entera en una página
${=MESA} bestiario p.mesa                        # los dibujos que hay y sus argumentos
```

`mesa lee` dice de cada fallo **qué pasa, en qué línea, por qué y cómo
arreglarlo**, con «¿quisiste decir…?». Corrige siguiendo el «arreglo:».
**LIMPIO con avisos de «texto en pantalla» no es limpio**: esas líneas
saldrán escritas en el papel tal cual.

---

## 2 · Las capas

Un pliego se escribe por capas. **Cada capa es opcional, cada una ya se
puede rodar, y no pases a la siguiente sin mirar la anterior** (la
animática). Las siete:

| capa | qué añade | líneas |
|---|---|---|
| 1 | lo que se dice | `MESA`, `REPARTO`, `*`, `di:`, `NOMBRE: —…` |
| 2 | dirigir | `* función · afecto`, `== CAPÍTULO ==`, `ARCO`, `MOTIVO` |
| 3 | poner cosas | `python:`, `pon:`, `letrero`, `ver:`, `foto:`, `marca:` |
| 4 | el tiempo | `al decir «palabra»: …`, `> eventos` |
| 5 | la escena y el movimiento | `-- ESCENA --`, `EJE`, `LUZ`, `FONDO`, planos de cine, verbos |
| 6 | el sonido | `EFECTOS`, `BANDA`, `MÚSICA`, `AMBIENTE`, `sonido:` |
| 7 | el aspecto y la materia | `FORMATO`, `PALETA`, `MATERIA`, `CARTEL`, `INTENSIDAD`, `#TALLER` |

### Capa 1 · Lo que se dice

```
MESA «Título»                       ← siempre la primera línea
REPARTO MARTA: ultramar, cita_f     ← quien habla: color y voz
*                                   ← un clip = un beat
di: Lo que dice el narrador.        ← la voz; de ella sale la duración
MARTA: —Lo que dice Marta.          ← diálogo: la raya pegada al texto
```

- **Quien habla tiene que estar en el REPARTO.** Si no, `MARTA: —…` se
  escribe en pantalla en vez de oírse. Voces de Supertonic: `narrador`,
  `cita`, `cita_f`, `cita_f2`, `cita_f3`, `cita_m2`. Un nombre de
  personaje no puede ser una palabra de la lengua (`EL`, `LA`, `A`).
- Si la voz ya está grabada (un sidecar `<pliego>.tiempos.json` con tomas
  de ElevenLabs), **nunca `mesa graba`**: la cabecera lleva el id del beat
  del sidecar (`* r10_01 general de grada · solemne`) y el texto se copia
  tal cual se dijo.

### Capa 2 · Dirigir

```
== CAPÍTULO 1 · EL BUEY ========== tensión sube · tambor ultramar
* prueba · seco                     ← FUNCIÓN · AFECTO
* primer contrapicado de capitan · solemne   ← o el PLANO de cine · AFECTO
```

- Funciones: `apertura · cartel · contrapunto · digresion · eco · giro ·
  ilustracion · prueba · remate · respiro · tesis`.
- Afectos: `contenido · eufórico · exhausto · juguetón · nervioso · seco ·
  sereno · solemne`. **El afecto va SOLO en la cabecera**, nunca detrás de
  un `·` en otra línea.
- Plano de cine: TALLA (`general · conjunto · medio · americano · corto ·
  primer · detalle`) + ALTURA opcional (`nadir · contrapicado · normal ·
  picado · cenital`) + FRENTE opcional (`frontal · tres cuartos · perfil ·
  escorzo · espalda`) + `de SUJETO`, donde SUJETO es el nombre de la pieza o
  del personaje que encuadra, sin artículo (`de capitan`, `del congelador`).
  **Nada más**: «simétrico», «plano», «de lejos» o «bonito» no son palabras
  de plano y la mesa las ignora (`mesa lee` lo dice).
- **Un plano declarado es un cuadro nuevo**: lo que había se va, y en él
  solo sale lo que ese beat pone. Si el beat no pone nada, la página queda
  vacía mientras se oye la voz (`mesa lee` avisa: «página vacía»). Para
  seguir en el mismo cuadro, no declares talla: `* prueba · nervioso`.
- Dos planos seguidos con la misma talla y el mismo sujeto son un salto
  (jump cut): cambia la talla o, si lo quieres, escribe `> salta` en el
  clip.
- `* respiro · sereno` es una página vacía a propósito; cada 4 a 7 beats
  conviene una.

### Capa 3 · Poner cosas

```
python: gamba entera · enorme                      ← un DIBUJO del bestiario
python: capitan pose=duda · enorme · cortado por abajo
pon: cartulina «VOX POPULI»                        ← un PAPEL con texto
letrero (cartulina): EL PATIO                      ← el rótulo del plano (uno por beat)
ver: votos — sí: 7 · no: 4                    ← una visualización
foto: galton                                       ← una foto del archivo
```

- **Un dibujo va con `python:`, nunca con `pon:`.** `pon:` es para papeles:
  `cartulina · rescate · tira · postit · apunte · periodico · sello ·
  fechador · polaroid · mano · etiqueta · dymo · ficha · washi · texto`.
- `python: NOMBRE ARG1 ARG2 clave=valor · TAMAÑO · CORTE`. **Los argumentos
  van pegados al nombre, separados por espacios; detrás de `·` solo el
  tamaño** (`grande · enorme · gigante · a sangre`) **o un corte**
  (`cortado por abajo · por arriba · por la frente · por la izquierda · por
  la derecha · por el borde`). `python: congelador · cerrado` está mal;
  `python: congelador cerrado · enorme`, bien. Un texto con espacios va
  entre comillas latinas y cuenta como un argumento: `python: palabras_libres
  «ES AZUL» · enorme`. No hay tamaño pequeño: sin tamaño, sale al natural.
- El preámbulo tiene que cargar el bestiario: `PYTHON piezas.py`, que se
  busca **en la carpeta del pliego** (no muevas el pliego sin él). Qué
  dibujos hay y qué argumentos aceptan: `mesa bestiario p.mesa`; el resto de
  lo que diga el documento de un bestiario, compruébalo con `mesa lee`.
- Un evento que nombra algo (`> la cámara se acerca a «X»`) necesita que X
  exista en la escena: un dibujo puesto, una letra o alguien del REPARTO.
- **Si un beat solo tiene letrero, está cojo**: que los dibujos cuenten la
  historia.

### Capa 4 · El tiempo

```
al decir «congelador»: sonido: foley vaho          ← cualquier línea, anclada a una palabra
al decir «AZUL»: > florece ultramar en «gamba»
> funde a negro                                    ← un evento, en su propia línea
> silencio 2                                       ← una pausa dentro del beat
```

- `al decir «X»` es la primera autoridad del tiempo. La palabra tiene que
  decirse **en ese beat**, tal como suena.
- **Un solo `>` por línea**, y el evento tiene que estar en la lista
  (`mesa chuleta`). Los que nombran una pieza la llevan entre comillas:
  `> tiempo bala sobre «gamba»`, `> la cámara se acerca a «capitan»`.
- `> dura N` es la duración del beat entero (una vez por beat); dentro,
  `> silencio N`. El silencio del FINAL del vídeo se pide en las
  propiedades (`formato 16:9 · sala crema · silencio 3`), no con un
  evento.

### Capa 5 · La escena y el movimiento

```
-- LA CARRETERA · diurna --          ← una escena: un mundo que dura entre planos
EJE de él a ella                     ← líneas de ESCENA: aquí, antes del primer «*»
LUZ de la izquierda · dura
FONDO sierra · al fondo

* general de la carretera · sereno
la piedra rueda hasta el borde · por el suelo · pesado     ← movimiento
```

- **Las líneas de escena** (`EJE`, `LUZ`, `FONDO`, `DELANTE`, `FORMATO`,
  `PALETA`, `MATERIA`, `COLOR`, `INTENSIDAD`, `MÚSICA`, `AMBIENTE`,
  `CÁMARA`…) **van debajo de `-- ESCENA --` y antes del primer `*`**.
  Dentro de un clip se escribirían en pantalla. Para cambiar algo a mitad
  de escena: abre otra escena, o usa su evento (`> la intensidad sube a
  tensa`, `> estalla el color en «gamba»`).
- Movimiento: `SUJETO VERBO [hasta DESTINO] · [TRAYECTO] · [MANERA] ·
  [GRANULADO]`. El sujeto es una pieza ya puesta, por el nombre de su dibujo
  (`python: flecha arriba` → `la flecha sube hasta …`) o por su `id=`, o
  alguien del REPARTO. El verbo es de una lista cerrada (`camina · corre · va ·
  entra · sale · cruza · sube · baja · cae · rueda · salta · vuela · flota ·
  resbala · rebota · gira · tiembla · se sienta · se levanta · tropieza ·
  esquiva · se encaja · viaja · se apea`); con otro verbo, la línea se
  escribe en pantalla. Los personajes con ficha, además, `celebra · grita ·
  aplaude · anda · gesticula · habla · señala…`.
- **La curva no se escribe**: anticipación, arco, sobrepaso y asiento los
  pone el motor (el oficio de Lasseter).

### Capa 6 · El sonido

```
EFECTOS audio/sfx                   ← preámbulo: la carpeta de los efectos
BANDA audio/banda                   ← preámbulo: la carpeta de la música
MÚSICA 3M2                          ← escena o capítulo: el cue (3M2.wav)
AMBIENTE amb estadio masa bucle     ← escena: el mundo (amb_estadio_masa_bucle.wav)
sonido: golpe sello                 ← clip: un efecto (golpe_sello.wav)
```

Los nombres son los de los archivos, sin extensión y con espacios en lugar
de `_`. `mesa lee` comprueba que existen.

### Capa 7 · El aspecto y la materia

`FORMATO 2,39:1`, `PALETA blanco, celeste y tinta`, `MATERIA acuarela sobre
papel khadi`, `BOBINA noticiario`, `CARTEL …`, `LETRA «GOL» · en Anton · a
sangre`, `INTENSIDAD tensa`, `SOPORTE gastado`, `CÁMARA con masa · al
hombro`… y, si el aspecto por defecto no basta, `#TALLER` y `#MANO`. Todo
en la referencia (secciones RADIOINTERMISIÓN, CARTEL, LA IMAGEN QUE OYE y LA
CÁMARA COMO OBJETO).

### Los errores que más se cometen (y lo que dice `mesa lee`)

| se escribe | pasa | se arregla |
|---|---|---|
| `pon: python: sol` | se escribe en pantalla | `python: sol` |
| `python: estrella(ambar)` | el pliego no es Python | `python: estrella ambar` |
| `python: capitan por la frente` | palabras sueltas como argumentos | `python: capitan · cortado por la frente` |
| `python: gamba · entera` | «entera» llega como argumento suelto | `python: gamba entera · enorme` |
| `COLOR monocromo` dentro de un clip | se escribe en pantalla | súbela debajo de `-- ESCENA --` |
| `MARTA: —hola` sin REPARTO | se escribe en pantalla | `REPARTO MARTA: rosa, cita_f` |
| `el árbitro baila` | «baila» no es un verbo: se escribe | un verbo de la lista |
| `… · solemne` en un movimiento | error: es un afecto | en la cabecera `* … · solemne` |
| `* general simétrico · …` | «simétrico» se ignora | `* general frontal de … · …` |
| `> tiempo bala` | no es un evento | `> tiempo bala sobre «gamba»` |
| `> > funde a negro` | no es un evento | un solo `>` |
| `> silencio 3` para el final | es una pausa del beat | `silencio 3` en las propiedades |

---

## El proyecto: crear, comprobar, llevarlo a otro Mac

```bash
${=MESA} nuevo "Título" [--desde cuento.md] [--carpeta dir]
${=MESA} comprueba p.mesa [--lista] [--arregla]   # ¿completo y portable?
${=MESA} empaqueta p.mesa [-o p.mesapack]         # todo en un archivo
${=MESA} desempaqueta p.mesapack [carpeta]        # listo para lee/animatica/toca
```

- `nuevo --desde`: reparto por la tipografía (prosa → narrador, cursiva →
  CURSIVA, MAYÚSCULAS → MAYÚSCULAS, raya o guion → diálogo; `—… —dijo
  Marta.` → MARTA, y si no dice quién, VOZ_A y VOZ_B por turnos) y un beat
  por párrafo (los largos, partidos). Sin IA. Es un punto de partida.
- `empaqueta` descubre solo lo que el pliego usa (el bestiario y lo que
  importa, el sidecar y sus tomas, EFECTOS, BANDA, la PARTITURA, las fuentes
  instaladas a mano), reescribe el sidecar con rutas relativas y añade un
  `MANIFIESTO.json` (lengua, motor, Tórculo, voces, hashes). SPEC §3.14.
- El sidecar acepta rutas relativas al pliego en todo el motor; un proyecto
  copiado se reancla solo a sus tomas.

---

# Referencia completa

**Referencia normativa:** `SPEC-MESA-2.md` en `~/Developer/manim-saorin`.
Esta skill enseña a escribir; el spec dice qué es legal. Si algo no está en
ninguno de los dos, **no lo inventes**: pregunta con `mesa explica`, o mira
el parser (`manim_saorin/formato/gramatica.py`).

En zsh (la shell de este Mac) una variable no se parte en palabras: `$MESA toca`
falla con «no such file or directory». Ahí se escribe `${=MESA} toca …` (o la
orden entera, `$PY -m manim_saorin.formato.cli toca …`). `mesa` a secas no está
en el PATH.

---

## El orden en que se escribe (no lo cambies)

1. **La servilleta**: el texto, en prosa. Nada más.
2. **Dirigir**: partir en capítulos y clips, poner función y afecto.
3. **Poner cosas**: `pon:`, `ver:`, `foto:`, marcas.
4. **El tiempo**: `mesa graba` y anclar con `al decir`.
5. **La escena**: si hay mundo, personajes o cámara.
6. **El movimiento**: verbos, trayectos y maneras.
7. **La materia**: taller y mano, si el aspecto no te vale.

Cada paso se puede renderizar. **No pases al siguiente sin mirar el
anterior.**

---

## Paso 1 · La servilleta

Prosa pura, sin una sola marca. Es el punto de entrada y siempre funciona.

```
MESA «La paradoja»

Hay una paradoja incómoda en el arte de decidir bien.
Para acertar más sobre un tema, no siempre conviene juntar a los que más saben.
A veces conviene exactamente lo contrario.
```

```bash
$MESA lee p.mesa            # lint
$MESA toca p.mesa -q ql -o out.mp4
```

Cada frase es un clip y el dramaturgo (reglas fijas, sin IA) decide plano,
piezas y gestos. **Empieza SIEMPRE así**, aunque vayas a acabar en un corto.

## Paso 2 · Dirigir

```
MESA La paradoja de los expertos
formato 16:9 · sala crema · tirada borrador

ARCO pregunta→respuesta
MOTIVO «error» — empieza como enemigo y acaba siendo la herramienta
REPARTO Galton: verde

== CAPÍTULO 1 · EL BUEY ========== tensión sube · tambor ultramar

* apertura · contenido
di: Hay una paradoja incómoda en el arte de decidir bien.

* prueba · seco
di: La mediana de las apuestas: mil doscientas siete libras.
```

- `* función · afecto` es la cabecera de un clip. **La función se elige de la
  lista** (abajo); el plano se deriva de ella.
- `di:` es la narración y **es la partitura del beat**: de ella sale la
  duración.
- Si sabes el plano de cine que quieres, escríbelo en vez de la función:
  `* corto contrapicado de tercero · nervioso`.

## Paso 3 · Poner cosas

```
pon: cartulina «VOX POPULI»
pon: rescate «LA PARADOJA» · 60 · id portada/paradoja
foto: galton
ver: balanza — la voz del pueblo | los peritos
ver: votos — sí: 7 · no: 4
terminal: peso real del buey: 1198 libras
marca: rodea «1198»
arriba: Nature · 1907
```

**Colocación** (prefijo de cualquier línea). Prefiere el cuerpo a las
coordenadas:

```
en los pies de primero: python: piedra
bajo «Fábula» a 0.42: pon: tira «una fábula de tres»
juntos: h1 · h2 · h3 — en fila holgados
```

> **LEY DEL CUERPO.** En un vídeo escrito a mano casi nada va en
> coordenadas: la piedra va delante de **sus** pies, la venda **en** su pie.
> Traducirlo a `en 1.4 -0.3:` deja todo en el centro y hace la escena
> incomprensible.

### Vídeo real dentro del pliego

```
clip: peli.mp4 de 12:04 a 12:11      recorte vivo: Polaroid con celo, su audio en la mezcla
clip de fondo: mar.mp4               pantalla completa, mudo, bajo el contenido
clip mudo: archivo.mp4 de 0:30 a 0:36
> espera al clip                     retiene el beat hasta que acabe
```

**LA REALIDAD NO SE REVELA**: un clip nunca lleva semitono, duotono ni
troquel. La materia del collage es papel; el vídeo real es una ventana, y
tratarlo como papel lo convierte en un pegote.

## Paso 4 · El tiempo

```bash
$MESA graba p.mesa      # sintetiza la voz y alinea CADA PALABRA
$MESA dura p.mesa --objetivo 150
```

`graba` escribe `p.tiempos.json`. **Es prerrequisito del render**: sin él las
duraciones son estimadas.

Con la partitura ya se puede anclar a la voz:

```
al decir «ochocientas»: ver: multitud 18
camina hasta la casa · hasta decir «llegó»
mientras: el humo sube
```

`al decir` es la **primera autoridad** del tiempo: manda sobre todo lo demás.

## Paso 5 · La escena y el cine

Una escena es la unidad de **mundo**: sus clips son planos sobre el mismo
mundo persistente.

```
REPARTO ella: ultramar
REPARTO él: bermellon

-- LA CARRETERA · diurna --
EJE de él a ella
LUZ de la izquierda · dura
MUNDO avanza · de frente
FONDO cielo · en el cielo
FONDO sierra · al fondo
FONDO arboleda · cerca
FONDO carretera · al pie
DELANTE almendro · al paso · cada dos

* general de la carretera · sereno
di: Suben al puerto desde antes de que amaneciera del todo.
coche con vista cenital
el coche viaja
la truca viaja con el coche

* primer de él · contenido
él: —¿Falta mucho?
él mira a ella
sonido: retiene
```

- **`EJE`** es la regla de los 180°, declarada una vez. De ella se derivan de
  qué lado va cada uno y hacia dónde mira. **No lo declares dos veces ni
  coloques a mano lo que el eje ya decide.**
- **`LUZ`** gobierna **todas** las sombras de la página. Nunca ajustes la
  sombra de una pieza suelta.
- **`FONDO`** monta multiplano. Su velocidad, color y z **no se declaran**:
  salen de la lejanía.
- **`DELANTE`** es la oclusión: algo que cruza **por delante y tapa**. Es la
  señal de profundidad más fuerte que hay, y el multiplano no la da.
- **`mira a`** admite a alguien que **no está en el encuadre**: ese es el
  truco entero del plano/contraplano.
- **`sonido: adelanta`** es un corte J (el audio entra antes); **`retiene`**
  es un corte L. Dos líneas, y el corte deja de sonar a diapositiva.

## Paso 6 · El movimiento

**Anatomía única**, sea cual sea el verbo:

```
[COLOCACIÓN:] SUJETO VERBO [DESTINO] · [por TRAYECTO] · [MANERA] · [GRANULADO]
```

```
la piedra rueda hasta el borde · por el suelo · pesado · a treses
tercero salta a la roca · en arco · resuelto · hasta decir «arriba»
```

> **LA CURVA NO SE DECLARA: SE DEDUCE** de la materia, la mano, el afecto y
> la manera. **No hay easing, ni keyframes, ni `rate_func` en el pliego.** Un
> washi y una piedra no caen igual, y eso no lo escribe nadie.

**El oficio de Lasseter va solo** (`oficio.py`, SPEC §3.7.5). Cada verbo
de movimiento lleva, sin una cifra: entrada y salida lentas (nunca
lineal), anticipación proporcional a la velocidad, arco si el verbo lo
pide (`salta`, `vuela`, `cae`… y si no, un arco suave), estirar y encoger
conservando el volumen, sobrepaso y asiento según la materia, escalonado
con muelle en los grupos (`juntos:`) y una **pausa viva**: lo que se ha
movido respira, nunca se congela. Las maneras lo modulan:

```
la carta salta hasta el buzón · con anticipación   ← se carga aunque vaya lenta
el grito cae hasta aquí · de golpe                  ← el énfasis no avisa
> deja posar                                        ← el beat espera a que se asiente
la pluma flota hasta el suelo · a la deriva · en dos   ← poses retenidas, a medio fotograma
```

`en dos` también vale para todo el pliego, en la línea de propiedades:
`formato 16:9 · sala crema · en dos`.

Dos cosas que **nunca** se escriben:

- el **movimiento secundario** (cuando una pieza se para, su papel sigue un
  poco): es propiedad de la materia, del taller;
- el **congelado al cortar**: por defecto todo movimiento **persiste** al
  corte —eso es lo que hace de varios planos una secuencia—. Solo si quieres
  lo contrario: `> congela`.

## Paso 7 · La materia

Solo si el aspecto por defecto no te vale.

```
#TALLER collage
  papel crema · grano medio · canto rasgado
  tinta hierve normal
  materia cartulina · masa media · arrastre poco · rebote nada
  materia washi · masa nula · arrastre mucho · cimbreo mucho
#FIN

#MANO firme
  pulso poco
  precision alta
  granulado a doses
  entra resuelta
  sale sin prisa
  toca la truca: si
#FIN
```

- El **taller** es de qué está hecho todo. Aquí los números **sí** son
  legítimos: es calibración de un oficio, no dramaturgia.
- La **mano** no coloca; la mano dice **cómo** coloca. El sitio lo sigue
  decidiendo la cascada.
- `toca la truca: si` hace que la cámara herede el pulso: temblor, sobrepaso,
  y pierde al sujeto medio segundo de vez en cuando.
- Las claves de **varias palabras llevan dos puntos** (`toca la truca: si`).

**Ley del espejo**: `TALLER talleres/collage.taller` importa el mismo bloque
desde un archivo, con **gramática idéntica**. `mesa parte` lo saca,
`mesa funde` lo devuelve, y **ninguna cambia un fotograma**.

---

## El bucle de trabajo

```bash
$MESA lee p.mesa                    # 1 · ¿está limpio?
$MESA graba p.mesa                  # 2 · la voz (una vez; cachea)
$MESA dura p.mesa --objetivo 150    # 3 · ¿dura lo que debe?
$MESA animatica p.mesa --sonido     # 4 · UN fotograma por beat ← AQUÍ SE DIRIGE
#    … mirar la animática, corregir, volver a 1 …
$MESA lasseter p.mesa               # 5 · el oficio, medido en seco (ver abajo)
$MESA toca p.mesa -q ql -o out.mp4  # 6 · el vídeo, solo cuando convenza
```

**La animática es el paso que más ahorra**: compone un fotograma por beat con
los tiempos y el audio reales, saltando cada gesto a su final. Sale ~7× más
rápido que el render. Sin animática no se dirige un corto, se reza.

**La revisión Lasseter** (`mesa lasseter p.mesa`, o `mesa lee --lasseter`)
rueda el pliego **en seco** —el mismo intérprete y los mismos fotogramas,
sin pintar— y mide sobre esa cronología real: movimientos de menos de 8
fotogramas, más de 3 piezas moviéndose a la vez en escena, beats sin
0,6 s de pausa al final, textos que no da tiempo a leer
(palabras/220·60 + 1 s), beats gemelos, movimientos lineales y rápidos sin
anticipación. Cada aviso con beat, línea y sugerencia. `mesa toca` deja
además `<vídeo>.cronologia.json`, que `mesa lee` lee solo si es más nueva
que el pliego. **Rueda siempre fuera del directorio de un proyecto ajeno**:
el foley se escribe en `./audio/foley`.

**Rodar sobre Tórculo (`--motor gx`).** El mismo pliego y el mismo sidecar
ruedan sobre el fork de ManimGX en GPU (skill `torculo`):

```bash
~/Developer/torculo/tools/pesado ${=MESA} toca p.mesa --motor gx -q qh -o out.mp4
~/Developer/torculo/tools/pesado ${=MESA} animatica p.mesa --motor gx
# la tirada de verdad: voz real, baño dentro del motor y HEVC por VideoToolbox
~/Developer/torculo/tools/pesado ${=MESA} toca p.mesa --motor gx --cap 2 -q qh \
    --sonido --bano --codec hevc -o /tmp/cap02.mp4
```

- `--bano` (o `baño truca` en la línea del preámbulo: `formato 16:9 · sala
  crema · baño truca`) revela dentro del motor, con `Papel()` y
  `Bobina("truca")` sobre la crema del canon: el papel no se quema a blanco.
  No se aplica además el baño de ffmpeg.
- `--codec hevc` escribe HEVC Main10 (también `prores`); por defecto, x264.
- Con `--sonido`, la voz real la pone el motor (`m.sidecar`) en el instante de
  cada beat; `--tiempos` y `--base` sirven para un pliego derivado que usa el
  sidecar del original.
- `--cap N` es el N-ésimo capítulo del pliego contando el prólogo: en
  *Mujeres*, `--cap 2` son los beats `c1_*`.
- Escribe la salida fuera de Dropbox (`-o /tmp/…`) y cópiala después.

*La terraza no existe* entera: 463 s de reloj frente a unas 3 h 45 min con
Cairo. Lo que el backend aún delega al intérprete de CE o no porta (el
régimen de canción, `MUSICA … · manda`) está en `manim_saorin/gx/NOPORTA.md`;
para un videoclip, todavía `--motor ce`. **Todo render pasa por
`tools/pesado`** (un turno, carga < 14): nunca varios a la vez.

**Láminas por intención.** `pon: lámina ≈ «la celosía, mirar sin ser
mirada»` elige del bestiario con EmbeddingGemma 2 al compilar y congela la
elección en `p.mesa.lock`; mientras la consulta no cambie, no se vuelve a
elegir. El índice se hace una vez con `sentido indexa` (skill `torculo` §5).

**Antes de cada tirada con voz real: `sentido voz p.mesa`.** Comprueba que
cada WAV dice el texto de su beat; encontró seis tomas que Dropbox había
pisado con la misma duración.

**Y mira siempre fotogramas antes de dar nada por bueno:**

```bash
ffmpeg -y -i out.mp4 -vf "fps=1/6,scale=426:240,tile=4x3" -frames:v 1 tira.png
```

Los tres peores fallos de este sistema pasaron todas las pruebas de código y
solo se vieron en un fotograma.

---

## Las tablas que necesitas a mano

**Funciones** (cabecera de clip): 11

```
apertura · cartel · contrapunto · digresion · eco · giro · ilustracion
prueba · remate · respiro · tesis
```

**Afectos**: 8

```
contenido · euforico · exhausto · jugueton · nervioso · seco · sereno · solemne
```

**Plano de cine**: talla · altura · frente

```
general · conjunto · medio · americano · corto · primer · detalle
nadir · contrapicado · normal · picado · cenital
frontal · tres cuartos · perfil · escorzo · espalda
```

Las tallas están **ordenadas**: saltar más de dos escalones es un efecto, no
un descuido, y el lint lo dice.

**Trayectos**: 16

```
recto · en arco · en curva · a saltos · en zigzag · rodando · girando
cayendo · flotando · resbalando · rebotando · por el camino · por el borde
por el suelo · en espiral · fuera de campo
```

**Maneras**: 15

```
de un tirón · a tirones · despacio · titubeante · resuelto · pesado · ligero
rozando · en volandas · sin ganas · de golpe · con cuidado · a regañadientes
a la deriva · con anticipación
```

`de golpe` = sin anticipación. **Registro**, 1: `en dos`. Detrás de un
`·` en una línea de movimiento solo cabe trayecto, manera, granulado,
registro o ventana: cualquier otra palabra es error.

**Granulados**: 4 · **Lejanías**: 8

```
a unos · a doses · a treses · a pulso

al pie · al paso · cerca · a media distancia · lejos · al fondo
en el horizonte · en el cielo
```

**Diálogo**: `NOMBRE: —texto`, y **el hablante tiene que estar declarado**
en `REPARTO` o `PERSONAJE`. Ojo con los nombres: `el` es palabra reservada
(artículo) pero **`él` es un personaje válido**: la tilde diacrítica los
distingue.

**Tensiones**: `sube · mantiene · cae · rompe`
**Tambores**: `ambar · bermellon · naranja · rosa · ultramar · verde · violeta`
**Anclas**: `bordado · celo · chincheta · esquineras · washi`

**Verbos de movimiento**: 24, y son CERRADOS. El movimiento se reconoce
por el verbo: si escribes uno que no está, la línea no es un movimiento y
**se imprime en pantalla como prosa del narrador**.

```
baja · cae · camina · corre · cruza · entra · esquiva · flota · gira
rebota · resbala · rueda · sale · salta · se apea · se encaja · se levanta
se sienta · sube · tiembla · tropieza · va · viaja · vuela
```

**Relacionales**: 11; crean ligadura viva con muerte conjunta:

```
agarra · alcanza · arrastra · cuelga · empuja · esquiva · huye · orbita
se apoya · sigue · suelta
```

**Eventos VIVOS** (19): el motor los consume (la lista entera, con los de cámara, sonido y cartel, en `mesa chuleta`):

```
> seco · > barre · > respira · > queda · > dura 5 · > silencio 3 · > barrido
> amanece · > anochece · > empapela general nº 88 · > gigante
> congela · > continúa · > cruza el eje · > salta · > espera al clip
> capítulo «Título» · > el clip se agranda y se va · > deja posar
```

**Las 14 transiciones que eran reservadas ya son VIVAS** (con
`--motor gx`): `transicion.wgsl` de la biblioteca de materias, con el plano
que llega vivo. Dicen cómo ENTRA el clip en que se escriben; `funde a
negro` y `funde a blanco`, cómo SALE:

```
> corta · > encadena · > funde a negro · > funde desde negro · > funde a blanco
> pasa página · > la mano tapa · > cortinilla de tijera · > corta en la acción
> entra de golpe · > se sostiene 2 · > retención larga · > chasquido · > a la vez
> funde desde blanco · > iris · > se quema · > desenfoque de pasada · > sintoniza
```

Todo lo demás que entró con RADIOINTERMISIÓN (materia, formato, cámara,
río, montaje, sonido, personajes con ficha) está al final de esta skill.

**`ver:`** tiene 68 entradas. Las que más se usan:

```
balanza · barras · comparacion · convergencia · curva · linea temporal
multitud · proceso · red · teorema · versus · votos
```

Listado entero: `SPEC-MESA-2.md §4.10`, o

```bash
$PY -c "from manim_saorin.visualizaciones import CATALOGO; print(sorted(CATALOGO))"
```

> **Todos estos vocabularios son CERRADOS.** Una palabra que no esté es
> **error**, no una extensión silenciosa. Es lo que permite que el motor
> deduzca: si se pudieran inventar, habría que volver a declararlo todo.

---

## Depurar sin adivinar

```bash
$MESA por-que p.mesa b12          # cada decisión, con su autoridad y su línea
$MESA por-que p.mesa --tabla      # la tabla de precedencia
$MESA mueve p.mesa                # trayectos, maneras, curvas y de dónde salen
$MESA indice p.mesa               # ambigüedades de nombre
$MESA taller p.mesa [--mano]      # el taller/la mano EFECTIVOS
$MESA cuenta p.mesa               # el pliego, narrado en prosa
```

`por-que` explica cualquier decisión leyendo lo que el compilador ya emite,
así que **no puede divergir de lo que se renderiza**. Úsalo antes de tocar
nada «porque sí».

## Qué dice el lint y qué hacer

| mensaje | qué significa |
|---|---|
| `función desconocida «X»` | X no está en la lista. O es una función, o es un plano de cine; mira las tablas. |
| `«X» no es un TRAYECTO` | vocabulario cerrado. No lo extiendas: elige uno. |
| `ambigüedad de nombre` | dos candidatos empatan. Desambigua con `alias:` en el REPARTO. |
| `«el» es vocabulario cerrado` | una palabra de la lengua no puede ser un identificador. |
| `porcentaje pobre NN %` | el pliego dice números que el motor podría deducir. **Desnúdalos hasta que rompa.** |
| `SALTO DE EJE` · `SALTO DE TALLA` · `RACCORD DE …` | avisos de continuidad. **No son errores**: romperlos es legítimo, pero tienen que decirse. Si fue a propósito, `> cruza el eje` o `> salta`. |
| `sin silencio final` · `sin respiro` | el compilador pondrá uno; decláralo si quieres el tuyo. |
| `no es una orden de la lengua: se escribiría tal cual en pantalla` | la línea no es nada de la lengua y saldría escrita en el papel. Sigue el «arreglo:». |
| `texto en pantalla: «…»` (aviso) | prosa suelta dentro de un clip: se escribirá a máquina. Si debía oírse, `di:`. |
| `es una línea de ESCENA y está dentro de un clip` | súbela debajo de `-- ESCENA --`, antes del primer `*`. |
| `detrás de «·» no es un tamaño ni un corte` | los argumentos del dibujo van pegados al nombre, sin `·`. |
| `no es una palabra de plano y la cabecera la ignora` | la cabecera solo admite talla, altura, frente y `de SUJETO`. |
| `habla pero no está en el REPARTO` | declara la voz: `REPARTO NOMBRE: color, voz`. |
| `el preámbulo no carga ningún bestiario` | añade `PYTHON piezas.py`. |
| `se mueve pero no hay ninguna pieza … que se llame así` | el sujeto del movimiento es una pieza puesta o alguien del REPARTO. |
| `página vacía` (aviso) | el beat corta a un cuadro nuevo y no pone nada: pon algo o no declares talla. |
| `en la cabecera de la escena no es una hora` (aviso) | detrás de `·` en `-- ESCENA --` solo va diurna o nocturna. |

Cada mensaje trae `por qué:`, `arreglo:` (con «¿quisiste decir…?») y, casi
siempre, `ejemplo:`. `mesa explica «X»` explica cualquier palabra o línea.

**El porcentaje pobre** es la medida de salud: líneas de dramaturgia sin
cifras / totales. Un pliego de autor sano vive **≥85 %**. Referencias
medidas: `corto.mesa` 100 %, `paradoja.mesa` 87.9 %, `fabula.mesa` 32.4 %
(es una réplica transpilada; por eso está tan bajo).

---

## Lo que el motor hace SOLO (no lo intentes tú)

Si te ves peleando con alguna de estas cosas, para: ya están resueltas, y
pelearte con ellas es lo que estropea un pliego.

**Legibilidad**: ancla de papel opaca bajo todo texto. Es la única regla
innegociable, y la aplica la pinza sola.
**Composición**: zonas, anti-molde y ejes bipolares por beat.
**Sintagmas**: los conjuntos semánticos (una cuadrícula, un campo de juego,
una ruta) **no se desmontan**: el azar coloca al superobjeto, no a sus
partes.
**Resolutor de choques** · **cortes de fondo y pasar la hoja** ·
**hervor y temblor** · **sombras** (las dicta la luz de la escena) ·
**foley** · **gigantes de fondo** · **marginalia**.
**Semillas**: mismo id, mismo dibujo siempre.
**Subtítulos**: apagados por defecto; con `subtitulos wiggly` salen palabra
a palabra en el instante en que la voz las dice, y no se salen del papel.

## La dirección de arte (lo que se pide SIEMPRE)

Un pliego correcto puede seguir siendo pobre. Lo que se espera:

- **Muchos dibujos propios, y que CUENTEN la historia**: el texto acompaña.
  **Si un beat solo tiene letrero, está cojo.**
- **Nada de rellenos planos**: ceras y recortes. Lo vigila
  `tools/planos.py`, pero la decisión es tuya al escribir el bestiario.
- **Mucho archivo, y descarga más**: estampas PD/CC a juego con el tema,
  **validando cada nombre** antes de usarlo.
- **Densidad viva, no decorado**: que la página acumule vida según avanza.
- Y el bucle: animática → **mirar** → corregir, **hasta que sea
  verdaderamente precioso, no «suficiente»**.

El detalle entero está en la skill `manim-saorin-pro` §3.5.

## Las trampas que cuestan caro

**No escribas cifras que el motor deduce.** Si te ves poniendo `en 1.4 -0.3:`
o una duración, pregúntate qué palabra te falta. La cascada coloca mejor que
tú porque conoce el plano, la reserva y el resto de piezas.

**El eje se declara una vez y ya está.** Colocar a mano a alguien que el eje
ya coloca es pedir una contradicción, y el lint la va a cantar.

**La luz es de la escena.** Si quieres una sombra distinta para una pieza,
lo que quieres es otra escena o otra hora.

**El vocabulario congelado es una promesa.** Un pliego escrito contra
`MESA v2 beta` compila en la 1.0. Declara la época si te importa:
`MESA v2 Mi título`.

**Un pliego transpilado no es un pliego de autor.** `mesa escribe` materializa
las decisiones marcadas `(máquina)` para curarlas a mano; el método es
**desnudarlas hasta que rompa**, no dejarlas.

**Mira el vídeo.** La huella puede decir «idéntico» y el vídeo estar muerto:
la réplica de la fábula medía 94.8 % de coincidencia y el director dijo «esto
es como mucho un 45 %». Los dos tenían razón.

---

## Los pliegos que hay que leer

En `~/Developer/manim-saorin/ejemplos/`:

| pliego | para qué |
|---|---|
| `servilleta.mesa` | el mínimo: prosa pura |
| `paradoja.mesa` | **el canon**: un vídeo narrado entero, 24 beats |
| `montaje.mesa` | dramaturgia declarada (arco, motivos, ecos) |
| `materia.mesa` | taller y mano |
| `pulso.mesa` | la misma escena con dos manos |
| `movimiento.mesa` | los 16 trayectos × las 13 maneras, **sin una cifra** |
| `raccord.mesa` | pliego trampa: los cinco avisos de continuidad |
| `ambiguo.mesa` | pliego trampa: la ambigüedad de nombres |

Y en `~/Movies/fabula-tres-hermano/`:

| pliego | para qué |
|---|---|
| `corto.mesa` | **un cortometraje entero**: 2:25, tres escenas, diálogo, viaje, 100 % pobre |
| `carretera.mesa` | la escena del coche: cuatro planos de un mismo mundo |
| `fabula.mesa` | una réplica transpilada (para ver qué NO es dialecto de autor) |

---

## Cuándo esto no basta

- **Dibujos propios** (un personaje, un coche, una casa): hacen falta en
  Python, en un `PYTHON piezas.py`. Skill **`manim-saorin`**, y la ley de la
  materia: *nada es un relleno plano*.
- **Producción completa** (foley, baño filmlook, mux, verificación, máster):
  skill **`manim-saorin-pro`**.
- **La referencia exhaustiva** de cualquier duda de gramática:
  `SPEC-MESA-2.md`.

---

## Lo que entró con «La terraza no existe» v6

**El mapa.** La tesis dibujada como un diagrama que crece; cada orden en
castellano:

```mesa
mapa: territorio «yo» · grande · con la casa · el trabajo · la rutina · el nombre · en centro
mapa: línea desde «yo»                        # la tapia se abre, la línea sale
mapa: en columna izquierda                    # el mapa de los personajes: 7 plazas a la izquierda
mapa: territorio «Iván» · con pareja · amante · avión
mapa: línea desde «Iván»
mapa: la línea de «Iván» llega a otro igual   # relativa: el mismo recinto, las mismas cosas
mapa: la línea de «Lucía» se hunde            # abolición: espiral y agujero que traga
mapa: la línea de «Pepa» vuelve               # absoluta positiva: el recinto se redibuja, verde
mapa: conecta «Mambo Taxi» · «terraza» · «semáforo»   # rizoma
mapa: el círculo se abre                      # la canción del niño
mapa: mira a «Pepa»
mapa: se va
```

Sobrevive al render por capítulos (se reproduce sin animar al arrancar) y
reserva su caja para que los clips no le caigan encima.

**Las transiciones.** `> capítulo «Título»` (cartón, página vacía, suena
la página) y `> el clip se agranda y se va` (el recorte crece al lienzo,
se va, un segundo vacío).

**Lo que un clip lleva solo.** Ficha (título · director, año · minuto) y
subtítulos de la película, si `clips/fichas.json` existe junto al pliego
(`tools/…` lo genera del manifiesto y la transcripción). Y **un clip
dura lo que dice que dura**: el beat crece; la voz no lo corta.

**Cosas que aprendí escribiéndolo:**
- en el teatro, **el nombre de un personaje va a la marquesina** con
  `letrero (cartulina): NOMBRE`; `pon: cartulina` cae donde haya hueco y,
  con la marquesina ocupada, sobre los actores;
- **un beat mudo ejecuta sus acciones en el orden escrito**; si quieres
  el cartón del título y después la ficha, escríbelos así;
- `pon: tira «transporte» · 36` para una palabra que se va a tachar: el
  dymo es demasiado pequeño para leerse y tacharse;
- para una enumeración que DEBE acumularse (el destrozo de Pepa), dibujos
  y no clips: tres clips en once segundos se apilan en el centro; seis
  dibujos el compositor los reparte;
- la nota de rescate, **cuatro veces** en un vídeo entero;
- `ancla muerta` / `ancla ilegible` / `dos voces` / `el beat se alarga` /
  `compone un fantasma` en `mesa lee` te dicen lo que no se ve.

## v6b · la truca del teatro, apunte, cartulina
- `la truca se acerca a X` / `la truca vuelve`: acerca el MUNDO (decorado +
  títeres) ×1,75 sobre X. Entre beats sin caminatas.
- `pon: apunte «…»`: tarjeta mecanografiada para la tercera columna (lo que
  la voz no dice). ≤ 38 caracteres por línea.
- Rótulo de sección = `letrero (cartulina): TEXTO` (marquesina, muere con
  el beat). `pon: cartulina` cae donde caiga el compositor: no.
- `junto a «hafsa»: python: corazones` pega un dibujo a un personaje.
- Un clip terminado se va solo; `clip mudo` sin `grande` deja sitio a un
  dibujo al lado.


## RADIOINTERMISIÓN · el aspecto, sobre `--motor gx` (SPEC §3.10)

Todo en palabras y vocabulario cerrado; los números los pone el motor.
Unidad (preámbulo, capítulo o escena: la escena manda) · prefijo de pieza ·
evento `> …` (anclable: `al decir «GOL»: > temblor`). Ejemplos que se
miran: `ejemplos/radio/*.mesa` (antes, `python prepara_audio.py`). Ruedan
con el motor de la rama `radio` de Tórculo (las transiciones necesitan
láminas en las pasadas).

```
MATERIA papel khadi                  # once papeles: grano fino, satinado, torchón, khadi,
                                     # washi, verjurado, lienzo, tintado, kraft, escolar, cuaderno
MATERIA acuarela sobre papel khadi   # > se moja · > se seca · > se lava · > florece ultramar en «gamba»
MATERIA risografía ultramar y rosa · desregistrada · trama de grano
MATERIA pincel | tejido | tinta [sobre papel X] | ninguna   # > se teje · > la tinta lo cubre todo
BOBINA truca | sin grano | noticiario                        # noticiario: sepia, rayas, 18 imágenes/s
FORMATO 4:3 | 16:9 | 2,39:1 [· de televisión]               # el cambio se anima; > formato 2,39:1
ESPEJO [de la izquierda]             # > se rompe el espejo · > vuelve el espejo
PANTALLA PARTIDA · con un espejo en medio · que se miran
                                     # a la izquierda: python: locutor_a · > se parte la pantalla
SIMULTÁNEO en rejilla | en abanico | en abanico que gira    # > un solo plano
RÍO TIPOGRÁFICO · en fila | en libertad | a pantalla completa   # > revienta «vecinales»
MONTAJE al ritmo de las palabras · se acelera · cada vez más cerca · la cámara no para
        · mezcla «LA RADIO» · «EL ESTADIO»
HERVOR dibujado | suave | no
REPITE «PRIMER ANUNCIO»              # la misma secuencia: mismas semillas, misma voz
EFECTOS audio/sfx  ·  CAMA estadio  ·  JINGLE jingle  ·  sonido: congelador
REPARTO LOCUTOR: ultramar, elevenlabs A, con radio, alias: locutor_a   # color: con radio | seca
```

Prefijos: `en acuarela:` · `en tejido rosa:` · `en tinta:` · `en risografía
rosa:` · `en pincel: foto: x.jpg` (cuece la foto original) · `en papel
kraft:` · `de «vecino» a «vecina»: pon: rescate «¡CÁLLATE!»` (vuela y se
estrella) · `a la izquierda:` / `a la derecha:`.

Cámara: `> zoom de golpe a «X»` · `> barrido a la derecha` (el primero del
clip = transición de látigo) · `> plano holandés` · `> temblor` · `> cámara
lenta` / `> velocidad normal` · `> congela la imagen` (estampa quieta) ·
`> se para en seco` / `> arranca de golpe` (congelado vivo) · `> fotograma
en blanco` · `> la cámara no para` · `> la cámara va pegada a «balón»` ·
`> la cámara vuelve`.

Movimiento: `· con estela` · `· con líneas de fuerza` · `· en
cronofotografía`; sin destino se hace en el sitio (`grada salta`). `aro se
funde en dial` · `vecino hierve con locutor` · `el pelo pasa de jugador a
nina` (partes con nombre en `pieza.partes`). `> se rasga el papel y asoma
«EL PATIO»` (la grieta se queda en las escenas con ese nombre) · `> asoma
«EL ESTADIO» en el hueco`.

Voz: `VECINO / LOCUTOR: —Podría haber sido un / partido decepcionante…`
(recorte del uno, pluma del otro, dos tomas encadenadas con su color) ·
`> la voz se vuelve radio`. Las tomas de ElevenLabs van YA en el sidecar
(`metodo: "elevenlabs"`); nunca `mesa graba` en un pliego así.

Personajes con ficha (bestiario con `vista, pose, expresion, boca, mano_i,
mano_d, hervor`): la boca sigue la voz sola, la vista sale del plano
(`* medio de LOCUTOR perfil · …`), el pelo y la bufanda van solos. El
pliego dice: `LOCUTOR de espaldas` · `LOCUTOR celebra | grita | aplaude |
anda | gira el dial | señala` · `al decir «ESPERA»: LOCUTOR se asombra`.

Trampas de este corto:
- un hablante no puede llamarse `LA`, `EL`, `A`…: son palabras de la
  lengua; usa `LOCUTOR`, `VECINA`…
- un `> dura N` es del beat entero, no de un tramo: para separar dos
  eventos sin voz usa `> silencio N` entre ellos, o ánclalos a la voz;
- `mesa lee` desde fuera del worktree usa la librería instalada (master):
  si dice que un evento nuevo no existe, mira desde dónde lo ejecutas.

## CADA PLANO ES UN CARTEL · los signos, la composición, el tejido (SPEC §3.11)

La dirección radical de RADIOINTERMISIÓN (`texto/propuesta_direccion_radical.md`
§4). Vocabulario cerrado, sin números. Ejemplos que se miran:
`ejemplos/cartel/{signos,composicion,tejido,partitura}.mesa`. El recorte por
forma y la tela con estado necesitan el motor de la rama `cartel` de Tórculo
(`MESA_GX_PYTHON=~/Developer/torculo/wt/manimgx-cartel/.venv/bin/python`
hasta que se fusione); sin él, avisa y sigue.

```
PALETA verde, morado y amarillo            # campo, figura, acento (+ el papel)
CARTEL columna a sangre a la izquierda · figura delante de la letra · en silueta
LETRA «¡LA DIGNIDAD» · en League Gothic · girada · a sangre · a la izquierda
«ESPERA» es un muro                        # muro suelo cielo ventana máscara portería persiana barandilla cuchilla
«GOL» es una ventana a «EL ESTADIO»        # dentro de las letras, la última imagen de esa escena
la O de «GOL» es balon                     # / … se convierte en balon / balon se convierte en la O de «GOL»
las letras de «GOL» caen                   # cae se estampa se apila se rompe se abre se separa se va
la raya corta «momen»
«RADIOINTERMISIÓN» forma el patio          # las tildes, ventanas encendidas
en silueta: python: vecino · enorme · cortado por abajo
ESCALA vecino como grada
«GOL» tapa a pichichi · el ojo completa «SCHLAGER» · BOSQUE de brazos y puños
TEJE «RADIO / INTERMISIÓN» · en la serifa de Pretexto · con la aguja del dial
SINTONIZA «RADIOINTERMISIÓN»
«RADIOINTERMISIÓN» se interrumpe en «RADIO»      … (otra escena) …      «RADIOINTERMISIÓN» sigue
los hilos de VECINO y LOCUTOR se entretejen
FRASES «así es» · «hoy nos espera una jornada»
> la tela se enreda · > se desteje · > la mancha deja «ES AZUL» en reserva
PARTITURA texto/cuento.md                  # preámbulo: cursiva→río, guion→grito, raya→cuchilla, MAYÚSCULAS→revientan
```

Trampas: `CARTEL`/`PALETA` dentro de un clip son de ese plano; fuera, de la
escena. La primera `LETRA` de un plano con `columna a sangre` va sola a la
columna (girada, a sangre). Una letra sin verbo se posa; con un verbo detrás
en el mismo clip, entra con el verbo. Lo del cartel vive fuera del tablero:
se va al abrir el beat siguiente, salvo un título interrumpido.

## LA IMAGEN QUE OYE · la luz, el soporte, la intensidad (SPEC §3.12)

La especificación de radicalidad de RADIOINTERMISIÓN (§5-§9). El motor oye
el audio real (la voz de cada beat, la música, los ambientes, cada efecto)
y lo convierte en curvas deterministas y cacheadas (`oido.py`); el pliego
las conecta con frases. Ejemplos que se miran: `ejemplos/oye/{respira,rio,
espectro,luz,soporte,intensidad}.mesa` (antes, `python prepara.py`).

```
la cámara respira con la voz        # empuja con la frase, sube con el tono, tiembla con las sílabas
el río mide la voz                  # tamaño = volumen, peso = emoción, inclinación = velocidad; GOOOOL se estira
la luz sube con la radio            # la fuerza de la LUZ de la escena sigue a la pista
el dial es la línea de tiempo       # (preámbulo) la aguja avanza con el corto; salta en cada mundo
el campo es el espectrograma del estadio   # (clip) hierba = graves, grada = agudas; corre con el sonido
LUZ de «radio» · desde abajo · ámbar        # una sola fuente dura; todo lo demás es noche
LUZ de los focos · en contraluz             # siluetas; destellos de risografía
LUZ plana · de estudio                      # el brillo del anuncio
COLOR monocromo [humo]      > estalla el color en «gamba»     > el color se apaga
SOPORTE limpio | usado | gastado | sucio | roto
> el soporte empeora · > el soporte se deshace · > el soporte se limpia
INTENSIDAD tensa · INTENSIDAD de serena a rota · … · extraña · … · con la voz
> la intensidad sube a furiosa | cae a quieta | salta a rota
> destellan los focos · > la cámara deja de respirar
```

PISTA = `la voz` · `la música` · `la cama` · `los efectos` · `la radio` (todo
lo que suena) · `«un efecto»` · `del estadio` (lo que suena con ese nombre:
el AMBIENTE, la MÚSICA y los eventos de la banda también se oyen). INTENSIDAD = `nula quieta serena templada viva
agitada tensa encendida desatada furiosa rota` (0…10, el mapa §8). Las frases
en una escena valen para toda ella; en un clip (con `>` o sin él), hasta el
final del beat, y se anclan con `al decir`.

- La intensidad gobierna sola el temblor de mano, la inclinación (el
  holandés que crece), el desregistro y el grano, y la duración de plano de
  `MONTAJE al pulso`. `mesa intensidad p.mesa [--json c.json]` imprime el
  mapa del pliego sin rodar.
- El soporte dura TODA la película (un gol estropea lo que viene detrás);
  el del preámbulo es el de partida.
- Mirar lo que el oído oyó: `python -m manim_saorin.oido toma.wav --png
  c.png --palabras p.tiempos.json:r03_03`.

Trampas: el contraluz recorta lo que tiene relleno (un dibujo solo de
líneas queda en líneas); `en el centro:` no es un prefijo (escribe
`python: radio · grande`); la luz de una pieza que aún no se ha posado sale
de abajo en el centro hasta que la pieza llega.

## LA CÁMARA COMO OBJETO · la profundidad, el tiempo, el cuadro, romper con permiso (SPEC §3.13)

La especificación de radicalidad de RADIOINTERMISIÓN (§2-§4, §9.1-§9.4,
§9.7). Una cámara de verdad (la 3D de ManimGX), no un desplazamiento de
imagen. Vocabulario cerrado, sin números. Ejemplos que se miran:
`ejemplos/camara/{capas,lentes,mano,atraviesa,tiempo,cuadro,romper}.mesa`
(antes, `python prepara_audio.py`: cada plano lleva la frase del cuento que
justifica lo que hace la cámara). Sin nada de esto, la escena sigue en 2D y
nada cambia.

```
CÁMARA con masa · al hombro · gran angular      # lente: normal gran angular teleobjetivo ojo de pez
                                                # masa: ligera con masa pesada · mano: en trípode al hombro
                                                # foco: profundidad total | poca profundidad
HORIZONTE se inclina                            # un paso más en cada golpe; | gira | recto
lejos: python: fachada                          # delante al pie cerca al paso a media distancia lejos
en el cielo: python: cielo · a sangre           #   al fondo en el horizonte en el cielo: el paralaje sale solo
> la cámara va a «X» · > la cámara se acerca a «X» · > la cámara se aleja · > la cámara sube | baja
> vértigo sobre «X» · > vértigo al revés · > gran angular · > teleobjetivo · > ojo de pez · > lente normal
> la tensión sube | cae | rompe | se mantiene  # el temblor es una curva: afecto + voz + intensidad
> el cuadro gira a la derecha · > el cuadro se endereza · > el horizonte se inclina | se endereza
> la cámara va montada en «X» · > la cámara gira alrededor de «X» · > tiempo bala sobre «X»
> la cámara entra en «X» · > la cámara sale de «X» · > la cámara atraviesa
> la cámara mira desde dentro de «balon»        # su canto enmarca el plano
> plano secuencia por «A», «B» y «C» · > triple salto axial a «X» · > salto axial a «X»
> pasa por delante «bufanda»                   # el primero del clip: el corte va escondido debajo
el foco en X · el foco pasa a X · el foco en X y en Y · todo en foco
CADENCIA las figuras en dos · el fondo en cuatro · la cámara en uno   # la letra · lo de delante · todo
> rampa de velocidad · > cámara lenta a saltos · > todo se para menos «X» · > barrido temporal hacia abajo
GOLPES con impacto · con borrón                 # > fotograma de impacto · X corre … · con borrón
FORMATO 2,39:1 · bandas de papel                # > las bandas bajan | suben · > se rasga la banda de arriba
X empuja | agarra | arrastra la banda de abajo · X se apoya en la banda de abajo
> asoma «EL ESTADIO» en «tele»                  # el cuadro dentro del cuadro; luego > la cámara entra en «tele»
> la línea se mueve a la izquierda | se inclina | se endereza | se rompe      # (PANTALLA PARTIDA)
PISTA ÓPTICA · > la pista se desborda · > la pista vuelve
> se ven las perforaciones · > se van las perforaciones · > el fotograma se descarrila
VECINO mira a cámara
> demasiado cerca de «X» porque «…» · > cortado por la frente «X» porque «…» · > aire al revés «X» porque «…»
> mirando fuera de campo «X» porque «…» · > el que habla fuera de campo porque «…» · > cuadro vacío porque «…»
> rompe el eje porque «…» · > se sale del cuadro porque «…» · > sin leer porque «…»
> demasiado rápido porque «…» · > todo a la vez porque «…» · > sin respiro porque «…»
```

- **Romper siempre significa algo**: las roturas sin `porque «…»` son error
  de `mesa lee`; con él, `mesa lasseter` las lista aparte («roto con
  permiso») y no las cuenta. Escribe en el porqué la frase del cuento.
- **Ancla los eventos de cámara DESPUÉS de que entren sus piezas**: las
  piezas sin `al decir` se reparten por las frases de la voz (la segunda
  pieza cae en la segunda frase). Si la pieza aún no está, el operador
  espera un rato a que entre; un movimiento (`X cruza…`) no espera.
  Lo seguro: `al decir «primera palabra»: lejos: python: fachada`.
- Las capas son del mundo: duran la escena; si el clip siguiente pide la
  misma pieza a la misma distancia, se queda la que había. Lo que se quiere
  limpio, en otra escena (una línea de unidad la abre como lugar nuevo).
- El vértigo y las lentes necesitan capas a distancias distintas: sin
  ellas, lo único que cambia es el cristal (la deformación del gran angular
  y el ojo de pez).
- El foco no desenfoca el texto (la legibilidad), salvo `> sin leer porque`.
- `PISTA ÓPTICA` lee el wav del sidecar: sin voz, la pista está muda.
- **El visor**: un pliego que cambia de formato enseña TODO formato (también
  el 16:9) como ventana de esquinas redondas con aire de papel, el cambio
  siempre animado, y la edad, la bobina, el grano, el soporte y la estática
  quedan dentro. No se escribe nada: lo decide `FORMATO`.
- Un movimiento va hasta otra pieza o `hasta fuera de campo por la
  derecha | por la izquierda`; «hasta la derecha» no es un destino y la
  pieza no se mueve (con la cámara montada en ella, no corre el mundo).
- `mesa por-que p.mesa bNN` enseña lo roto con permiso y la cámara de la
  escena.

**El blocking enorme** (SPEC §3.11.3b): `python: X · gigante · cortado por la
frente | por abajo | por la izquierda`; en `PANTALLA PARTIDA · desigual ·
inclinada` cada mitad es el cuadro (`a la izquierda: python: X · gigante`) y
`> la costura se mueve hacia «X»`; `X se sale del cuadro por la derecha`;
`RÍO TIPOGRÁFICO · no` apaga el río de una escena.

**La salvaguarda** (SPEC §3.11.3c): un corte nunca se lleva la cara, la boca,
la mano que actúa ni las letras que hay que leer; para pedirlo, `· sin leer`.
El muro con río: el río se estrella contra él. `la raya corta «X»` también
dentro del río. TEJE dibuja la malla de puntadas dentro de letras nítidas.

## LA VIDA · nada se queda en su pose (SPEC §3.15, dirigir-saorin §41)

Ley fundamental: un personaje en cuadro **siempre actúa**. Con `--motor gx`
la vida va sola; el pliego NO la escribe. Lo que el motor hace sin que lo pidas:

- **anima por esqueleto** las fichas que publican `ANGULOS` (pose clave en
  ángulos) y aceptan `pose` como diccionario: cada acción va pose a pose con
  anticipación, sobrepaso, asiento y superposición (el tronco tira, brazos,
  codo y cabeza llegan después), redibujando la pluma «en dos»; las fichas
  sin ese contrato viven como marionetas (respiran, se balancean, cabeza y
  brazos por sus pivotes);
- **la capa de vida**: respira, cambia el peso de pierna, se reorienta, mueve
  cabeza y mirada (sin enseñar la nuca), ajusta las manos, parpadea, tics de
  quien no habla (gafas, cadera, nuca, barbilla); su energía sale del afecto
  del beat;
- **actúa la voz** del sidecar: un gesto en la tónica de cada golpe de frase
  (repertorio propio por personaje, sin repetirse), cabeza y tronco con la
  frase; MAYÚSCULAS y «¡…!» = grito con el cuerpo entero; «jajaja» = risa que
  sacude; **quien escucha** mira, asiente, se indigna con el grito y niega con
  la risa ajena;
- **los objetos viven**: la radio vibra con lo que suena, la aguja tiembla, la
  ropa, la tela, el cable y el pelo se mecen, las ondas laten, el vaho sube,
  lo demás respira (lo que va `· a sangre` no: es el mundo).

Lo que sí escribe el pliego (acciones, todas anclables con `al decir «…»:`):

```
LOCUTOR se gira · se da la vuelta · se vuelve hacia la cámara · se pone de perfil · de espaldas
VECINO se sienta · se levanta · se inclina · se yergue · se asoma a la barandilla
VECINO asiente · niega · se encoge de hombros · se rasca la cabeza · se ríe
VECINO se acerca · se aleja                  # camina a cámara (crece) o se va (mengua)
VECINO mira a «radio»                        # hasta el beat siguiente
VECINO se queda quieto                       # el freno del personaje, con intención
LOCUTOR celebra | grita | aplaude | señala | gira el dial | corre hasta … (ya existían)
```

**Comprobarlo SIEMPRE** tras rodar: `${=MESA} vida /tmp/x.mp4` mide por
personaje y por segundo la postura y la silueta de lo rodado y marca
PEGATINA cada segundo en cuadro que no actúa (fuera de los frenos). Un
corte con pegatinas no se entrega. `MESA_GX_SIN_VIDA=1` rueda como antes,
para comparar. Y mírala en tiras de fotogramas **consecutivos**, no sueltos:

```bash
ffmpeg -y -ss 2 -t 2 -i x.mp4 -vf "fps=12,scale=320:-1,tile=6x4" -frames:v 1 tira.png
```

Trampas: la vida es del backend gx (con `--motor ce` las fichas no se
redibujan); una ficha sin `ANGULOS` solo se mueve como marioneta (pide el
contrato al bestiario: NOTAS_LENGUA «VIDA · PEDIDO»); `X mira a Y` necesita
que Y esté ya en la mesa.

**La partitura con cuidado**: solo grita las exclamaciones y mayúsculas breves; la
frase larga del vecino va en una tira pequeña al canto; ningún rótulo tapa una cara.
Apagarla: `PARTITURA · no` / `PARTITURA · sin gritos` en la escena o el clip, o
`sin partitura` en el clip.

## PIEZAS, MARIONETAS Y COLLAGE · lo que el pliego puede pedir a cada pieza (SPEC-PIEZAS.md)

Todo lo que entra por `python:` sigue el **estándar de pieza** en cuatro
niveles (cada uno superconjunto del anterior). El pliego pide según el nivel:

| nivel | ejemplo | el pliego puede |
|---|---|---|
| dibujo | `python: maquina` · `foto: x.jpg · sin fondo` | ponerla (con prefijos de sitio y distancia), moverla con los 24 verbos, filmarla, `· gigante · cortado por …` |
| partes | `python: radio` | además `el pelo pasa de A a B`; sus esenciales no se cortan |
| marioneta | `MARIONETA charlot · de la foto …` · `python: tijeras` | además `QUIEN acción` (las que **declara**: `TIJERAS corta`), ciclos con los verbos (`corre`, `va`), boca con la voz si tiene mandíbula |
| personaje | `python: abuela` (un `.personaje.toml`) | además `QUIEN de espaldas`, la vista del plano, `al decir «…»: QUIEN se asombra`, la boca sola |

**Antes de escribir acciones, pregunta qué sabe hacer cada pieza:**
`mesa bestiario pliego.mesa` lista cada pieza que ve el pliego, su tipo y
**sus acciones**, con la línea exacta para pedirlas. No adivines acciones:
`mesa lee` da error si la pieza no la tiene (y propone la más cercana).

Toda marioneta de foto (una `MARIONETA` o un `.marioneta.toml`) sabe de
serie: `saluda`, `celebra`, `señala`, `baila`, `se inclina`, `duda`,
`grita`, `aplaude`, `en jarras`, y los ciclos `anda` y `corre`; más las que
declare su `.toml`. Un personaje (`.personaje.toml`) sabe las de la lengua
(celebra, grita, aplaude, señala, salta, se sienta…) y sus poses propias.

```
PIEZAS piezas/                       # un .py, un .toml (personaje · marioneta de foto · recorte) o una carpeta
MARIONETA charlot · de la foto medios/chaplin.jpg · mira a la derecha · canto de tijera
REPARTO CHARLOT: minio, elevenlabs A, alias: charlot       # para que hable y actúe por su nombre
REPARTO ABUELA: ultramar, elevenlabs B, alias: abuela
REPARTO TIJERAS: minio, alias: tijeras                     # una pieza que NO habla también va al REPARTO (sin voz) para pedirle acciones

* medio de CHARLOT frontal · jugueton
a la izquierda: python: charlot · grande
CHARLOT: —¿estás viendo lo que yo estoy viendo?     # la mandíbula de la foto sigue a la voz
al decir «gambas»: ABUELA recuerda                   # una acción que su .toml declara
python: abuela pose=recuerda vista=perfil            # pose y vista de partida, con nombre
```

**El collage** (fotos, vídeo, recortes, tipografía, pluma y materias en el
mismo plano), con modificadores tras `·`:

```
foto: medios/x.jpg · sin fondo · canto de tijera | de troquel | rasgado | limpio
                   · sombra pegada | levantada | sin sombra · con cinta | con celo | con chincheta
recorte: medios/x.jpg · canto rasgado                 # recorte: ya es sin fondo
foto: medios/carta.jpg · con fondo · canto rasgado · con celo   # la copia entera, con su canto
en risografía rosa: foto: medios/x.jpg · sin fondo     # la materia por pieza sigue valiendo
clip: medios/baile.mp4 de 0:02 a 0:08 · sin fondo      # recortado fotograma a fotograma, EN DOS
clip: medios/baile.mp4 de 0:02 a 0:08 · sin fondo · a 24 · canto de troquel
clip de fondo: medios/baile.mp4                        # la película a 24, a pantalla completa
clip de fondo: medios/baile.mp4 de 0:00 a 0:05         # solo ese tramo; al acabar, se va en el beat siguiente
CADENCIA las figuras en dos · el fondo en uno
```

Sitio de una pieza (prefijo delante de `python:`, `foto:`…): `a la
izquierda:` · `a la derecha:` · `al fondo:` · `delante:` · `lejos:` ·
`cerca:` · `en el cielo:` · `junto a «X»:` · `bajo «X»:`. Sin prefijo, la
pieza va al centro (`en el centro:` no existe).

Colores del REPARTO: los tambores (`ambar`, `bermellon`, `naranja`, `rosa`,
`ultramar`, `verde`, `violeta`) y las tintas del cartel (`minio`, `tinta`,
`azul`, `rojo`, `celeste`…). `mesa lee` da error con otro.

Ejemplos que se miran: `ejemplos/collage/{recortes,gilliam,cine}.mesa`
(antes, `python prepara.py`: baja el material de Commons y escribe los
sidecar con tomas ya grabadas).

**Las herramientas de las piezas** (en el Python de ManimGX, solas):

```bash
${=MESA} pieza nueva «la abuela» --tipo personaje       # dibujo · marioneta · personaje · recorte (--foto x.jpg)
${=MESA} pieza nueva «bailarina» --tipo marioneta --foto medios/isadora.jpg
${=MESA} pieza comprueba piezas/                        # ✓ ⚠ ✗ con qué hacer; sale 1 si hay ✗
${=MESA} pieza hoja piezas/abuela.personaje.toml        # hojas de presentación → mirarlas
${=MESA} bestiario pliego.mesa                         # las piezas que ve el pliego y sus acciones (en pantalla)
${=MESA} bestiario piezas/                              # la ficha de cada pieza (y BESTIARIO.md + hoja_contactos.png)
```

Trampas:
- todo esto rueda con `--motor gx`; en Cairo `· sin fondo` avisa y sale la
  foto de siempre;
- `QUIEN acción` solo se entiende si QUIEN está en el `REPARTO` (con `alias:`
  al nombre de la pieza) o es una `MARIONETA`; si no, `mesa lee` da error y
  te dice la línea de REPARTO que falta;
- una acción que la pieza no declara es error de `mesa lee`, con la lista de
  las que tiene: mírala antes con `mesa bestiario pliego.mesa`;
- la pieza tiene que estar puesta (`python: nombre`) en ese beat o antes
  para que se vea actuar;
- `al decir «palabra»`: la palabra tiene que decirse en la voz de ESE beat
  (`mesa lee` da error si no);
- el clip recortado es pesado la primera vez (Vision por fotograma): córtalo
  a lo que se ve (`de … a …`).

## EL METRAJE REAL · rodar y montar con palabras (SPEC-METRAJE.md)

Con `METRAJE carpeta/` el pliego monta material filmado. Antes, una vez:
`${=MESA} ingesta carpeta/ --idioma es --vocabulario "nombres, con tildes"`
(proxies, Whisper local palabra a palabra, quién habla, cortes, Vision,
multicámara e índice de EmbeddingGemma 2; incremental).

```
MESA «La vuelta a la Luna»
METRAJE ../documental                     # o METRAJE la casa
FORMATO 9:16 · sigue a quien habla        # 16:9, 1:1, 4:5 · sigue al sujeto | a NOMBRE | centrado
REVELADO de la casa                       # gelatina Saorín + bobina (· desde i-log)
RECORTA los silencios y las muletillas · tapa los saltos con acercamiento
LIMPIA la voz
ESTABILIZA lo que tiembla
SUBTÍTULOS palabra a palabra
REPARTO MARI: ultramar, filmada, alias: persona 6     # el alias, de la ingesta

* medio de MARI · contenido
MARI: —Lo que regresa a la Tierra es la cápsula Orion.   # la frase → su toma
recurso ≈ lo que dice                                     # B-roll por sentido
al decir «Apolo»: recurso ≈ «la cápsula con paracaídas»
sobre la mano de MARI: python: flecha                     # la pluma sigue la mano
sobre «la barandilla»: python: vecino                     # objeto encontrado por sentido

* primer · euforico
toma: «Yo soy Artemis» · la mejor                         # mejor de todas las tomas

* respiro · sereno
plano ≈ «la Tierra desde la ventanilla» · se acerca       # · en capas: paralaje
> retención larga
```

Bucle: `lee` (dice qué frase no se dice en el material) → `monta`
(congela tomas, planos, recursos y objetos en el `.lock`; avisos de
continuidad: SALTO, RACCORD DE MIRADA, RACCORD DE LUZ O VESTUARIO, RECURSO
QUE NO CASA) → `animatica` (un cuadro por plano con su subtítulo) → MIRAR →
`toca` (ya va por el turno de `pesado`). Además: `busca carpeta «…»
[--dice] -o hoja.png`, `exporta -o x.otio|x.fcpxml|x.edl`, `importa`,
`planilla` (lista de planos para rodar) y `entrevista carpeta/ -o corte.mesa
--dura «un minuto»` (el pliego que se escribe solo: gancho, quién, desarrollo
y remate).

Trampas: copia la frase como se DIJO (`mesa lee` te da la más parecida);
con varias personas en el material, pon el `alias:` o la mejor toma puede
ser de otra; la talla de la cabecera acerca lo filmado (`primer` = la
cara); si un beat pone dibujos, papeles o letreros, el plano es HÍBRIDO y
lo compone Tórculo (hoy en 16:9); los papeles se colocan solos lejos de la
cara filmada.

## EL ESCENARIO 3D · Blender orquestado, la misma cámara, lo generativo (SPEC §3.17)

Un decorado en volumen con la luz del cine; Blender rinde por capas y
Tórculo compone (pluma con hervor, láminas, bobina). Vocabulario cerrado,
sin cifras; todo en la ESCENA (debajo de `-- LUGAR --`). Ejemplos que se
miran: `~/Movies/tresde-corto/` (`azotea.mesa`, el corto; `ligero/`,
`maniqui/`, `sintesis/`, `intercambio/`).

```
-- LA AZOTEA · nocturna --
ESCENARIO 3D · en Blender · con EEVEE · de papel · líneas a pluma
DECORADO azotea                                   # repertorio: mesa tresde mundo p.mesa lo enseña
DECORADO tendedero · lejos · a la izquierda
DECORADO «torre» de modelos/torre.glb · al fondo  # glb gltf usd usdz blend fbx obj
DECORADO radio · sobre «silla»                    # sobre · junto a · detrás de · delante de
DECORADO tejados · al fondo · en fila
PERSONAJE 3D GUARDA · maniquí · a la derecha      # la vida mueve sus huesos; en el REPARTO para hablar
LUZ principal de la izquierda · cálida · dura     # de relleno · de contraluz · práctica de «radio»
HORA hora azul                                    # alba mañana mediodía tarde atardecer hora azul noche
NIEBLA ligera                                     # densa · de suelo
```

- `en ManimGX` (o `ligero`): las mismas piezas dentro del render, sin
  Blender (rápido). `con Cycles`, `en GPU alquilada` (no alquila sin
  permiso: deja el paquete; `MESA_TRESDE_REMOTO=ensayo` lo prueba en el Mac).
- La ficha (`python: vecino`, o `junto a «silla»: python: vecino`) es una
  lámina plantada en el suelo, con altura de persona; lo que está más cerca
  la tapa; su vista sale de la cámara (si la cámara gira, pasa por sus vistas).
  **Ponla UNA vez por escena**: un personaje no caduca y repetirla duplica.
- La cabecera manda la cámara de verdad: `* medio contrapicado de VECINO` =
  travelling a su talla, mirada desde abajo. Los eventos de §3.13 nombran
  piezas del decorado: `> la cámara se acerca a «torre»`.
- Rodar: `pesado mesa toca p.mesa --motor gx …` hace solo las tres pasadas
  (grabar la cámara, Blender, componer); la caché evita repetir Blender.
- Exportar: `mesa tresde exporta p.mesa -o x.glb|.usd|.blend --pista
  <vídeo>.camara3d.json`.

Lo generativo (cuarta fuente, declarada y congelada):

```
imagen sintetizada ≈ «nubes de tormenta sobre los tejados»     # → foto: congelada
clip sintetizado de fondo ≈ «la lluvia sobre un tejado de zinc»  # → clip de fondo:
```

`mesa sintetiza p.mesa` (simulado por omisión; `--proveedor local` con SD
Turbo, gratis; `--proveedor treg --de-pago` SOLO si José Luis lo pide: cuesta
dinero). Sin congelar, `mesa lee` da error; el vídeo lo declara en su
`comment` y en `<vídeo>.creditos.txt`.

Trampas: `DECORADO`, `LUZ principal…`, `HORA`… dentro de un clip es error;
un `s01` como cabecera no es id (usa `s01_01`); el ancho de la pluma de
ManimGX no se encoge con la distancia (lo resuelve el motor); un modelo
importado deja fuera su cámara y sus luces.

## EL FÚTBOL · la acción física y la jugada (SPEC §3.20, rama `futbol`)

Que se vea correr, chutar, parar y marcar. Las acciones son de la ficha
(librería `manim_saorin/estudio/futbol.py`, que publican las fichas de
Radiointermisión y cualquier personaje del estudio); el balón, la red, el
césped y la grada son de la física del motor (`gx/jugada.py`). Nada se
escribe con números.

```
REPARTO DELANTERO: celeste, alias: delantero       # quien actúa va al REPARTO (sin voz vale)
REPARTO PORTERO: ambar, alias: portero

* general nadir perfil de delantero · euforico
python: delantero vista=perfil · grande
junto a «delantero»: python: balon actual          # el balón: cualquier pieza balon/pelota/esferico
python: cesped_en_fuga · a sangre                  # el suelo que corre bajo quien corre en el sitio
DELANTERO esprinta                                 # en el sitio, hasta el beat siguiente

* general frontal de portero · euforico
a la derecha: python: porteria · gigante           # la red que se hincha (red, boca, postes)
a la derecha: python: portero vista=frente · grande
a la izquierda: python: delantero vista=perfil · grande
junto a «delantero»: python: balon actual
DELANTERO chuta a «PORTERO»                        # anticipación, contacto, seguimiento; el balón sale en el contacto
PORTERO no llega                                   # espera al balón: vuela cuando llega
> el balón entra en «porteria»                     # la red se hincha, el poste vibra
```

- Acciones: `corre hasta «X»` (pies clavados: la fase la marca lo que avanza),
  `esprinta`, `regatea`, `chuta [a «X»]`, `pasa a «X»`, `remata de cabeza [a «X»]`,
  `hace la chilena [a «X»]`, `despeja a «X»`, `hace una entrada`, `se desploma`,
  `celebra de rodillas`, `abre los brazos`, `se besa el escudo`, `se lamenta`,
  `protesta`, `se incorpora` (tras caer al suelo); el portero: `se estira`, `para`,
  `no llega`, `se le escapa`.
- El suelo que corre: cualquier pieza `cesped…` o `estadio_…` (salvo el futbolín)
  va `· a sangre` y corre bajo quien `esprinta` en el sitio, a la velocidad de su
  zancada. Las capas se declaran por el nombre de la parte: `corre:FACTOR:PERIODO:
  PENDIENTE` (PERIODO `v` = la `ventana`, lo que se ve del decorado; el resto
  entra al correr) y `gira:FACTOR` (gira alrededor de su pivote). Una pieza con
  parte `ventana` se pone a sangre por su ventana, no por su caja.
- En Radiointermisión: `estadio_cartel amarillo|ultramar|rosa`, `estadio_vortice`,
  `estadio_materia`, `estadio_futbolin`, `grada_riso` y `grada` a pluma
  (NOTAS_FUTBOL.md).
- El balón sin jugador: `el balón vuela hasta «portero»`, `el balón rueda hasta
  «X»`, `el balón rebota`; eventos `> el balón bota`, `> el balón da en el poste`,
  `> la red se hincha`, `> la grada estalla`.
- Lo que va solo: el balón toma la escala del jugador, lo conduce quien corre a
  su lado, gira, se estira, se aplasta y deja estela de Marey; lo rápido deja
  ecos y líneas de fuerza en la hoja; el portero se cronometra con el balón.
- Trampas: un personaje puesto en un beat sigue en la mesa en el siguiente
  (es del mundo): si el plano nuevo lo vuelve a poner, `retira: todo` antes;
  las acciones necesitan que la pieza las declare (`mesa lee` lo comprueba);
  `· gigante` en un jugador protege la cabeza y el pie que golpea.

## GÉNEROS Y PRODUCCIÓN · un vídeo para cada género (SPEC §3.19)

Una línea en el preámbulo y el pliego ya sabe qué vídeo es: lienzo, ritmo,
duración de plano, subtítulos, sonoridad, pausa, silencio, bucle, zonas
seguras, títulos y estructura. El pliego sigue mandando sobre el perfil.

```
MESA «Cuarenta y dos dobleces»
GÉNERO tiktok                        # tiktok reel short didáctico noticia documental ensayo
                                     # corto videoclip podcast anuncio clase tráiler
                                     # videopoema efeméride tutorial   (mesa géneros)
GÉNERO noticia · de «Laboratorios Saorín · Noticias» · para la tele
LIENZO 9:16                          # el fichero en vertical (o 1:1, 4:5)
IDIOMA en                            # la lengua de lo que se dice y se lee
DATOS datos/cimas.csv                # la fuente de una serie
```

Las piezas de oficio (líneas de clip):

```
ecuación: C_n = C_0 \cdot (1 + r)^n          # LaTeX ($…$ = Typst); la siguiente ecuación
                                             # TRANSFORMA a esta: paso a paso
ver: curva desde datos/capital.csv           # también barras y puntos; CSV o JSON
titular: El NIST deja de exigir que cambies tu contraseña
rótulo: David Temoshok · coautor de la guía, NIST
fuente: nist.spdf «SHALL NOT require subscribers to change passwords periodically» · en español «…»
dato: «15» caracteres como mínimo · según nist.spdf «a minimum of 15 characters in length»
cita: «La declaración tal cual» · Nombre, cargo
llamada: Pruébalo gratis · ejemplo.app       # anuncio (con marca.toml)
firma                                        # el cierre de marca
paso: Abre los ajustes                       # tutorial: se numeran solos
audiograma de ANA                            # podcast
```

- **Una cartela no puede citar lo que la fuente no dice**: `fuente:`,
  `dato: … · según` y `cita: … · según` buscan la frase en el SPDF letra a
  letra; si no está, `mesa lee` da error. El SPDF de un PDF: `mesa fuente
  nueva informe.pdf`. En noticia y efeméride, toda cifra en pantalla sin
  fuente es aviso.
- **En vertical** la página es una columna sobre los subtítulos palabra a
  palabra, y nada que se lea cae bajo la interfaz de la app. En redes, la
  página va desnuda, el beat anterior se va al cortar y el final funde con
  el principio (bucle).
- **La ortografía la revisa `mesa lee`** en todo lo que se ve y se oye
  (corrector de español del sistema y reglas de la casa: vídeo, píxel,
  -ciones sin tilde, ¿ y ¡, la raya pegada al inciso).

Las órdenes de la productora (todas en local; lo pesado, por `pesado`):

```bash
${=MESA} nuevo "Título" --género noticia          # plantilla con // ✎ en cada hueco
${=MESA} serie p.mesa [datos.csv] --rueda         # un vídeo por fila ({campo}, si {campo}:)
${=MESA} variantes p.mesa --rueda                 # variante A: / variante B: (el gancho)
${=MESA} traduce p.mesa en [--maquina]            # la hoja p.en.lengua.json
${=MESA} localiza p.mesa en                       # p.en.mesa + voz en inglés con los tiempos del original
${=MESA} subtitulos v.mp4 --incrusta              # .srt, .vtt y la pista dentro
${=MESA} audiodescribe p.mesa v.mp4               # .ad.vtt, .ad.txt, .ad.mp4 (segunda pista)
${=MESA} accesible v.mp4                          # contraste, destellos, lectura, letra, interfaz
${=MESA} revisa v.mp4                             # notas sobre el fotograma, en el navegador
${=MESA} notas p.mesa --aplica | --hecha n3 | --correo x@y --simula | --importa resp.txt
${=MESA} trailer p.mesa                           # p.trailer.mesa con las tomas del original
${=MESA} deriva v.mp4 --hilo --web --vertical     # el mismo contenido en otras formas
${=MESA} canal canal.toml --rueda                 # el vídeo del día de un canal
```

- **Las notas de revisión son tareas en el pliego**: `// NOTA n3 [pendiente]
  0:31,5 · Pepe: …` bajo la cabecera de su beat. Se aplican, se re-rueda y
  `mesa notas p.mesa --hecha n3`. Por correo, siempre BORRADOR (gog).
- **La audiodescripción sale del pliego**; para que un dibujo se diga bien,
  el bestiario declara `DESCRIBE = {"torre": "… junto a {junto}"}` y, si
  hace falta, `DESCRIBE_VALORES = {"mano": "una mano abierta"}`.
- **Trampas**: `mesa serie` no se lanza dentro de `pesado` (ya pide turno
  por cada vídeo; anidado se queda esperando); un pliego traducido se
  rueda con su propio sidecar (`p.en.tiempos.json`), nunca con el del
  original; el 3D matemático y los mapas aún no (rama `tresde`).
- Ejemplos que se miran: `ejemplos/generos/{tiktok,didactico,noticia}`.

## LAS TOMAS Y LOS PLANOS · una toma de voz, varios planos (SPEC §3.18)

Nació en la v6 de «Radiointermisión» («los planos del estadio son estáticos
cuando deberían ser frenéticos»): una toma de diez segundos era un clip y,
por tanto, UN plano. Ahora la toma y el plano son dos cosas.

**La toma partida en planos**: el mismo id de beat en clips SEGUIDOS es la
misma toma cortada en planos. Cada clip dice su tramo de la frase, tal cual;
entre todos, la toma entera.

```
* r06_01 medio nadir perfil de delantero · euforico
> seco
python: cesped_en_fuga · a sangre
python: delantero vista=perfil · gigante · cortado por la frente
BLANQUIAZUL: —arranca a correr su delanterogoleador
al decir «arranca»: DELANTERO esprinta

* r06_01 detalle de balon · euforico
> seco
python: balon actual · gigante
BLANQUIAZUL: —con el esférico entre los pies
al decir «esférico»: > la cámara va pegada a «balon»
```

- La voz suena una vez, entera, desde el primer plano; cada plano empieza
  cuando la voz dice su primera palabra, sin pausa entre planos. El
  compilador los llama `r06_01`, `r06_01_p2`… y `al decir` busca en el
  tramo de su plano.
- Un plano que declara su talla (o es `cartel`) es un CUADRO NUEVO: en el
  corte se va todo, también personajes y capas. Pon de nuevo lo que quieras
  ver.
- El plano no se pasa de su toma: lo que no cabe se aprieta. Escribe
  `> seco` en cada plano corto: las piezas están al cortar, sin vuelo de
  entrada (si no, medio plano es papel vacío).
- `mesa lee` avisa («toma partida») si los planos no suman las palabras de
  la toma.

**Dos tomas en una frase**: `* r15_01+r15_02 …` junta dos tomas seguidas
del sidecar en un beat (la frase partida: `VECINO / LOCUTOR: —Podría haber
sido un / partido decepcionante…`). Se combina con lo anterior.

Trampas que costaron una tirada:
- en un plano `general` las figuras salen pequeñas aunque digas `gigante`:
  para el cuerpo grande, `medio` o `americano` (el cenital sí, `general`);
- un objeto pequeño (el balón) sin tamaño: `· grande` lo hace del tamaño
  de un jugador;
- `CÁMARA teleobjetivo` dentro de un clip se escribe en pantalla: dentro,
  `> teleobjetivo`; `PANTALLA PARTIDA` dentro de un clip, `> se parte la
  pantalla`;
- `PARTITURA · no` en la escena no apaga la tira del vecino: en el clip,
  `sin partitura`;
- `HORIZONTE se inclina` en la cabecera de un capítulo inclina también el
  patio que viene detrás: ponlo en la escena del estadio, o usa
  `> el horizonte se inclina` en el golpe.

## LA PELÍCULA · la emulsión física de Tórculo (SPEC apéndice G)

Una línea de preámbulo, para todo el pliego (rueda con `--motor gx`, y en el metraje):

```
PELÍCULA Vision3 500T · copia 2383 · 35 mm · gelatina Saorín
PELÍCULA Portra 400 · escaneada · medio formato
PELÍCULA Tri-X · 16 mm · forzada un paso
PELÍCULA Vision3 500T · luz de día · bleach bypass al 50 %
PELÍCULA look «cinestill»
```

- El primer trozo es el stock (`Vision3 500T`, `Portra 400`, `Velvia`, `Tri-X`, `HP5`,
  `CineStill`…; `mesa lee` dice los que hay) o `look «nombre»` (`cine-de-noche`,
  `tungsteno-en-dia`, `premier`, `bleach-50`, `proceso-cruzado`, `answer-print`,
  `telecine`, `dieciseis`, `super8`, `retrato`, `paisaje`, `reportaje-bn`…).
- Tras `·`, vocabulario cerrado: copia (`copia 2383 | copia 2393 | escaneada | telecine |
  proyectada`), formato (`8 mm | super 8 | 16 mm | super 16 | 35 mm | 65 mm | paso
  universal | medio formato | gran formato`), `gelatina Saorín [delante]`, luz (`luz de
  día | luz de tungsteno | luz de 4300 K`), laboratorio (`forzada un paso | dos pasos`,
  `subrevelada un paso`, `bleach bypass [al 30 %]`, `proceso cruzado`, `con flash`),
  grano y luz (`grano fino | grano grueso | sin grano | sin halación | halación fuerte`).
- Sustituye a la bobina en el baño del motor: `config.post = [Papel(), Pelicula(…)]`.
- En el **metraje**, `REVELADO … · desde s-log3` (o `logc3`, `logc4`, `canon log 3`,
  `v-log`, `f-log`, `apple log`, `i-log`…) vale para cualquier log con fórmula publicada;
  con `PELÍCULA`, el negativo va en un intermedio ACEScct y la emulsión revela en la GPU
  (`materia revela`); con `REVELADO de la casa`, la gelatina Saorín va sobre la película.

**Lasseter sobre lo rodado en gx**: `mesa lasseter` rueda en seco por el
motor antiguo y no sirve para un pliego que pide gx. Para medir lo que de
verdad se rueda: `MESA_CRONOLOGIA=/tmp/x.cronologia.json mesa toca p.mesa
--motor gx …` y después `mesa lasseter p.mesa --cronologia
/tmp/x.cronologia.json` (el registro apunta cada beat y cada gesto).
