A skill decidia a edição sem saber que o JSON dela agora passa por uma tela de revisão antes de virar FCPXML. Isso não é detalhe de fluxo: a etapa 5 traduz cada ação para o vocabulário dela, e sem conhecer essa tradução a intenção da IA se perde no caminho — que é exatamente como uma decisão vira "arbitrária" aos olhos de quem revisa. Novo criterios/10-revisao-humana.md, com o que o app faz com cada ação: - cut cobrindo >=60% da frase remove a linha; tocando só uma borda vira trim encaixado na fronteira de palavra. Corte de meia frase é ambíguo — passa do limiar e apaga a linha toda quando a intenção era aparar a hesitação. - zoom ou text sobre uma frase marca ênfase, e ênfase significa DUAS coisas: zoom mais legenda dinâmica; as demais frases ficam com legenda comum. A escala vira o nível (1.15→leve, 1.3→média, 1.5→forte). - sem ação, o nível é derivado do peak_emphasis; a decisão da IA sempre ganha. - reason é exibido ao lado da frase na tela — é o que o editor lê antes de manter ou desfazer. Deixou de ser campo de log. Consequência prática que faltava em 05-zoom.md: não espalhar zoom "por segurança", porque cada um promove a frase em duas dimensões ao mesmo tempo. Na dúvida, deixar sem — promover custa uma tecla, despromover custa mais. Cada arquivo de critério ganhou cabeçalho de escopo (o que cobre, em que fase), no mesmo padrão dos docs do Engine, para ler só o necessário. Todas as afirmações numéricas do novo critério foram verificadas contra fcpxml/phrase_review.py rodando, não assumidas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
85 lines
3.8 KiB
Markdown
85 lines
3.8 KiB
Markdown
# 05 — Zoom (punch-in)
|
||
|
||
> **Escopo:** Onde dar punch-in, qual janela e qual escala — e o que a escala significa além do zoom.
|
||
> **Quando:** Fase 5 — ver a ordem de trabalho em `../SKILL.md`.
|
||
|
||
## Quando usar
|
||
|
||
No momento em que o argumento vira. Um pico acústico só merece zoom se for
|
||
também um pico **de sentido**.
|
||
|
||
Palavra gritada sem peso narrativo não ganha nada — e isso inclui os picos
|
||
que caem em artigos e conectivos, que são picos de entrega, não de conteúdo.
|
||
|
||
## A janela
|
||
|
||
**`start`** — na palavra de ênfase.
|
||
|
||
**`end`** — no **fim da frase**. A frase inteira, não o fim do segmento da
|
||
transcrição.
|
||
|
||
O Whisper corta frases no meio, por respiração e não por gramática:
|
||
|
||
> *"Aquela mama com um formato mais estruturado, que valoriza o seu colo,
|
||
> que dá aquele ar"* **|** *"de elegância, isso é desejo de muitas mulheres,
|
||
> né?"*
|
||
|
||
Soltar o zoom no fim do primeiro segmento libera **no meio do pensamento** —
|
||
é o que faz um punch-in parecer arbitrário. `suggest_zoom_windows` já
|
||
estende até a pontuação final (`.` `!` `?` `…`), e nunca atravessa uma
|
||
fronteira de tomada.
|
||
|
||
## A forma — o programa decide sozinho
|
||
|
||
Você escolhe `start` e `end`; a forma sai da posição da janela dentro do
|
||
trecho:
|
||
|
||
| Situação | Comportamento | Por quê |
|
||
|---|---|---|
|
||
| Começa a **>0,5s** do início do trecho | entrada rápida (~0,25s) | o movimento chega junto com a palavra |
|
||
| Começa a **≤0,5s** do início | **entra já ampliado, sem transição** | o corte já foi a transição; uma rampa ali lê como a imagem se acomodando |
|
||
| Frase termina no meio do trecho | **saída seca**, 1 frame | volta ao enquadramento sem chamar atenção |
|
||
| Frase termina a **≤1s** do corte | **não volta** — segura até o corte | o próximo trecho já abre no enquadramento dele; voltar antes é movimento desperdiçado |
|
||
|
||
Os limiares são diferentes de propósito: no fim o corte esconde um retorno
|
||
inacabado, mas no início a rampa é visível desde o primeiro frame.
|
||
|
||
Para forçar manualmente, existem `start_at_peak` e `hold_at_end` — mas o
|
||
automático acerta na quase totalidade dos casos.
|
||
|
||
## Escala
|
||
|
||
| Valor | Uso | Vira, na tela de revisão |
|
||
|---|---|---|
|
||
| 1,15 | sutil | ênfase **1 — Leve** |
|
||
| 1,18 – 1,3 | padrão | ênfase **2 — Média** |
|
||
| 1,5 | forte | ênfase **3 — Forte** |
|
||
|
||
Em vídeo institucional, fique na faixa baixa. Acima de 3,0 é rejeitado.
|
||
|
||
**A escala tem um segundo efeito, e ele é maior que o zoom.** A frase que
|
||
recebe um zoom é marcada como **ênfase** na etapa 5, e frase de ênfase recebe
|
||
**legenda dinâmica**; as demais ficam com legenda comum. Ou seja: escolher onde
|
||
dar zoom é também escolher onde o texto ganha tratamento tipográfico.
|
||
|
||
Consequência prática: **não espalhe zoom "por segurança"**. Cada um promove uma
|
||
frase a destaque em duas dimensões ao mesmo tempo. Na dúvida, deixe sem — o
|
||
editor promove numa tecla, e despromover custa mais que promover.
|
||
Detalhe: `10-revisao-humana.md`.
|
||
|
||
O zoom é **relativo ao enquadramento existente**: se o clipe já tem escala
|
||
1,77 (material gravado de lado e reenquadrado), um zoom 1,18 anima de 1,77
|
||
para 2,09 e preserva rotação e posição.
|
||
|
||
## Dois zooms no mesmo clipe
|
||
|
||
Depois do corte, dois picos que você escolheu podem cair no **mesmo**
|
||
trecho sobrevivente (nenhum corte os separou em clipes distintos) — é
|
||
comum quando a corrida limpa de uma tomada é longa. O sistema resolve isso
|
||
sozinho, e a regra é a mesma que rege o resto: janelas **distantes**
|
||
empilham (os dois zooms convivem, cada um voltando ao enquadramento real
|
||
entre um e outro); janelas que **se sobrepõem** substituem (é o mesmo
|
||
evento sendo reajustado, não dois). Você não precisa calcular isso na
|
||
hora de decidir — só respeitar o `min_gap` de `07-ritmo.md`, que já
|
||
garante que dois zooms escolhidos por você nunca se sobrepõem.
|