{
  "id": "clube-letra-nos-apps",
  "titulo": "A letra mora nos apps",
  "categoria": "sound",
  "resumo": "edit de música de 37 s, sem narração, em que cada frase da letra é digitada dentro de uma interface conhecida (Google Agenda, Docs, alt-tab do Windows, Spotify, notas do Instagram, jornal 3D, busca do Google, mapa de jogo e Google Maps) e cada cena segue tocando dentro de um elemento pequeno da seguinte. É a recriação de um edit de @subzmotion: a câmera foi medida quadro a quadro no original e as 11 cenas foram montadas no After Effects por scripts, com quatro agentes trabalhando em paralelo. O vídeo abre com um celular filmando a tela, mergulha no edit e termina num card do Spotify que credita a música. Feito pelo Clube do Motion.",
  "indicado": "edit de música de 30 a 40 s para Reels e Shorts, perfil de motion que quer mostrar câmera e interface no mesmo vídeo, música conhecida em que cada frase pede uma tela que todo mundo reconhece.",
  "estilo": [
    "edit de letra",
    "interfaces reais recriadas",
    "cena dentro de cena",
    "câmera em cadeia de nulls",
    "digitação no tempo da voz",
    "jornal 3D",
    "abertura com celular filmando a tela",
    "card do Spotify no fim"
  ],
  "ficha": {
    "formato": "1080×1920 a 24 qps, com o edit de 1080×1080 no meio e faixas pretas em cima e embaixo; desfoque de movimento com obturador de 90° e 16 amostras",
    "duracao": "37,1 s (891 quadros), sem narração. O edit começa a tocar na tela do celular em 0,63 s, o mergulho termina em 2,75 s e o card do Spotify ocupa os últimos 2,6 s",
    "motor": "ae",
    "voz": "sem narração",
    "musica": "ver o guia de estilo",
    "fontes": "Google Sans Flex, Figtree, Roboto, Segoe UI, Poppins SemiBold, Anton, Noto Serif Display ExtraCondensed (Black e Bold) e Playfair Display Black"
  },
  "etapas": [
    {
      "titulo": "Leia-me",
      "texto": "# A letra mora nos apps: onze interfaces numa câmera que não para\n\n> Data: 2026-10-17 · Tipo: projeto · Status: aprovado · Id: letra-nos-apps\n\n**Resumo:** edit de música de 37 s, sem narração, em que cada frase da letra é digitada dentro de uma interface conhecida (Google Agenda, Docs, alt-tab do Windows, Spotify, notas do Instagram, jornal 3D, busca do Google, mapa de jogo e Google Maps) e cada cena segue tocando dentro de um elemento pequeno da seguinte. É a recriação de um edit de @subzmotion: a câmera foi medida quadro a quadro no original e as 11 cenas foram montadas no After Effects por scripts, com quatro agentes trabalhando em paralelo. O vídeo abre com um celular filmando a tela, mergulha no edit e termina num card do Spotify que credita a música. Feito pelo Clube do Motion.\n\n## Descrição\n\nUma interface nasce da outra, sem corte. O evento da agenda encolhe até virar o ícone do Docs, a janela entra numa miniatura do alt-tab, a letra no Spotify vira o círculo de uma nota do Instagram, a nota vira a foto de um jornal, o jornal vira o ícone de um app no Google e o Google entra no marcador de um mapa, numa cadeia que só termina no pino do Google Maps. Em cada tela, a letra da música é digitada no campo que combina com ela, letra a letra e com cursor, no instante em que é cantada; a câmera recua nas trocas, avança nas palavras fortes e anda para a direita junto com o cursor. A letra entra por campos: você cola a letra inteira num arquivo de texto, e um script põe cada frase no campo certo, com o tempo de cada palavra.\n\n- **Indicado para:** edit de música de 30 a 40 s para Reels e Shorts, perfil de motion que quer mostrar câmera e interface no mesmo vídeo, música conhecida em que cada frase pede uma tela que todo mundo reconhece.\n- **Estilo:** edit de letra, interfaces reais recriadas, cena dentro de cena, câmera em cadeia de nulls, digitação no tempo da voz, jornal 3D, abertura com celular filmando a tela, card do Spotify no fim\n- **Formato:** 9:16 · 37,1 s · sem narração\n\n**Tutorial em vídeo:** em breve.\n\n## O vídeo\n\n| Item | Valor |\n|---|---|\n| Duração | 37,1 s (891 quadros), sem narração. O edit começa a tocar na tela do celular em 0,63 s, o mergulho termina em 2,75 s e o card do Spotify ocupa os últimos 2,6 s |\n| Formato | 1080×1920 a 24 qps, com o edit de 1080×1080 no meio e faixas pretas em cima e embaixo; desfoque de movimento com obturador de 90° e 16 amostras |\n| Ferramenta | After Effects, com um gerador ExtendScript por cena (11 cenas em 4 projetos) e um script de montagem. Python mede a câmera do original, distribui a letra nos campos e monta a abertura do celular |\n| Câmera | medida no original por fluxo óptico, corrigida por SIFT e gravada como chaves por quadro num null CAM em cada cena; os jornais usam um plano 3D medido por homografia. Comparada com a do original, a correlação fica entre 0,94 e 1,00 na maioria dos canais |\n| Interfaces | HTML e CSS fotografados em PNG 3× pelo Playwright, sem os textos digitados, que são camadas de texto do AE |\n| Imagens | personagens, fotos de estúdio, mesas, mapa de satélite, céus, foto P&B de olhos e capa do card gerados pelo GPT Image 2 (pelo Codex); ícones de apps oficiais, do Wikimedia e do Simple Icons |\n| Fontes | Google Sans Flex, Figtree, Roboto, Segoe UI, Poppins SemiBold, Anton, Noto Serif Display ExtraCondensed (Black e Bold) e Playfair Display Black |\n| Som | \"On My Way\" (Alan Walker, Sabrina Carpenter e Farruko), creditada no card; na cauda, a última frase volta em quatro ecos; −14,2 LUFS. A música fica fora do pacote |\n| Referência | edit \"On My Way\" de @subzmotion (07/10/2026, 1,87 milhão de plays) |\n| Arquivo final | MP4 H.264 com áudio AAC, 25,5 MB |\n\n## O que tem no pacote\n\n| Pasta | Conteúdo |\n|---|---|\n| `projeto/` | `ae/` (os 11 geradores de cena, de `A-agenda.jsx` a `K-maps.jsx`; os ajudantes `camera.jsx`, `camera-movimentos.jsx`, `digitar.jsx`, `letra.jsx`, `jornal-comum.jsx`, `wg-util.jsx` e `w-midia-comum.jsx`; `montagem.jsx`, `card-spotify.jsx`, `letra_automatica.py`, os modelos de letra e os projetos `cenas-w-*.aep` e `montagem.aep`), `assets/` (interfaces em HTML e PNG 3×, imagens, personagens e as fontes dos jornais), `camera/` (medição, câmera por cena, encaixes e os 40 movimentos ajustados), `transicao/` (os 6 scripts da abertura e o `config.json`), `guia-do-metodo/` (o passo a passo do estilo em 5 partes) e os docs `README.md`, `ROTEIRO-CENAS.md` e `BRIEF-AGENTES.md` |\n| `audio/` | `tempos_da_voz.py` (o tempo de cada palavra cantada, sem guardar a letra), `eco_cauda.py` (a cauda com eco do card) e `sfx/` (o whoosh e o golpe do mergulho) |\n| `referencias/` | `estudo-da-referencia.md` (o perfil de referência e a receita do estilo), `decupagem-do-edit.md` (o original quadro a quadro, com a câmera e a timeline do AE), `links.md` e `fora-do-pacote.md` |\n| `render.mp4` | o vídeo final (v2, com a abertura do celular) |\n\nFicam fora do pacote a música, a letra colada, o edit original, a gravação do celular e os ícones oficiais do alt-tab (saem de novo do Wikimedia e do Simple Icons). O `referencias/fora-do-pacote.md` lista cada arquivo. Os scripts procuram a música em `audio/musica.wav` (ou `musica-original.wav`) e a letra em `ae/letra.json`, que nasce do modelo `ae/letra-modelo.json`.\n\n### Como os scripts funcionam\n\n| Arquivo | O que faz |\n|---|---|\n| `ae/camera.jsx` | cria o null CAM com 4 controles (Zoom em log2, Mira X, Mira Y e Giro), põe o mundo da cena como filho dele, lê as chaves por quadro de `camera/cena-<id>.json` e, com `CAMERA_encaixe`, põe a cena vizinha no buraco certo |\n| `ae/camera-movimentos.jsx` | o rig do @subzmotion para escrever a câmera de uma música nova: um null \"MOV k\" por movimento, com 2 chaves e influência de 67% e 77%, e o CAM somando todos |\n| `ae/digitar.jsx` | expressão de Texto-fonte que digita letra a letra nos tempos de cada palavra, com um cursor que some 0,25 s depois da última letra |\n| `ae/letra_automatica.py` | transcreve a música com o faster-whisper (tempo por palavra), casa a transcrição com a letra colada em `ae/LETRA-COMPLETA.txt` e grava cada frase no seu campo de `ae/letra.json` (31 campos); imprime só contagens |\n| `ae/letra.jsx` | entrega ao gerador o texto e os tempos de um campo, ou o texto reserva em inglês quando o campo está vazio |\n| `ae/A-agenda.jsx` a `ae/K-maps.jsx` | um gerador por cena: apaga e recria a comp \"CENA <id>\" (1080×1080, 24 qps, tempo interno igual ao do vídeo) com a interface, os textos digitados, a câmera e o encaixe provisório da vizinha; o cabeçalho de cada um diz a linha que o executa |\n| `ae/montagem.jsx` | importa os 4 projetos de cenas, troca cada \"ENCAIXE <id>\" pela cena real (máscara e animação ficam), liga o desfoque de movimento a 90° e monta a comp principal com a música |\n| `ae/card-spotify.jsx` | congela o último quadro com deriva mínima, escurece a tela e sobe o card \"tocando agora\" até 36,5 s; título e artistas ficam no bloco `CARD` |\n| `camera/integrar.py`, `ancorar.py` e `assar.py` | medem a câmera de uma referência, nesta ordem: fluxo óptico quadro a quadro, correção da deriva por SIFT e as chaves de cada cena, com os encaixes em `encaixes.json` |\n| `camera/homografia_jornal.py`, `camera3d_jornal.py` e `dados_ae_jornal.py` | medem o plano dos jornais e gravam as chaves do null 3D PLANO |\n| `transicao/sincronia.py` a `juntar.py` | a abertura: acham o atraso entre o som do celular e o do edit, rastreiam a tela, seguem a mão pelo cenário fixo, montam o mergulho e juntam imagem e som |\n| `audio/tempos_da_voz.py` | grava o instante de cada palavra cantada e quantas letras ela tem, sem guardar a letra; é a régua do roteiro |\n\n## Como abrir e renderizar\n\n1. **Junte as pastas:** copie `audio/` para dentro de `projeto/`. Os `.jsx` acham a pasta do projeto sozinhos (é a pasta acima de `ae/`).\n2. **Fontes:** Google Sans Flex, Figtree, Roboto, Poppins, Anton e Playfair Display (Google Fonts) e as instâncias ExtraCondensed da Noto Serif Display, que vêm em `projeto/assets/F-jornal1/fontes/`, todas em `C:\\Program Files\\Common Files\\Adobe\\Fonts`. Segoe UI já vem no Windows. Reinicie o After Effects.\n3. **Abrir pronto:** `projeto/ae/montagem.aep`, comp \"MAIN recriacao On My Way\". Os `.aep` vêm com os textos reserva em inglês nos campos de letra, prontos para receber a sua. Se o AE pedir arquivos, aponte para `projeto/assets/` e para a sua música em `audio/musica-original.wav`.\n4. **Letra:** copie `ae/letra-modelo.json` para `ae/letra.json`; com os campos vazios, as cenas mostram os textos reserva em inglês. Para usar a letra da sua música, cole-a inteira em `ae/LETRA-COMPLETA.txt` (o modelo explica), ponha a música em `audio/musica.wav`, ajuste `JANELAS` no `letra_automatica.py` e rode `python -P ae/letra_automatica.py` (faster-whisper com GPU).\n5. **Cenas:** num projeto novo do AE, rode cada gerador pela linha do cabeçalho dele, com a comp fechada, e salve os grupos como `cenas-w-*.aep`. Depois, num projeto vazio, carregue o `montagem.jsx` e chame `MONT.importar()`, `MONT.trocarEncaixes()`, `MONT.blur()` e `MONT.principal()`; por fim, o `card-spotify.jsx` com `CARD_criar()`.\n6. **Som:** `python audio/eco_cauda.py` (rodado dentro de `audio/`) gera `mix-com-card.wav` a partir de `musica-original.wav`, com a cauda de 36,5 s.\n7. **Render:** `aerender` em trechos de 4 s numa pasta sem acento (o `aerender` não aceita \"ç\" no caminho), com o `mix-com-card.wav`; depois, a folha de contato a 2 qps com `camera/folha_contato.py`.\n8. **Abertura (opcional):** grave a tela tocando o render com o celular (dicas na parte 05 do guia), ponha a gravação em `transicao/bruto/`, extraia o som dela para `transicao/celular-48k.wav` e o mix do edit para `transicao/master-audio.wav`, acerte o `config.json` e rode, dentro de `transicao/`, `sincronia.py`, `rastreio.py`, `atraso_imagem.py`, `fundo.py`, `montar.py` e `juntar.py`.\n\n**Pegadinhas:** o `ffmpeg -ss` pega o quadro seguinte ao pedido, então extraia quadros de referência pelo índice; o Reel original vem sem metadado de cor, e a comparação só fecha com uma cópia em bt709. Com o desfoque ligado, o AE lê o texto 0,005 s antes do quadro, então a digitação termina um pouco antes de cada troca, para o cursor não vazar. Um revisor automático de movimento tende a reprovar câmera com chave em todo quadro; nesse estilo, é alarme falso. Na escala horizontal de texto, 1 vale 100%.\n\n## Decisões de direção que fizeram o vídeo funcionar\n\n1. **A palavra vira lugar.** Cada frase é digitada no campo que faz sentido para ela (título de evento, busca, manchete, nota, etiqueta de mapa), sempre numa interface que se reconhece em meio segundo.\n2. **Cena dentro de cena.** A cena anterior continua tocando dentro de um elemento da seguinte, e a máscara arredonda enquanto a câmera recua. As 11 cenas formam uma cadeia só, sem nenhum corte.\n3. **A câmera nunca para.** Cada movimento começa antes de o anterior acabar (duração mediana de 33 quadros, influência de 67% e 77%), e só o último meio segundo fica parado. Na digitação, a câmera anda para a direita com o cursor.\n4. **Tempo interno igual ao do vídeo.** Toda cena dura o vídeo inteiro e começa no zero, então a mesma comp serve na sequência e dentro do encaixe da vizinha, sempre no mesmo instante.\n5. **Medir antes de animar.** A câmera do original foi medida quadro a quadro e corrigida onde o rastreador errava (elemento que se mexe sozinho, interface inclinada em 3D, jornal em perspectiva), e cada cena foi conferida contra o original em vários instantes, inclusive no meio dos movimentos.\n6. **Interface no idioma da música.** A interface ficou em inglês, como no original, e a letra entrou por campos que um script preenche a partir da letra colada inteira, com o tempo de cada palavra.\n7. **Personagens nossos.** As pessoas são personagens gerados por IA, criados uma vez e reaproveitados em todas as cenas em que aparecem.\n8. **Obturador de 90°.** O rastro mede cerca de ¼ do deslocamento do quadro, como no original; com 180° a tela borrava demais.\n9. **Abertura que mostra a tela de verdade.** O vídeo abre num celular filmando o monitor com o edit parado no primeiro quadro; a troca para o render acontece antes do play, e a câmera mergulha na tela em 1,1 s até o quadrado encher a largura do Reel.\n10. **Crédito no fim.** O card \"tocando agora\", com capa nossa, credita a música enquanto a última frase volta em ecos cada vez mais baixos.\n11. **Quatro agentes, quatro cópias do AE.** As cenas foram divididas em grupos que se tocam pouco (A+B, C+D+E, F+J e G+H+I+K), cada agente na sua cópia do After Effects e no seu `.aep`; a montagem juntou tudo trocando os encaixes provisórios.\n\nDetalhes de câmera, tempos e números: [estilo.md](estilo.md). Cenas por tempo e encaixes: [roteiro.md](roteiro.md). Para fazer o seu com outra música: [PROMPT.md](PROMPT.md).\n\n## Versões\n\n| Versão | O que mudou |\n|---|---|\n| v1 | recriação das 11 cenas no After Effects em 1080×1080, 36,5 s com o card do Spotify, conferida lado a lado com o original e com a câmera comparada em números; aprovada (\"a recriação ficou perfeita\") |\n| **v2** | a mesma recriação com a abertura do celular filmando a tela e o mergulho no edit, em 1080×1920 e 37,1 s; é o vídeo deste pacote |\n"
    },
    {
      "titulo": "Roteiro",
      "texto": "# Roteiro: a letra mora nos apps\n\n> Data: 2026-10-17 · Tipo: roteiro · Status: aprovado · Projeto: letra-nos-apps\n\n**Resumo:** o vídeo não tem narração; o roteiro é a cadeia das 11 cenas-mundo, com o tempo de cada uma, os campos onde a letra é digitada e o elemento por onde cada cena entra na seguinte. A letra da música, digitada nos campos, não está neste roteiro: ela entra por `ae/letra.json`. Os tempos das cenas são os do edit; no vídeo final, com a abertura do celular, some 0,63 s.\n\n## De onde veio a estrutura\n\nO edit de referência passa por nove tipos de interface em 33,9 s, e cada frase cai na tela que a ilustra: tempo vira agenda, procurar vira busca, ouvir vira Spotify, falar de alguém vira nota do Instagram, afirmação forte vira manchete e lugar vira mapa. Este projeto mantém as cenas, os tempos, os encaixes e a câmera do original, troca pessoas e fotos por imagens nossas e acrescenta duas peças, a abertura do celular e o card que credita a música.\n\n## Abertura (vídeo final)\n\n| Tempo (s) | O que acontece |\n|---|---|\n| 0,00–0,63 | um celular filma o monitor num quarto escuro, com o edit parado no primeiro quadro; ouve-se o som do quarto |\n| 0,63–1,33 | o edit começa a tocar na tela, ainda visto pelo celular |\n| 1,33–2,43 | a câmera mergulha na tela em 1,1 s, com um whoosh, e tudo em volta escurece |\n| 2,43–2,75 | pouso com um golpe suave: o quadrado enche a largura do Reel e o render limpo continua |\n\n## Cenas (tempos do edit)\n\n| Cena | Tempo (s) | Interface | Campos da letra | Como entra na cena seguinte |\n|---|---|---|---|---|\n| A | 0,00–2,62 | Google Agenda escuro: chip do evento, visão do dia e cartão de detalhes | A1 (título do evento), A2 (2º evento), A3 (título do cartão, em caixa alta) | a janela encolhe até ser o fundo do ícone do app ao lado do menu da B, com uma esfera azul por cima |\n| B | 2,62–4,95 | Docs no Chrome escuro, busca em pílula, fundo de estrelas e globo | B1 (busca), B2 (2 palavras curvas em volta do globo, em caixa alta) | a janela vira a miniatura 1 do alt-tab, com borda ciano |\n| C | 4,95–6,04 | área de trabalho do Windows e barra do alt-tab | — | a seleção pula para a miniatura 2, que abre até a tela cheia com leve inclinação 3D |\n| D | 6,04–8,05 | Spotify com a letra em tela cheia, karaokê palavra a palavra | D1 a D9 (as 9 linhas; acendem a 5 e a 6) | a janela vira o círculo \"Your note\" das notas (de retângulo a círculo entre 8,04 e 8,42 s) |\n| E | 8,05–10,80 | notas do Instagram com 4 avatares e uma linha de conversa | E2 e E3 (balões digitados, em caixa alta) | o avatar com a nota vira a foto da página 1 do jornal |\n| F | 10,80–16,62 | jornal moderno 3D sobre mesa de madeira, 2 páginas | F1 a F4 (4 manchetes) | a página dupla vira o ícone do app em \"See results about\" |\n| G | 16,62–18,95 | busca do Google escura, com painel e grade de imagens | G1 (busca), G2 (título do painel) | a página vira um quadrado arredondado de borda amarela que encolhe até o marcador do mapa |\n| H | 18,95–22,30 | mapa de satélite estilo jogo com 2 marcadores | H1 (etiqueta-seta amarela), H2 (etiqueta branca) | uma miniatura nasce na etiqueta branca e vira a 1ª imagem da grade |\n| I | 22,30–24,62 | busca de imagens e resultado de vídeo | I1 (título da busca), I2 (título do vídeo; as 4 últimas palavras grifam em azul) | a página vira a figura pequena do jornal antigo |\n| J | 24,62–28,00 | jornal antigo 3D com foto P&B de olhos e o papel queimando | J1 (manchete em 2 linhas) | a foto da mesa vira um quadrado arredondado e depois o círculo do pino 1 |\n| K | 28,00–33,875 | Google Maps claro com 2 pinos-avatar, caixa de busca e avatar andando | K1 (rótulo do pino 1), K2 (busca), K3 (rótulo do pino 2), K4 (texto azul ao lado do avatar 2) | — |\n| card | 33,95–36,50 | card \"tocando agora\" do Spotify sobre o último quadro congelado | — | — |\n\nSão 31 campos ao todo. Cada um guarda, em `ae/letra.json`, a cena, o lugar na tela, quantas palavras mostra, os instantes em que elas são cantadas e um texto reserva em inglês, usado enquanto o campo está vazio.\n\n## Textos que não são letra\n\nRótulos de interface ficam no idioma da música e seguem o original: menus, abas, botões, cabeçalhos de jornal (\"THE DAILY DROP\", \"THE DAILY HERALD\"), datas e horários. Nomes de pessoas, perfis e lugares são fictícios: \"Studio Quadro\", \"studio.quadro\", lu.motion, the.producer, mari.frames, your.profile e os nomes do mapa de jogo.\n\n## Momentos para o som\n\n- O edit não tem efeito sonoro: só a música, como no original, com a digitação e o karaokê presos ao tempo da voz.\n- Na abertura, o som do quarto vai até o play; depois entra o mix limpo, com um whoosh crescendo no mergulho e um golpe suave no pouso.\n- No card, a música do Reel acaba em 33,92 s e a última frase volta em 4 ecos, cada vez mais baixos e abafados, até 36,5 s.\n"
    },
    {
      "titulo": "Estilo",
      "texto": "# Estilo do vídeo: a letra mora nos apps\n\n> Data: 2026-10-17 · Tipo: guia · Status: vigente · Projeto: letra-nos-apps\n\n**Resumo:** o estilo nasce de três escolhas: interfaces reais recriadas no idioma da música, uma câmera que embrulha um movimento no outro e nunca para, e trocas em que a cena encolhe até caber num elemento da seguinte. Os números abaixo vêm da medição do edit original, dos geradores das cenas e das fichas de revisão de cada cena.\n\n## Palco\n\n| Peça | Como é |\n|---|---|\n| Edit | 1080×1080, 24 qps, 33,9 s (814 quadros), mais a cauda do card até 36,5 s |\n| Reel | 1080×1920, com o edit no meio (y de 420 a 1500) e preto em volta |\n| Cenas | uma comp \"CENA <id>\" por cena-mundo, com a duração do vídeo inteiro e tempo interno igual ao do vídeo |\n| Mundo | a tela do original no instante de referência da cena; com a câmera em identidade, a comp mostra esse quadro |\n| Desfoque | obturador de 90°, fase −45°, 16 amostras, ligado em todas as comps e em toda camada que se mexe |\n| Zoom alto | acima de 3×, só vetor (forma e texto); PNG de interface em 3× do tamanho do mundo, a 33,3% de escala |\n\n## Câmera\n\n| Peça | Valor |\n|---|---|\n| Rig do original | 47 nulls, um por movimento, com 2 chaves Easy Ease em cada propriedade; cada null é filho do mais novo, e os objetos ficam presos ao mais antigo do bloco |\n| Ajuste | 40 movimentos reproduzem a câmera do original com 3% a 11% de erro (`camera/movimentos.json`) |\n| Duração | mediana de 1,37 s (33 quadros); quartis de 0,98 a 1,82 s |\n| Influência | cerca de 67% na chave de saída e 77% na de entrada, com velocidade zero nas pontas |\n| Curva | de 4 a 9 quadros acelerando, o pico e de 7 a 20 quadros freando |\n| Trocas | recuo de 20% a 50% de escala por quadro no pico |\n| Chicotes | até 420 px por quadro na horizontal e 360 na vertical |\n| Digitação | de 30 a 150 px por quadro para a direita, junto com o cursor |\n| Giro | quase zero nas cenas planas; de 1° a 4° por quadro nas cenas 3D e nos chicotes |\n| Parada | só no último meio segundo; a quase parada do alt-tab (5,5 a 5,8 s) ainda deriva 0,003 no zoom |\n\n### Câmera do original × recriação\n\nCorrelação quadro a quadro entre a câmera medida no original e a medida no render da recriação, por cena.\n\n| Cena | Zoom | Desloc. X | Desloc. Y |\n|---|---|---|---|\n| A · agenda | 0,96 | 0,41 | 0,94 |\n| B · Docs | 1,00 | 1,00 | 1,00 |\n| C · alt-tab | 1,00 | 0,87 | 0,84 |\n| D · Spotify | 0,99 | 1,00 | 1,00 |\n| E · notas | 0,99 | 0,95 | 0,97 |\n| F · jornal | 0,95 | 0,99 | 1,00 |\n| G · Google | 0,64 | 0,94 | 0,99 |\n| H · mapa de jogo | 0,63 | 0,97 | 0,96 |\n| I · imagens | 0,95 | 1,00 | 0,97 |\n| J · jornal antigo | 0,98 | 1,00 | 0,98 |\n| K · Google Maps | 0,39 | 0,99 | 0,98 |\n\nOs valores baixos de zoom em G, H e K vêm de picos de um quadro, nos trechos mais borrados, em que o rastreador falha; vistas quadro a quadro, as curvas coincidem.\n\n## Digitação\n\n| Peça | Valor |\n|---|---|\n| Ritmo | de 1 a 3 quadros por letra, começando até 0,35 s antes da palavra cantada |\n| Cursor | barra vertical que pisca 8 quadros acesa e 8 apagada e some 0,25 s depois da última letra |\n| Cenas A e B | a quantidade de letras em cada quadro foi copiada do original e guardada só como números (`A_QUADROS`, `B1Q`) |\n| Balões das notas | letra a letra com fade, em caixa de parágrafo que quebra em 2 linhas |\n| Karaokê | no Spotify, a palavra cantada acende nas linhas 5 e 6, nos tempos medidos no original |\n\n## Interfaces, fontes e cores\n\n| Cena | Como é |\n|---|---|\n| A · agenda | Google Agenda escuro em Google Sans Flex (chip em Medium 20, cartão em 45); começa a 61,6× dentro do anel do checkbox; o evento ganha check e risco em um quadro (de 1,21 para 1,25 s) e o cartão voa de baixo com a escala medida quadro a quadro |\n| B · Docs | menu em indonésio como no original, busca em pílula (corpo 25) e globo com 2 palavras curvas em Poppins SemiBold 98, raio 151, arco de 136,5° a 342,5°; só o anel de texto gira e para em cerca de 20° perto de 5,33 s |\n| C · alt-tab | área de trabalho do Windows com o retrato de um personagem, 12 ícones e uma borda ciano de 293,5 × 216,5 que pula da miniatura 1 para a 2 entre 5,29 e 5,71 s; a janela do Spotify abre de 5,79 a 6,04 s, inclinada de 9° a 0° |\n| D · Spotify | painel azul `#00335A` e 9 linhas em Figtree ExtraBold 60; a janela gira em Y até 17,5° em 6,9 s |\n| E · notas | notas do Instagram no modo escuro, balões em Segoe UI Bold 42 e perfis fictícios (lu.motion, the.producer, mari.frames e your.profile) |\n| F · jornal | \"THE DAILY DROP\" em 2 páginas sobre mesa escura, manchetes em Noto Serif Display ExtraCondensed Black e vermelho `#B3333B`; 4 fotos de estúdio com empurrão lento; a foto troca por uma cortina de baixo para cima entre 11,02 e 11,42 s |\n| G · Google | busca escura com painel e grade de 4 imagens; a página inclina até cerca de 28° em Y e 14° em X, num Corner Pin sobre o mundo da cena |\n| H · mapa de jogo | mapa de satélite gerado, etiquetas-seta em Anton e nomes em Roboto; inclina até cerca de 30° |\n| I · imagens | busca de imagens com 4 céus laranja e um resultado de vídeo com as últimas palavras grifadas em azul |\n| J · jornal antigo | \"THE DAILY HERALD\" sobre mesa clara, foto P&B de olhos e manchete em 2 linhas (ExtraCondensed Bold, escala horizontal de 57%); o papel queima em duas pré-comps, uma em multiplicar (tostado, carvão e chamas) e outra normal (brasa e furo) |\n| K · Google Maps | mapa claro vetorial, 2 pinos-avatar, caixa de busca e avatar andando pela estrada; textos em `#3C4043` e verde `#2E9E6E` |\n\n## Jornais em 3D\n\n- Não há camada de câmera nem CAM 2D: um null 3D \"PLANO (jornal 3D)\" recebe posição e rotação X, Y e Z em todo quadro, medidas por homografia, e a comp usa a câmera padrão (zoom 1500). O erro médio fica abaixo de 1 px na F e em cerca de 1,8 px na J.\n- A mesa é uma camada 2D com posição, escala e giro por quadro; embaixo dela, o fundo `#2D2D33` aparece quando a mesa encolhe.\n- A troca cai no primeiro quadro inteiro: 10,80 s vira o quadro 260 (10,833 s), e 24,62 s vira o 591 (24,625 s).\n\n## Abertura do celular\n\n| Peça | Valor |\n|---|---|\n| Gravação | celular em pé, 4K a 30 qps, com o edit parado no primeiro quadro por cerca de 1 s antes do play |\n| Sincronia | 1,329 s entre o som do celular e o do edit (correlação de 0,82) |\n| Rastreio | o próprio render como molde e ECC em homografia enquanto a tela está parada (correlação de 0,987); depois do play, a mão é seguida pelo cenário fixo em volta do monitor |\n| Troca invisível | 0,45 s antes do play, com o quadro 0 ainda parado na tela |\n| Mergulho | 1,1 s, curva bezier(0.5, 0, 0.2, 1), zoom em escala log, 12 amostras de borrão a 180° e um brilho de tela que cresce no meio |\n| Pouso | o quadrado enche a largura do Reel, o resto escurece até o preto e o render limpo continua do quadro seguinte, sem quadro repetido |\n| Som | o quarto até o play, o mix limpo depois, um whoosh que cresce no mergulho e um golpe suave no pouso |\n\n## Card do Spotify e som\n\n| Peça | Valor |\n|---|---|\n| Card | o último quadro fica congelado com deriva mínima, a tela escurece 38% e o card \"tocando agora\" sobe com mola a partir de 33,95 s, com a barra indo de 34% a 41% |\n| Cauda | a última frase volta em 4 ecos, a cada 375 ms, com ganho de 0,45, 0,30, 0,19 e 0,11 e filtro de 5.000 a 1.800 Hz; tudo some até 36,5 s |\n| Mix | −14,2 LUFS; no edit não há efeito sonoro além da música, como no original |\n\n## O que é \"humano\" neste vídeo\n\n- A câmera embrulha um movimento no outro e não para no meio de uma frase.\n- O cursor pisca como num app de verdade, e a digitação anda junto com a voz, às vezes um pouco antes dela.\n- Os jornais balançam em perspectiva real sobre a mesa, com sombra das folhas e uma leve dobra no meio.\n"
    },
    {
      "titulo": "O roteiro",
      "texto": "**Resumo:** o vídeo não tem narração; o roteiro é a cadeia das 11 cenas-mundo, com o tempo de cada uma, os campos onde a letra é digitada e o elemento por onde cada cena entra na seguinte. A letra da música, digitada nos campos, não está neste roteiro: ela entra por `ae/letra.json`. Os tempos das cenas são os do edit; no vídeo final, com a abertura do celular, some 0,63 s.\n\n## De onde veio a estrutura\n\nO edit de referência passa por nove tipos de interface em 33,9 s, e cada frase cai na tela que a ilustra: tempo vira agenda, procurar vira busca, ouvir vira Spotify, falar de alguém vira nota do Instagram, afirmação forte vira manchete e lugar vira mapa. Este projeto mantém as cenas, os tempos, os encaixes e a câmera do original, troca pessoas e fotos por imagens nossas e acrescenta duas peças, a abertura do celular e o card que credita a música.\n\n## Abertura (vídeo final)\n\n | \n\n | Tempo (s)\n | O que acontece\n\n | 0,00–0,63\n | um celular filma o monitor num quarto escuro, com o edit parado no primeiro quadro; ouve-se o som do quarto\n\n | 0,63–1,33\n | o edit começa a tocar na tela, ainda visto pelo celular\n\n | 1,33–2,43\n | a câmera mergulha na tela em 1,1 s, com um whoosh, e tudo em volta escurece\n\n | 2,43–2,75\n | pouso com um golpe suave: o quadrado enche a largura do Reel e o render limpo continua\n\n## Cenas (tempos do edit)\n\n | \n\n | Cena\n | Tempo (s)\n | Interface\n | Campos da letra\n | Como entra na cena seguinte\n\n | A\n | 0,00–2,62\n | Google Agenda escuro: chip do evento, visão do dia e cartão de detalhes\n | A1 (título do evento), A2 (2º evento), A3 (título do cartão, em caixa alta)\n | a janela encolhe até ser o fundo do ícone do app ao lado do menu da B, com uma esfera azul por cima\n\n | B\n | 2,62–4,95\n | Docs no Chrome escuro, busca em pílula, fundo de estrelas e globo\n | B1 (busca), B2 (2 palavras curvas em volta do globo, em caixa alta)\n | a janela vira a miniatura 1 do alt-tab, com borda ciano\n\n | C\n | 4,95–6,04\n | área de trabalho do Windows e barra do alt-tab\n | —\n | a seleção pula para a miniatura 2, que abre até a tela cheia com leve inclinação 3D\n\n | D\n | 6,04–8,05\n | Spotify com a letra em tela cheia, karaokê palavra a palavra\n | D1 a D9 (as 9 linhas; acendem a 5 e a 6)\n | a janela vira o círculo \"Your note\" das notas (de retângulo a círculo entre 8,04 e 8,42 s)\n\n | E\n | 8,05–10,80\n | notas do Instagram com 4 avatares e uma linha de conversa\n | E2 e E3 (balões digitados, em caixa alta)\n | o avatar com a nota vira a foto da página 1 do jornal\n\n | F\n | 10,80–16,62\n | jornal moderno 3D sobre mesa de madeira, 2 páginas\n | F1 a F4 (4 manchetes)\n | a página dupla vira o ícone do app em \"See results about\"\n\n | G\n | 16,62–18,95\n | busca do Google escura, com painel e grade de imagens\n | G1 (busca), G2 (título do painel)\n | a página vira um quadrado arredondado de borda amarela que encolhe até o marcador do mapa\n\n | H\n | 18,95–22,30\n | mapa de satélite estilo jogo com 2 marcadores\n | H1 (etiqueta-seta amarela), H2 (etiqueta branca)\n | uma miniatura nasce na etiqueta branca e vira a 1ª imagem da grade\n\n | I\n | 22,30–24,62\n | busca de imagens e resultado de vídeo\n | I1 (título da busca), I2 (título do vídeo; as 4 últimas palavras grifam em azul)\n | a página vira a figura pequena do jornal antigo\n\n | J\n | 24,62–28,00\n | jornal antigo 3D com foto P&B de olhos e o papel queimando\n | J1 (manchete em 2 linhas)\n | a foto da mesa vira um quadrado arredondado e depois o círculo do pino 1\n\n | K\n | 28,00–33,875\n | Google Maps claro com 2 pinos-avatar, caixa de busca e avatar andando\n | K1 (rótulo do pino 1), K2 (busca), K3 (rótulo do pino 2), K4 (texto azul ao lado do avatar 2)\n | —\n\n | card\n | 33,95–36,50\n | card \"tocando agora\" do Spotify sobre o último quadro congelado\n | —\n | —\n\nSão 31 campos ao todo. Cada um guarda, em `ae/letra.json`, a cena, o lugar na tela, quantas palavras mostra, os instantes em que elas são cantadas e um texto reserva em inglês, usado enquanto o campo está vazio.\n\n## Textos que não são letra\n\nRótulos de interface ficam no idioma da música e seguem o original: menus, abas, botões, cabeçalhos de jornal (\"THE DAILY DROP\", \"THE DAILY HERALD\"), datas e horários. Nomes de pessoas, perfis e lugares são fictícios: \"Studio Quadro\", \"studio.quadro\", lu.motion, the.producer, mari.frames, your.profile e os nomes do mapa de jogo.\n\n## Momentos para o som\n\n- O edit não tem efeito sonoro: só a música, como no original, com a digitação e o karaokê presos ao tempo da voz.\n\n- Na abertura, o som do quarto vai até o play; depois entra o mix limpo, com um whoosh crescendo no mergulho e um golpe suave no pouso.\n\n- No card, a música do Reel acaba em 33,92 s e a última frase volta em 4 ecos, cada vez mais baixos e abafados, até 36,5 s."
    },
    {
      "titulo": "A identidade visual",
      "texto": "**Resumo:** o estilo nasce de três escolhas: interfaces reais recriadas no idioma da música, uma câmera que embrulha um movimento no outro e nunca para, e trocas em que a cena encolhe até caber num elemento da seguinte. Os números abaixo vêm da medição do edit original, dos geradores das cenas e das fichas de revisão de cada cena.\n\n## Palco\n\n | \n\n | Peça\n | Como é\n\n | Edit\n | 1080×1080, 24 qps, 33,9 s (814 quadros), mais a cauda do card até 36,5 s\n\n | Reel\n | 1080×1920, com o edit no meio (y de 420 a 1500) e preto em volta\n\n | Cenas\n | uma comp \"CENA \" por cena-mundo, com a duração do vídeo inteiro e tempo interno igual ao do vídeo\n\n | Mundo\n | a tela do original no instante de referência da cena; com a câmera em identidade, a comp mostra esse quadro\n\n | Desfoque\n | obturador de 90°, fase −45°, 16 amostras, ligado em todas as comps e em toda camada que se mexe\n\n | Zoom alto\n | acima de 3×, só vetor (forma e texto); PNG de interface em 3× do tamanho do mundo, a 33,3% de escala\n\n## Câmera\n\n | \n\n | Peça\n | Valor\n\n | Rig do original\n | 47 nulls, um por movimento, com 2 chaves Easy Ease em cada propriedade; cada null é filho do mais novo, e os objetos ficam presos ao mais antigo do bloco\n\n | Ajuste\n | 40 movimentos reproduzem a câmera do original com 3% a 11% de erro (`camera/movimentos.json`)\n\n | Duração\n | mediana de 1,37 s (33 quadros); quartis de 0,98 a 1,82 s\n\n | Influência\n | cerca de 67% na chave de saída e 77% na de entrada, com velocidade zero nas pontas\n\n | Curva\n | de 4 a 9 quadros acelerando, o pico e de 7 a 20 quadros freando\n\n | Trocas\n | recuo de 20% a 50% de escala por quadro no pico\n\n | Chicotes\n | até 420 px por quadro na horizontal e 360 na vertical\n\n | Digitação\n | de 30 a 150 px por quadro para a direita, junto com o cursor\n\n | Giro\n | quase zero nas cenas planas; de 1° a 4° por quadro nas cenas 3D e nos chicotes\n\n | Parada\n | só no último meio segundo; a quase parada do alt-tab (5,5 a 5,8 s) ainda deriva 0,003 no zoom\n\n## Câmera do original × recriação\n\nCorrelação quadro a quadro entre a câmera medida no original e a medida no render da recriação, por cena.\n\n | \n\n | Cena\n | Zoom\n | Desloc. X\n | Desloc. Y\n\n | A · agenda\n | 0,96\n | 0,41\n | 0,94\n\n | B · Docs\n | 1,00\n | 1,00\n | 1,00\n\n | C · alt-tab\n | 1,00\n | 0,87\n | 0,84\n\n | D · Spotify\n | 0,99\n | 1,00\n | 1,00\n\n | E · notas\n | 0,99\n | 0,95\n | 0,97\n\n | F · jornal\n | 0,95\n | 0,99\n | 1,00\n\n | G · Google\n | 0,64\n | 0,94\n | 0,99\n\n | H · mapa de jogo\n | 0,63\n | 0,97\n | 0,96\n\n | I · imagens\n | 0,95\n | 1,00\n | 0,97\n\n | J · jornal antigo\n | 0,98\n | 1,00\n | 0,98\n\n | K · Google Maps\n | 0,39\n | 0,99\n | 0,98\n\nOs valores baixos de zoom em G, H e K vêm de picos de um quadro, nos trechos mais borrados, em que o rastreador falha; vistas quadro a quadro, as curvas coincidem.\n\n## Digitação\n\n | \n\n | Peça\n | Valor\n\n | Ritmo\n | de 1 a 3 quadros por letra, começando até 0,35 s antes da palavra cantada\n\n | Cursor\n | barra vertical que pisca 8 quadros acesa e 8 apagada e some 0,25 s depois da última letra\n\n | Cenas A e B\n | a quantidade de letras em cada quadro foi copiada do original e guardada só como números (`A_QUADROS`, `B1Q`)\n\n | Balões das notas\n | letra a letra com fade, em caixa de parágrafo que quebra em 2 linhas\n\n | Karaokê\n | no Spotify, a palavra cantada acende nas linhas 5 e 6, nos tempos medidos no original\n\n## Interfaces, fontes e cores\n\n | \n\n | Cena\n | Como é\n\n | A · agenda\n | Google Agenda escuro em Google Sans Flex (chip em Medium 20, cartão em 45); começa a 61,6× dentro do anel do checkbox; o evento ganha check e risco em um quadro (de 1,21 para 1,25 s) e o cartão voa de baixo com a escala medida quadro a quadro\n\n | B · Docs\n | menu em indonésio como no original, busca em pílula (corpo 25) e globo com 2 palavras curvas em Poppins SemiBold 98, raio 151, arco de 136,5° a 342,5°; só o anel de texto gira e para em cerca de 20° perto de 5,33 s\n\n | C · alt-tab\n | área de trabalho do Windows com o retrato de um personagem, 12 ícones e uma borda ciano de 293,5 × 216,5 que pula da miniatura 1 para a 2 entre 5,29 e 5,71 s; a janela do Spotify abre de 5,79 a 6,04 s, inclinada de 9° a 0°\n\n | D · Spotify\n | painel azul `#00335A` e 9 linhas em Figtree ExtraBold 60; a janela gira em Y até 17,5° em 6,9 s\n\n | E · notas\n | notas do Instagram no modo escuro, balões em Segoe UI Bold 42 e perfis fictícios (lu.motion, the.producer, mari.frames e your.profile)\n\n | F · jornal\n | \"THE DAILY DROP\" em 2 páginas sobre mesa escura, manchetes em Noto Serif Display ExtraCondensed Black e vermelho `#B3333B`; 4 fotos de estúdio com empurrão lento; a foto troca por uma cortina de baixo para cima entre 11,02 e 11,42 s\n\n | G · Google\n | busca escura com painel e grade de 4 imagens; a página inclina até cerca de 28° em Y e 14° em X, num Corner Pin sobre o mundo da cena\n\n | H · mapa de jogo\n | mapa de satélite gerado, etiquetas-seta em Anton e nomes em Roboto; inclina até cerca de 30°\n\n | I · imagens\n | busca de imagens com 4 céus laranja e um resultado de vídeo com as últimas palavras grifadas em azul\n\n | J · jornal antigo\n | \"THE DAILY HERALD\" sobre mesa clara, foto P&B de olhos e manchete em 2 linhas (ExtraCondensed Bold, escala horizontal de 57%); o papel queima em duas pré-comps, uma em multiplicar (tostado, carvão e chamas) e outra normal (brasa e furo)\n\n | K · Google Maps\n | mapa claro vetorial, 2 pinos-avatar, caixa de busca e avatar andando pela estrada; textos em `#3C4043` e verde `#2E9E6E`\n\n## Jornais em 3D\n\n- Não há camada de câmera nem CAM 2D: um null 3D \"PLANO (jornal 3D)\" recebe posição e rotação X, Y e Z em todo quadro, medidas por homografia, e a comp usa a câmera padrão (zoom 1500). O erro médio fica abaixo de 1 px na F e em cerca de 1,8 px na J.\n\n- A mesa é uma camada 2D com posição, escala e giro por quadro; embaixo dela, o fundo `#2D2D33` aparece quando a mesa encolhe.\n\n- A troca cai no primeiro quadro inteiro: 10,80 s vira o quadro 260 (10,833 s), e 24,62 s vira o 591 (24,625 s).\n\n## Abertura do celular\n\n | \n\n | Peça\n | Valor\n\n | Gravação\n | celular em pé, 4K a 30 qps, com o edit parado no primeiro quadro por cerca de 1 s antes do play\n\n | Sincronia\n | 1,329 s entre o som do celular e o do edit (correlação de 0,82)\n\n | Rastreio\n | o próprio render como molde e ECC em homografia enquanto a tela está parada (correlação de 0,987); depois do play, a mão é seguida pelo cenário fixo em volta do monitor\n\n | Troca invisível\n | 0,45 s antes do play, com o quadro 0 ainda parado na tela\n\n | Mergulho\n | 1,1 s, curva bezier(0.5, 0, 0.2, 1), zoom em escala log, 12 amostras de borrão a 180° e um brilho de tela que cresce no meio\n\n | Pouso\n | o quadrado enche a largura do Reel, o resto escurece até o preto e o render limpo continua do quadro seguinte, sem quadro repetido\n\n | Som\n | o quarto até o play, o mix limpo depois, um whoosh que cresce no mergulho e um golpe suave no pouso\n\n## Card do Spotify e som\n\n | \n\n | Peça\n | Valor\n\n | Card\n | o último quadro fica congelado com deriva mínima, a tela escurece 38% e o card \"tocando agora\" sobe com mola a partir de 33,95 s, com a barra indo de 34% a 41%\n\n | Cauda\n | a última frase volta em 4 ecos, a cada 375 ms, com ganho de 0,45, 0,30, 0,19 e 0,11 e filtro de 5.000 a 1.800 Hz; tudo some até 36,5 s\n\n | Mix\n | −14,2 LUFS; no edit não há efeito sonoro além da música, como no original\n\n## O que é \"humano\" neste vídeo\n\n- A câmera embrulha um movimento no outro e não para no meio de uma frase.\n\n- O cursor pisca como num app de verdade, e a digitação anda junto com a voz, às vezes um pouco antes dela.\n\n- Os jornais balançam em perspectiva real sobre a mesa, com sombra das folhas e uma leve dobra no meio."
    },
    {
      "titulo": "A montagem no After Effects",
      "texto": "| \n\n | Arquivo\n | O que faz\n\n | `ae/camera.jsx`\n | cria o null CAM com 4 controles (Zoom em log2, Mira X, Mira Y e Giro), põe o mundo da cena como filho dele, lê as chaves por quadro de `camera/cena-<id>.json` e, com `CAMERA_encaixe`, põe a cena vizinha no buraco certo\n\n | `ae/camera-movimentos.jsx`\n | o rig do @subzmotion para escrever a câmera de uma música nova: um null \"MOV k\" por movimento, com 2 chaves e influência de 67% e 77%, e o CAM somando todos\n\n | `ae/digitar.jsx`\n | expressão de Texto-fonte que digita letra a letra nos tempos de cada palavra, com um cursor que some 0,25 s depois da última letra\n\n | `ae/letra_automatica.py`\n | transcreve a música com o faster-whisper (tempo por palavra), casa a transcrição com a letra colada em `ae/LETRA-COMPLETA.txt` e grava cada frase no seu campo de `ae/letra.json` (31 campos); imprime só contagens\n\n | `ae/letra.jsx`\n | entrega ao gerador o texto e os tempos de um campo, ou o texto reserva em inglês quando o campo está vazio\n\n | `ae/A-agenda.jsx` a `ae/K-maps.jsx`\n | um gerador por cena: apaga e recria a comp \"CENA \" (1080×1080, 24 qps, tempo interno igual ao do vídeo) com a interface, os textos digitados, a câmera e o encaixe provisório da vizinha; o cabeçalho de cada um diz a linha que o executa\n\n | `ae/montagem.jsx`\n | importa os 4 projetos de cenas, troca cada \"ENCAIXE \" pela cena real (máscara e animação ficam), liga o desfoque de movimento a 90° e monta a comp principal com a música\n\n | `ae/card-spotify.jsx`\n | congela o último quadro com deriva mínima, escurece a tela e sobe o card \"tocando agora\" até 36,5 s; título e artistas ficam no bloco `CARD`\n\n | `camera/integrar.py`, `ancorar.py` e `assar.py`\n | medem a câmera de uma referência, nesta ordem: fluxo óptico quadro a quadro, correção da deriva por SIFT e as chaves de cada cena, com os encaixes em `encaixes.json`\n\n | `camera/homografia_jornal.py`, `camera3d_jornal.py` e `dados_ae_jornal.py`\n | medem o plano dos jornais e gravam as chaves do null 3D PLANO\n\n | `transicao/sincronia.py` a `juntar.py`\n | a abertura: acham o atraso entre o som do celular e o do edit, rastreiam a tela, seguem a mão pelo cenário fixo, montam o mergulho e juntam imagem e som\n\n | `audio/tempos_da_voz.py`\n | grava o instante de cada palavra cantada e quantas letras ela tem, sem guardar a letra; é a régua do roteiro\n\n- **Junte as pastas:** copie `audio/` para dentro de `projeto/`. Os `.jsx` acham a pasta do projeto sozinhos (é a pasta acima de `ae/`).\n\n- **Fontes:** Google Sans Flex, Figtree, Roboto, Poppins, Anton e Playfair Display (Google Fonts) e as instâncias ExtraCondensed da Noto Serif Display, que vêm em `projeto/assets/F-jornal1/fontes/`, todas em `C:\\Program Files\\Common Files\\Adobe\\Fonts`. Segoe UI já vem no Windows. Reinicie o After Effects.\n\n- **Abrir pronto:** `projeto/ae/montagem.aep`, comp \"MAIN recriacao On My Way\". Os `.aep` vêm com os textos reserva em inglês nos campos de letra, prontos para receber a sua. Se o AE pedir arquivos, aponte para `projeto/assets/` e para a sua música em `audio/musica-original.wav`.\n\n- **Letra:** copie `ae/letra-modelo.json` para `ae/letra.json`; com os campos vazios, as cenas mostram os textos reserva em inglês. Para usar a letra da sua música, cole-a inteira em `ae/LETRA-COMPLETA.txt` (o modelo explica), ponha a música em `audio/musica.wav`, ajuste `JANELAS` no `letra_automatica.py` e rode `python -P ae/letra_automatica.py` (faster-whisper com GPU).\n\n- **Cenas:** num projeto novo do AE, rode cada gerador pela linha do cabeçalho dele, com a comp fechada, e salve os grupos como `cenas-w-*.aep`. Depois, num projeto vazio, carregue o `montagem.jsx` e chame `MONT.importar()`, `MONT.trocarEncaixes()`, `MONT.blur()` e `MONT.principal()`; por fim, o `card-spotify.jsx` com `CARD_criar()`.\n\n- **Som:** `python audio/eco_cauda.py` (rodado dentro de `audio/`) gera `mix-com-card.wav` a partir de `musica-original.wav`, com a cauda de 36,5 s.\n\n- **Render:** `aerender` em trechos de 4 s numa pasta sem acento (o `aerender` não aceita \"ç\" no caminho), com o `mix-com-card.wav`; depois, a folha de contato a 2 qps com `camera/folha_contato.py`.\n\n- **Abertura (opcional):** grave a tela tocando o render com o celular (dicas na parte 05 do guia), ponha a gravação em `transicao/bruto/`, extraia o som dela para `transicao/celular-48k.wav` e o mix do edit para `transicao/master-audio.wav`, acerte o `config.json` e rode, dentro de `transicao/`, `sincronia.py`, `rastreio.py`, `atraso_imagem.py`, `fundo.py`, `montar.py` e `juntar.py`.\n\n**Pegadinhas:** o `ffmpeg -ss` pega o quadro seguinte ao pedido, então extraia quadros de referência pelo índice; o Reel original vem sem metadado de cor, e a comparação só fecha com uma cópia em bt709. Com o desfoque ligado, o AE lê o texto 0,005 s antes do quadro, então a digitação termina um pouco antes de cada troca, para o cursor não vazar. Um revisor automático de movimento tende a reprovar câmera com chave em todo quadro; nesse estilo, é alarme falso. Na escala horizontal de texto, 1 vale 100%."
    },
    {
      "titulo": "As decisões de direção",
      "texto": "- **A palavra vira lugar.** Cada frase é digitada no campo que faz sentido para ela (título de evento, busca, manchete, nota, etiqueta de mapa), sempre numa interface que se reconhece em meio segundo.\n\n- **Cena dentro de cena.** A cena anterior continua tocando dentro de um elemento da seguinte, e a máscara arredonda enquanto a câmera recua. As 11 cenas formam uma cadeia só, sem nenhum corte.\n\n- **A câmera nunca para.** Cada movimento começa antes de o anterior acabar (duração mediana de 33 quadros, influência de 67% e 77%), e só o último meio segundo fica parado. Na digitação, a câmera anda para a direita com o cursor.\n\n- **Tempo interno igual ao do vídeo.** Toda cena dura o vídeo inteiro e começa no zero, então a mesma comp serve na sequência e dentro do encaixe da vizinha, sempre no mesmo instante.\n\n- **Medir antes de animar.** A câmera do original foi medida quadro a quadro e corrigida onde o rastreador errava (elemento que se mexe sozinho, interface inclinada em 3D, jornal em perspectiva), e cada cena foi conferida contra o original em vários instantes, inclusive no meio dos movimentos.\n\n- **Interface no idioma da música.** A interface ficou em inglês, como no original, e a letra entrou por campos que um script preenche a partir da letra colada inteira, com o tempo de cada palavra.\n\n- **Personagens nossos.** As pessoas são personagens gerados por IA, criados uma vez e reaproveitados em todas as cenas em que aparecem.\n\n- **Obturador de 90°.** O rastro mede cerca de ¼ do deslocamento do quadro, como no original; com 180° a tela borrava demais.\n\n- **Abertura que mostra a tela de verdade.** O vídeo abre num celular filmando o monitor com o edit parado no primeiro quadro; a troca para o render acontece antes do play, e a câmera mergulha na tela em 1,1 s até o quadrado encher a largura do Reel.\n\n- **Crédito no fim.** O card \"tocando agora\", com capa nossa, credita a música enquanto a última frase volta em ecos cada vez mais baixos.\n\n- **Quatro agentes, quatro cópias do AE.** As cenas foram divididas em grupos que se tocam pouco (A+B, C+D+E, F+J e G+H+I+K), cada agente na sua cópia do After Effects e no seu `.aep`; a montagem juntou tudo trocando os encaixes provisórios.\n\nDetalhes de câmera, tempos e números: estilo.md. Cenas por tempo e encaixes: roteiro.md. Para fazer o seu com outra música: PROMPT.md."
    },
    {
      "titulo": "As versões até o final",
      "texto": "| \n\n | Versão\n | O que mudou\n\n | v1\n | recriação das 11 cenas no After Effects em 1080×1080, 36,5 s com o card do Spotify, conferida lado a lado com o original e com a câmera comparada em números; aprovada (\"a recriação ficou perfeita\")\n\n | **v2**\n | a mesma recriação com a abertura do celular filmando a tela e o mergulho no edit, em 1080×1920 e 37,1 s; é o vídeo deste pacote"
    }
  ],
  "prompt": "# Prompt: edit de letra em cadeia de interfaces\n\n> Data: 2026-10-17 · Tipo: guia · Status: vigente · Projeto: letra-nos-apps\n\n**Resumo:** o prompt para colar no seu agente (Claude Code ou Codex), aberto na pasta da sua central, para ele estudar este projeto e montar um edit de outra música no mesmo método: cada frase digitada numa interface que todo mundo conhece, cada cena tocando dentro de um elemento da seguinte e uma câmera em cadeia de nulls que não para. Troque os marcadores `{{…}}` ou apague a linha, e o agente pergunta.\n\n## Como usar\n\n1. Descompacte o pacote em `07-videos/projetos/letra-nos-apps/` dentro da sua central e copie `audio/` para dentro de `projeto/`.\n2. Instale as fontes da lista do LEIA-ME e veja em `referencias/fora-do-pacote.md` o que você precisa trazer: a música, a letra e, se quiser a abertura, uma gravação da sua tela.\n3. Separe de 30 a 40 s da música e copie a letra inteira dela. O agente não escreve a letra: você cola.\n4. Abra o agente na pasta da central, copie o bloco abaixo, troque os marcadores que já souber e cole.\n\n## O prompt\n\n```text\nQuero um edit de música no mesmo método do projeto \"A letra mora nos apps\", que está em 07-videos/projetos/letra-nos-apps/: cada frase da letra é digitada dentro de uma interface conhecida, cada cena continua tocando dentro de um elemento pequeno da seguinte e a câmera é uma cadeia de nulls que nunca para.\n\nMúsica e trecho (arquivo e segundos de início e fim, de 30 a 40 s): {{MUSICA}}\nIdioma da música (a interface fica nesse idioma): {{IDIOMA}}\nInterfaces que eu quero ver, se tiver preferência (agenda, busca, Spotify, notas, jornal, mapa, WhatsApp, iFood...): {{INTERFACES}}\nPersonagens dos avatares e das fotos (serão gerados; nada de pessoa real conhecida): {{PERSONAGENS}}\nAbertura com o celular filmando a tela (sim ou não; se sim, eu gravo depois do primeiro render): {{ABERTURA}}\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia LEIA-ME.md, estilo.md, roteiro.md e as 5 partes de projeto/guia-do-metodo/. Abra projeto/ae/camera.jsx, camera-movimentos.jsx, digitar.jsx, letra.jsx, letra_automatica.py, montagem.jsx, card-spotify.jsx e dois geradores de cena (A-agenda.jsx e F-jornal1.jsx). Me diga em poucas linhas o que você vai reaproveitar.\n\n2. Não escreva nem copie a letra da música em nenhum arquivo nem em nenhuma mensagem. Eu colo a letra inteira em ae/LETRA-COMPLETA.txt. Rode audio/tempos_da_voz.py na música: ele grava só o tempo de cada palavra e quantas letras ela tem, e essa é a régua do roteiro.\n\n3. Monte o roteiro de cenas no molde do ROTEIRO-CENAS.md: cenas-mundo de 1,5 a 6 s, a interface de cada uma (a que ilustra a palavra mais concreta da frase), os campos onde a letra é digitada (quantas palavras e em que instantes) e o \"buraco\" onde a cena anterior entra (avatar, ícone, foto, miniatura, pino). Me mostre a tabela e espere meu ok.\n\n4. Crie os campos em ae/letra.json a partir do ae/letra-modelo.json, ajuste JANELAS, CAIXA_ALTA e INICIAL_MAIUSCULA no letra_automatica.py e, depois que eu colar a letra, rode python -P ae/letra_automatica.py. Ele imprime só contagens: confira se cada campo recebeu o número de palavras previsto e, se dois campos vizinhos trocarem uma palavra, mova a divisa entre as janelas deles.\n\n5. Prepare interfaces e imagens antes de animar: HTML e CSS fotografados em PNG 3× pelo Playwright, sem os textos que serão digitados; personagens gerados uma vez em assets/comum/ e reaproveitados; ícones oficiais dos apps. Interface no idioma da música.\n\n6. Escreva a câmera como lista de movimentos para o camera-movimentos.jsx: recuo de 2 a 4 oitavas em cada troca, avanço curto nas palavras fortes, mira andando para a direita durante a digitação, duração de 0,8 a 1,8 s, influência de 67% e 77%, cada movimento começando quando o anterior está entre 40% e 60%, e nada parado fora do último meio segundo. No primeiro quadro de cada cena, o encaixe tem de encher a tela exatamente.\n\n7. Construa uma comp por cena (1080×1080, 24 qps, com a duração do vídeo inteiro e tempo interno igual ao do vídeo), com um gerador comentado por cena, copiado dos de projeto/ae/, e o encaixe provisório da vizinha. Se forem muitas cenas, divida em grupos que se tocam pouco e use um agente por grupo, cada um na sua cópia do After Effects, seguindo o BRIEF-AGENTES.md. Me mostre uma folha de quadros de cada cena, com o meio dos movimentos e cada troca.\n\n8. Monte com o montagem.jsx (troca dos encaixes, obturador de 90° e comp principal com a música) e feche com o card-spotify.jsx creditando a música, com capa nossa. A cauda com eco sai do eco_cauda.py.\n\n9. Revise antes do render: cena parada, troca com corte no lugar de cena dentro de cena, cursor que vaza depois da troca, texto cortado e palavra digitada depois de cantada.\n\n10. Renderize em trechos numa pasta sem acento e confira a folha a 2 qps do vídeo inteiro. Se eu quiser a abertura, gravo a tela com o celular seguindo a parte 05 do guia e você roda os scripts de transicao/ na ordem. Entregue o MP4 e uma anotação do que mudou em relação ao projeto.\n```\n\n## Checklist antes de entregar (da referência)\n\n- [ ] Cada frase está digitada numa interface que combina com ela, no idioma da música.\n- [ ] Toda troca é cena dentro de cena, com a máscara arredondando durante o recuo.\n- [ ] A câmera não para fora do último meio segundo e anda junto com o cursor.\n- [ ] A digitação começa até 0,35 s antes da palavra cantada, letra a letra, com cursor.\n- [ ] Desfoque de movimento a 90°.\n- [ ] Nenhum rosto de pessoa real conhecida; o card do fim credita a música.\n- [ ] A letra foi colada por você e só existe no `letra.json` e no texto colado.\n- [ ] Render sem quadro preto, sem quadro repetido na emenda e em −14 LUFS.\n",
  "campos": [
    "ABERTURA",
    "IDIOMA",
    "INTERFACES",
    "MUSICA",
    "PERSONAGENS"
  ],
  "fonte": {
    "nome": "Clube do Motion",
    "url": "https://clubedomotion.com/projeto/?id=letra-nos-apps",
    "uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
  },
  "ferramentas": [
    "Claude Code",
    "After Effects",
    "Codex"
  ],
  "scripts_ae": {
    "pasta": "lib/estudio/dados/projetos-ae/letra-nos-apps",
    "arquivos": [
      "BRIEF-AGENTES.md",
      "README.md",
      "ROTEIRO-CENAS.md",
      "ae/A-agenda.jsx",
      "ae/B-docs.jsx",
      "ae/C-alttab.jsx",
      "ae/D-spotify.jsx",
      "ae/E-notas.jsx",
      "ae/F-jornal1.jsx",
      "ae/G-google.jsx",
      "ae/H-mapa.jsx",
      "ae/I-imagens.jsx",
      "ae/J-jornal2.jsx",
      "ae/K-maps.jsx",
      "ae/camera-movimentos.jsx",
      "ae/camera.jsx",
      "ae/card-spotify.jsx",
      "ae/digitar.jsx",
      "ae/jornal-comum.jsx",
      "ae/letra.jsx",
      "ae/letra_automatica.py",
      "ae/montagem.jsx",
      "ae/w-agenda/render_html.py",
      "ae/w-agenda/util.jsx",
      "ae/w-midia-comum.jsx",
      "ae/wg-util.jsx",
      "assets/F-jornal1/render_html.py",
      "assets/render_w-midia.py",
      "assets/w-midia-ferramentas/inclin.py",
      "assets/w-midia-ferramentas/medir_d.py",
      "assets/w-midia-ferramentas/medir_e.py",
      "camera/ajustar_movimentos.py",
      "camera/ancorar.py",
      "camera/assar.py",
      "camera/camera3d_jornal.py",
      "camera/comparar.py",
      "camera/dados_ae_jornal.py",
      "camera/folha_contato.py",
      "camera/homografia_jornal.py",
      "camera/integrar.py",
      "camera/medir_quadro_a_quadro.py",
      "camera/mesa_2d.py",
      "camera/plot_cenas.py",
      "camera/retificar_quadros.py",
      "camera/w-agenda/assar_ab.py",
      "camera/w-agenda/medir_ab.py",
      "camera/wg_ajustar_h.py",
      "camera/wg_corrige_cam.py",
      "camera/wg_ecc_cadeia.py",
      "camera/wg_finalizar_cam.py",
      "camera/wg_mosaico.py",
      "guia-do-metodo/tutorial-lyric-edit-interfaces.md",
      "guia-do-metodo/tutorial-lyric-edit-interfaces/01-gramatica-e-roteiro.md",
      "guia-do-metodo/tutorial-lyric-edit-interfaces/02-camera.md",
      "guia-do-metodo/tutorial-lyric-edit-interfaces/03-montagem-no-ae.md",
      "guia-do-metodo/tutorial-lyric-edit-interfaces/04-render-e-conferencia.md",
      "guia-do-metodo/tutorial-lyric-edit-interfaces/05-abertura-celular-mergulho.md",
      "transicao/atraso_imagem.py",
      "transicao/fundo.py",
      "transicao/juntar.py",
      "transicao/montar.py",
      "transicao/rastreio.py",
      "transicao/sincronia.py"
    ],
    "como_usar": "modelo: leia os .jsx (montam as comps no After Effects) e os .py (preparam assets/áudio) e adapte para o estudio_ae; não copie o conteúdo do vídeo, troque pelo assunto da pessoa."
  }
}