{
  "id": "clube-som-de-cena",
  "titulo": "Um som para cada ação",
  "categoria": "sound",
  "resumo": "Reel vertical de 10 s, sem música e sem voz, em que quatro cenas de uma dona de clínica (a recepção cheia de manhã, a sala vazia, o notebook à noite e o sofá de casa) ganham só som de cena: a ambiência de cada lugar e um som para cada ação visível. As cenas foram mapeadas a 10 qps, os tempos foram medidos na imagem, e cada som foi gerado sob medida na ElevenLabs e mixado em Python, com volume conferido por um verificador antes da entrega. É a base do método de som de cena do Clube do Motion, aplicando técnicas do tutorial de sound design do Jacob Nordin. Versão aprovada: v5. Feito pelo Clube do Motion.",
  "indicado": "anúncio ou Reel com pessoas e lugares, filmados ou gerados por IA, que precisa parecer vivo; clínica, loja, restaurante e negócio local; terceira camada por baixo de voz e música.",
  "estilo": [
    "som de cena",
    "foley",
    "ambiência por lugar",
    "J-cut e L-cut",
    "sons gerados por IA",
    "vídeo gerado por IA",
    "sem música"
  ],
  "ficha": {
    "formato": "1080×1920, 30 qps, 9:16, áudio AAC 320 kbps",
    "duracao": "10,0 s: quatro cenas de 2,5 s, sem música e sem voz",
    "motor": "html",
    "voz": "ver o guia de estilo",
    "musica": "ver o guia de estilo",
    "fontes": "ver o guia de estilo"
  },
  "ferramentas": [
    "Claude Code",
    "ElevenLabs"
  ],
  "ficha_tecnica": {
    "Duração": "10,0 s: quatro cenas de 2,5 s, sem música e sem voz",
    "Formato": "1080×1920, 30 qps, 9:16, áudio AAC 320 kbps",
    "Imagem": "cenas geradas com IA (imagem no GPT Image 2.5, animação no Kling 3.0), recortadas e juntadas no ffmpeg",
    "Ferramenta": "Python (librosa, pedalboard, pyloudnorm, soundfile) para a mix; ElevenLabs (text-to-sound-effects v2) para os sons",
    "Sons": "12 pedidos com 2 variações cada; 11 sons escolhidos para a v5",
    "Volume": "−25,0 LUFS integrado, momentâneo máximo −21,1, pico −3,5 dBFS, medidos no áudio do MP4"
  },
  "etapas": [
    {
      "titulo": "O roteiro",
      "texto": "**Resumo:** o vídeo não tem narração nem texto na tela; o roteiro é o mapa de ações, cena por cena, com o que a imagem mostra, o instante medido e o som que entra. Quatro cenas de 2,5 s contam o dia de uma dona de clínica, da recepção cheia de manhã ao sofá de casa à noite.\n\n## De onde veio a estrutura\n\nO teste aplica as técnicas do tutorial \"Sound Design for Cinematic Filmmaking\", do Jacob Nordin (camadas, J-cut e L-cut, reverb como distância, panning sutil), num vídeo comum de 10 s, para o som aparecer sozinho. As cenas vieram de um anúncio de clínica feito antes com imagens geradas por IA; o áudio original delas era quase mudo (−49 e −63 dB de média).\n\n | \n\n | Cena\n | Clipe\n | Trecho usado\n\n | A\n | `clinica-dona-chegando.mp4`\n | 0,3–2,8 s\n\n | B\n | `clinica-dona-sala-vazia.mp4`\n | 2,5–5,0 s\n\n | C\n | `clinica-dona-noite-laptop.mp4`\n | 0–2,5 s\n\n | D\n | `clinica-dona-noite-sofa.mp4`\n | 2,5–5,0 s\n\n## Mapa de ações\n\n | \n\n | Tempo (s)\n | Na imagem\n | Som\n\n | 0,0–2,5\n | recepção clara da clínica pela manhã, pacientes sentadas conversando, ela entra com o café\n | conversa baixa da recepção\n\n | 0,45 · 1,10 · 1,73 · 2,35\n | passada lenta (medida pelo balanço do corpo e das pernas, porque os pés não aparecem)\n | passo de salto: baque + estalo de piso duro\n\n | 2,5\n | corte para a sala de atendimento vazia\n | a conversa continua abafada atrás da porta até 3,4 s\n\n | 2,55\n | ela olha o celular e abre a boca, irritada\n | suspiro curto\n\n | 3,65–4,9\n | ela gira e sai pela direita\n | jaleco girando e passos saindo, indo para a direita\n\n | 4,4\n | (ainda na sala)\n | a cidade da cena seguinte começa a entrar\n\n | 5,0–7,5\n | à noite, ela digita no MacBook; a cidade aparece pela janela\n | teclado macio de notebook + cidade abafada atrás do vidro\n\n | 7,25\n | (ainda no notebook)\n | o silêncio da casa começa a entrar\n\n | 7,5–10,0\n | em casa, no sofá, com manta e a caneca na boca o tempo todo\n | manta se acomodando (7,52 s) e goles de chá (7,75 s)\n\n | 8,5–9,3\n | quase nada se move\n | só o room tone da casa\n\n | 9,30\n | a tela do celular acende na mesa de centro (medido pelo brilho)\n | o celular vibra na madeira\n\n | 9,8–10,0\n | —\n | fade de saída\n\n## O que ficou de fora de propósito\n\n- **Relógio:** não há relógio na cena; o tique-taque da v3 descolava o som da imagem.\n\n- **Whoosh e riser nos cortes:** os cortes são parados, sem movimento que os justifique.\n\n- **Música:** o teste precisava do som de cena sozinho.\n\n## Momentos para a trilha\n\n- **2,5 s:** o L-cut da recepção, primeira passagem de lugar.\n\n- **3,65 s:** a saída pela direita, o único movimento lateral de som.\n\n- **9,30 s:** a vibração do celular, o momento principal, depois de quase um segundo de silêncio."
    },
    {
      "titulo": "A identidade visual",
      "texto": "**Resumo:** duas pistas, ambiência e foley, sem música e sem voz. Cada lugar tem o seu ar (recepção com conversa, sala vazia, cidade atrás do vidro, casa à noite) e cada ação visível tem o seu som, gerado sob medida e posto no quadro medido. As ambiências cruzam os cortes; o foley entra por pico, com panning e reverb que dizem onde a pessoa está. O conjunto fecha em −25 LUFS. Números tirados do `mix_v5.py`, do `eventos-v5.json` e do verificador.\n\n## As duas pistas\n\n | \n\n | Pista\n | O que leva\n | Como se nivela\n\n | Ambiência (`amb`)\n | conversa da recepção, room tone da sala vazia, cidade atrás do vidro, silêncio da casa\n | por LUFS (−32 a −46), com fades longos\n\n | Foley (`foley`)\n | passos, suspiro, giro e saída, teclado, manta, goles, vibração do celular\n | por pico (−15 a −27 dBFS), com o ataque do arquivo no quadro do evento (`at = evento − ataque`)\n\n## Cena por cena\n\n | \n\n | Cena\n | Som\n | Arquivo\n | Tratamento\n\n | Recepção, 0–2,5 s\n | conversa baixa, sem anúncio\n | `lobby-b-1`\n | passa-alta de 120 Hz, −32 LUFS, fade de entrada de 0,1 s\n\n | \n | 4 passos lentos de salto em 0,45 · 1,10 · 1,73 · 2,35 s\n | `passos-lobby-1` recortado\n | passa-alta de 160 Hz, pico −19/−18 dBFS alternado, mais um estalo de piso duro (passa-alta de 1,8 kHz, pico −27) e reverb curto (sala 0,35, 10%)\n\n | Corte, 2,5–3,4 s\n | L-cut: a conversa continua abafada\n | `lobby-b-1`\n | passa-baixa de 1 kHz, fade de saída de 0,8 s\n\n | Sala vazia, 2,5–5,0 s\n | room tone\n | `sala-vazia-1`\n | −44 LUFS, a partir de 2,4 s\n\n | \n | suspiro irritado em 2,55 s\n | `suspiro-2`\n | pico −21, reverb leve (sala 0,3, 8%), pan −0,05\n\n | \n | giro do jaleco e passos saindo em 3,65 s\n | `giro-saida-2`\n | reverb de sala maior (0,5, 14%), pico −18, pan de +0,1 a +0,65\n\n | Notebook, 5,0–7,5 s\n | cidade abafada atrás do vidro\n | `cidade-vidro-1`\n | −35 LUFS, pan +0,25, J-cut de 0,6 s (entra em 4,4 s) e fade de saída de 0,5 s\n\n | \n | digitação macia de notebook\n | `teclado-1`\n | passa-alta de 300 Hz, passa-baixa de 6 kHz, −31 LUFS, pan −0,05\n\n | Sofá, 7,5–10,0 s\n | silêncio da casa à noite\n | `casa-noite-1`\n | −46 LUFS, J-cut de 0,25 s (entra em 7,25 s)\n\n | \n | manta se acomodando em 7,52 s\n | `manta-1`\n | −37 LUFS, pan +0,1\n\n | \n | goles de chá em 7,75 s\n | `gole-2`\n | pico −15, centro\n\n | \n | celular vibrando na mesa em 9,30 s\n | `vibracao-1`\n | pico −26, pan −0,3, no quadro em que a tela acende\n\nO vídeo termina com fade de 0,2 s na mix.\n\n## Os pedidos à ElevenLabs\n\nCada pedido descreve o material, a ação, o espaço e o que não pode aparecer. Dois exemplos do `gerar_sfx.py`:\n\n- **Recepção:** conversa baixa de três ou quatro mulheres numa sala de espera pequena, murmúrio ininteligível, sons leves de copo e cadeira; sem anúncio, sem alto-falante, sem música, sem passos. A primeira versão, sem essas proibições, veio com fala de alto-falante.\n\n- **Teclado:** digitação rápida e contínua num MacBook, teclas baixas de tesoura, perto e quieta, sem clique de teclado mecânico. O teclado da biblioteca soava mecânico em todas as revisões.\n\nParâmetros: modelo `eleven_text_to_sound_v2`, duração de 1,5 a 8 s, `loop` ligado nas ambiências contínuas e influência do prompt de 0,5 a 0,7.\n\n## Finalização e régua de volume\n\n | \n\n | Medida\n | Teto\n | v5 (no áudio do MP4)\n\n | Integrado\n | −24 LUFS (alvo −25)\n | −25,0\n\n | Curto prazo (3 s)\n | −20 LUFS\n | aprovado no verificador\n\n | Momentâneo (0,4 s)\n | −16 LUFS\n | −21,1\n\n | Pico\n | −3 dBFS\n | −3,5\n\n- Ganho linear até o alvo; o limitador a 0,72 só age se o pico passar.\n\n- Com voz por cima, o som de cena fica pelo menos 15 LU abaixo dela, como a música.\n\n- Referência medida: no vídeo do Nordin, música e som de cena juntos ficam 9,8 LU abaixo da voz, e o vídeo inteiro está em −23,2 LUFS.\n\n## O que é \"humano\" neste som\n\n- Os passos acompanham o ritmo lento dela, não um passo marcado de biblioteca.\n\n- A conversa da recepção não corta com a imagem: some aos poucos atrás da porta.\n\n- A saída pela direita tem o som andando para a direita.\n\n- Antes da vibração, quase nada: o silêncio da casa faz o celular pesar."
    },
    {
      "titulo": "A montagem",
      "texto": "| \n\n | Arquivo\n | O que faz\n\n | `scripts/gerar_sfx.py`\n | manda cada pedido à ElevenLabs (texto, duração, loop e influência do prompt) e baixa 2 variações por ação; os pedidos dizem o material, a ação, o espaço e o que não pode ter\n\n | `scripts/mix_v5.py`\n | monta duas pistas (ambiência e foley) cena por cena: ambiências niveladas por LUFS, foley nivelado por pico, cada som com o ataque no quadro medido, panning de quem se move, reverb pelo tamanho do lugar e passa-baixa no que está atrás de porta ou vidro. Grava a pré-mix, as pistas e o `eventos.json`\n\n | `scripts/finalizar.py`\n | leva a mix ao alvo com ganho linear (−25 LUFS na v5); o limitador a 0,72 só age se o pico passar\n\n | `scripts/verificar_som_de_cena.py`\n | reprova se o som de cena passar dos tetos: integrado −24, curto prazo −20, momentâneo −16, pico −3; com `--voz`, exige ficar 15 LU abaixo da voz\n\n | `scripts/medir.py`\n | LUFS, pico e RMS e balanço L-R por janela\n\n- **Python** com librosa, pedalboard, pyloudnorm, soundfile e numpy; `ffmpeg` no PATH. Para gerar sons novos, o CLI da ElevenLabs com a sua chave.\n\n- **Sons:** use os da pasta `audio/sfx-elevenlabs/` ou gere outros com `python scripts/gerar_sfx.py audio/sfx-novos`.\n\n- **Estalo do piso:** no `mix_v5.py`, troque o caminho do `footsteps-on-stones.wav` por um passo de salto em piso duro da sua biblioteca.\n\n- **Mix:** `python scripts/mix_v5.py audio/sfx-elevenlabs audio/mix_pre.wav`, depois `python scripts/finalizar.py audio/mix_pre.wav audio/mix.wav -25` e `python scripts/verificar_som_de_cena.py audio/mix.wav`.\n\n- **Vídeo:** com `P` apontando para `cenas/`:\n\nV=\"scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,fps=30,setsar=1,format=yuv420p\"\nffmpeg -y -ss 0.3 -t 2.5 -i \"$P/clinica-dona-chegando.mp4\" -ss 2.5 -t 2.5 -i \"$P/clinica-dona-sala-vazia.mp4\" -ss 0 -t 2.5 -i \"$P/clinica-dona-noite-laptop.mp4\" -ss 2.5 -t 2.5 -i \"$P/clinica-dona-noite-sofa.mp4\" -i audio/mix.wav -filter_complex \"[0:v]$V,trim=duration=2.5,setpts=PTS-STARTPTS[a];[1:v]$V,trim=duration=2.5,setpts=PTS-STARTPTS[b];[2:v]$V,trim=duration=2.5,setpts=PTS-STARTPTS[c];[3:v]$V,trim=duration=2.5,setpts=PTS-STARTPTS[d];[a][b][c][d]concat=n=4:v=1:a=0[v]\" -map \"[v]\" -map 4:a -c:v libx264 -crf 18 -c:a aac -b:a 320k -shortest final.mp4\n\n- **Conferir de novo no MP4:** extraia o áudio do vídeo final e rode o verificador nele.\n\n**Pegadinhas:** som de cena sozinho normalizado a −14 LUFS fica alto demais (a v3 chegou a −7,4 LUFS momentâneos na vibração); o `loudnorm` numa peça de 10 s cai no modo dinâmico, por isso o ganho é linear. A vibração gerada domina o loudness e esconde o gole: confira o balanço por janela. O passo gerado na ElevenLabs veio quase só baque, sem o clique do salto, e sumia sob a conversa."
    },
    {
      "titulo": "As decisões de direção",
      "texto": "- **Só entra som que a imagem motiva.** Relógio sem relógio na cena, whoosh e riser em corte parado saíram na v5; eram o que descolava o som do vídeo.\n\n- **Mapa de ações a 10 qps antes de qualquer som:** ela anda devagar na recepção, abre a boca irritada entre 2,5 e 2,9 s, gira em 3,7 s e sai a partir de 3,9 s; a caneca fica na boca o tempo todo no sofá.\n\n- **Tempos medidos na imagem.** A tela do celular acende em 9,300 s, medido pelo brilho da região; os passos, sem os pés no quadro, saíram do balanço do corpo e das pernas.\n\n- **Sons gerados sob medida,** dois por ação, escolhidos ouvindo os numerados; os que tinham fala inteligível, anúncio, música ou zumbido foram descartados.\n\n- **Ambiência cruza o corte.** L-cut de 0,9 s com a conversa abafada atrás da porta (passa-baixa de 1 kHz); J-cut de 0,6 s da cidade e de 0,25 s da casa.\n\n- **Foley por pico, ambiência por LUFS.** Transiente nivelado por loudness some ou estoura.\n\n- **Passo com clique.** Um estalo de piso duro bem baixo (passa-alta de 1,8 kHz) somado ao baque faz o passo atravessar a conversa.\n\n- **Quase silêncio antes do momento principal:** de 8,5 a 9,3 s só o room tone, a manta e o gole, até o celular vibrar.\n\n- **Volume verificado antes de entregar:** −25 LUFS sem voz, medido no áudio do MP4.\n\nCamadas, tratamentos e números: estilo.md. Cena por cena: roteiro.md. Para fazer o som de cena do seu vídeo: PROMPT.md."
    },
    {
      "titulo": "As versões até o final",
      "texto": "| \n\n | Versão\n | O que mudou\n\n | v1\n | sons de biblioteca nivelados por LUFS e limitador do pedalboard; estourou (−10,9 LUFS, pico 0 dBFS); faltavam passos e a cidade não se ouvia\n\n | v2\n | one-shots por pico, teclas em rajadas, cidade com passa-baixa de 1,3 kHz, relógio −5 dB e finalização linear; −14,0 LUFS\n\n | v3\n | estalo agudo nos passos, cauda abafada do burburinho, tecido no giro, cidade com passa-baixa de 1,8 kHz; som bom, mas alto demais\n\n | v4\n | a mesma mix finalizada a −25 LUFS e aprovada no verificador; os efeitos ainda não casavam com o vídeo\n\n | **v5**\n | aprovada: mapa de ações a 10 qps, 11 sons gerados na ElevenLabs, nenhum efeito sem motivo na imagem, −25,0 LUFS"
    }
  ],
  "pacote": [
    {
      "pasta": "projeto/",
      "conteudo": "`cenas/` (os quatro vídeos de 5 s usados), `scripts/mix_v5.py` (a mix inteira), `scripts/gerar_sfx.py` (os pedidos à ElevenLabs), `scripts/finalizar.py`, `scripts/medir.py` e `scripts/verificar_som_de_cena.py`"
    },
    {
      "pasta": "audio/",
      "conteudo": "`mix-v5.wav` (a mix final), `stem-amb-v5.wav` e `stem-foley-v5.wav` (as duas pistas), `eventos-v5.json` (cada som com início, fim e descrição), `pedidos-sfx.json` e `sfx-elevenlabs/` com os 11 sons gerados"
    },
    {
      "pasta": "referencias/",
      "conteudo": "`estudo-da-referencia.md` (o tutorial do Jacob Nordin decupado e medido), `tutorial-som-de-cena.md` (o método completo), `links.md` e `fora-do-pacote.md`"
    },
    {
      "pasta": "render.mp4",
      "conteudo": "o vídeo final (v5)"
    },
    {
      "pasta": "scripts/gerar_sfx.py",
      "conteudo": "manda cada pedido à ElevenLabs (texto, duração, loop e influência do prompt) e baixa 2 variações por ação; os pedidos dizem o material, a ação, o espaço e o que não pode ter"
    },
    {
      "pasta": "scripts/mix_v5.py",
      "conteudo": "monta duas pistas (ambiência e foley) cena por cena: ambiências niveladas por LUFS, foley nivelado por pico, cada som com o ataque no quadro medido, panning de quem se move, reverb pelo tamanho do lugar e passa-baixa no que está atrás de porta ou vidro. Grava a pré-mix, as pistas e o `eventos.json`"
    },
    {
      "pasta": "scripts/finalizar.py",
      "conteudo": "leva a mix ao alvo com ganho linear (−25 LUFS na v5); o limitador a 0,72 só age se o pico passar"
    },
    {
      "pasta": "scripts/verificar_som_de_cena.py",
      "conteudo": "reprova se o som de cena passar dos tetos: integrado −24, curto prazo −20, momentâneo −16, pico −3; com `--voz`, exige ficar 15 LU abaixo da voz"
    },
    {
      "pasta": "scripts/medir.py",
      "conteudo": "LUFS, pico e RMS e balanço L-R por janela"
    }
  ],
  "prompt": "Quero o som de cena do meu vídeo no mesmo método do projeto \"Som de cena em 10 s\", que está em 07-videos/projetos/som-de-cena/.\n\nVídeo montado: {{VIDEO}}\nO vídeo tem voz ou música por cima? {{VOZ_MUSICA}} (se tiver, os arquivos)\nLugares que aparecem (para a ambiência de cada um): {{LUGARES}}\nMomento principal, que precisa pesar mais: {{MOMENTO}}\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-som-de-cena.md. Depois abra projeto/scripts/mix_v5.py (load, lufs_to, pico_to, pan, put e as cenas), gerar_sfx.py, finalizar.py e verificar_som_de_cena.py. Me diga em poucas linhas o que vai reaproveitar.\n\n2. Mapa de ações a 10 qps: monte folhas de contato do vídeo com o tempo em cada quadro e anote, por cena, o lugar (o que se ouviria ali), quem se mexe, quando e com que material, e o que acontece fora do quadro e faria som. Só entra som que a imagem motiva. Me mostre o mapa antes de gerar qualquer som.\n\n3. Meça os tempos que importam: evento pelo brilho ou pelo movimento da região (tela que acende, porta que fecha), passos pelo balanço do corpo quando os pés não aparecem, boca que abre = som de voz (suspiro, riso, resmungo).\n\n4. Gere os sons sob medida na ElevenLabs, 2 variações por ação, adaptando o gerar_sfx.py: material + ação + espaço + o que não pode ter (sem fala inteligível, sem anúncio, sem música). Use a biblioteca quando o som certo existir nela.\n\n5. Escolha as variações medindo cada arquivo e ouvindo os numerados; descarte fala, anúncio, música, zumbido e arquivo mudo.\n\n6. Monte copiando o mix_v5.py (sem editar o original): ambiência por cena nivelada por LUFS, cruzando o corte com J-cut de 0,25 a 0,7 s e L-cut com passa-baixa de ~1 kHz; foley nivelado por pico, com o ataque no quadro medido; panning sutil de quem se move; reverb pelo tamanho do lugar; passa-baixa no que está atrás de vidro (1,3 a 1,8 kHz); quase silêncio antes do momento principal.\n\n7. Confira o balanço cena a cena, por janela: um som denso pode esconder os outros; passo precisa de clique para atravessar a ambiência.\n\n8. Volume antes de entregar: sem voz, finalize a −25 LUFS com finalizar.py; com voz, deixe o som de cena 15 LU abaixo dela. Rode verificar_som_de_cena.py e meça de novo no áudio do MP4 final.\n\n9. Entregue o vídeo com o som, a mix, as pistas separadas e o eventos.json, com uma anotação do que entrou e por quê.",
  "campos": [
    "LUGARES",
    "MOMENTO",
    "VIDEO",
    "VOZ_MUSICA"
  ],
  "fonte": {
    "nome": "Clube do Motion",
    "url": "https://clubedomotion.com/projeto/?id=som-de-cena",
    "uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
  }
}