Communitygithub.com

sound-design

Diseño de sonido para videos con la CLI local AudioFX (`sfx`). 65 efectos como filtergraphs de ffmpeg, incluidos momentos cinematográficos sintetizados anclados a un segundo (impacto hit, riser, whoosh, sub drop, braam de tráiler, gap antes del drop, corte con cola de reverberación, throw de reverberación o eco, stutter, voz de tráiler, voz de archivo), samples grabados superpuestos en un segundo exacto (de la biblioteca de sonidos del usuario como Epidemic Sound, de ElevenLabs o de archivos locales), mezcla de voz, música y efectos en una línea de tiempo con la música atenuada bajo la voz, música ajustada al video (una pista cortada a la duración del video con su drop en el corte principal, stems tratados uno por uno) y tratamientos (radio AM, línea fija, celular, altavoces de dispositivo, walkie-talkie, TV antigua, vinilo, casete, bajo el agua, detrás de la pared, reverberación desde baño hasta catedral, eco, lejano, robot, monstruo, fantasma, sueño, flashback, shock post-explosión, cámara lenta, tape stop, barridos de filtro, swell inverso, paso bajo/alto, voz limpia, normalización LUFS).

¿Qué es sound-design?

El skill sound-design proporciona una herramienta de diseño de sonido profesional para videos, basada en la CLI local `sfx` que genera filtergraphs de ffmpeg. Ofrece 65 efectos que abarcan desde momentos cinematográficos sintetizados (como impactos, risers, whooshes, sub drops, y más) hasta samples grabados que se pueden superponer en segundos exactos, permitiendo un control preciso del audio. Soporta la mezcla de voz, música y efectos en una línea de tiempo, con funcionalidades como ducking de música bajo la voz, ajuste de música a la duración del video (colocando el drop en el corte principal y tratando stems individualmente) y una amplia gama de tratamientos de audio (radio AM, teléfono, submarino, reverberación, eco, etc.). El skill está diseñado para trabajar con ffmpeg, Python con numpy, Remotion, y plataformas de video. Además, integra la capacidad de generar voces, música o efectos desde ElevenLabs (mediante el skill elevenlabs-fx) y de buscar y descargar samples de bibliotecas como Epidemic Sound a través de un MCP. El flujo de trabajo típico implica analizar el video para detectar cortes, seleccionar efectos de un catálogo, aplicar tratamientos por separado antes de mezclar, y normalizar el loudness a -14 LUFS para redes sociales o YouTube. La herramienta incluye un estudio web (`sfx studio`) para que el usuario ajuste los parámetros auditivamente, y la CLI está disponible en español para comandos como "bajo el agua", "radio", "teléfono", "golpe", etc.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/NachoEstevo/audiofx/tree/HEAD/skills/sound-design

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Diseño de sonido con AudioFX

AudioFX convierte efectos de diseño de sonido en filtergraphs de ffmpeg. Cada efecto es una cadena que va directamente a ffmpeg -af, o se aplica a un archivo con la CLI. Lo que escuchas en el estudio web es exactamente lo que sale del render.

Comando

A lo largo de este documento, sfx significa:

node {{AUDIOFX_DIR}}/bin/sfx.mjs

Si sfx no es un comando en esta máquina, usa la ruta completa. Funciona desde cualquier carpeta. Si falla por culpa de ffmpeg, ejecuta sfx doctor.

NecesitasComando
El catálogosfx list (o --json)
Parámetros, rangos y cuándo usar un efectosfx describe <effect>
Procesar un archivo de audio o videosfx apply <input> <output> <step...>
El filtergraph para tu propio ffmpegsfx graph <step...>
Medir loudness y picossfx analyze <file>
La duración de un video y sus cortes durossfx cuts <video>
Dónde sube una canción (candidatos a drop) y dónde bajasfx sections <file>
Mezclar voz, música y efectos en una línea de tiempo, con la música atenuada bajo la vozsfx mix <output> --voice v.wav --music m.wav [--sfx hit.wav@6] [--video cut.mp4], o sfx mix project.json <output>
Guardar un sample grabado y superponerlo`sfx sample add <file
Una nueva voz, sonido o canción, ya procesados`sfx generate <sfx
Dejar que el usuario escuche y ajustesfx studio (abre http://127.0.0.1:5177)

Un paso se escribe effect[:param=value,param=value][@from-to]:

sfx apply voice.wav voice-phone.wav telephone
sfx apply clip.mp4 clip-fx.mp4 "underwater:[email protected]" --fade 0.4
sfx graph "reverb:space=cathedral,mix=0.4" "fade:in=0,out=2"
  • Los pasos se ejecutan en orden.
  • @3.2-7 limita el efecto a esa ventana, con un crossfade de --fade segundo (0.25 por defecto) entre la señal seca y la procesada. @3.2- significa desde 3.2 s hasta el final.
  • Si la salida es .mp4, .mov, .mkv o .webm, la imagen se copia sin recodificar y el audio se reemplaza.
  • Si te equivocas en un parámetro, la CLI lista los válidos. No adivines: ejecuta sfx describe.

Flujo de trabajo

  1. Lee el guion o el montaje y marca los momentos que necesitan tratamiento: una voz que llega a través de un teléfono, la cámara bajo el agua, un recuerdo, un drop, un corte cómico. sfx cuts video.mp4 imprime la duración del video y sus cortes duros (un --threshold más bajo, por defecto 10, captura los más suaves). Anota los tiempos en segundos.
  2. Elige el efecto de la tabla de abajo. Cuando no estés seguro, sfx list y sfx describe. Comienza con los valores por defecto: están ajustados para sonar claros sin exagerar.
  3. Trata cada pista por separado, antes de mezclar. Los efectos de época, carácter y espacio van en la voz o en el efecto específico, no en la mezcla completa. La excepción es un recurso narrativo que afecta todo lo que se escucha (bajo el agua, shell shock, sueño).
  4. Usa ventanas para cambios dentro de un clip (@from-to) en lugar de cortar y empalmar archivos.
  5. Mezcla y normaliza al final con sfx mix (ver "Mezcla"): atenúa la música bajo la voz y normaliza el master hacia -14 LUFS para redes sociales y YouTube (--loudness -16 para podcasts, -23 para radiodifusión). Para un solo archivo, loudness al final de su cadena hace lo mismo. Luego verifica con sfx analyze que el loudness esté cerca del objetivo y que el pico verdadero se mantenga en -1 dBTP o menos.
  6. No puedes escuchar. Di qué efectos aplicaste y a qué horas, y ofrece sfx studio para que el usuario los ajuste de oído. Si te devuelven nuevos valores, el estudio les da el comando exacto para copiar.

Momentos cinematográficos: lo que vende un corte

Los videos de lanzamiento no suenan "cinematográficos" por un filtro en la voz, sino por elementos colocados en el instante justo: un riser que sube hasta el corte, un gap de silencio y un hit con sub cuando aparece el producto. Estos efectos sintetizan esos elementos dentro del mismo filtergraph (sin samples con licencia) y se anclan con at=<segundo>:

MomentoCadena (el corte en T)
Hit en el corte, revelación del producto"riser:at=T,length=2.5" "drop-gap:at=T-0.45,gap=0.45" "hit:at=T"
Título o logotipo"braam:at=T" "sub-drop:at=T,level=-4"
Texto o UI entrando volando"whoosh:at=T,length=0.8" (pico en T)
Corte a negro"stop-tail:at=T,decay=3.5" "sub-drop:at=T,level=-4"
Puntuar una palabra"throw:at=T,kind=echo" en la voz
Glitch tecnológico"stutter:at=T,slice=0.12,repeats=4" (alarga el audio)
  • at es el segundo del corte en el archivo que estás procesando. Para riser es donde termina; para whoosh, donde alcanza su pico; para drop-gap, donde el gap comienza.
  • Ajusta el nivel con level (dB) antes de tocar gain: hit y sub-drop ya vienen fuerte.
  • Pocos y precisos: uno o dos momentos cada 15 s. Un hit en cada corte cansa.
  • trailer-voice (voz profunda, épica con sala) y archival (entrevista de archivo) son tratamientos de voz, sin at.
  • ¿Necesitas un sonido grabado real (un impacto con peso, una puerta, cristal, lluvia) en lugar de uno sintetizado? Superpone un sample en T: ver la siguiente sección.

Samples reales como capas

Los hits sintetizados son rápidos y gratuitos, pero un impacto, whoosh o foley grabado suele sonar más real. El efecto layer mezcla cualquier archivo de audio en la señal en un segundo exacto, dentro del mismo filtergraph:

sfx apply mix.wav mix-door.wav "layer:file=door.wav,at=6,align=onset,level=-3"
sfx apply mix.wav mix-hit.wav "riser:at=6,length=2.5" "drop-gap:at=5.55,gap=0.45" "layer:file=library:ab12cd34ef56,at=6,align=onset" "sub-drop:at=6,level=-4"
  • align=onset mide dónde está el ataque del sample y coloca eso en at. Los samples a menudo comienzan con 20–300 ms de silencio o pre-roll; con el valor por defecto align=start, ese silencio hace que el hit aterrice tarde. Usa align=peak para whooshes y swells, cuyo punto más fuerte es lo que aterriza en el corte.
  • level en dB, length para usar solo los primeros segundos, fadeIn / fadeOut para darle forma. sync=<s> establece el punto de sincronización manualmente (con align=start).
  • Un sample reemplaza el hit, braam o whoosh sintetizado; mantén el riser, drop-gap y sub-drop a su alrededor.
  • Para tratar el sample en sí mismo (reverberación, distancia, un altavoz), procesa primero con sfx apply sample.wav sample-fx.wav ... y superpone el resultado.
  • Un paso (coche, moto, dron): renderiza el sample aislado a través de doppler con at en su punto más cercano, luego superpónlo con sync en ese segundo para que el paso aterrice en el corte: sfx apply car.wav car-pass.wav "doppler:at=2,speed=90", luego "layer:file=car-pass.wav,at=6,sync=2".
  • Los niveles de los samples varían mucho. Después de superponer, ejecuta sfx analyze en el resultado y baja level si el pico alcanza 0 dBFS.

Dónde viven los samples

Los samples son audio con licencia que pertenece a la suscripción del usuario. Viven en ~/.audiofx/samples, cada uno con un .json (id, título, fuente, tipo, stem) a su lado, y nunca en una carpeta de proyecto o en un repositorio:

sfx sample add <file-o-url> --title "Portazo, madera pesada" --id <id de biblioteca> --source epidemic-sound
sfx sample list            # cada sample tiene library:<id>, duración y dónde está su ataque

sample add copia un archivo local o descarga una URL, mide el ataque e imprime la referencia library:<id> para usar en layer:file=.... El estudio muestra los samples en su pestaña Samples, y sus momentos pueden usar uno en lugar del impacto o whoosh sintetizado.

Obtener de una biblioteca de sonidos (Epidemic Sound MCP)

Cuando el usuario tiene el MCP de Epidemic Sound conectado (herramientas SearchSoundEffects y DownloadSoundEffect):

  1. Reutiliza primero. sfx sample list: si ya hay un sample adecuado, úsalo.
  2. Busca con SearchSoundEffects: un término corto y concreto ("impacto cinematográfico grave", "whoosh rápido corto", "cristal roto"), first: 5, y un filtro de duración en milisegundos que se ajuste al uso (impactos y whooshes menores de 4000; ambientes más largos). Elige por título, etiquetas y duración.
  3. Descarga con DownloadSoundEffect (fileType: WAV). Devuelve una URL firmada que caduca.
  4. Guárdalo: sfx sample add "<assetUrl>" --title "<título>" --id <id> --source epidemic-sound. Nunca escribas la URL firmada en un archivo, y nunca guardes el audio dentro del proyecto.
  5. Úsalo con el library:<id> que sample add imprimió: "layer:file=library:<id>,at=T,align=onset".

No puedes escuchar, así que no afirmes que un sample "suena bien". Reporta lo que puedas medir (duración, dónde está el ataque, el pico del resultado) y, cuando la elección importe, añade dos o tres candidatos y deja que el usuario elija de oído en la pestaña Samples del estudio. Si una descarga falla con RETRY_LATER, espera los segundos que indique antes de volver a intentarlo.

Mezcla: sfx mix

sfx mix coloca clips de voz, música y efectos en una línea de tiempo, atenúa la música bajo la voz y normaliza el master, en un solo paso de ffmpeg. La forma rápida toma una bandera por clip, archivo@segundo:

sfx mix final.mp4 --video cut.mp4 --voice [email protected] --music library:<id> --sfx [email protected]
sfx mix final.wav --voice vo.wav --music song.wav --duck 14 --loudness -16
sfx mix --video cut.mp4 --voice [email protected] --music song.wav --print > mix.json
  • La música baja 10 dB mientras se reproduce una voz (--duck <dB>, --no-duck). El ataque de un clip --sfx aterriza en su segundo, como align=onset.
  • El master se normaliza hacia -14 LUFS (--loudness <LUFS|off>), luego un techo de -1 dB. La mezcla se mide y se lleva al objetivo con una ganancia fija, por lo que su dinámica se mantiene; cuando los picos alcanzan primero el techo, el limitador se empuja hasta 6 dB para cerrar la brecha, por lo que una mezcla con hits muy fuertes aún puede aterrizar por debajo del objetivo: verifica con sfx analyze. El audio AAC de un video puede tener picos de aproximadamente 0.3 dB por encima del techo ("master": { "ceiling": -1.5 } lo mantiene en -1 dBTP).
  • La mezcla dura --duration, de lo contrario la duración del video, o hasta el final del último clip. Con --video y una salida de video, la imagen se copia y el audio se reemplaza.
  • --print escribe el JSON del proyecto en lugar de renderizar: edítalo, luego sfx mix mix.json final.mp4.

Un archivo de proyecto le da a cada clip y pista su propia configuración. Las rutas son relativas al archivo del proyecto, y library:<id> funciona donde sea que lo haga un archivo:

{
  "version": 1,
  "video": "cut.mp4",
  "tracks": [
    { "id": "voz", "role": "voice", "clips": [{ "file": "vo.wav", "at": 1.5, "steps": [{ "effect": "voice-clean" }] }] },
    { "id": "musica", "role": "music", "clips": [{ "file": "library:<id>", "fadeOut": 2 }], "duck": { "depth": 12, "release": 600 } },
    { "id": "golpes", "role": "sfx", "clips": [{ "file": "door.wav", "at": 7.52, "align": "onset", "gain": -3 }] }
  ],
  "master": { "loudness": -14 }
}
  • Clip: file, at (segundo de la línea de tiempo), start y length (el tramo del archivo a usar), gain (dB), fadeIn, fadeOut, align (start, onset, peak), steps.
  • Track: id, role (voice, music, sfx), gain, mute, solo, steps, duck (true, false o { depth, attack, release, threshold }; activado por defecto para la música).
  • Step: { "effect": "underwater", "params": { "depth": 0.8 }, "from": 4, "to": 9.5, "fade": 0.35 }. Los pasos del clip se ejecutan en tiempo del clip (0 = inicio del clip); los pasos de la pista se ejecutan en tiempo de la línea de tiempo, por lo que sus ventanas se alinean con el video.
  • Master: steps, loudness (null deja el nivel como está mezclado), ceiling (dB, por defecto -1).

Música ajustada al video

El objetivo es una pista cortada a la duración exacta del video, con su drop en el corte principal del video. No puedes escuchar qué subida es "el" drop: mide, propón con números y deja que el usuario confirme de oído. Con el MCP de Epidemic Sound (SearchRecordings, DownloadRecording, EditRecording, PollEditRecordingJob, DownloadRecordingEdit):

  1. Mide el video. sfx cuts cut.mp4 imprime su duración (digamos 30.000 s) y sus cortes duros. Acuerda con el usuario el corte principal C donde debe aterrizar el drop (digamos 12.4 s).
  2. Encuentra y guarda una pista. SearchRecordings con query: { term: "..." }, un filter (bpm: {min,max}, duration: {min,max}) y una fuente (opcional). Elige por título, etiquetas, BPM, duración y clave. Descárgala con DownloadRecording y guárdala con sfx sample add ... --source epidemic-sound, o pasa directamente su library:<id> a sfx mix (el mix la descargará solo si es necesario y nunca la almacena en el proyecto).
  3. Mide sus secciones. sfx sections <archivo> imprime las subidas (candidatos a drop) y bajadas en segundos, con la energía y los picos. Si la pista ya tiene un drop natural alrededor de C, dilo y usa la pista tal cual.
  4. Una pista no termina en el lugar correcto, su drop no está en el momento justo o la duración sobra: córtala con parámetros. Usa EditRecording para action: trim, split, tempo, pitch, fadeIn, fadeOut, normalize, reverse. Espera a que PollEditRecordingJob devuelva completed, luego DownloadRecordingEdit: descarga a un archivo temporal, luego sfx sample add ... --source epidemic-sound con una nota sobre lo que se editó.
  5. Colócala en la mezcla y atenuación. sfx mix final.mp4 --video cut.mp4 --music library:<id-edited>. Si la música tiene un ataque suave, usa align=peak en el music clip para que el drop aterrice exactamente en el corte: --music library:<id>@12.4,pista=peak (pero sfx mix usa align=start por defecto para la música; usa un archivo de proyecto y pon "align":"peak" en el clip).
  6. Stems para cortes y drops ajustados. Cuando la pista está en stems (batería, bajo, pads, leads, voces), cada uno se puede tratar por separado. Para stems de Epidemic Sound, el MCP devuelve una lista de stems en el Recording, cada uno con id, slug y duration. Decide qué stem necesita acción (batería con filtro, bajo al frente en el drop). Un efecto de tratamiento que va solo en un stem o un efecto de filtro que barre uno mientras los demás siguen limpios: usa un archivo de proyecto con un clip sfx o multiplica las pistas, da a cada una su propia cadena de pasos y enmudece las otras.

Tratamientos

El catálogo completo de efectos con sus parámetros y cuándo usarlos se obtiene ejecutando:

sfx list

Los efectos se agrupan en:

GrupoEfectos
Voz y caráctervoice-clean, radio-am, landline, telephone, device-speakers, walkie-talkie, old-tv, vinyl, cassette, trailer-voice, archival, robot, monster, ghost
Espacio y ambienteunderwater, behind-wall, far-away, reverb (de baño a catedral), echo
Psicológico / estadodream, flashback, shell-shock, slow-motion
Transicionestape-stop, filter-sweep, reverse-swell, low-pass, high-pass
Momentos cinematográficoshit, riser, whoosh, sub-drop, braam, drop-gap, stop-tail, throw, stutter
Utilidadesloudness, fade, layer, gain, normalize

El efecto voice-clean elimina el ruido de fondo, la reverberación no deseada, el soplido y normaliza la voz a un nivel uniforme. Es el paso uno de cualquier tratamiento de voz (después de aplicarlo, añade el efecto de carácter o espacio).

Cómo pedir el efecto

Describe lo que quieres que suene y la IA lo traduce al efecto correcto:

Lo que dicesEfecto que se aplica
"Suena como si estuviera llamando por teléfono"telephone
"La cámara está bajo el agua"underwater
"Está recordando"flashback
"Queremos que la voz suene como la de un robot"robot
"La música necesita un barrido de filtro"filter-sweep
"La escena necesita un impacto en el corte"hit en el corte
"La voz necesita sonar limpia y clara"voice-clean

Samples y este documento en español

También para pedidos en español: bajo el agua, radio, teléfono, golpe, riser, whoosh, braam, sample, efecto de sonido grabado, mezcla, ducking, música al largo del video, el drop en el corte, stems, LUFS.

Preguntas frecuentes

P: ¿Puedo usar sfx sin instalar ffmpeg? R: No. AudioFX necesita ffmpeg en el PATH. Ejecuta sfx doctor para diagnosticar problemas.

P: ¿Cómo sé si un efecto está funcionando correctamente? R: No puedes escuchar. Aplica el efecto con los valores por defecto, ofrece sfx studio para que el usuario ajuste, y verifica con sfx analyze que los niveles de loudness y pico sean correctos.

P: ¿Puedo aplicar múltiples efectos a un solo clip? R: Sí. Los pasos se ejecutan en orden. Ponlos en una cadena separada por espacios: sfx apply clip.mp4 clip-out.mp4 "effect1" "effect2" "effect3".

P: ¿Cómo manejo los samples de Epidemic Sound? R: Usa el MCP para buscar y descargar. Guarda el sample con sfx sample add y refiérete a él con library:<id> en la capa o mezcla. Nunca guardes la URL firmada o el archivo de audio dentro del proyecto.

P: ¿Qué hago si un paso de mezcla suena distorsionado? R: Baja el gain del clip o el level del efecto. Verifica con sfx analyze que el pico verdadero esté por debajo de -1 dBTP. Añade loudness al final de la cadena del master.

P: ¿Puedo usar sfx con archivos de video que no tienen pista de audio? R: No. Si el video no tiene audio, añade una pista de silencio con ffmpeg antes de aplicar sfx, o usa sfx mix con el flag --video que añadirá la pista de audio resultante.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados