Caso 04Produto digital à venda

RASANTE SFX

369 efeitos sonoros para vídeo de drone FPV, gerados por código e vendidos na minha loja. O agente que escreve os sons não consegue ouvir, e este caso é sobre como trabalhar assim.

Ouvir os sons
Meu papel
Produto e direção de som. O código é do agente; a audição é minha.
Período
Outubro e novembro de 2026, três versões
Situação
À venda por R$ 47, com licença comercial
Stack
Python, NumPy, SciPy, pyloudnorm e ffmpeg

Em 30 segundos

Vídeo de drone FPV chega mudo ou com barulho de motor. O RASANTE é o resto do som: o lugar onde se voou e o peso de cada corte. São arquivos WAV gerados por código a partir de seeds fixas, sem nenhuma gravação nem amostra de terceiros.

O problema de engenharia é fazer som bom com um autor que não ouve. O agente escreve a síntese, mede tudo o que dá para medir e lê espectrogramas. Eu ouço, e o que não soa bem volta como regra escrita.

369
sons em 11 pastas, 62 deles em loop
100 min
de áudio, em WAV de 48 kHz e 24 bits
1 min
para refazer o pack inteiro a partir das seeds, em 10 núcleos
0
gravações e amostras de terceiros, então nenhuma licença para herdar

Ouça como você, veja como o agente

O agente não ouve. O que ele tem é o espectrograma: tempo na horizontal, frequência na vertical, energia na cor. Aqui os dois andam juntos.

Mergulho longo

FPV_WHOOSH_Dive_Long_01.wav

Espectrograma de Mergulho longo. O ar sobe de tom até o fundo do mergulho, marcado pelo ponto de sincronia, e o grave forte chega ali. Depois de passar, o topo cai.

O ar sobe de tom até o fundo do mergulho, marcado pelo ponto de sincronia, e o grave forte chega ali. Depois de passar, o topo cai.

Duração
5,5 s
Sincronia
2409 ms
Loudness
-14,0 LUFS
Pico verdadeiro
-1,00 dBTP

O áudio são as prévias da página de venda. As imagens foram calculadas a partir delas, no mesmo mapa de cor do QA do pack, e as medidas são dos WAV que o comprador recebe.

Depois de mexer em qualquer recipe, revisar o espectrograma é obrigatório para o agente. Ele procura tom parado, corte seco, topo cheio demais e energia onde não devia ter. Não é ouvir, e eu não finjo que é. Só tira da minha frente o que dá para reprovar sem ouvir.

Som escrito em código

Não existe biblioteca de amostras por trás. Cada som é uma função Python, feita de camadas, com envelope, filtro que se move e espaço.

  1. dsp.py

    496 linhas. Ruído, filtros, STFT, reverb e limiter.

  2. elements.py

    1.422 linhas. Vento, ondas, bolhas, pássaros, whoosh e boom.

  3. recipes/

    2,3 mil linhas em 11 módulos, um por pasta do pack. Cada linha descreve um som.

  4. build.py

    280 linhas. Render, master, WAV com metadados, prévias e catálogo.

tools/elements.py, o começo do mergulho
def dive(rng, dur=3.0, pkf=0.78, f0=170, fpk=1100, f1=240, flow=300, pan0=-0.3, pan1=0.25, rise=2.0, sub=0.6,
         drop=None, pull=0.0, t60=2.6):
    """Mergulho do drone: o corpo grave entra primeiro, o ar sobe de tom conforme a queda acelera
    e o ponto mais forte fica no fundo. Mesmas camadas da passagem, sem chiado nem sopro."""
    n = n_of(dur)
    pk = pkf * dur
    mid = pass_band(rng, dur, pkf, f0 * rng.uniform(0.92, 1.08), fpk * rng.uniform(0.92, 1.08), f1, bw=0.55,
                    pan0=pan0, pan1=pan1, air=0.04, hi_cut=4800, rise=rise, curve=2.0)
    low = pass_band(rng, dur, pkf, 58, flow, 48, bw=0.8, pan0=pan0 * 0.2, pan1=pan1 * 0.2, air=0.0, lo_cut=30,
                    hi_cut=1200, rise=0.9, curve=1.2)
    y = low + mid + pass_sub(n, pk) * sub

Cada som tira a seed do próprio nome. Rodar de novo dá o mesmo arquivo, então o pack cabe num repositório: os 1,74 GB de WAV nem entram no git. E o build não toca em som marcado como aprovado, para uma melhoria em outro lugar não mudar o que eu já ouvi.

Da descrição ao arquivo
# Em recipes/whoosh.py: uma linha é um som do pack.
W("Long", "Dive", "Mergulho longo: virada lenta, queda acelerando e saída no fundo", partial(dv, fpk=1300), 3.2),

# Em tools/sound.py: a seed sai do nome do arquivo.
def seed_value(self):
    return self.seed if self.seed is not None else zlib.crc32(self.name.encode())

O que dá para medir

Tudo o que tem número é conferido por código, nos 369 arquivos, antes de eu ouvir qualquer coisa.

O que confereRegra
Todo arquivo
Formato48 kHz, PCM de 24 bits, estéreo
NomeFPV_<CATEGORIA>_<SUBTIPO>_<Descricao>_<NN>.wav
ClippingNenhuma amostra no limite
DC offsetMédia abaixo de 0,001
Correlação estéreoPositiva
Som único
Pico verdadeiro-1 dBTP, com tolerância de 0,15
ComeçoNo máximo 5 ms de silêncio. Riser fica de fora, porque começa do nada
FimSem clique: abaixo de -40 dB no último meio milissegundo
Loop
Loudness-23 LUFS, com tolerância de 0,5
Pico verdadeiroAbaixo de -3 dBTP
EmendaSalto de no máximo 6 dB entre o fim e o começo
Timbre na emendaMuda no máximo 6 dB entre o fim e o começo
Auditoria
CliquesProcura degraus no meio do som, fora dos tipos em que o golpe é o objetivo
MonoPerde no máximo 3 dB ao somar os canais
Som de motorTom parado entre 150 e 600 Hz em no máximo metade do tempo
DuplicatasProcura variações quase iguais do mesmo subtipo

A promessa virou teste

A página de venda diz que o pack não tem som de drone, porque o piloto já tem de sobra. Uma regra escrita não segura isso, já que o agente pode chegar num zumbido sem querer. A auditoria procura pico tonal parado entre 150 e 600 Hz, a faixa de motor, e sinaliza quem passa de metade do tempo. Na última rodada não sinalizou nenhum. Os 30 sons tonais de propósito, como sinos, metal e Shepard, saem listados à parte para eu saber quais são.

O que só o ouvido pega

Os testes passam e o som ainda pode ser ruim. A primeira trilha completa que pedi, para um voo meu de 80 segundos, levou quatro rodadas.

O agente recebeu o vídeo mudo e o leu por fluxo óptico, quadro a quadro. Achou sozinho, em 17,567 s, o ponto em que o vídeo passa a rodar ao contrário. Mas gostar ele não mede. Minhas frases abaixo chegaram no chat, sem nenhum termo técnico, e ele transformou cada uma em medição.

  1. Rodada 1

    Alguns sons estão desagradáveis, parece até que tem alguns sopros que incomodam muito. Parece que tem alguém assoprando no meu ouvido.
    O agente achou
    Ar de velocidade com tremulação independente em cada canal, whooshes de banda larga com ataque seco e pan quase total, um thump de ruído marrom e chiado entre 5 e 12 kHz.
    O que mudou
    Whooshes refeitos em banda estreita, de 0,55 oitava, com Doppler, envelope liso e estéreo correlacionado. Eventos cortados de 35 para 24. O agudo acima de 8 kHz caiu cerca de 10 dB.
  2. Rodada 2

    Deixou de incomodar tanto quanto antes, mas ainda não se tornou agradável para o meu ouvido. O SFX sempre precisa ser cinematográfico, agradável, épico, grave, bem acabado, como os SFX de grandes produções.
    O agente achou
    Aqui não havia defeito para medir. Estava limpo e sem tamanho.
    O que mudou
    Entrou um pad tonal com acordes que seguem o voo e uma camada de impactos: boom de abertura, swells reversos, sub e um clímax com braam. Os whooshes ganharam corpo grave.
  3. Rodada 3

    Eu gostei do resultado, mas ainda escuto chiados em alguns momentos.
    O agente achou
    Um script novo mediu o agudo de 4 a 12 kHz em cada camada da mix e achou cinco fontes.
    O que mudou
    Todas as fontes de ruído passaram a parar em 4 a 5 kHz. A cachoeira ganhou rugido grave para não perder corpo.
  4. Rodada 4

    Ficou bem melhor, considero aprovado o SFX desse vídeo.
Agudo de 4 a 12 kHz em cada fonte de ruído, em dB. Mais para a esquerda é menos chiado.
FonteAntesDepois
Cachoeira de pertoAos 13 a 16, 19 a 23, 47 s−28−37
Ar de velocidadeAos 16,5 a 17,4 s−28−36
Scrub do rewindAos 17,7 a 18,8 s−23−33
FolhagemAos 41 s−28−31
Whoosh do chicoteAos 62,2 s−25−39

O que eu recusei virou regra

Essas recusas não ficaram na conversa. Estão escritas no método que qualquer agente lê antes de sonorizar um vídeo novo, com a causa técnica de cada uma, para eu não precisar reclamar de novo.

  1. Sopro

    Ruído largo com ataque seco, pan total para um lado, ar contínuo com tremulação e qualquer som de ar sem corpo grave.

    trilhas/METODO.md

  2. Som cru

    Ruído e seno sem camadas nem espaço, sem grave e sem momentos marcados. O tamanho vem da soma da cena com um pad tonal e os impactos.

    trilhas/METODO.md

  3. Chiado

    Ruído de fonte natural com energia acima de 5 kHz. Já apareceu na cachoeira, no borrifo, nas folhas, na fita do rewind e no ar dos whooshes.

    trilhas/METODO.md

Um filme só com o pack

Da Serra ao Mar tem 80 segundos de voo pela Chapada Diamantina e por Salvador, e todo o som vem do pack. É a prova que o catálogo não dá.

A sessão de som fica embaixo do vídeo, com cada arquivo no lugar em que entra. As imagens são minhas e a cor segue o meu padrão de grading. Se uma ação aparece na imagem e o pack não tem o som, ele nasce no pack: foi assim que surgiram os sons de água.

Timeline do som arquivos
Cada bloco é um arquivo do RASANTE.Dê play e veja o nome de cada som no instante em que ele toca.
AmbiênciaÁgua e marAr e ventoWhooshTransiçõesPadImpactosDetalhesAções
Cinematic FPV · 1:20 · SFX do RASANTE

Da pasta à venda

Som bom numa pasta não é produto. Quem compra recebe um zip pronto para usar, e a venda é feita na minha própria loja.

O zip tem 1,74 GB, com os WAV em pastas por função, nomes que dá para buscar no editor e metadados dentro de cada arquivo. Vem um catálogo em HTML, em português e inglês, com busca e prévia de cada som, e um guia de uso de 72 páginas. A venda passa pelo Gumroad, e a página está no caso da loja.

Capa do guia de uso do RASANTE
A capa do guia
Página do guia sobre o ponto de sincronia de cada som
O ponto de sincronia, que está no catálogo de cada som
Página do guia com a timeline aberta do filme Da Serra ao Mar
O filme aberto, para copiar o método
Catálogo em HTML do pack, com busca, filtros e a lista de sons
O catálogo que vem no zip, com busca, filtro por pasta e prévia de cada arquivo.
VersãoSons
1.0Ambiências, vento, whooshes, impactos e transições, em 9 pastas.237
1.1Pasta nova de foley de água, mergulhos do drone e mais booms.309
1.2Pasta nova de mecânicos, estilhaços, morphs e passagens por dentro de túnel.369

Quem compra recebe as próximas versões sem pagar de novo, e o pack está congelado em 369 sons até 17 de novembro de 2026 por decisão minha. O que nasce até lá fica numa fila, fora do build, com a própria audição.

Como dividi o trabalho com a IA

Som é o caso mais extremo do que todo projeto com agente tem: a parte que importa precisa de alguém que perceba o resultado.

Ficou com a IA

  • Escrever o DSP, os elementos, as recipes, o QA e a auditoria.
  • Medir o que eu reclamava de ouvido e achar a causa no sinal.
  • Montar o zip, o catálogo, o guia em PDF e a página de venda.

Ficou comigo

  • Decidir o que o pack é e o que não é, a começar por não ter som de drone.
  • Ouvir e recusar. Sopro, som cru e chiado saíram daí.
  • Filmar os voos e aprovar o Da Serra ao Mar, que prova o pack.

O que ainda falta

O que os testes não respondem e o que eu ainda não tenho para mostrar.

  • Teste não diz se um som é bonito. Isso continua no meu ouvido, e eu sou uma pessoa só. A audição anda mais devagar que a geração e ainda não cobre o pack inteiro.
  • O espectrograma pega defeito de forma, não de gosto. Mais de uma vez o agente achou tudo certo e eu não gostei.
  • A página de venda foi ao ar no fim de outubro de 2026. Ainda é cedo para falar de vendas, e por isso não falo.
  • O pack só tem síntese. Se um dia entrar material de fora, só vale CC0 ou gravação própria, com a origem registrada.