primocode 10.13.0 → 10.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -12
- package/bin/primocode.js +148 -8
- package/lib/act.js +48 -1
- package/lib/catalogo.js +12 -1
- package/lib/config.js +1 -0
- package/lib/estudio/cota.js +150 -0
- package/lib/estudio/dados/projetos/clube-ad5.json +105 -0
- package/lib/estudio/dados/projetos/clube-ae-sem-memoria.json +107 -0
- package/lib/estudio/dados/projetos/clube-agent.json +120 -0
- package/lib/estudio/dados/projetos/clube-antes-e-agora.json +86 -0
- package/lib/estudio/dados/projetos/clube-apresentando-clube.json +110 -0
- package/lib/estudio/dados/projetos/clube-bluevisa.json +106 -0
- package/lib/estudio/dados/projetos/clube-caught-in-the-fire.json +127 -0
- package/lib/estudio/dados/projetos/clube-chat-cliente-satisfeito.json +98 -0
- package/lib/estudio/dados/projetos/clube-chatgpt-anuncios.json +120 -0
- package/lib/estudio/dados/projetos/clube-claude-dj.json +140 -0
- package/lib/estudio/dados/projetos/clube-claude-mcp.json +142 -0
- package/lib/estudio/dados/projetos/clube-cleanui.json +106 -0
- package/lib/estudio/dados/projetos/clube-clinica-take-unico.json +128 -0
- package/lib/estudio/dados/projetos/clube-clinica.json +104 -0
- package/lib/estudio/dados/projetos/clube-clube-opener.json +125 -0
- package/lib/estudio/dados/projetos/clube-clube.json +108 -0
- package/lib/estudio/dados/projetos/clube-codigo.json +101 -0
- package/lib/estudio/dados/projetos/clube-distilbook.json +104 -0
- package/lib/estudio/dados/projetos/clube-drive-upload.json +115 -0
- package/lib/estudio/dados/projetos/clube-dub.json +119 -0
- package/lib/estudio/dados/projetos/clube-enxovaly.json +105 -0
- package/lib/estudio/dados/projetos/clube-fecha7.json +118 -0
- package/lib/estudio/dados/projetos/clube-filatov.json +128 -0
- package/lib/estudio/dados/projetos/clube-frame.json +108 -0
- package/lib/estudio/dados/projetos/clube-glass.json +118 -0
- package/lib/estudio/dados/projetos/clube-letra-em-apps.json +84 -0
- package/lib/estudio/dados/projetos/clube-letra-globo-3d.json +111 -0
- package/lib/estudio/dados/projetos/clube-letra-nos-apps.json +146 -0
- package/lib/estudio/dados/projetos/clube-letra-seis-mundos.json +100 -0
- package/lib/estudio/dados/projetos/clube-lula-3.json +146 -0
- package/lib/estudio/dados/projetos/clube-morph.json +119 -0
- package/lib/estudio/dados/projetos/clube-motion-designer.json +115 -0
- package/lib/estudio/dados/projetos/clube-motion-pacote.json +112 -0
- package/lib/estudio/dados/projetos/clube-movimento.json +103 -0
- package/lib/estudio/dados/projetos/clube-not-like-us.json +117 -0
- package/lib/estudio/dados/projetos/clube-pinterest-inspiracao.json +86 -0
- package/lib/estudio/dados/projetos/clube-pixel-e-tinta.json +108 -0
- package/lib/estudio/dados/projetos/clube-ponte.json +118 -0
- package/lib/estudio/dados/projetos/clube-processo-edit-tonal.json +126 -0
- package/lib/estudio/dados/projetos/clube-processo-motion-100-ia.json +109 -0
- package/lib/estudio/dados/projetos/clube-promo.json +114 -0
- package/lib/estudio/dados/projetos/clube-proposito.json +115 -0
- package/lib/estudio/dados/projetos/clube-rankhog.json +128 -0
- package/lib/estudio/dados/projetos/clube-recursao.json +116 -0
- package/lib/estudio/dados/projetos/clube-revelar.json +118 -0
- package/lib/estudio/dados/projetos/clube-robo.json +125 -0
- package/lib/estudio/dados/projetos/clube-shelby-ep2.json +144 -0
- package/lib/estudio/dados/projetos/clube-shelby.json +97 -0
- package/lib/estudio/dados/projetos/clube-solar-eclipse.json +96 -0
- package/lib/estudio/dados/projetos/clube-soldier.json +128 -0
- package/lib/estudio/dados/projetos/clube-som-de-cena.json +108 -0
- package/lib/estudio/dados/projetos/clube-spotify-candidatura.json +112 -0
- package/lib/estudio/dados/projetos/clube-tda-app.json +118 -0
- package/lib/estudio/dados/projetos/clube-tda-ia.json +75 -0
- package/lib/estudio/dados/projetos/clube-telegram-chat.json +118 -0
- package/lib/estudio/dados/projetos/clube-telegram-ilha.json +106 -0
- package/lib/estudio/dados/projetos/clube-tennessee-nike.json +132 -0
- package/lib/estudio/dados/projetos/clube-tudo-se-move.json +112 -0
- package/lib/estudio/dados/projetos/clube-uiad.json +107 -0
- package/lib/estudio/dados/projetos/clube-viralgrow.json +108 -0
- package/lib/estudio/dados/projetos/clube-whose-side.json +140 -0
- package/lib/estudio/dados/projetos/clube-youtube-inscrever.json +108 -0
- package/lib/estudio/dados/projetos/elementos-do-site-em-movimento.json +49 -0
- package/lib/estudio/dados/projetos/explainer-narrado.json +51 -0
- package/lib/estudio/dados/projetos/lancamento-de-produto.json +51 -0
- package/lib/estudio/dados/projetos/motion-so-com-sons.json +50 -0
- package/lib/estudio/dados/projetos/titulo-em-after-effects.json +51 -0
- package/lib/estudio/dados/projetos/tour-de-saas.json +50 -0
- package/lib/estudio/dados/projetos-ae/antes-e-agora/ae/cenas.jsx +733 -0
- package/lib/estudio/dados/projetos-ae/antes-e-agora/assets/fazer_assets.py +88 -0
- package/lib/estudio/dados/projetos-ae/letra-em-apps/ae/cenas.jsx +402 -0
- package/lib/estudio/dados/projetos-ae/letra-em-apps/assets/preparar_assets.py +17 -0
- package/lib/estudio/dados/projetos-ae/letra-em-apps/assets/svg_para_ae.py +25 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/BRIEF-AGENTES.md +31 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/README.md +53 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ROTEIRO-CENAS.md +69 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/A-agenda.jsx +148 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/B-docs.jsx +174 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/C-alttab.jsx +113 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/D-spotify.jsx +118 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/E-notas.jsx +146 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/F-jornal1.jsx +144 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/G-google.jsx +153 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/H-mapa.jsx +176 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/I-imagens.jsx +132 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/J-jornal2.jsx +191 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/K-maps.jsx +184 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/camera-movimentos.jsx +48 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/camera.jsx +57 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/card-spotify.jsx +98 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/digitar.jsx +38 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/jornal-comum.jsx +196 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/letra.jsx +23 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/letra_automatica.py +83 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/montagem.jsx +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/w-agenda/render_html.py +13 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/w-agenda/util.jsx +162 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/w-midia-comum.jsx +114 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/wg-util.jsx +360 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/F-jornal1/render_html.py +13 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/render_w-midia.py +26 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/w-midia-ferramentas/inclin.py +30 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/w-midia-ferramentas/medir_d.py +36 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/w-midia-ferramentas/medir_e.py +27 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/ajustar_movimentos.py +61 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/ancorar.py +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/assar.py +47 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/camera3d_jornal.py +172 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/comparar.py +32 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/dados_ae_jornal.py +46 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/folha_contato.py +28 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/homografia_jornal.py +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/integrar.py +44 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/medir_quadro_a_quadro.py +32 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/mesa_2d.py +64 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/plot_cenas.py +11 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/retificar_quadros.py +38 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/w-agenda/assar_ab.py +52 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/w-agenda/medir_ab.py +59 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_ajustar_h.py +111 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_corrige_cam.py +17 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_ecc_cadeia.py +80 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_finalizar_cam.py +65 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_mosaico.py +61 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/01-gramatica-e-roteiro.md +55 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/02-camera.md +66 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/03-montagem-no-ae.md +50 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/04-render-e-conferencia.md +43 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/05-abertura-celular-mergulho.md +43 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces.md +42 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/atraso_imagem.py +31 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/fundo.py +56 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/juntar.py +45 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/montar.py +177 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/rastreio.py +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/sincronia.py +18 -0
- package/lib/estudio/dados/projetos-ae/pinterest-inspiracao/ae/cenas.jsx +530 -0
- package/lib/estudio/dados/projetos-ae/pinterest-inspiracao/assets/fazer_assets.py +107 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/assets/pessoas/figurinha.py +46 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/BRIEF-A.md +83 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/audio.py +179 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/confere.py +20 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/dados/tempo-parte1.js +1 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/dados/tempo-parte2.js +1 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/gerar_emojis.py +11 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/img/filmes/_indice.js +122 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/base.js +380 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/main.js +86 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p1a.js +169 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p1b.js +455 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p1c.js +389 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p2.js +379 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/video.py +62 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/README.md +65 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/oraculo_take.py +137 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/render_take.py +388 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/take.js +235 -0
- package/lib/estudio/editor.js +285 -0
- package/lib/estudio/effectcraft.js +152 -0
- package/lib/estudio/exportar.js +181 -0
- package/lib/estudio/index.js +90 -2
- package/lib/estudio/kit-ae/base.jsx +1146 -0
- package/lib/estudio/kit-ae/cenas.jsx +395 -0
- package/lib/estudio/kit-ae/primitivas.jsx +911 -0
- package/lib/estudio/maquina-diretor.js +393 -0
- package/lib/estudio/maquina-elementos.js +134 -0
- package/lib/estudio/maquina-layout.js +198 -0
- package/lib/estudio/maquina-som.js +478 -0
- package/lib/estudio/maquina-trilha.js +160 -0
- package/lib/estudio/maquina-voz.js +429 -0
- package/lib/estudio/maquina.js +516 -0
- package/lib/estudio/projetos.js +60 -0
- package/lib/headless.js +71 -0
- package/lib/hooks.js +72 -0
- package/lib/local/cerebro.json +398 -12
- package/lib/local/entrada.js +46 -2
- package/lib/marca-kit.js +309 -0
- package/lib/mcp.js +286 -6
- package/lib/perigo.js +31 -3
- package/lib/planos.js +47 -19
- package/lib/preparar.js +111 -0
- package/lib/retomar.js +55 -0
- package/lib/sandbox.js +197 -0
- package/lib/skills.js +3 -1
- package/lib/tools.js +13 -4
- package/lib/ui.js +1 -1
- package/package.json +4 -2
- package/skills/after-effects/SKILL.md +52 -0
- package/skills/maquina-de-motion/SKILL.md +84 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-motion-designer",
|
|
3
|
+
"titulo": "Claude, motion designer",
|
|
4
|
+
"categoria": "elementos",
|
|
5
|
+
"resumo": "showreel de 15,3 s, 16:9, em que o Claude se apresenta como motion designer. Cada compasso da música ensina um fundamento do motion (identidade, easing, morph, sistema, profundidade, tipografia) e uma linha de formas atravessa o vídeo inteiro: o ponto vira o símbolo, o símbolo vira fundo, as letras viram pontos, os pontos viram trilhos, e assim até o símbolo final. É uma **recriação** do \"Claude motion designer showreel\", de Stephan Livera (@stephanlivera), publicado no prompt-motion.com (prompt-motion.com/stephanlivera-df17a2) e gerado com o prompt genérico de showreel. A nossa versão veste a marca do Claude, corrige a tela preta parada e o quadrado congelado do original, troca a trilha sintética por música real cortada na batida e põe um efeito sonoro em cada elemento. Versão final: v2, a \"com mais impacto\".",
|
|
6
|
+
"indicado": "abertura de marca, showreel de estúdio ou de designer e apresentação rápida de um produto de tecnologia.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"tipografia cinética",
|
|
9
|
+
"morph de formas",
|
|
10
|
+
"curvas de easing",
|
|
11
|
+
"contraste alto",
|
|
12
|
+
"HUD técnico",
|
|
13
|
+
"câmera viva",
|
|
14
|
+
"corte na batida."
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "1920×1080, 60 qps, 16:9, cor BT.709",
|
|
18
|
+
"duracao": "15,3 s; 8 compassos de 1,90 s",
|
|
19
|
+
"motor": "html",
|
|
20
|
+
"voz": "ver o guia de estilo",
|
|
21
|
+
"musica": "ver o guia de estilo",
|
|
22
|
+
"fontes": "ver o guia de estilo"
|
|
23
|
+
},
|
|
24
|
+
"ferramentas": [
|
|
25
|
+
"Claude Code"
|
|
26
|
+
],
|
|
27
|
+
"ficha_tecnica": {
|
|
28
|
+
"Duração": "15,3 s; 8 compassos de 1,90 s",
|
|
29
|
+
"Formato": "1920×1080, 60 qps, 16:9, cor BT.709",
|
|
30
|
+
"Narração": "nenhuma; o texto está na tela",
|
|
31
|
+
"Ferramenta": "HyperFrames (HTML + GSAP), com formas desenhadas em canvas 2D e texto no DOM",
|
|
32
|
+
"Uso": "showreel, filme de marca",
|
|
33
|
+
"Trilha": "\"Satisfaction\" (David Guetta), 125 BPM, drop em 1,90 s"
|
|
34
|
+
},
|
|
35
|
+
"etapas": [
|
|
36
|
+
{
|
|
37
|
+
"titulo": "O roteiro",
|
|
38
|
+
"texto": "**Resumo:** vídeo sem narração, com 8 compassos de 1,90 s a 125 BPM e um conceito de motion em cada um. O texto da tela está em português e sai do `index.html`; os tempos são do vídeo e caem nas batidas medidas da música.\n\n## Como o roteiro foi feito\n\n- **Ponto de partida:** o original de @stephanlivera, estudado a 4 qps. Ele já tinha a espinha \"um conceito por compasso\" e o HUD de ficha técnica; o roteiro manteve as duas coisas e a ordem das cenas.\n\n- **O que mudou:** a cena 5 não termina mais em tela preta, o quadrado da cena 4 não para, a marca é a do Claude e todo texto foi para o português.\n\n- **Batidas:** `0 · 0,46 · 0,94 · 1,42 · 1,90 · 2,38 …` (a lista completa está na constante `B` do `index.html`). Cada cena começa num tempo forte.\n\n## Cenas por tempo\n\n | \n\n | #\n | Tempo (s)\n | Conceito (rótulo do HUD)\n | Texto na tela\n | O que acontece\n\n | 1\n | 0–1,90\n | 01 — IDENTIDADE\n | \"x 960 · y 540\"; \"CLAUDE · MOTION DESIGNER · SHOWREEL 2026\" em círculo\n | um ponto cai e pousa com peso; a mira mostra a coordenada; anéis se desenham; o símbolo do Claude nasce, gira com o texto circular e encolhe até um ponto\n\n | 2\n | 1,90–3,80\n | 01 — IDENTIDADE\n | \"Nº 01\", \"SHOWREEL — 2026\", **CLAUDE**, motion designer\n | **drop em 1,90 s:** o ponto abre a íris argila; \"CLAUDE\" em Archivo 900 cai letra a letra com mola sobre uma linha; \"motion designer\" sobe em itálico; no fim, as letras caem e viram 6 pontos\n\n | 3\n | 3,80–5,70\n | 02 — EASING\n | Seis jeitos de ir de A a B.; \"MESMA DISTÂNCIA · MESMA DURAÇÃO · 0,95 s\"; \"linear\", \"ease-in-out\", \"expo-out\", \"back-out\", \"elastic\", \"bounce\"\n | os 6 pontos viram as bolinhas de 6 trilhos sobre o marfim; largada em 4,28 s; cada bolinha chega numa hora (elastic 4,35 · back 4,63 · bounce 4,63/4,97/5,14 · expo 5,01 · linear e ease-in-out 5,23 s); as bolinhas convergem num ponto\n\n | 4\n | 5,70–7,62\n | 03 — MORPH\n | \"MORPH · CÍRCULO → TRIÂNGULO\" (e as seguintes); \"θ 090,0°\"; \"MOLA 112% · 0,6 s\"\n | o ponto abre a íris céu; a forma branca vai de círculo a triângulo (6,18 s), estrela (6,66 s) e quadrado (7,14 s), com 12 satélites que mudam junto; os satélites são sugados e o quadrado encolhe 12% antes de partir\n\n | 5\n | 7,62–9,52\n | 04 — SISTEMAS\n | \"TRUCHET · 187 PEÇAS\"\n | o quadrado se parte em 3×3; as peças se espalham em Truchet; três ondas (radial, diagonal e radial inversa) giram as peças com mola e pintam uma faixa argila; os arcos viram pontos\n\n | 6\n | 9,52–11,42\n | 05 — PROFUNDIDADE\n | \"PLANO · VÉRTICES 187 · FOCAL … · ROT Y …\", depois \"ESFERA\" e \"TORO\"\n | a grade de pontos deita em plano 3D, embrulha em esfera e em toro; tudo colapsa em espiral até um ponto argila, e o ponto vira uma barra\n\n | 7\n | 11,42–12,84\n | 06 — TIPOGRAFIA\n | **EASE** · **IN.** · **EASE** · **OUT.** · **NUNCA** · **LINEAR.**; \"f(t) = t\"\n | a barra vira o fundo de \"EASE\"; uma palavra a cada meia batida (11,42 · 11,66 · 11,90 · 12,14 · 12,36 · 12,60 s), cada uma num fundo (argila, preto, marfim, céu, fig, preto); atrás de \"NUNCA\", fileiras da palavra só em contorno; com \"LINEAR.\", uma reta se desenha em velocidade constante com a legenda \"f(t) = t\"; a palavra despenca e o ponto dela sobra sozinho\n\n | 8\n | 12,84–13,32\n | (respiro)\n | —\n | a música some; o ponto respira, com dois tiques de relógio, e antecipa\n\n | 9\n | 13,32–15,30\n | 07 — FIM\n | símbolo + **Claude** + motion designer; \"SHOWREEL 2026 · 15 SEGUNDOS · FEITO EM CÓDIGO\"; \"DISPONÍVEL PARA NOVOS PROJETOS\"\n | o ponto explode numa onda com partículas nas quatro formas do reel; o símbolo desliza para o lado e o \"Claude\" sobe letra a letra; o rodapé é digitado a partir de 14,20 s e o \"disponível\" a partir de 14,42 s, com um ponto que pisca\n\n## Momentos para a trilha\n\n- 0–1,90 s: intro da faixa, com riser até o drop.\n\n- **1,90 s: drop** (119,12 s da música), com impacto, whoosh grave e Ping Boom.\n\n- 5,70 · 7,62 · 11,42 s: viradas de cena com coice da câmera.\n\n- 12,84–13,32 s: respiro (a música zera).\n\n- **13,32 s: volta da música** no símbolo final, com a mesma pilha do drop.\n\n- 14,30–15,30 s: a música desce até o silêncio."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"titulo": "A identidade visual",
|
|
42
|
+
"texto": "**Resumo:** showreel de contraste alto com a marca do Claude: fundos em argila, preto e marfim saturados, palavras de impacto numa grotesca larga peso 900, serifa só na assinatura e HUD de ficha técnica em mono. As formas vivem num canvas e se transformam umas nas outras; a câmera nunca para e cada corte cai na batida. Números tirados do `index.html` (v2), do `mix.py` e do `normalizar.sh`.\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n | Onde baixar\n\n | Palavras de impacto (CLAUDE, EASE, IN., OUT., NUNCA, LINEAR.)\n | Archivo variável, peso 900, largura 112–118 (`font-variation-settings: \"wght\" 900, \"wdth\" 118`), caixa alta\n | Google Fonts / repositório google/fonts\n\n | \"Claude\" do lockup e subtítulos em itálico (\"motion designer\", \"Seis jeitos de ir de A a B.\")\n | Source Serif 4 variável, romana 600 e itálica 400 (no lugar da Tiempos da marca)\n | Google Fonts\n\n | Apoio\n | Space Grotesk variável (no lugar da Styrene)\n | Google Fonts\n\n | HUD, rótulos e dados\n | Geist Mono 400, 15–21 px, espaçamento 0,12–0,16em\n | Vercel / Google Fonts\n\nTodas vêm no pacote em `projeto/hf/assets/fonts/`.\n\n## Cores (v2)\n\n | \n\n | Token\n | Hex\n | Papel\n\n | Argila\n | `#E0623A`\n | fundos de impacto, íris, símbolo de abertura, pontos, acento das palavras\n\n | Preto\n | `#0E0D0C`\n | fundo base, tinta sobre o claro\n\n | Marfim\n | `#F7F5EE`\n | fundo claro, texto sobre o escuro\n\n | Céu\n | `#4F8FDB`\n | fundo do morph, fundo do \"OUT.\"\n\n | Fig\n | `#D14F7E`\n | fundo do \"NUNCA\" (tom da paleta da Anthropic, saturado)\n\n | Kraft\n | `#D4A27F`\n | apoio\n\nRegra da v2: num showreel, cada cor da marca entra na versão mais saturada. A v1 usou os tons de interface (argila #D97757, marfim #F0EEE6, preto #141413, céu #6A9BCC, oliva #788C5D) e perdeu a pancada na tela do celular.\n\n## Peças\n\n | \n\n | Peça\n | Como é\n\n | Símbolo do Claude\n | path oficial em SVG, desenhado no canvas (`Path2D`) e no lockup\n\n | Texto circular\n | \"CLAUDE · MOTION DESIGNER · SHOWREEL 2026 · \" girando em volta do símbolo, raio 248 px\n\n | Mira de abertura\n | cruz com a coordenada \"x 960 · y 540\" no primeiro quadro\n\n | Gráfico de easing\n | 6 trilhos (linear, ease-in-out, expo-out, back-out, elastic, bounce), marcados \"A\" e \"B\"; as bolinhas saem juntas e levam 0,95 s; ícone de 66×40 px de cada curva com uma bolinha da cor do trilho andando sobre ela\n\n | Morph\n | 180 amostras de raio polar por forma: círculo, triângulo, estrela, quadrado (trocas em 6,18 · 6,66 · 7,14 s); 12 satélites mudam junto; legenda \"MORPH · CÍRCULO → TRIÂNGULO\", ângulo θ ao vivo e \"MOLA 112% · 0,6 s\"\n\n | Truchet\n | 187 peças de 120 px, traço de 27%: dois quartos de círculo por peça, girada 0° ou 90° por hash; ondas giram as peças 90° com mola e pintam uma faixa argila; rótulo \"TRUCHET · 187 PEÇAS\"\n\n | Grade de pontos em 3D\n | os mesmos 187 pontos (6 px, malha de 1,5 px a 16%) fazem plano → esfera → toro; legenda com o nome, os vértices, a distância focal e a rotação Y ao vivo\n\n | Palavras cinéticas\n | Archivo 900 a 300 px, uma a cada meia batida, cada uma num fundo; atrás do \"NUNCA\", fileiras da mesma palavra só em contorno (3 px, marfim a 55%)\n\n | Lockup\n | símbolo de 236 px + \"Claude\" em Source Serif 600 a 290 px + \"motion designer\" itálico a 100 px + linha + rodapé \"SHOWREEL 2026 · 15 SEGUNDOS · FEITO EM CÓDIGO\" e \"DISPONÍVEL PARA NOVOS PROJETOS\" digitados letra a letra\n\n | HUD\n | cantoneiras de 26 px a 44 px da borda; \"CLAUDE MOTION REEL — 2026\"; rótulo da cena (\"03 — MORPH\") que embaralha por 0,16 s na troca; timecode; \"60 QPS\"; \"125 BPM\"; quatro quadradinhos de 14 px que acendem na batida; \"COMPASSO n/8\"; barra de progresso no rodapé; a cor inverte com o fundo\n\n## Transições\n\nCada cena é feita da forma anterior, sem corte para uma tela nova:\n\n- o símbolo encolhe a um ponto, que abre uma íris argila (o drop em 1,90 s);\n\n- as letras de \"CLAUDE\" caem e viram 6 pontos, que viram as bolinhas dos trilhos;\n\n- as 6 bolinhas convergem num ponto, que abre a íris céu do morph;\n\n- o quadrado faz antecipação (encolhe 12% e alinha a 0°) e se parte em 3×3, que vira o Truchet;\n\n- os arcos viram a grade de pontos, a grade deita em plano 3D, embrulha em esfera (por linhas) e em toro (por colunas);\n\n- os pontos colapsam num ponto argila, o ponto vira barra e a barra vira o fundo de \"EASE\";\n\n- o ponto de \"LINEAR.\" sobra, respira e explode no símbolo final.\n\nÍris e formas que crescem até a tela usam `inOut` cúbico de 0,3–0,4 s (no máximo ~25 px por subquadro); com `expoInOut` o motion blur mostra anéis em degrau.\n\n## Curvas e molas\n\n- **Mola padrão:** `spring(t) = 1 − e^(−ζωt)·(cos(ω_d t) + (ζω/ω_d)·sen(ω_d t))`, com ζ 0,56 e ω 11,9. Passa ~12% do alvo e assenta em ~0,6 s.\n\n- **Morph com overshoot parcial:** a mola entra cheia na rotação e com 35% do excesso na forma (`b > 1 → 1 + (b − 1)·0,35`).\n\n- **Cortes secos** presos ao quadro: `corte = floor(t·60)/60 + 1/480`.\n\n- **Rótulo do HUD** embaralha os caracteres por 0,16 s a cada troca de cena.\n\n## Câmera\n\nUm contêiner `#cam` com todas as camadas:\n\n- deriva contínua por ruído (cerca de ±7 px e ±0,22°);\n\n- escala `1,025 + 0,022·(t/15,3)` mais ruído leve: um empurrão lento de ~2,2% no vídeo inteiro;\n\n- coice amortecido nos drops (1,90 · 5,70 · 7,62 · 11,42 · 13,32 s): `a·e^(−5t)·cos(2π·1,2t)`, com `a` de 0,025 a 0,055.\n\n## Acabamento\n\n- **Motion blur:** render a 240 qps e `tmix=frames=4` para 60 qps (obturador de 360°).\n\n- **Grão** animado a 30 qps em `overlay`, a 16%; **vinheta** radial de 24% nas bordas.\n\n- **Detector** depois de todo render: 0 quadros vazios ou isolados em 3.672 subquadros; os 14 saltos que restaram são cortes de propósito.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"Satisfaction\" (David Guetta)\n\n | Trecho\n | a partir de 117,22 s da faixa; o drop da faixa (119,12 s) cai em 1,90 s do vídeo\n\n | Andamento\n | 125 BPM medido com o `beat_this`; compasso de 1,90 s\n\n | Respiro\n | a música some de 12,84 a 13,32 s, com dois tiques de relógio, e volta a 105% no símbolo\n\n | Fecho\n | a música desce de 14,30 s até zero em 15,30 s\n\n | Sob impacto\n | a música baixa a 72% por 0,35 s em 1,90, 7,62 e 13,32 s\n\n## Sound design e mix\n\n | \n\n | Ação na tela\n | Efeito\n\n | ponto cai e pousa\n | whoosh curto 4 semitons abaixo + pop + impacto com passa-baixa de 300 Hz\n\n | texto circular se escreve, rodapé digitado\n | digitação de interface com passa-alta de 900 Hz\n\n | símbolo nasce e gira\n | pop + whooshes curtos\n\n | antecipação até o drop\n | riser curto\n\n | drop e assinatura\n | impacto + whoosh grave + Ping Boom em Lá# (tonal)\n\n | letras de \"CLAUDE\" entram\n | pops alternados, subindo de tom\n\n | letras viram pontos\n | 6 cliques espaçados de 35 ms\n\n | largada e chegada das bolinhas do easing\n | clique na largada; um clique por chegada, cada trilho num tom; pops nos quiques do bounce; boing no elastic\n\n | formas do morph\n | whoosh curto + pop por troca, subindo de tom; 12 pops miúdos nos satélites\n\n | quadrado se parte\n | impacto + clique + glitch\n\n | ondas do Truchet\n | whooshes longos; contador rolando nas peças se espalhando\n\n | plano, esfera, toro\n | whoosh grave e longos\n\n | palavras cinéticas\n | um whoosh curto por palavra, alternando arquivo e tom; pop no ponto de \"IN.\" e de \"OUT.\"\n\n | \"DISPONÍVEL PARA NOVOS PROJETOS\"\n | sino\n\n- Cerca de 120 efeitos, cada um em `at = evento − pico do arquivo`. Medido na faixa só de efeitos: cliques e pops a ±10 ms do evento (mediana 6,7 ms).\n\n- **Música a 0,50 e efeitos ×2 (+6 dB).** A faixa é um master de EDM a cerca de −9 LUFS; com ela a 0,78, os efeitos ficavam 13 a 27 dB abaixo e sumiam.\n\n- **Final:** `loudnorm` em duas passagens a −14 LUFS, pico verdadeiro −1,6 dBTP.\n\n## O que é \"humano\" neste vídeo\n\n- Nenhum quadro parado: onde o original deixava 0,25 s de tela preta, a nossa versão passa o ponto para a barra e a barra para a palavra.\n\n- O quadrado faz antecipação antes de se partir, em vez de esperar congelado.\n\n- As bolinhas do easing chegam em tempos diferentes e cada chegada tem som próprio.\n\n- O ponto de \"LINEAR.\" respira antes de explodir.\n\n- A câmera deriva o tempo todo e dá um coice em cada drop."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"titulo": "A montagem no HyperFrames",
|
|
46
|
+
"texto": "- **Instale o Node.js e o ffmpeg.** O HyperFrames roda pelo `npx`, sem instalação: `npx hyperframes@0.8.144`. As fontes já estão em `projeto/hf/assets/fonts/`.\n\n- **Pré-visualize:** dentro de `projeto/hf/`, rode `npx hyperframes@0.8.144 preview`.\n\n- **Render do master:** de `projeto/`, rode `npx hyperframes@0.8.144 render hf --fps 240 --workers 3 -q delivery`. Se a máquina estiver carregada e o render cair, use `HF_SEGMENTED_CAPTURE=true` com `--resume --keep-segments` e rode de novo até terminar. No PC do autor, a captura levou ~9,5 min e a codificação outros ~9,5 min.\n\n- **Áudio:** copie a pasta `audio/` para dentro de `projeto/` (os scripts esperam `hf/`, `audio/` e `render/` lado a lado). No `mix.py`, aponte as pastas `N`, `P` e `TON` para `audio/sfx/` e rode `python mix.py` (precisa de numpy, soundfile e ffmpeg com rubberband); depois `sh normalizar.sh` gera o `mix-final.wav` a −14 LUFS.\n\n- **Final:** coloque o master em `projeto/render/` e rode `sh render/finalizar.sh <master>.mp4`. Para a comparação, ajuste a variável `REF` para `referencias/original/`.\n\n- **Conferência:** `python revisao/revisar.py render/<final>.mp4` e `python revisao/quadro_vazio.py` no master. Todo salto que sobrar tem de ser um corte de propósito."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"titulo": "As decisões de direção",
|
|
50
|
+
"texto": "- **Um conceito de motion por compasso.** Cada cena ensina um fundamento e dura 4 batidas: identidade, easing, morph, sistema, profundidade, tipografia e assinatura. A troca cai no tempo forte medido na música.\n\n- **Uma linha de formas, sem cena começando do zero:** ponto → símbolo → íris argila → letras caem → letras viram 6 pontos → trilhos de easing → 1 ponto → íris céu → círculo, triângulo, estrela e quadrado → grade 3×3 → Truchet → pontos → plano, esfera e toro → ponto → barra → palavras → o ponto de \"LINEAR.\" → símbolo final.\n\n- **A marca do Claude sem perder o grito do showreel.** A v1 usou os tons de interface da marca e ficou apagada no celular. A v2 levou cada cor à versão mais saturada e pôs as palavras de impacto em Archivo 900 larga; a serifa ficou só no \"Claude\" final e nos subtítulos.\n\n- **O gráfico de easing vira cena.** Seis bolinhas percorrem a mesma distância no mesmo tempo (0,95 s), cada uma com uma curva, e os tempos de chegada viram a partitura dos efeitos.\n\n- **Morph pelo raio polar.** Cada forma é amostrada em 180 direções e o morph interpola os raios; a mola entra cheia na rotação e só com 35% do overshoot na forma, para o quadrado não inchar.\n\n- **HUD de ficha técnica** com cantoneiras, rótulo da cena que embaralha na troca, timecode, \"60 QPS\", \"125 BPM\", quatro quadradinhos na batida, \"COMPASSO n/8\" e dados vivos (ângulo do morph, rotação da esfera).\n\n- **Câmera que nunca para:** deriva contínua, empurrão lento de ~2,2% no vídeo inteiro e coice amortecido nos cinco drops.\n\n- **Pontuação como personagem.** O ponto de \"LINEAR.\" sobra sozinho, respira, antecipa e explode no símbolo final, depois de 0,48 s de respiro na música.\n\n- **Motion blur de verdade:** render a 240 qps somado em grupos de 4 para 60 qps, com cada corte seco preso ao limite do quadro.\n\n- **Um som para cada elemento** (cerca de 120 efeitos), com a música baixa o bastante para os efeitos aparecerem.\n\nDetalhes de cores, curvas e som: estilo.md. Cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo estilo: PROMPT.md."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"titulo": "As versões até o final",
|
|
54
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | v1 (09/10)\n | recriação completa com a marca do Claude em tons de interface (argila #D97757, marfim, preto quente) e títulos em serifa e Space Grotesk; corrigiu a tela preta e o quadrado parado do original, mas perdeu impacto no celular\n\n | **v2 (10/10)**\n | cores saturadas (argila #E0623A, preto #0E0D0C, céu #4F8FDB, fig #D14F7E no lugar do oliva), palavras em Archivo 900 larga, bolinha andando no ícone de cada curva, Truchet com peças de 120 px, vinheta mais forte; corte da dupla exposição em 12,25 s e íris sem degraus. Mesmos tempos e mesmo mix; é a versão entregue"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"pacote": [
|
|
58
|
+
{
|
|
59
|
+
"pasta": "projeto/hf/",
|
|
60
|
+
"conteudo": "a composição (`index.html`), o `BRIEF.md` e `assets/` com o GSAP local, o símbolo do Claude em SVG e as fontes (Archivo variável, Source Serif 4 romana e itálica, Space Grotesk, Geist Mono)"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"pasta": "projeto/render/",
|
|
64
|
+
"conteudo": "`finalizar.sh`: junta o master de 240 qps em 60 qps com motion blur, põe o áudio e monta a comparação"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pasta": "projeto/revisao/",
|
|
68
|
+
"conteudo": "`revisar.py` (folhas de contato a 4 qps e detector de salto entre quadros) e `quadro_vazio.py` (quadro vazio ou isolado no master)"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pasta": "audio/",
|
|
72
|
+
"conteudo": "`mix.py` (a lista de efeitos com evento, volume e tom), `normalizar.sh`, o mix final, a música e a pasta `sfx/` com os efeitos usados"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"pasta": "referencias/",
|
|
76
|
+
"conteudo": "o vídeo original e o prompt dele, folhas de contato do original, a comparação original × nossa, recortes de momentos e o estudo quadro a quadro"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pasta": "render/",
|
|
80
|
+
"conteudo": "`render.mp4`"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"pasta": "render(t)",
|
|
84
|
+
"conteudo": "uma função só desenha o quadro inteiro a partir do tempo `t`; o timeline do GSAP chama essa função, então qualquer quadro sai igual em qualquer render"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"pasta": "B",
|
|
88
|
+
"conteudo": "as batidas medidas na música com o `beat_this`, em tempo de vídeo; as trocas de cena caem nelas"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"pasta": "snap()",
|
|
92
|
+
"conteudo": "prende cada corte seco ao limite do quadro de 60 qps, para o motion blur não virar dupla exposição"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"pasta": "spring()",
|
|
96
|
+
"conteudo": "a mola padrão (ζ 0,56, ω 11,9): passa ~12% do alvo e assenta em ~0,6 s"
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"prompt": "Quero fazer um filme de marca curto, sem narração, no mesmo estilo do projeto \"Claude, motion designer\", que está em 07-videos/projetos/motion-designer/, com a minha marca.\n\nMarca: {{MARCA}} (site: {{SITE}})\nO que a marca faz, em uma frase: {{O_QUE_FAZ}}\nO que o vídeo precisa mostrar (conceitos, produtos ou serviços, um por compasso): {{CONCEITOS}}\nFrase da assinatura final: {{ASSINATURA}}\nDuração aproximada: {{DURACAO}} (a referência tem 15,3 s, 8 compassos)\nFormato: {{FORMATO}} (a referência é 1920×1080; para reels, 1080×1920)\nMúsica: {{MUSICA}} (se vazio, sugira 3 faixas reais com drop forte e andamento entre 120 e 130 BPM)\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, nesta ordem: 07-videos/projetos/motion-designer/LEIA-ME.md, estilo.md e roteiro.md. Depois abra projeto/hf/index.html e veja como funcionam a função render(t), a lista de batidas B, o snap() que prende os cortes ao quadro, a mola spring(), a câmera, o HUD e as cenas do canvas; e o audio/mix.py, com a lista de efeitos. Me explique em poucas linhas o que você vai reaproveitar e o que vai trocar.\n\n2. Siga o passo a passo de 07-videos/_LEIA.md e os números de 07-videos/regras-vigentes.md. Crie o meu projeto em 07-videos/projetos/AAAA-MM-DD-tema/ a partir de 07-videos/projetos/_modelo/README.md e marque cada etapa no checklist. Não edite os arquivos do projeto motion-designer: copie o que for reaproveitar.\n\n3. Use as skills instaladas: animacao-saas (forma que vira a próxima, câmera viva, mola), motion-app-ae (rota em HTML determinístico), video-referencias (marca real e um som por ação), conteudo-video (regras de vídeo) e better-portuguese (todo texto da tela). Se as skills do HyperFrames estiverem instaladas, leia também as de composição e animação antes de escrever o HTML.\n\n4. A identidade vem da minha marca, de verdade: abra o site, tire o logo em SVG, as cores do CSS e as fontes, e anote cada valor com a fonte num BRAND.md do projeto. Regra deste estilo: a marca não pode apagar o contraste do showreel. Use a versão mais saturada de cada cor nos fundos, uma grotesca bem pesada nas palavras de impacto (Archivo 900 larga, se a marca não tiver uma) e a fonte de texto da marca só na assinatura e nos subtítulos. Se a fonte da marca for paga, procure a equivalente livre e me diga qual escolheu.\n\n5. Antes de qualquer código, meça a música com o beat_this e me mostre o mapa: o andamento, a lista de batidas em tempo de vídeo, onde cai o drop e um conceito por compasso (por exemplo: identidade → o produto → como funciona → para quem é → um número real → palavras de impacto → assinatura). Para cada compasso, diga qual forma vem da cena anterior e qual forma passa para a seguinte, como na linha da referência (ponto → símbolo → letras → pontos → trilhos → …). Nenhuma cena pode começar do zero, e não pode haver tela vazia nem forma parada esperando.\n\n6. Construa reaproveitando o esqueleto do index.html: um render(t) chamado pelo timeline do GSAP, nada de Math.random (use hash com semente), cortes secos presos ao quadro com snap(), a mola padrão (passa ~12% e assenta em ~0,6 s), morph com só 35% do overshoot na forma, íris com inOut cúbico, câmera com deriva, empurrão lento e coice nos drops, HUD de ficha técnica com o nome da minha marca e respiro de meio segundo antes da assinatura, com algo pequeno ainda vivo na tela. Troque as cenas, os textos, as cores, as fontes, o símbolo e a música.\n\n7. Me mostre 4 quadros de teste (abertura, meio, drop e assinatura) e a folha de contato a 4 qps antes do render final. Em cada movimento, pergunte: está humano ou robotizado? E compare no tamanho do celular: o vídeo grita o bastante?\n\n8. Som em paralelo, num subagente: um efeito para cada elemento que entra ou sai, posicionado em evento − pico do arquivo, a mesma família de som para a mesma ação, um tonal no tom da música no drop e na assinatura. Sem narração, deixe a música em ~0,5 e os efeitos uns 6 dB acima do que usaria com voz; confira a faixa só de efeitos antes de normalizar. Final com loudnorm em duas passagens a −14 LUFS.\n\n9. Render a 240 qps, junte em 60 qps com tmix de 4 quadros e rode o detector de quadro vazio e de salto (os scripts estão em projeto/revisao/). Todo salto que sobrar tem de ser um corte de propósito. Entregue o vídeo, a ficha do projeto atualizada e uma anotação em anotacoes/.",
|
|
100
|
+
"campos": [
|
|
101
|
+
"ASSINATURA",
|
|
102
|
+
"CONCEITOS",
|
|
103
|
+
"DURACAO",
|
|
104
|
+
"FORMATO",
|
|
105
|
+
"MARCA",
|
|
106
|
+
"MUSICA",
|
|
107
|
+
"O_QUE_FAZ",
|
|
108
|
+
"SITE"
|
|
109
|
+
],
|
|
110
|
+
"fonte": {
|
|
111
|
+
"nome": "Clube do Motion",
|
|
112
|
+
"url": "https://clubedomotion.com/projeto/?id=motion-designer",
|
|
113
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-motion-pacote",
|
|
3
|
+
"titulo": "Comenta Motion",
|
|
4
|
+
"categoria": "narrado",
|
|
5
|
+
"resumo": "Reel narrado de 43,2 s que oferece, de graça, o projeto completo de outro vídeo (o da clínica de estética) a quem comentar \"Motion\". Feito do zero em estilo Apple light: fundo claro com manchas pastel em deriva, cartões brancos de sombra larga, SF Pro e cada elemento entrando na palavra em que é dito. Não tem After Effects nem editor: um script em Python desenha cada quadro com Pillow e OpenCV a partir dos tempos das palavras da narração e entrega tudo ao ffmpeg. Voz clonada na ElevenLabs. Publicado no Instagram em 12/10/2026. Feito pelo Clube do Motion.",
|
|
6
|
+
"indicado": "criador ou empresa que quer oferecer um material (projeto, guia, modelo, desconto) em troca de um comentário e mostrar na tela o que a pessoa vai receber; chamada para automação de DM.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"Apple light",
|
|
9
|
+
"narrado",
|
|
10
|
+
"cartões brancos",
|
|
11
|
+
"legenda viva",
|
|
12
|
+
"cada elemento na palavra dita",
|
|
13
|
+
"prova na tela",
|
|
14
|
+
"chamada para comentar"
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "1080×1920, 30 qps, 9:16, H.264 (CRF 16) com cor BT.709 e áudio AAC de 256 kbps",
|
|
18
|
+
"duracao": "43,2 s (1.297 quadros): 42,8 s de narração e 0,5 s de respiro no fim",
|
|
19
|
+
"motor": "html",
|
|
20
|
+
"voz": "voz clonada na ElevenLabs (Eleven v4), 4 parágrafos, velocidade 1,12",
|
|
21
|
+
"musica": "ver o guia de estilo",
|
|
22
|
+
"fontes": "ver o guia de estilo"
|
|
23
|
+
},
|
|
24
|
+
"ferramentas": [
|
|
25
|
+
"Claude Code",
|
|
26
|
+
"ElevenLabs"
|
|
27
|
+
],
|
|
28
|
+
"ficha_tecnica": {
|
|
29
|
+
"Duração": "43,2 s (1.297 quadros): 42,8 s de narração e 0,5 s de respiro no fim",
|
|
30
|
+
"Formato": "1080×1920, 30 qps, 9:16, H.264 (CRF 16) com cor BT.709 e áudio AAC de 256 kbps",
|
|
31
|
+
"Voz": "voz clonada na ElevenLabs (Eleven v4), 4 parágrafos, velocidade 1,12",
|
|
32
|
+
"Ferramenta": "Python (Pillow, OpenCV, NumPy) quadro a quadro, com ffmpeg codificando direto do script",
|
|
33
|
+
"Trilha": "instrumental de \"Noticed\" (Lil Mosey, 73 BPM), separado no Demucs, 15 dB abaixo da voz",
|
|
34
|
+
"Som": "38 eventos de efeito da biblioteca nivelada, 26 arquivos diferentes; final em −14 LUFS",
|
|
35
|
+
"Chamada": "\"Comenta Motion\" para receber o link do projeto na DM",
|
|
36
|
+
"Publicado": "Instagram, 12/10/2026: https://www.instagram.com/reel/DeYKve3mevI/"
|
|
37
|
+
},
|
|
38
|
+
"etapas": [
|
|
39
|
+
{
|
|
40
|
+
"titulo": "O roteiro e a voz",
|
|
41
|
+
"texto": "**Resumo:** a fala do Reel exatamente como foi enviada à voz clonada (4 parágrafos), como ela foi feita e as cenas por tempo. Gancho: \"Muita gente viu esse vídeo de clínica que tá mostrando na tela agora, e tão me pedindo prompt que foi usado pra poder fazer esse vídeo.\".\n\n## Como a fala foi feita\n\n- **Texto do criador**, escrito para este Reel. A versão para a voz só mudou a pontuação e a grafia do jeito que se fala (\"tá\", \"tão\", \"pra\").\n\n- **Voz:** ElevenLabs, Eleven v4, voz clonada, um parágrafo por arquivo (estabilidade 0,5, similaridade 0,75, velocidade 1,12), conferida no faster-whisper.\n\n- **Montagem:** os quatro parágrafos juntados em `narracao.wav`, com 42,8 s; o vídeo soma 0,5 s de respiro no fim.\n\n- **Na tela**, a legenda escreve \"Motion\" com maiúscula e numa pílula preta, e mantém \"Google Drive\", \"After Effects\" e \"open source\" no mesmo bloco.\n\n## A fala, verbatim (texto enviado à voz)\n\n- Muita gente viu esse vídeo de clínica que tá mostrando na tela agora, e tão me pedindo prompt que foi usado pra poder fazer esse vídeo. Então eu resolvi pegar todo esse projeto e colocar ele no Google Drive, pra você poder baixar de graça.\n\n- Ele já vai ir com todas as imagens, os ícones, referências e etc. que eu usei pra criar o vídeo, e o projeto no After Effects. Ah, e você também vai conseguir editar diretamente no After Effects open source, beleza?\n\n- E como bônus, também vou deixar as minhas skills, que eu mesmo criei e melhorei pra poder fazer esse estilo de vídeo, até que ficasse do jeito que eu queria. E vou disponibilizar ele de graça pra você.\n\n- Comenta Motion aqui abaixo, que eu te mando uma DM com o projeto no Google Drive pra você poder baixar!\n\n## Estrutura\n\n | \n\n | Parte\n | Função\n | Tempo (s)\n\n | Pedido do público\n | o vídeo de origem e os comentários que pediram o prompt\n | 0,0–7,0\n\n | Oferta\n | o projeto vai para o Drive, de graça\n | 7,0–13,9\n\n | O que vem dentro\n | imagens, ícones, referências, projeto e o editor de código aberto\n | 14,1–25,9\n\n | Bônus\n | as skills, repetindo o \"de graça\"\n | 26,1–36,8\n\n | Chamada\n | comentar \"Motion\" e receber a DM com o link\n | 36,9–43,2\n\n## Cenas por tempo\n\nOs tempos são os da narração, que começa no quadro 0. Cada cena começa na palavra que a dispara e vai até a saída dos elementos dela.\n\n | \n\n | #\n | Tempo (s)\n | Fala\n | Tela\n\n | 1\n | 0,0–1,0\n | \"Muita gente viu…\"\n | a pílula \"2.614 visualizações\" nasce no centro com mola\n\n | 2\n | 0,96–3,5\n | \"…esse vídeo de clínica que tá mostrando na tela agora,\"\n | em \"esse\", o celular sobe com o vídeo da clínica tocando na tela; a pílula desce para baixo dele\n\n | 3\n | 3,5–7,0\n | \"e tão me pedindo prompt que foi usado pra poder fazer esse vídeo.\"\n | o celular sobe e encolhe para 74%; quatro comentários reais pipocam embaixo, um em \"pedindo\", \"prompt\", \"foi\" e \"pra\": \"Prompt\", \"Massa! Consegue o prompt brother?\", \"Consegue me mandar o prompt? Ficou top\", \"Can you send the prompt?\"\n\n | 4\n | 7,0–8,1\n | \"Então eu resolvi pegar…\"\n | os comentários descem e somem; o celular desce, encolhe para 62% e some em \"pegar\"\n\n | 5\n | 8,3–10,1\n | \"…todo esse projeto e colocar ele no\"\n | a pasta amarela \"motion-claude-code\" nasce com mola\n\n | 6\n | 10,1–13,9\n | \"Google Drive, pra você poder baixar de graça.\"\n | o cartão do Google Drive sobe atrás e a pasta encolhe para dentro dele; em \"graça\", o carimbo verde \"GRÁTIS\" chega inclinado\n\n | 7\n | 14,1–15,0\n | \"Ele já vai ir com todas as imagens,\"\n | seis imagens do projeto em grade 3×2, em cascata\n\n | 8\n | 15,0–15,6\n | \"os ícones,\"\n | seis ícones 3D sobem em fila (WhatsApp, agenda, robô, moedas, relógio, brilhos)\n\n | 9\n | 15,6–18,7\n | \"referências e etc. que eu usei pra criar o vídeo,\"\n | três prints de apps entram pela direita em leque\n\n | 10\n | 18,8–22,1\n | \"e o projeto no After Effects. Ah, e você também vai conseguir\"\n | a grade encolhe e o painel da linha do tempo sobe: \"clinica-v2.aep\", \"37 composições · 1080×1920 · 30 qps\" e oito composições reais; a agulha vermelha corre\n\n | 11\n | 22,1–25,9\n | \"editar diretamente no After Effects open source, beleza?\"\n | o painel sai para a esquerda e a imagem oficial do EffectCraft entra pela direita; em \"open\", a pílula \"EffectCraft · After Effects open source\"\n\n | 12\n | 26,3–28,0\n | \"E como bônus,\"\n | a pílula \"BÔNUS\" com estrela 3D nasce no alto, com sino\n\n | 13\n | 28,0–33,7\n | \"também vou deixar as minhas skills, que eu mesmo criei e melhorei… até que ficasse do jeito que eu queria.\"\n | três cartões de arquivo sobem (`SKILL.md`, `kit.jsx`, `PROMPT.md`); os selos argila trocam no mesmo lugar: \"criei\", \"melhorei\", \"do jeito que eu queria\"\n\n | 14\n | 34,1–36,8\n | \"E vou disponibilizar ele de graça pra você.\"\n | em \"graça\", o segundo carimbo \"GRÁTIS\"\n\n | 15\n | 36,9–37,6\n | \"Comenta Motion…\"\n | o bônus sai para cima; a caixa de comentário sobe com o avatar e \"Adicione um comentário...\"; em \"Motion\", a palavra é digitada letra a letra\n\n | 16\n | 37,6–39,2\n | \"…aqui abaixo, que eu te mando\"\n | a pílula preta grande \"Motion\" nasce no centro\n\n | 17\n | 39,2–43,2\n | \"uma DM com o projeto no Google Drive pra você poder baixar!\"\n | em \"DM\", a notificação desce do alto (\"te mandou o projeto no Google Drive\") e \"Motion\" desce um pouco e encolhe; em \"Google\", a pílula \"motion-claude-code · Google Drive\"; nos últimos 12 quadros, a imagem clareia\n\n## Momentos para a trilha\n\n- 0,0 s: o instrumental entra em 0,6 s, por baixo da primeira palavra.\n\n- 0,9 s: whoosh e pop com o celular.\n\n- 11,9 s e 35,7 s: carimbo nos dois \"GRÁTIS\".\n\n- 26,3 s: sino no \"BÔNUS\".\n\n- 37,4 a 37,8 s: uma tecla por letra de \"Motion\".\n\n- 39,1 s: notificação da DM.\n\n- 41,6 a 43,2 s: a música sai em 1,6 s e o mix inteiro fecha em 0,6 s.\n\nA lista completa dos 38 efeitos, com tempo, arquivo e volume, está em `projeto/dados/sfx.json`."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"titulo": "A identidade visual",
|
|
45
|
+
"texto": "**Resumo:** Apple light desenhado em Python: fundo cinza-claro com três manchas pastel que atravessam a tela devagar, cartões brancos de cantos grandes e sombra larga, SF Pro Display e uma cor para cada papel (preto no texto, argila no bônus, verde no \"GRÁTIS\"). O movimento usa mola na entrada, saída acelerada, a curva (.86, 0, .07, 1) nos deslocamentos e flutuação em tudo. Números tirados do `render_narrado.py` e do `mix.py`.\n\n## Palco e fundo\n\n | \n\n | Peça\n | Como é\n\n | Tela\n | 1080×1920, 30 qps, fundo `#F4F4F7`\n\n | Manchas\n | três gradientes gaussianos: pêssego `#FFDBCC` (raio 520, força 55%), lavanda `#DBE0FF` (480, 50%) e menta `#E6F5DB` (420, 45%)\n\n | Deriva das manchas\n | centro em `540 + 330·sen(0,13t + fase)` na horizontal e `960 + 520·cos(0,10t + 1,3·fase)` na vertical; uma volta leva de 48 a 63 s, então o desenho do fundo nunca se repete dentro do vídeo\n\n | Título fixo\n | \"Projeto + skill desse vídeo\" / \"de graça pra você\", SF Pro Display Bold 58 px, preto, em y = 130, com halo branco desfocado (16 px) para ler sobre qualquer mancha\n\n | Fim\n | nos últimos 12 quadros, a imagem clareia até 97% de branco\n\n## Cores e fonte\n\n | \n\n | Token\n | Valor\n | Papel\n\n | Preto\n | `#1D1D1F`\n | texto, pílula \"Motion\", avatar do comentário\n\n | Cinza\n | `#6E6E73`\n | textos de apoio (subtítulo do Drive, placeholder do comentário)\n\n | Claro\n | `#E5E5EA`\n | linhas divisórias e linhas falsas de texto nos cartões de arquivo\n\n | Verde\n | `#34C759`\n | só o carimbo \"GRÁTIS\"\n\n | Argila\n | `#D97757`\n | os selos do bônus (\"criei\", \"melhorei\", \"do jeito que eu queria\")\n\n | Cartões\n | branco, cantos de 24 a 75 px\n | sombra a 18% (25% a 30% nos maiores), desfoque de 24 px, 16 px abaixo\n\n- **Fonte:** SF Pro Display. Bold nos títulos, nas pílulas e no \"Motion\"; Semibold na legenda e nos rótulos; Medium nos textos de apoio e nos comentários.\n\n- **Tamanhos:** pílula \"Motion\" com 120 px, \"BÔNUS\" com 64 px, \"GRÁTIS\" com 52 px, legenda com 54 px (60 px no \"Motion\"), comentários com 34 px.\n\n## Peças desenhadas\n\n- **Celular:** moldura escura `#101012` de 498×864 com cantos de 70 px e tela de 470×836 com cantos de 56 px, onde o vídeo de origem toca reescalado.\n\n- **Pílula de visualizações:** \"2.614 visualizações\", branca, 92 px de altura.\n\n- **Comentários:** cartões brancos em pílula com bolinha colorida e a inicial (laranja, azul, roxo e verde da Apple), sem nome de usuário.\n\n- **Pasta:** pasta amarela (`#FFC446` e `#FFD264`) desenhada em vetores, com o nome \"motion-claude-code\".\n\n- **Cartão do Drive:** 900×760, ícone, \"Google Drive\" em Bold 46 px e \"pasta compartilhada · qualquer pessoa com o link\".\n\n- **Painel da linha do tempo:** cartão escuro `#1E1E28` de 940×820 com \"clinica-v2.aep\", \"37 composições · 1080×1920 · 30 qps\" e oito faixas com o nome e a cor de cada composição real; uma agulha vermelha `#FF3B30` corre a 160 px/s e volta a cada 500 px.\n\n- **Cartões de arquivo:** 300×380, ícone do Claude, quatro linhas falsas de texto e o nome do arquivo (`SKILL.md`, `kit.jsx`, `PROMPT.md`), inclinados −5°, 0° e +5°.\n\n- **Caixa de comentário:** pílula de 900×150 com avatar \"J\" e \"Adicione um comentário...\", que vira \"Motion\" letra a letra.\n\n- **Notificação:** cartão `#FAFAFC` de 960×170 com ícone rosa `#D62976` de mensagem, nome do perfil e \"te mandou o projeto no Google Drive\".\n\n## Movimento\n\n | \n\n | Peça\n | Números\n\n | Mola de entrada\n | `1 − e^(−6x)·cos(9x)` em 0,6 s; opacidade de 0 a 1 em 0,16 s\n\n | Tipos de entrada\n | `pop` (escala de 82% a 100%), `sobe` (90 px), `desce` (140 px), `direita` (260 px)\n\n | Saída\n | 0,4 s com aceleração quadrática: `fade` (encolhe 6%), `encolhe` (70%), `desce` e `sobe` (160 px), `esquerda` (700 px)\n\n | Deslocamentos\n | quadros-chave com a curva `cubic-bezier(.86, 0, .07, 1)`, de 0,5 a 0,7 s\n\n | Cascatas\n | imagens a cada 0,07 s, ícones a cada 0,06 s, prints e cartões de arquivo a cada 0,1 s, letras de \"Motion\" a cada 0,07 s\n\n | Flutuação\n | todo elemento oscila 3 px na vertical (`sen(1,1t + fase)`) e 1,8 px na horizontal, com fase aleatória; os ícones flutuam 5 px\n\n | Câmera viva\n | escala `1 + 0,012·sen(0,35t)`, deslocamento de ±8 px na horizontal e ±10 px na vertical, sempre em movimento\n\n## Legenda\n\n- Blocos de até 26 caracteres, centralizados em y = 1640, com halo branco desfocado.\n\n- Cada palavra entra com desfoque de 10 px que zera em 7 quadros (curva cúbica de saída) e some em 5 quadros quando o bloco termina.\n\n- Duas palavras seguidas nunca entram no mesmo quadro: no mínimo 3 quadros entre elas.\n\n- \"Motion\" ganha uma pílula preta de cantos de 32 px, com texto branco em Bold 60 px.\n\n## Transições\n\nCada troca nasce de uma palavra: o celular sobe e encolhe em \"e tão me pedindo\" para os comentários caberem embaixo; em \"Então\", tudo desce e o celular encolhe até sumir; a pasta nasce em \"pegar\" e encolhe para dentro do cartão do Drive em \"Google\"; a grade de imagens encolhe em \"projeto\" enquanto o painel da linha do tempo sobe; o painel sai para a esquerda em \"editar\" e a imagem do EffectCraft entra pela direita; o bônus sai para cima em \"Comenta\", quando a caixa de comentário sobe.\n\n## Trilha e voz\n\n | \n\n | Item\n | Valor\n\n | Voz\n | ElevenLabs, Eleven v4, voz clonada, estabilidade 0,5, similaridade 0,75, velocidade 1,12; quatro parágrafos juntados em 42,8 s\n\n | Tratamento\n | passa-altas de 70 Hz e compressor (limiar −20 dB, razão 2,5:1, ataque de 10 ms, soltura de 150 ms), voz a −16 LUFS\n\n | Música\n | instrumental de \"Noticed\" (Lil Mosey, 73 BPM) separado no Demucs, a −31 LUFS (15 dB abaixo da voz), entrada de 0,6 s e saída de 1,6 s\n\n | Final\n | limitador, `loudnorm` em duas passagens para −14 LUFS e pico de −1 dBTP, com 0,6 s de saída no fim\n\n## Sound design\n\nUm efeito por elemento, com o pico do arquivo no instante do evento (`início = evento − pico`) e o volume do evento multiplicado por 0,45 na mix.\n\n | \n\n | Família\n | Quando\n\n | whoosh curto\n | celular entrando, EffectCraft entrando, caixa de comentário subindo\n\n | whoosh grave e longo\n | cartão do Drive e painel da linha do tempo\n\n | pop\n | pílulas, grade de imagens (um a cada dois quadros da cascata), \"Motion\", link\n\n | notificação\n | os quatro comentários (alternando dois arquivos) e a DM chegando\n\n | papel\n | a pasta deslizando, os prints chegando, os cartões de arquivo virando\n\n | clique\n | os ícones em cascata e cada selo argila\n\n | carimbo\n | os dois \"GRÁTIS\"\n\n | sino\n | o \"BÔNUS\"\n\n | tecla\n | cada letra de \"Motion\" (cinco arquivos em rodízio)\n\n## O que é \"humano\" neste vídeo\n\n- Nada fica parado: o fundo, os elementos e a câmera se movem o tempo todo, mesmo quando a fala não pede nada.\n\n- Os carimbos chegam inclinados (−8° e −6°) e os prints em leque (−6°, 2° e 8°).\n\n- A agulha da linha do tempo corre enquanto a fala explica o projeto.\n\n- \"Motion\" é digitado letra a letra, com um som de tecla para cada uma."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"titulo": "A montagem",
|
|
49
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `scripts/render_narrado.py`\n | lê `words.json` e posiciona tudo com `T(\"palavra\", n)`, que devolve o início da n-ésima ocorrência da palavra na fala. Cada elemento é um `E(sprite, x, y, entrada, saída, ent=…, sai=…, kf=…)`: entra com mola, flutua, anda por quadros-chave com a curva da casa e sai acelerando. Cada `som(t, nome, ganho)` anota um efeito no mesmo instante e, no início do laço, a lista é gravada em `sfx.json`. O vídeo da clínica é lido pelo ffmpeg e colado na tela do celular quadro a quadro; o resultado sai em H.264 já com `mix_final.wav`\n\n | `scripts/blocos.py`\n | parte as palavras em blocos de até 26 caracteres para a legenda: corta em pausa maior que 0,28 s e no fim de frase, mantém \"Google Drive\", \"After Effects\" e \"open source\" juntos e escreve \"Motion\" com maiúscula\n\n | `scripts/mix.py`\n | trata a voz (passa-altas de 70 Hz e compressor leve) e leva a −16 LUFS, põe o instrumental a −31 LUFS, coloca cada efeito com o pico no instante do evento e normaliza o mix em duas passagens para −14 LUFS, com pico de −1 dBTP\n\n | `audio/gerar_voz.py`\n | gera um MP3 por parágrafo na ElevenLabs (Eleven v4, estabilidade 0,5, similaridade 0,75, velocidade 1,12) e pula o que já existe\n\n- **Instale:** Python com numpy, opencv-python, Pillow, soundfile e pyloudnorm, mais o ffmpeg no PATH.\n\n- **Monte a pasta de trabalho** (ex.: `trabalho/`): copie para ela os três arquivos de `projeto/dados/`, a pasta `projeto/img/` e `audio/narracao.wav` e `audio/mix_final.wav`. O script espera tudo na mesma pasta.\n\n- **Fontes:** o vídeo usa SF Pro Display (Bold, Semibold, Medium e Regular). Instale e troque a linha `FD` do `render_narrado.py` pela pasta onde ficaram os arquivos `.otf`.\n\n- **Vídeo do celular:** na linha `CLINICA`, ponha o caminho de `projeto/clinica-recuperacao-v2.mp4` ou do vídeo que você quer mostrar.\n\n- **Arquivos de terceiros:** ponha em `trabalho/img/` imagens suas com os nomes que o `fora-do-pacote.md` lista (`drive.png`, `ae.png`, `claude.png`, `ec-hero.png`, `ec-icon.png`, os três prints e `arco-argila-listrado.jpg`). Sem eles, o script para com erro de arquivo.\n\n- **Prévia:** `python projeto/scripts/render_narrado.py trabalho previa.mp4 6 14` renderiza 6 s a partir de 14 s. O vídeo inteiro: `python projeto/scripts/render_narrado.py trabalho final.mp4`.\n\n- **Mudou um tempo ou um efeito?** Rode o render uma vez (ele regrava `sfx.json`), depois o mix e o render de novo. Para o mix, ponha o instrumental da sua música em `trabalho/mus/inst48k.wav`, troque `LIB` no `mix.py` pela pasta `audio/sfx/nivelados` e rode `python projeto/scripts/mix.py trabalho`.\n\n- **Legenda nova:** com outra narração, gere o `words.json` no faster-whisper com tempo por palavra (o formato é uma lista de trechos com `words`, cada palavra com `w`, `s` e `e`) e rode `python ../projeto/scripts/blocos.py` de dentro da pasta de trabalho.\n\n**Pegadinhas:** `T(\"e\", 1)` e `T(\"projeto\", 2)` contam ocorrências, então trocar uma frase da fala muda o número da ocorrência; confira com uma prévia curta. O render só usa o áudio que já existe em `mix_final.wav`, por isso o mix vem antes do render final. Elementos que saem antes de outro entrar no mesmo lugar dependem dos tempos das palavras: com uma fala mais rápida, aumente o espaço entre elas."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"titulo": "As decisões de direção",
|
|
53
|
+
"texto": "- **Nada aparece antes de ser dito.** Cada cartão, pílula e ícone tem o tempo de uma palavra da narração; o efeito sonoro cai no mesmo instante.\n\n- **A oferta vira prova.** Em vez de falar do pacote, o vídeo mostra o que está dentro: o vídeo de origem tocando, as imagens, os ícones, as referências, a linha do tempo com as composições reais e os arquivos das skills.\n\n- **O pedido do público abre o vídeo.** Comentários reais que pediram o prompt pipocam em volta do celular, sem os nomes de usuário, e o número de visualizações do vídeo de origem aparece junto com a primeira palavra.\n\n- **Grátis é um carimbo.** O selo verde inclinado aparece duas vezes, em \"de graça\" e na repetição do fim do bônus.\n\n- **A chamada é encenada.** A caixa de comentário sobe, \"Motion\" é digitado letra a letra com som de tecla e a notificação da DM desce com o link: a pessoa vê o que vai acontecer quando comentar.\n\n- **Uma cor por papel.** Preto Apple no texto e na pílula \"Motion\", argila nos selos do bônus (\"criei\", \"melhorei\", \"do jeito que eu queria\") e verde só no \"GRÁTIS\".\n\n- **Nada para morto.** Três manchas pastel atravessam o fundo devagar, todo elemento flutua alguns pixels e a câmera deriva e respira sem parar.\n\n- **Legenda viva.** Cada palavra entra com desfoque que se desfaz em 7 quadros, e \"Motion\" ganha uma pílula preta própria.\n\n- **Revisão com olho externo.** Uma IA assistiu com áudio e deu 6,8; a abertura vazia, os efeitos repetidos e o contraste do título foram corrigidos antes de publicar.\n\nDetalhes de cores, curvas e som: estilo.md. Fala e cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo método com a sua oferta: PROMPT.md."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"titulo": "As versões até o final",
|
|
57
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | v1\n | a mesma oferta montada sobre uma gravação de tela com a fala gravada no celular, editada em 57 s\n\n | v2\n | as mesmas falas regeradas na voz clonada da ElevenLabs, porque a gravação tinha eco, e realinhadas palavra por palavra (53,8 s)\n\n | **v3**\n | narrado feito do zero, com roteiro novo e motion por código em Apple light; publicado em 12/10/2026"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"pacote": [
|
|
61
|
+
{
|
|
62
|
+
"pasta": "projeto/",
|
|
63
|
+
"conteudo": "`scripts/render_narrado.py` (o Reel inteiro), `scripts/blocos.py` (blocos da legenda), `scripts/mix.py` (mix), `dados/words.json` (tempo de cada palavra), `dados/legendas.json` (35 blocos de legenda), `dados/sfx.json` (os 38 efeitos), `img/` (imagens do projeto da clínica, cinco ícones 3D, duas figuras 3D de emoji e o painel das direções) e `clinica-recuperacao-v2.mp4`, o vídeo que toca dentro do celular"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"pasta": "audio/",
|
|
67
|
+
"conteudo": "`narracao.wav` e `narracao.mp3`, os quatro parágrafos (`p01.mp3` a `p04.mp3`, com o texto e o ajuste de voz em `p01.json` a `p04.json`), `gerar_voz.py`, o mix final (`mix_final.wav`) e `sfx/nivelados/`, com os 26 efeitos usados"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"pasta": "referencias/",
|
|
71
|
+
"conteudo": "`links.md` e `fora-do-pacote.md`"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"pasta": "render.mp4",
|
|
75
|
+
"conteudo": "o Reel final, como foi publicado"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"pasta": "scripts/render_narrado.py",
|
|
79
|
+
"conteudo": "lê `words.json` e posiciona tudo com `T(\"palavra\", n)`, que devolve o início da n-ésima ocorrência da palavra na fala. Cada elemento é um `E(sprite, x, y, entrada, saída, ent=…, sai=…, kf=…)`: entra com mola, flutua, anda por quadros-chave com a curva da casa e sai acelerando. Cada `som(t, nome, ganho)` anota um efeito no mesmo instante e, no início do laço, a lista é gravada em `sfx.json`. O vídeo da clínica é lido pelo ffmpeg e colado na tela do celular quadro a quadro; o resultado sai em H.264 já com `mix_final.wav`"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"pasta": "scripts/blocos.py",
|
|
83
|
+
"conteudo": "parte as palavras em blocos de até 26 caracteres para a legenda: corta em pausa maior que 0,28 s e no fim de frase, mantém \"Google Drive\", \"After Effects\" e \"open source\" juntos e escreve \"Motion\" com maiúscula"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"pasta": "scripts/mix.py",
|
|
87
|
+
"conteudo": "trata a voz (passa-altas de 70 Hz e compressor leve) e leva a −16 LUFS, põe o instrumental a −31 LUFS, coloca cada efeito com o pico no instante do evento e normaliza o mix em duas passagens para −14 LUFS, com pico de −1 dBTP"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"pasta": "audio/gerar_voz.py",
|
|
91
|
+
"conteudo": "gera um MP3 por parágrafo na ElevenLabs (Eleven v4, estabilidade 0,5, similaridade 0,75, velocidade 1,12) e pula o que já existe"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"prompt": "Quero um Reel narrado no mesmo método do projeto \"Projeto de graça na DM\", que está em 07-videos/projetos/motion-pacote/, com a minha oferta.\n\nO que eu vou oferecer: {{MATERIAL}} (ex.: o projeto de um vídeo, um guia, um modelo, um cupom)\nPor que as pessoas querem: {{PROVA}} (ex.: comentários pedindo, visualizações de um post, resultado de um cliente)\nO que tem dentro, item por item: {{ITENS}}\nBônus (opcional): {{BONUS}}\nPalavra que a pessoa comenta: {{PALAVRA}}\nOnde a pessoa recebe: {{ENTREGA}} (DM, link na bio, e-mail)\nVídeo ou imagem que abre o Reel: {{ABERTURA}}\nMúsica: {{MUSICA}} (a referência usou o instrumental de um rap lento, 73 BPM, 15 dB abaixo da voz)\nDuração aproximada: {{DURACAO}} (a referência tem 43 s) · Formato: {{FORMATO}} (a referência é 1080×1920, 30 qps)\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, nesta ordem: LEIA-ME.md, estilo.md e roteiro.md. Depois abra projeto/scripts/render_narrado.py e veja como funcionam T(\"palavra\", n), a classe E (entrada, saída, quadros-chave e flutuação), som(), card(), pilula(), o fundo com manchas, a câmera viva e a legenda por palavra. Leia também blocos.py, mix.py e audio/gerar_voz.py. Me explique em poucas linhas o que vai reaproveitar.\n\n2. O roteiro: a fala é minha. Faça só a estrutura em roteiro.md, no molde da referência: pedido do público, oferta, o que vem dentro, bônus e chamada, com o que aparece na tela em cada parte. Me dê 3 opções de gancho e espere eu escrever. Guarde o meu texto sem mudar e faça ao lado a versão para a voz, só com pontuação e grafia de como se fala.\n\n3. Narração na minha voz clonada da ElevenLabs, um parágrafo por arquivo, com o gerar_voz.py. Junte numa narracao.wav, gere o words.json no faster-whisper com tempo por palavra e confira se a transcrição bate com o texto. Me mande o áudio e espere eu aprovar antes de animar.\n\n4. Material real antes de desenhar: o vídeo ou a imagem da abertura, prints dos comentários ou números que provam o pedido (sem nome de usuário), e arquivos, imagens e ícones de verdade de cada item do pacote. Logo de marca, só o oficial. Liste o que é de terceiros.\n\n5. Para cada frase, escreva qual palavra dispara qual elemento e qual som. Regra: nada aparece antes de ser dito, cada elemento sai antes de outro ocupar o mesmo lugar e a troca de grupo acontece numa palavra de virada (\"Então\", \"Ah\", \"E como bônus\", \"Comenta\").\n\n6. Construa copiando o render_narrado.py, sem editar o original. Mantenha o fundo #F4F4F7 com três manchas pastel em deriva, os cartões brancos de sombra larga, a mola de entrada, a saída acelerada, a curva (.86, 0, .07, 1) nos deslocamentos, a flutuação em tudo, a câmera que nunca para e a legenda com desfoque por palavra. Troque os elementos, os textos, as imagens e as cores de papel: uma cor para o texto, uma para o destaque do bônus e uma só para o \"grátis\" (ou o equivalente da sua oferta).\n\n7. A chamada é encenada: a caixa de comentário sobe, a palavra é digitada letra a letra com som de tecla, a palavra cresce numa pílula preta e a notificação da entrega desce do alto com o nome do material.\n\n8. Som: um efeito por elemento, com o pico do arquivo no instante do evento, das famílias pop, notificação, clique, papel, carimbo, sino, tecla e whoosh, sem repetir o mesmo arquivo em eventos seguidos. Rode o render uma vez para gerar o sfx.json, depois o mix.py (voz a −16 LUFS, música 15 dB abaixo, final a −14 LUFS com pico de −1 dBTP) e o render final.\n\n9. Revise antes de entregar: prévias de 6 s nos trechos de troca, folha de contato a 1 qps do vídeo inteiro e uma IA que assista com áudio, perguntando se a abertura tem algo na tela desde o primeiro quadro, se algum efeito se repete, se o título fixo lê sobre o fundo e se algum elemento aparece antes da palavra. Corrija e me entregue o MP4, a legenda do post e a ficha do projeto.",
|
|
95
|
+
"campos": [
|
|
96
|
+
"ABERTURA",
|
|
97
|
+
"BONUS",
|
|
98
|
+
"DURACAO",
|
|
99
|
+
"ENTREGA",
|
|
100
|
+
"FORMATO",
|
|
101
|
+
"ITENS",
|
|
102
|
+
"MATERIAL",
|
|
103
|
+
"MUSICA",
|
|
104
|
+
"PALAVRA",
|
|
105
|
+
"PROVA"
|
|
106
|
+
],
|
|
107
|
+
"fonte": {
|
|
108
|
+
"nome": "Clube do Motion",
|
|
109
|
+
"url": "https://clubedomotion.com/projeto/?id=motion-pacote",
|
|
110
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-movimento",
|
|
3
|
+
"titulo": "Eu coloco tudo em movimento",
|
|
4
|
+
"categoria": "elementos",
|
|
5
|
+
"resumo": "showreel de 16,9 s, 16:9, em que cada cena executa um princípio da animação e uma nota escrita à mão aponta para ele no instante em que acontece: a bola quica com gravidade de verdade (\"achata!\", \"estica\"), a frase \"EU COLOCO TUDO EM MOVIMENTO.\" entra letra a letra, QUICA, ESTICA, GIRA e ESTALA batem uma por tempo, o gráfico mostra que \"linear = robótico\", a bola atravessa um campo de partículas com física e, na antecipação, as partículas explodem e formam o \"CLAUDE.\". Tipografia condensada pesada em preto e branco puros, laranja vivo na ação e azul elétrico nas notas. É uma **recriação** do \"Motion designer showreel\", de @himanshutwtxs, publicado no prompt-motion.com (prompt-motion.com/himanshutwtxs-5f4b43) e feito numa tentativa só com o prompt genérico de showreel. A nossa versão traduz tudo para o português, veste a marca do Claude, troca as partículas sem inércia por uma simulação com física e a trilha sintética por música real com 98 efeitos.",
|
|
6
|
+
"indicado": "showreel de designer ou estúdio, vídeo-aula curta sobre um processo técnico e abertura de curso ou tutorial.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"tipografia cinética",
|
|
9
|
+
"anotações à mão",
|
|
10
|
+
"partículas com física",
|
|
11
|
+
"objeto protagonista",
|
|
12
|
+
"contraste alto",
|
|
13
|
+
"interface de editor",
|
|
14
|
+
"corte na batida."
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "1920×1080, 60 qps, 16:9, cor BT.709",
|
|
18
|
+
"duracao": "16,9 s (9 compassos de ~1,88 s)",
|
|
19
|
+
"motor": "html",
|
|
20
|
+
"voz": "ver o guia de estilo",
|
|
21
|
+
"musica": "ver o guia de estilo",
|
|
22
|
+
"fontes": "ver o guia de estilo"
|
|
23
|
+
},
|
|
24
|
+
"ferramentas": [
|
|
25
|
+
"Claude Code"
|
|
26
|
+
],
|
|
27
|
+
"ficha_tecnica": {
|
|
28
|
+
"Duração": "16,9 s (9 compassos de ~1,88 s)",
|
|
29
|
+
"Formato": "1920×1080, 60 qps, 16:9, cor BT.709",
|
|
30
|
+
"Narração": "nenhuma; o texto e as notas à mão estão na tela",
|
|
31
|
+
"Ferramenta": "HyperFrames, com um único canvas 2D desenhado por um tween do GSAP; render a 120 qps juntado em 60 qps com motion blur",
|
|
32
|
+
"Uso": "showreel, vídeo-aula curta",
|
|
33
|
+
"Trilha": "\"The Veldt\" (deadmau5), radio edit, a partir de 1,88 s da faixa; o cheio entra em 13,14 s"
|
|
34
|
+
},
|
|
35
|
+
"etapas": [
|
|
36
|
+
{
|
|
37
|
+
"titulo": "O roteiro",
|
|
38
|
+
"texto": "**Resumo:** vídeo sem narração em 7 cenas, cada uma com um princípio da animação e uma nota à mão que o nomeia. O texto da tela está em português e sai do `index.html`; os tempos são do vídeo.\n\n## Como o roteiro foi feito\n\n- **Ponto de partida:** o original de @himanshutwtxs, estudado a 4 qps. O conceito (\"o showreel é a aula\", com notas à mão e uma bola que atravessa tudo) e a ordem das cenas foram mantidos.\n\n- **O que mudou:** todo o texto foi para o português, as partículas ganharam física, a cartela final nasce da explosão das partículas e dura 3,8 s em vez de 1,8 s, e o vídeo passou de 15 s para 16,9 s (9 compassos).\n\n- **Capítulos da linha do tempo:** espaçamento (0 s) · tipo (1,88 s) · easing (5,62 s) · continuidade (8,44 s) · antecipação (11,26 s) · olá (13,14 s).\n\n## Cenas por tempo\n\n | \n\n | #\n | Tempo (s)\n | Princípio\n | Texto na tela\n | O que acontece\n\n | 1\n | 0–1,88\n | espaçamento, comprimir e esticar\n | notas \"entra devagar, sai devagar\", \"achata!\" (vermelho), \"estica\"\n | a bola quica com gravidade de verdade, casca de cebola e trajetória pontilhada; cada quique é mais baixo e mais rápido\n\n | 2\n | 1,88–3,76\n | atraso e sobreposição\n | **EU COLOCO TUDO EM / MOVIMENTO.**; notas \"atraso: 45 ms\", \"sobreposição\"\n | a frase entra letra a letra, com 45 ms entre letras; a bola pousa e vira o ponto final\n\n | 3\n | 3,76–5,62\n | ritmo\n | **QUICA.** \"gravidade\" · **ESTICA.** \"elástico\" · **GIRA.** \"rotateY 450°\" · **ESTALA.** \"sem easing. de propósito.\"\n | uma palavra por tempo (3,76 · 4,22 · 4,70 · 5,16 s) em Anton de 420 px: a primeira quica, a segunda estica em azul, a terceira gira 450° em Y e a quarta estala seca em vermelho entre guias\n\n | 4\n | 5,62–8,44\n | easing\n | eixos \"posição\" × \"tempo\"; **linear = robótico** (riscado); **ease in-out** ✓; \"espaçamento!\"\n | as guias do \"ESTALA.\" viram os eixos; a corrida linear vai com cliques mecânicos e é riscada em 7,12 s; a curva vira ease in-out, ganha check, e um quadrado no trilho mostra o espaçamento\n\n | 5\n | 8,44–11,26\n | continuidade\n | \"continuidade\"\n | a bola puxa a cortina escura e atravessa um campo de 2.135 partículas com cauda de cometa; as partículas fogem, voltam com mola e se ligam em constelação\n\n | 6\n | 11,26–13,14\n | antecipação\n | \"antecipação\"; mostrador de 0 a 100%\n | a bola achata e puxa as partículas num redemoinho enquanto o mostrador carrega; a música respira (−8 dB) de 12,85 a 13,14 s\n\n | 7\n | 13,14–16,9\n | olá\n | **MOTION DESIGNER** / **CLAUDE.**; nota \"aberto a novos projetos\"\n | **drop:** as partículas explodem num anel de choque que revela o branco e formam o \"CLAUDE.\" e o símbolo; \"MOTION DESIGNER\" cai letra a letra; um brilho passa no nome, a nota se escreve a partir de 14,75 s, o símbolo gira devagar e a bola dá um pulinho final com som\n\n## Momentos para a trilha\n\n- 0 s: a música entra no primeiro quadro; o primeiro quique é em 0,48 s.\n\n- 3,76–5,16 s: as quatro palavras, uma por tempo.\n\n- 12,85–13,14 s: respiro (−8 dB).\n\n- **13,14 s: drop**, na explosão das partículas, com Ping Boom em Mi e dois booms.\n\n- 15,8–16,9 s: fade final."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"titulo": "A identidade visual",
|
|
42
|
+
"texto": "**Resumo:** preto e branco puros, títulos em Anton caixa alta ocupando boa parte da largura, laranja vivo em tudo que se move por ação e azul elétrico nas notas escritas à mão. Um canvas só desenha bola, letras, gráfico e partículas; a física roda em passo fixo e tudo é função do tempo. Números tirados do `index.html` (v2), do `mix.py` e do `finalizar.sh`.\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n | Onde baixar\n\n | Títulos (\"EU COLOCO TUDO EM / MOVIMENTO.\", \"QUICA. ESTICA. GIRA. ESTALA.\", \"MOTION DESIGNER / CLAUDE.\")\n | Anton, caixa alta, de 128 a 420 px\n | Google Fonts\n\n | Notas à mão (\"achata!\", \"atraso: 45 ms\", \"antecipação\")\n | Caveat 700, 56–62 px\n | Google Fonts\n\n | Rótulos, eixos, capítulos, timecode\n | Inter\n | Google Fonts\n\n | Apoio (v1)\n | Source Serif 4\n | Google Fonts\n\n## Cores (v2)\n\n | \n\n | Token\n | Hex\n | Papel\n\n | Branco\n | `#FFFFFF` (borda `#E9E9EC`)\n | fundo claro\n\n | Preto\n | `#0A0A0A` (centro `#17171B` / `#141414`)\n | fundo escuro, tinta\n\n | Laranja\n | `#F2602F` (brilho `#FF8A5B`)\n | a bola, a curva certa, o símbolo, o sublinhado, os marcadores de capítulo\n\n | Azul elétrico\n | `#2F6BFF` (`#6E98FF` no escuro)\n | notas à mão, \"ESTICA.\", fantasmas da corrida com ease, check do \"ease in-out\", partículas frias\n\n | Vermelho\n | `#FF2D46`\n | o errado: \"achata!\", \"linear = robótico\" riscado, \"ESTALA.\"\n\n | Cinza\n | `#6B6B6B`\n | rótulos secundários\n\nO original usava azul `#307CF7` e vermelho `#F1324C` sobre `#F3F2F5`. A v1 da recriação trocou por marfim, argila `#D97757` e Sky `#6A9BCC` e ficou suave demais; a v2 voltou ao contraste máximo com o laranja da marca saturado.\n\n## Peças\n\n | \n\n | Peça\n | Como é\n\n | Bola\n | parábolas com g = 6.857 px/s², tempos de voo em progressão geométrica (0,70 → 0,47 → 0,315 s…, restituição 0,67), achatamento no impacto proporcional à velocidade e esticamento ao longo do vetor velocidade; casca de cebola e trajetória pontilhada\n\n | Nota à mão\n | texto revelado a ~18 ms por letra; seta em curva quadrática desenhada em 0,2 s, com a ponta nos últimos 20%; riscado 0,16 s depois do texto; check para o certo\n\n | Frase de abertura\n | \"EU COLOCO TUDO EM / MOVIMENTO.\" letra a letra com atraso de 45 ms; a bola vira o ponto final; notas \"atraso: 45 ms\" e \"sobreposição\"\n\n | Palavras na batida\n | QUICA. (nota \"gravidade\"), ESTICA. (\"elástico\"), GIRA. (\"rotateY 450°\"), ESTALA. (\"sem easing. de propósito.\"), Anton a 420 px, uma por tempo\n\n | Gráfico\n | eixos \"posição\" × \"tempo\" de 720×400 px; trilho embaixo com um quadrado que mostra o espaçamento; \"linear = robótico\" riscado, \"ease in-out\" com check, \"espaçamento!\"\n\n | Campo de partículas\n | 2.135 pontos em grade com mola para a origem (k = 55, c = 7,5), repulsão da bola num raio de 270 px (`7600·(1 − d/R)²`), linhas de constelação entre vizinhos deslocados, faíscas com arrasto\n\n | Cauda de cometa\n | 44 nós; cada um persegue a posição da bola de j × 8,5 ms atrás com mola (K ≈ 1.100, C ≈ 30)\n\n | Antecipação\n | mostrador de carga de 0 a 100% enquanto a bola atrai as partículas num redemoinho e as absorve\n\n | Explosão\n | anel de choque de 0 a 2.300 px em 0,6 s; dentro do anel o fundo já é branco e as partículas mudam de cor ao atravessar; velocidade radial de 900 a 4.300 px/s e mola até o alvo (k = 70, c = 11)\n\n | Assinatura\n | \"MOTION DESIGNER\" caindo letra a letra com mola, símbolo do Claude e \"CLAUDE.\" formado pelas partículas (pixels amostrados a cada 5 px); brilho que passa no nome; nota \"aberto a novos projetos\"\n\n | Linha do tempo\n | rodapé com capítulos (espaçamento, tipo, easing, continuidade, antecipação, olá); cada marcador vira um losango laranja com mola quando a cena começa; timecode no canto superior direito\n\n## Transições\n\n- A bola termina o quique e vira o ponto final da frase.\n\n- A bola cresce e vira a cortina para as palavras na batida.\n\n- As guias vermelhas do \"ESTALA.\" viram os eixos do gráfico no corte (pontas interpoladas com `power5.out` em 0,3 s, vermelho → tinta).\n\n- A bola puxa a cortina escura para o campo de partículas.\n\n- As partículas absorvidas na antecipação explodem e a onda de choque revela o fundo branco da assinatura.\n\n- Vinheta e cor do HUD seguem uma \"escuridão\" contínua de 0 a 1 que acompanha a cortina, sem degrau.\n\n## Curvas e física\n\n- Curvas cúbicas e de quinta (`eo3`, `eo5`, `eio3`) nas entradas; corrida linear de propósito no \"linear = robótico\" e no \"ESTALA.\".\n\n- Física em passo fixo de 1/240 s; acaso só por hash com semente.\n\n- Pontos desenhados em lote por faixa de cor (8 `fill()` por quadro), não um por ponto.\n\n## Câmera\n\nDeriva contínua por senos somados (cerca de ±10 px na horizontal, ±8 px na vertical e ±0,2°) e coices com decaimento exponencial (`a·e^(−11u)`) nos impactos.\n\n## Acabamento\n\n- Render a 120 qps e motion blur com `tmix=frames=2:weights=1 1,select='mod(n,2)',setpts=N/(60*TB)` para 60 qps.\n\n- Quadro de captura falho trocado pelo vizinho antes do `tmix`; corte que cai no meio de um par atrasado 1/120 s (`quadros_ruins.py`).\n\n- Final em H.264 CRF 15, com cor etiquetada em BT.709.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"The Veldt\" (deadmau5), radio edit\n\n | Trecho\n | a partir de 1,88 s da faixa\n\n | Andamento\n | 127,7 BPM medido com o `beat_this`; compasso de ~1,88 s\n\n | Respiro\n | a música cai 8 dB de 12,85 a 13,14 s\n\n | Drop\n | 13,14 s, na explosão das partículas; a música baixa a 70% sob a explosão e volta em 0,55 s\n\n | Fecho\n | fade de 15,8 a 16,9 s\n\n## Sound design e mix\n\n | \n\n | Ação na tela\n | Efeito\n\n | quiques da bola\n | impacto elástico de desenho animado, 1,5 semitom mais agudo e mais baixo a cada quique, e impacto no primeiro\n\n | frase de abertura\n | teclas e cliques alternados, um por letra\n\n | notas à mão\n | caneta, um traço por nota\n\n | QUICA.\n | boing + whoosh grave + impacto\n\n | ESTICA.\n | elástico esticando + impacto\n\n | GIRA.\n | whoosh de giro + impacto\n\n | ESTALA.\n | estalo de dedo + obturador\n\n | corrida linear\n | um clique mecânico a cada 88 ms (o \"robótico\" se ouve)\n\n | corrida com ease\n | whoosh contínuo\n\n | bola atravessa as partículas\n | whooshes longos, swell mágico e transição de ar\n\n | antecipação e mostrador de carga\n | notificação + 24 cliques de teclado subindo de 0 a +7 semitons\n\n | drop e explosão (13,14 s)\n | Ping Boom em Mi (tom da faixa), com a subida de 3 s terminando no drop, + dois booms cinematográficos\n\n | assinatura\n | brilho, whoosh curto, sinos e caneta na nota; boing e pop no pulinho final da bola\n\n- 98 efeitos posicionados no evento; na faixa só de efeitos, erro mediano de 11 ms entre o evento e o ataque.\n\n- **Música nivelada a −19 LUFS** (pyloudnorm) e efeitos ×2,2 antes de somar; na v1, os efeitos ficaram 15 a 20 dB abaixo da música.\n\n- **Final:** `loudnorm` em duas passagens a −14 LUFS, pico verdadeiro −1,5 dBTP (medido: −14,0 LUFS e −1,4 dBTP).\n\n## O que é \"humano\" neste vídeo\n\n- A bola obedece à gravidade e perde altura a cada quique.\n\n- As notas parecem escritas na hora, com seta que se desenha e risco que entra atrasado.\n\n- As partículas têm inércia: fogem da bola, voltam com mola e oscilam até assentar.\n\n- O linear aparece de propósito, para mostrar por que ele parece robótico.\n\n- A bola dá um pulinho no fim, com som, em vez de o vídeo acabar seco."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"titulo": "A montagem no HyperFrames",
|
|
46
|
+
"texto": "- **Instale o Node.js, o ffmpeg e o Python 3.** O HyperFrames roda pelo `npx`: `npx hyperframes@0.8.144`. As fontes e o GSAP já estão em `projeto/hf/assets/`.\n\n- **Pré-visualize:** dentro de `projeto/hf/`, rode `npx hyperframes@0.8.144 preview`.\n\n- **Render do master:** de `projeto/`, rode `npx hyperframes@0.8.144 render hf --fps 120 -q delivery`. Com várias coisas rodando no PC, use `HF_SEGMENTED_CAPTURE=true` com `--resume --keep-segments` e repita até terminar.\n\n- **Áudio:** copie a pasta `audio/` para dentro de `projeto/` (os scripts esperam `hf/`, `audio/` e `render/` lado a lado). No `mix.py`, aponte `NIV`, `PREM` e `TON` para `audio/sfx/` e rode `python mix.py` (precisa de numpy, librosa, soundfile, scipy e pyloudnorm). A saída é `mix-pre.wav`.\n\n- **Final:** coloque o master em `projeto/render/` e rode `bash render/finalizar.sh <master>.mp4`. O script normaliza o áudio a −14 LUFS, troca quadros falhos pelo vizinho, faz o motion blur (`tmix=frames=2` com `select='mod(n,2)'`) e gera a versão leve e a comparação; para a comparação, ajuste `REF` para `referencias/original/`.\n\n**Pegadinhas:** com `fps=60` simples depois do `tmix`, os pares de quadros saem trocados e o timecode aparece duplicado; por isso o `select='mod(n,2)'`. Um corte seco no meio de um par vira um quadro cinza misturado: o `quadros_ruins.py` acha esses cortes e atrasa 1/120 s."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"titulo": "As decisões de direção",
|
|
50
|
+
"texto": "- **O vídeo é a aula.** Cada cena executa um princípio da animação e uma nota à mão nomeia o princípio no instante em que ele acontece.\n\n- **Uma bola atravessa tudo:** ela é o ponto final da frase, o cometa do campo de partículas, o núcleo da antecipação e o ponto final da assinatura.\n\n- **Impacto antes de elegância.** A v1 usava serifa e cores suaves e perdia para o original no celular; a v2 foi para Anton em caixa alta, preto e branco puros, laranja vivo e azul elétrico.\n\n- **Física de verdade:** quique com gravidade constante e restituição de 0,67, achatamento proporcional à velocidade, partículas com mola, amortecimento e repulsão da bola.\n\n- **O errado aparece riscado.** \"linear = robótico\" leva um risco vermelho e \"ease in-out\" ganha check; o som acompanha, com cliques mecânicos na corrida linear e um whoosh contínuo na corrida com ease.\n\n- **Cada cena nasce da anterior:** a bola vira o ponto final, as guias vermelhas do \"ESTALA.\" viram os eixos do gráfico, a bola puxa a cortina escura e a explosão revela o branco.\n\n- **Partículas que formam a assinatura.** As partículas absorvidas na antecipação explodem e viram o \"CLAUDE.\" e o símbolo; o texto nítido entra por baixo enquanto elas somem.\n\n- **Interface de editor como cenário:** linha do tempo com capítulos que viram losangos laranja com mola e timecode no canto.\n\n- **Respiro antes do drop** (−8 dB de 12,85 a 13,14 s) e a explosão no bumbo.\n\n- **Fim que respira:** 3,8 s de cartela, brilho passando no \"CLAUDE\", símbolo girando devagar e um pulinho final da bola.\n\nDetalhes de cores, curvas e som: estilo.md. Cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo estilo: PROMPT.md."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"titulo": "As versões até o final",
|
|
54
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | v1 (09/10)\n | recriação completa com a marca do Claude em tons suaves: títulos em Source Serif 4, fundo creme, argila #D97757 e Sky #6A9BCC; ficou elegante, mas mais fraca que o original no celular\n\n | **v2 (10/10)**\n | Anton em caixa alta, branco #FFFFFF e preto #0A0A0A puros, laranja #F2602F na ação, azul elétrico #2F6BFF nas notas, vermelho #FF2D46 no errado e notas à mão maiores; cortes que caíam no meio de um par do motion blur corrigidos. Mesmos tempos e mesmo mix; é a versão entregue"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"pacote": [
|
|
58
|
+
{
|
|
59
|
+
"pasta": "projeto/hf/",
|
|
60
|
+
"conteudo": "a composição (`index.html`), o `BRIEF.md` e `assets/` com o GSAP local e as fontes (Anton, Caveat, Inter, Source Serif 4)"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"pasta": "projeto/render/",
|
|
64
|
+
"conteudo": "`finalizar.sh` (loudnorm, motion blur de 120 para 60 qps, versão leve e comparação) e `quadros_ruins.py` (acha quadro de captura falho e corte que cai no meio de um par do motion blur)"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pasta": "audio/",
|
|
68
|
+
"conteudo": "`mix.py` (música nivelada, os 98 efeitos e o respiro antes do drop), `sfx-usados.json` (cada efeito com evento, volume e tom), as batidas medidas (`beats.npy`, `downbeats.npy`), a música, a faixa só de efeitos, o mix final e a pasta `sfx/`"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pasta": "referencias/",
|
|
72
|
+
"conteudo": "o vídeo original e o prompt dele, folhas de contato do original, a comparação original × nossa, um recorte comparado e o estudo quadro a quadro"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"pasta": "render/",
|
|
76
|
+
"conteudo": "`render.mp4`"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pasta": "note()",
|
|
80
|
+
"conteudo": "a nota à mão: o texto se revela a ~18 ms por letra, a seta curva se desenha em 0,2 s e a ponta aparece nos últimos 20%; o riscado entra 0,16 s depois"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"pasta": "CH",
|
|
84
|
+
"conteudo": "os capítulos da linha do tempo do rodapé: espaçamento, tipo, easing, continuidade, antecipação, olá"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"prompt": "Quero fazer um vídeo curto, sem narração, no mesmo estilo do projeto \"Eu coloco tudo em movimento\", que está em 07-videos/projetos/movimento/, com o meu assunto.\n\nAssunto que o vídeo ensina: {{ASSUNTO}} (na referência, os princípios da animação)\nOs princípios ou etapas, um por cena (5 a 7): {{PRINCIPIOS}}\nFrase de abertura: {{FRASE}} (na referência, \"EU COLOCO TUDO EM MOVIMENTO.\")\nMarca da assinatura final: {{MARCA}} (logo em SVG ou site)\nObjeto protagonista: {{OBJETO}} (na referência, uma bola laranja)\nDuração aproximada: {{DURACAO}} (a referência tem 16,9 s)\nFormato: {{FORMATO}} (a referência é 1920×1080; para reels, 1080×1920)\nMúsica: {{MUSICA}} (se vazio, sugira 3 faixas reais entre 120 e 130 BPM com um drop claro perto do fim)\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, nesta ordem: 07-videos/projetos/movimento/LEIA-ME.md, estilo.md e roteiro.md. Depois abra projeto/hf/index.html e veja a função note() (a nota que se escreve, com seta e riscado), a física da bola, a simulação das partículas em passo fixo, a cauda de cometa, a explosão que forma a assinatura e a linha do tempo de capítulos; e o audio/mix.py com o sfx-usados.json. Me explique em poucas linhas o que vai reaproveitar e o que vai trocar.\n\n2. Siga o passo a passo de 07-videos/_LEIA.md e os números de 07-videos/regras-vigentes.md. Crie o meu projeto em 07-videos/projetos/AAAA-MM-DD-tema/ a partir de 07-videos/projetos/_modelo/README.md e marque cada etapa no checklist. Não edite os arquivos do projeto movimento: copie o que for reaproveitar.\n\n3. Use as skills instaladas: animacao-saas (objeto protagonista, cena que nasce da anterior, mola), motion-app-ae (rota em HTML determinístico), video-referencias (um som por ação, som que imita a ação), conteudo-video (regras de vídeo) e better-portuguese (todo texto da tela e das notas). Se as skills do HyperFrames estiverem instaladas, leia também as de composição e animação antes de escrever o HTML.\n\n4. Monte a tabela antes de animar: para cada princípio ou etapa, o que a cena executa na tela, a nota à mão que aponta para ele (curta, como \"achata!\" ou \"atraso: 45 ms\"), o que aparece riscado como errado e com check como certo, e de que forma a cena nasce da anterior. O objeto protagonista precisa aparecer em todas as cenas e mudar de papel (ponto final, cometa, núcleo, assinatura). Me mostre a tabela.\n\n5. Identidade: contraste máximo para ler no celular. Fundo branco e preto puros, títulos numa condensada pesada em caixa alta ocupando 60 a 80% da largura (Anton, se a marca não tiver uma), uma cor de ação saturada (a da minha marca), um segundo acento forte para as notas e o certo, vermelho para o errado e a letra de caneta (Caveat) nas notas. Logo e símbolo oficiais na assinatura.\n\n6. Construa reaproveitando o esqueleto do index.html: um canvas desenhado por um tween proxy, física em passo fixo de 1/240 s com estado em Float32Array e recomeço do zero quando o tempo volta, acaso por hash com semente, quique com gravidade e restituição, cauda que persegue a posição do objeto de j × 8,5 ms atrás, partículas com mola, repulsão e explosão até alvos amostrados do logo, câmera com deriva e coices. Troque cenas, textos, notas, cores, logo e música.\n\n7. Me mostre 4 quadros de teste (abertura, a cena do errado riscado, a antecipação e a assinatura) e a folha de contato a 4 qps antes do render final. Em cada movimento, pergunte: está humano ou robotizado? Compare no tamanho do celular: o texto e as notas são legíveis?\n\n8. Som em paralelo, num subagente: música real nivelada a −19 LUFS, efeitos ×2,2 antes de somar, um efeito por elemento posicionado no evento, som que imita a ação (clique mecânico repetido no movimento linear, um whoosh contínuo no movimento suave, cliques subindo de tom numa contagem), respiro de −8 dB antes do drop e um tonal no tom da música no drop. Final com loudnorm em duas passagens a −14 LUFS.\n\n9. Render a 120 qps e motion blur com tmix=frames=2 e select='mod(n,2)' para 60 qps; passe o projeto/render/quadros_ruins.py antes do tmix para trocar quadros falhos e atrasar cortes que caiam no meio de um par. Entregue o vídeo, a ficha do projeto atualizada e uma anotação em anotacoes/.",
|
|
88
|
+
"campos": [
|
|
89
|
+
"ASSUNTO",
|
|
90
|
+
"DURACAO",
|
|
91
|
+
"FORMATO",
|
|
92
|
+
"FRASE",
|
|
93
|
+
"MARCA",
|
|
94
|
+
"MUSICA",
|
|
95
|
+
"OBJETO",
|
|
96
|
+
"PRINCIPIOS"
|
|
97
|
+
],
|
|
98
|
+
"fonte": {
|
|
99
|
+
"nome": "Clube do Motion",
|
|
100
|
+
"url": "https://clubedomotion.com/projeto/?id=movimento",
|
|
101
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-not-like-us",
|
|
3
|
+
"titulo": "Dark mode, som refeito",
|
|
4
|
+
"categoria": "sound",
|
|
5
|
+
"resumo": "recriação, camada por camada, do áudio do edit \"dark mode enabled\" do Tennessee Football (TikTok de 28/10/2024, 28,3 milhões de visualizações), o mesmo que o Multiply Sound refez num short. A imagem é a do edit original; tudo o que se ouve foi montado de novo em Python: a música oficial no mesmo ponto, a troca para 66,6% no mesmo tempo forte, um efeito orgânico para cada ataque do original e volume, estéreo e EQ casados compasso a compasso. Nenhum som do original foi usado na mix: o áudio do viral serviu só de régua. Versão aprovada: v25. Feito pelo Clube do Motion.",
|
|
6
|
+
"indicado": "editor, criador ou estúdio que quer aprender sound design de edit musical refazendo uma referência; quem precisa do mesmo efeito (música lenta com reverb, quedas de 808, respiro e impacto) num vídeo próprio.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"edit musical",
|
|
9
|
+
"troca de velocidade",
|
|
10
|
+
"reverb de catedral",
|
|
11
|
+
"quedas de 808",
|
|
12
|
+
"efeitos orgânicos",
|
|
13
|
+
"corte seco",
|
|
14
|
+
"respiração",
|
|
15
|
+
"impacto final"
|
|
16
|
+
],
|
|
17
|
+
"ficha": {
|
|
18
|
+
"formato": "1080×1350, 23,976 qps, 4:5 (a imagem do edit original)",
|
|
19
|
+
"duracao": "50,0 s, sem narração",
|
|
20
|
+
"motor": "html",
|
|
21
|
+
"voz": "ver o guia de estilo",
|
|
22
|
+
"musica": "\"Not Like Us\": versão oficial nos 4,82 s iniciais e instrumental separado em 6 partes (Demucs) a partir da troca",
|
|
23
|
+
"fontes": "ver o guia de estilo"
|
|
24
|
+
},
|
|
25
|
+
"ferramentas": [
|
|
26
|
+
"Claude Code"
|
|
27
|
+
],
|
|
28
|
+
"ficha_tecnica": {
|
|
29
|
+
"Duração": "50,0 s, sem narração",
|
|
30
|
+
"Formato": "1080×1350, 23,976 qps, 4:5 (a imagem do edit original)",
|
|
31
|
+
"Ferramenta": "Python (numpy, librosa, pedalboard, scipy), rubberband para a velocidade, ffmpeg para juntar o áudio ao vídeo",
|
|
32
|
+
"Música": "\"Not Like Us\": versão oficial nos 4,82 s iniciais e instrumental separado em 6 partes (Demucs) a partir da troca",
|
|
33
|
+
"Medidas da v25": "correlação de mel 0,868 com o original; 39% dos ataques do original sem par (eram 55% na v10); −14 LUFS",
|
|
34
|
+
"Áudio final": "WAV de 50 s, 24 bits"
|
|
35
|
+
},
|
|
36
|
+
"etapas": [
|
|
37
|
+
{
|
|
38
|
+
"titulo": "O roteiro",
|
|
39
|
+
"texto": "**Resumo:** o vídeo não tem narração nem texto na tela; o roteiro é a linha do tempo do áudio, trecho por trecho, com o que a imagem mostra e o que soa. Os tempos são os do edit original, que é também a régua da recriação. A receita no fim serve para levar a mesma estrutura a outra música.\n\n## De onde veio a estrutura\n\nO edit foi publicado pelo Tennessee Football no TikTok em 28/10/2024 e passou de 28 milhões de visualizações. O Multiply Sound mostrou num short como refez os primeiros 11 s com o Film Score Vol. 2. Esta recriação usou o post original de 50 s como régua, achou cada trecho da música por correlação e reconstruiu os efeitos com o Vol. 3, avulsos e graves sintetizados.\n\n## Linha do tempo\n\n | \n\n | #\n | Tempo (s)\n | Na imagem\n | O que soa\n\n | 1\n | 0,00–4,82\n | jogador sentado no vestiário e no espelho, uniforme laranja\n | \"Not Like Us\" oficial a 100%, riff e a tag \"Mustard on the beat, ho\"; swell vocal e prato invertido sobem a partir de 3,6 s\n\n | 2\n | 4,82\n | no espelho, o reflexo aparece de uniforme preto: o dark mode começa\n | troca para 66,6% no tempo forte: só as cordas, reverb de catedral, golpe e grave Fá#1\n\n | 3\n | 5,5–10,1\n | um tentáculo preto brota da água azul e cresce sobre o balcão laranja\n | estalos orgânicos em tempos exatos e chocalho miúdo por baixo\n\n | 4\n | 10,12–12,0\n | o jogador no vestiário; os tentáculos envolvem a chuteira\n | queda de 808 de 70,5 a 30,9 Hz em um compasso\n\n | 5\n | 12,0\n | virada\n | golpe + sino com Si-Ré-Sol; a melodia aguda do riff entra forte\n\n | 6\n | 12,0–19,15\n | estouro branco e tentáculos sobre as listras e o selo da SEC\n | estalos continuam, um por movimento\n\n | 7\n | 19,15–33,42\n | os tentáculos passam pelo swoosh e fecham o quadro, cada vez mais pretos\n | entram baixo e bateria da música lenta; viradas em 22,72, 26,29 e 29,86 s; três risers até o corte\n\n | 8\n | 33,42\n | tela preta\n | corte seco: tudo para; queda de 106 a 61,8 Hz\n\n | 9\n | 33,9–41,3\n | o jogador surge de uniforme preto, câmera girando\n | 9 fôlegos ofegantes, centrados; tom grave Sol# descendo\n\n | 10\n | 41,7–45,35\n | o jogador encara a câmera\n | crescendo em Fá#\n\n | 11\n | 45,40\n | o T do Tennessee e o swoosh em traço laranja\n | impacto final brilhante, grave de 52 a 41 Hz, que morre até cerca de 48,8 s\n\n## Receita para outra música\n\n | \n\n | Momento\n | O que faz\n\n | 2 compassos\n | a música oficial a 100% num trecho sem bateria, com a fala ou a tag do produtor\n\n | Troca\n | no tempo forte, a mesma linha do tempo cai para 66% (rap) ou 85–90% (quando há voz), só as cordas, reverb de catedral escuro; swell + prato invertido antes; golpe e grave na dominante\n\n | 1º bloco\n | dezenas de efeitos pontuais casados com a imagem, do mesmo caráter dela\n\n | Virada\n | queda de 808 de cerca de uma oitava em um compasso, depois golpe + sino\n\n | Build\n | baixo e bateria da música lenta com o ataque do bumbo, melodia em evidência, golpe a cada compasso e risers até o corte, sem loops extras\n\n | Corte\n | silêncio total, queda de 808, respiração, tom grave descendo e crescendo na dominante\n\n | Fecho\n | impacto brilhante que resolve na tônica e morre em cerca de 3 s\n\n## Momentos para a trilha\n\n- **4,82 s:** a troca de velocidade, o momento que define o edit.\n\n- **12,0 s:** primeiro golpe com sino.\n\n- **33,42 s:** o corte seco, o único silêncio do vídeo.\n\n- **45,40 s:** o impacto final sobre a marca."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"titulo": "A identidade visual",
|
|
43
|
+
"texto": "**Resumo:** aqui o estilo é sonoro, porque a imagem é a do edit original. A trilha é rap lento e escuro: a música oficial abre a 100%, cai para 66,6% com o tom preservado e reverb de catedral, ganha estalos orgânicos casados com a imagem, quedas de 808, um corte seco para o silêncio, respiração e um impacto final que resolve na tônica. Números tirados do mapa medido, do `montar.py`, do `eventos.py` e das medidas da v25.\n\n## A grade da música\n\n | \n\n | Item\n | Valor\n\n | Andamento original\n | período de 0,594 s (101 BPM)\n\n | Depois da troca\n | período de 0,892 s = 0,594 / 0,666; compasso lento de 3,568 s\n\n | Velocidade\n | 66,6%, tom preservado (rubberband, como o \"Preserve Pitch\" do Final Cut)\n\n | Tom\n | Si menor: os efeitos vêm da pasta B do Vol. 3, e os graves em Fá# fazem a dominante\n\n | Seções medidas\n | 0 · 2,41 · 4,82 · 8,40 · 10,12 · 12,0 · 15,56 · 19,15 · 22,72 · 26,29 · 29,86 · 33,42 · 36,4 · 39,4 · 42,4 · 45,4 s\n\n## Mapa medido do original\n\n | \n\n | Tempo (s)\n | O que soa\n | Como foi achado\n\n | 0,00–4,82\n | música oficial a 100% a partir de 2,337 s: riff + tag \"Mustard on the beat, ho\" (3,5–4,8 s)\n | voz separada contra a oficial (0,95); CQT (0,97)\n\n | 3,6–4,82\n | swell vocal + prato invertido subindo até a troca\n | espectrograma\n\n | 4,82\n | a mesma linha do tempo segue a 66,6%, só as cordas, reverb de catedral; golpe; grave Fá#1 de 46 → 50 Hz\n | grade\n\n | 5,5–33,4\n | cerca de 150 ataques: estalos orgânicos em tempos exatos + chocalho de ~9 por segundo\n | `diff_ataques.py` por faixa\n\n | 10,12–12,0\n | queda de 808 de 70,5 → 30,9 Hz\n | `pyin`\n\n | 12,0\n | golpe + sino com Si-Ré-Sol\n | picos de espectro\n\n | 12–33,4\n | melodia aguda do riff (Fá#5/Sol5, harmônicos em 1,5–3,1 kHz), forte\n | espectrograma 1–4,5 kHz\n\n | 19,15\n | entram baixo e bateria da música\n | CQT do baixo\n\n | 19,1–33,42\n | bumbo e caixa da música lenta; viradas em 22,72 · 26,29 · 29,86; 3 risers\n | grade de 3,568 s\n\n | 33,42\n | corte seco para o silêncio; queda de 106 → 61,8 Hz\n | `pyin`\n\n | 33,9–41,3\n | 9 fôlegos ofegantes de 0,7–1,1 s, centrados\n | envelope 300–2000 Hz e balanço L/R\n\n | 35,6–45,35\n | tom grave Sol# 103,9 Hz descendo a Fá#2/Sol2; crescendo em Fá# a partir de 41,7\n | picos de espectro\n\n | 45,40\n | impacto final brilhante + grave de 52 → 41 Hz; morre até ~48,8\n | envelope e espectro\n\n## Camadas da v25\n\n | \n\n | Camada\n | Como é\n\n | Música, abertura\n | oficial completa de 0 a 4,82 s\n\n | Música, lenta\n | instrumental `other + guitar + piano` a 66,6%, reverb de catedral (IR de 8 s, cauda com passa-baixa de 6 kHz) e passa-baixa suave em 3,5 kHz\n\n | Baixo e bateria\n | `bass + drums` a partir de 19,15 s, com o ataque do bumbo preservado (modo `crisp`)\n\n | Golpes e risers\n | Film Score Vol. 3 em Si: hits Collision, Dark Danger, Sentinel Bell e Shockwave; risers Portal, Activation e Warp; Sandworm no sub\n\n | Avulsos\n | Vocal Cadence (Si), Voice Adrift (Fá#), prato invertido, hit-and-crash e 9 fôlegos recortados, cada um no volume do fôlego do original\n\n | Graves sintetizados\n | `queda_808`: seno com glide exponencial e harmônicos leves para Fá#1, as 2 quedas de 808, o tom grave da tela preta e o grave final\n\n | Efeitos pontuais\n | 115 ataques + 68 do chocalho, do banco orgânico (gosma, quebra e estalo dos pacotes Borax e Crunch Mode da Sonniss, fogo crepitando, jornal amassado, batida de vara, batimento, baques)\n\n## Efeitos pontuais: como cada um é escolhido\n\n- **Ataque:** subida de pelo menos 8 dB em 40 ms numa faixa do original.\n\n- **O que falta:** espectro do original menos o nosso, em potência, nos 120 ms depois do ataque.\n\n- **Amostra:** a do banco com o espectro mais parecido com essa falta, recortada em one-shot de até 0,35 s.\n\n- **EQ e ganho:** EQ no formato da falta (janela de 12 ms, para não amaciar o ataque) e ganho que só preenche o que falta, sem vazar para faixas já cheias.\n\n- **Graves:** só amostras abaixo de 300 Hz.\n\n## Mix e master\n\n | \n\n | Etapa\n | Valor\n\n | Volume por compasso\n | `ajustar.py`, −30 a +18 dB por camada, suave entre compassos vizinhos\n\n | Largura estéreo\n | razão lado/meio igual à do original em cada trecho (o áudio do TikTok é estreito)\n\n | Match EQ\n | ±6 dB por trecho, curva suave, fases preservadas\n\n | Loudness\n | LUFS por trecho igual ao do original; final em −14 LUFS\n\n | Corte\n | nada acima de 300 Hz depois de 33,42 s além do glide\n\n## O que faz este som parecer vivo\n\n- Os estalos caem no mesmo quadro dos tentáculos e têm o caráter deles: orgânico, úmido, quebradiço.\n\n- O chocalho miúdo por baixo dá movimento contínuo sem virar loop.\n\n- O silêncio depois do corte não é vazio: a respiração ofegante e o tom grave descendo seguram a tensão até o impacto.\n\n- A melodia aguda do riff fica em evidência no build, e nenhuma textura extra a cobre."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"titulo": "A montagem",
|
|
47
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `audio/montar.py`\n | monta as camadas da lista `CAMADAS`: cada uma diz o tempo do evento no original e o ponto do arquivo que cai nele (`\"inicio\"`, `\"golpe\"`, `\"pico\"` ou segundos). Tem `poe`, `estica` (velocidade com tom preservado), `reverb_conv`, `queda_808` (grave sintetizado pela curva medida), `folego`, largura estéreo, match EQ e LUFS por trecho. `--medir --sem-ganhos --sem-eq --sem-eventos` grava as medidas para o ajuste\n\n | `audio/ajustar.py`\n | mínimos quadrados em terços de oitava: o ganho de cada camada em cada compasso (−30 a +18 dB, suave entre vizinhos) que deixa o mix mais perto do original; grava `ganhos.json`\n\n | `audio/eventos.py`\n | para cada ataque do original (subida de 8 dB em 40 ms numa faixa), mede o espectro que falta no mix, escolhe no banco orgânico a amostra mais parecida, equaliza nesse formato e põe com o ganho que preenche a falta\n\n | `audio/conferir.py`\n | Δ LUFS e Δ por banda em cada trecho, mais o espectrograma lado a lado com o original\n\n | `audio/diff_ataques.py`\n | quantos ataques do original seguem sem par, por faixa (`--lista` dá os tempos)\n\n | `ferramentas/achar_trecho.py`\n | grade de batidas, trecho e velocidade da música e a emenda de 100% para lento\n\n | `ferramentas/ouvido_gemini.py`\n | manda os áudios ao Gemini pelo OpenRouter para levantar hipóteses (a chave vem de um `.env`, nunca do script)\n\n- **Python 3.11 ou mais novo** com numpy, scipy, librosa, soundfile, pedalboard e pyloudnorm; `rubberband` e `ffmpeg` no PATH.\n\n- **Música e régua:** baixe a versão oficial e o instrumental, separe o instrumental em 6 partes (`python -m demucs -n htdemucs_6s instrumental.wav`) e ponha tudo em `audio/insumos/` com os nomes do topo do `montar.py`. O áudio do edit original vai em `projeto/referencias/viral.wav`, ao lado de `audio/`: o `montar.py`, o `ajustar.py` e o `conferir.py` usam esse arquivo como régua, nunca na mix.\n\n- **Bibliotecas:** no topo do `montar.py` e do `eventos.py`, aponte `MV3`, `PREM`, `IR_CATEDRAL` e `BIB` para os seus efeitos. Sem o Vol. 3, troque cada camada por um som no mesmo tom (Si menor).\n\n- **Medir as camadas:** `cd audio && python montar.py v26 --medir --sem-ganhos --sem-eq --sem-eventos`.\n\n- **Volume por compasso:** `python ajustar.py saida/medidas-v26.json` grava o `ganhos.json`.\n\n- **Render completo:** `python montar.py v26` (use `--sem-tique` para a variante sem o chocalho).\n\n- **Conferir:** `python conferir.py saida/remix-v26.wav` e `python diff_ataques.py saida/remix-v26.wav --lista`. Corrija o maior erro e repita.\n\n- **Vídeo:** `ffmpeg -i original.mp4 -i audio/saida/remix-v26.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 320k -shortest final.mp4`.\n\n**Pegadinhas:** a tag da música (\"Mustard on the beat, ho\") só existe na versão oficial; sem ela a abertura soa errada. Loop de textura no lugar de estalos pontuais e loops que o original não tem soaram robóticos e esconderam a melodia. O Gemini errou tempos e se contradisse: toda crítica dele foi conferida na medição antes de mexer. Render pesado com muitas sessões abertas esgotou a memória virtual do PC."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"titulo": "As decisões de direção",
|
|
51
|
+
"texto": "- **A régua é o original, não a versão do tutorial.** O short do Multiply mostra só cerca de 12 s; o TikTok de 50 s é o que se compara.\n\n- **Medir antes de ouvir.** O período de 0,594 s virou 0,892 s depois da troca: a razão dá a velocidade (66,6%), e todo corte, golpe e queda cai num tempo forte dessa grade.\n\n- **A fala da música vem da versão oficial.** Os 4,82 s iniciais saem da oficial a partir de 2,337 s; o instrumental continua no mesmo compasso.\n\n- **Troca no tempo forte, com o tom preservado:** 66,6% com rubberband, só as cordas, reverb de catedral escuro e passa-baixa suave.\n\n- **Um efeito por ataque, do mesmo caráter da imagem.** Tentáculo pede som de gosma, quebra e estalo orgânico; clique digital soou errado. 115 ataques mais 68 do chocalho.\n\n- **Graves sintetizados pela curva medida.** As quedas de 808 (70,5 → 30,9 Hz em 10,12 s; 106 → 61,8 Hz no corte) e o tom grave da tela preta saem de `queda_808`, não de amostra.\n\n- **Nada que o original não tem.** Os dois loops do tutorial do Multiply saíram na v25.\n\n- **Volume, estéreo e EQ casados por compasso,** com a largura estéreo do original e match EQ de ±6 dB por trecho.\n\n- **Corte seco de verdade em 33,42 s:** tudo para, até a cauda do reverb, e só voltam os fôlegos, o tom grave e o crescendo.\n\nMapa medido, cores e camadas: estilo.md. Linha do tempo do áudio: roteiro.md. Para recriar outro edit ou fazer a sua versão: PROMPT.md."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"titulo": "As versões até o final",
|
|
55
|
+
"texto": "| \n\n | Versão\n | O que mudou\n | Corr. de mel\n | Ataques sem par\n\n | v1–v3\n | primeira montagem pelo mapa; respiração por fôlego; baixo e bateria a partir de 19,15 s\n | 0,78–0,83\n | —\n\n | v4–v10\n | volume por compasso, largura estéreo, match EQ, LUFS por trecho e glide limpo no corte; faltavam a fala da música e alguns efeitos\n | 0,85–0,87\n | 55%\n\n | v11–v24\n | abertura pela versão oficial (a tag), `eventos.py`, bateria com ataque preservado, tom grave até 45 s, correções de vazamento de agudo\n | 0,79–0,87\n | 28–59%\n\n | **v25**\n | aprovada: banco orgânico, sem os loops do Vol. 3, melodia aguda de volta, chocalho e fôlegos casados um a um\n | 0,868\n | 39%"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"pacote": [
|
|
59
|
+
{
|
|
60
|
+
"pasta": "projeto/",
|
|
61
|
+
"conteudo": "`audio/montar.py` (as camadas), `audio/eventos.py` (efeitos pontuais), `audio/ajustar.py` (volume por compasso), `audio/conferir.py`, `audio/diff_ataques.py`, `audio/ganhos.json` (a automação da v25), `audio/saida/medidas-v25.json`, `audio/saida/eventos-relatorio.txt` e `ferramentas/` com `achar_trecho.py` e `ouvido_gemini.py`"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"pasta": "audio/",
|
|
65
|
+
"conteudo": "`remix-final.wav` (a v25 aprovada) e `remix-v25-sem-tique.wav` (a mesma, sem o chocalho)"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"pasta": "referencias/",
|
|
69
|
+
"conteudo": "`tutorial-recriar-trilha-de-edit.md` (o método inteiro, passo a passo), `links.md` e `fora-do-pacote.md`"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"pasta": "render.mp4",
|
|
73
|
+
"conteudo": "o edit com o áudio recriado (v25)"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"pasta": "audio/montar.py",
|
|
77
|
+
"conteudo": "monta as camadas da lista `CAMADAS`: cada uma diz o tempo do evento no original e o ponto do arquivo que cai nele (`\"inicio\"`, `\"golpe\"`, `\"pico\"` ou segundos). Tem `poe`, `estica` (velocidade com tom preservado), `reverb_conv`, `queda_808` (grave sintetizado pela curva medida), `folego`, largura estéreo, match EQ e LUFS por trecho. `--medir --sem-ganhos --sem-eq --sem-eventos` grava as medidas para o ajuste"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"pasta": "audio/ajustar.py",
|
|
81
|
+
"conteudo": "mínimos quadrados em terços de oitava: o ganho de cada camada em cada compasso (−30 a +18 dB, suave entre vizinhos) que deixa o mix mais perto do original; grava `ganhos.json`"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"pasta": "audio/eventos.py",
|
|
85
|
+
"conteudo": "para cada ataque do original (subida de 8 dB em 40 ms numa faixa), mede o espectro que falta no mix, escolhe no banco orgânico a amostra mais parecida, equaliza nesse formato e põe com o ganho que preenche a falta"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"pasta": "audio/conferir.py",
|
|
89
|
+
"conteudo": "Δ LUFS e Δ por banda em cada trecho, mais o espectrograma lado a lado com o original"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"pasta": "audio/diff_ataques.py",
|
|
93
|
+
"conteudo": "quantos ataques do original seguem sem par, por faixa (`--lista` dá os tempos)"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"pasta": "ferramentas/achar_trecho.py",
|
|
97
|
+
"conteudo": "grade de batidas, trecho e velocidade da música e a emenda de 100% para lento"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"pasta": "ferramentas/ouvido_gemini.py",
|
|
101
|
+
"conteudo": "manda os áudios ao Gemini pelo OpenRouter para levantar hipóteses (a chave vem de um `.env`, nunca do script)"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"prompt": "Quero recriar o áudio de um edit musical no mesmo método do projeto \"Not Like Us do Tennessee\", que está em 07-videos/projetos/not-like-us/.\n\nEdit de referência (link do post original): {{EDIT}}\nMúsica usada no edit (nome e artista, se souber): {{MUSICA}}\nObjetivo: {{OBJETIVO}} (recriar igual ao original, ou fazer a minha versão com outra música e o meu vídeo)\nVídeo meu, se for a minha versão: {{VIDEO}}\nBibliotecas de efeitos que eu tenho: {{BIBLIOTECAS}}\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 referencias/tutorial-recriar-trilha-de-edit.md. Depois abra projeto/audio/montar.py (a lista CAMADAS, poe, estica, queda_808, folego, largura e match EQ), eventos.py, ajustar.py, conferir.py e diff_ataques.py. Me diga em poucas linhas o que vai reaproveitar.\n\n2. Ache o original de verdade. Repost e tutorial cortam e cobrem com voz. Baixe o post original e confirme que é o mesmo áudio (correlação de mel acima de 0,9 contra o trecho que eu mandei).\n\n3. Baixe a música certa e separe: versão oficial, instrumental, as 6 partes no Demucs e a voz no MelBand RoFormer. Se o edit tem fala ou tag do cantor ou do produtor, esse trecho sai da versão oficial.\n\n4. Meça a grade antes de ouvir: ferramentas/achar_trecho.py grade, depois trecho e emenda. A razão entre os períodos dá a velocidade; confira se o tom foi preservado. Liste os compassos: eles viram as seções do resto do trabalho.\n\n5. Mapeie os eventos numa tabela \"tempo → o que soa → como foi achado\": espectrograma CQT e linear, pyin para cada queda de 808, picos de espectro para tons e acordes, envelope de 300–2000 Hz e balanço L/R para respiração e foley. Use o Gemini (ouvido_gemini.py) só para dar nome aos sons; o que ele disser só entra se a medição confirmar.\n\n6. Escolha os sons no tom: primeiro a minha biblioteca na pasta da nota; graves e quedas de 808 sintetizados pela curva medida. Efeitos pontuais pelo eventos.py, com um banco do mesmo caráter da imagem. Nada que o original não tem.\n\n7. Monte copiando o montar.py (sem editar o original) e case o mix nesta ordem: medir as camadas, ajustar.py (volume por compasso, −30 a +18 dB), largura estéreo, match EQ por trecho, LUFS por trecho e, por último, os efeitos pontuais. Corte seco onde o original corta.\n\n8. Confira a cada versão com conferir.py e diff_ataques.py, corrija o maior erro e repita. Me mande o A/B (original e depois a recriação, com rótulo) e o vídeo com o áudio novo.\n\n9. Entregue o WAV final a −14 LUFS, o vídeo e uma ficha com o mapa medido, as versões e o que ainda difere do original.",
|
|
105
|
+
"campos": [
|
|
106
|
+
"BIBLIOTECAS",
|
|
107
|
+
"EDIT",
|
|
108
|
+
"MUSICA",
|
|
109
|
+
"OBJETIVO",
|
|
110
|
+
"VIDEO"
|
|
111
|
+
],
|
|
112
|
+
"fonte": {
|
|
113
|
+
"nome": "Clube do Motion",
|
|
114
|
+
"url": "https://clubedomotion.com/projeto/?id=not-like-us",
|
|
115
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
116
|
+
}
|
|
117
|
+
}
|