Communitygithub.com

m4bwav/sfxwright

Planificar, crear, editar, verificar y documentar efectos de sonido para juegos, cine, video y aplicaciones, manteniendo la fuente y licencia de cada archivo en el disco.

¿Qué es sfxwright?

sfxwright es una habilidad para agentes de IA (como Claude Code, Cursor, Codex) especializada en la producción profesional de efectos de sonido. Su función principal es guiar al agente a través de un flujo de trabajo completo: desde la planificación inicial (a partir de un brief, lista de planos o eventos de juego) hasta la entrega final documentada. Automatiza la creación de sonidos mediante recetas procedurales (sin necesidad de modelos), integración con ComfyUI, APIs externas o bibliotecas CC0; además, construye variaciones, bucles, capas y secuencias de pasos mediante scripts. El agente realiza comprobaciones técnicas automatizadas (clipping, clics, DC, cortes, relleno, malas uniones) y un comando `ship` responde a la pregunta '¿podemos enviarlo?'. La habilidad hace hincapié en la gestión de derechos de autor (no entrenar con archivos de Sonniss/BOOM, no inferir licencias) y en la decisión humana final. Cada sonido se registra en un archivo `sounds.json` con metadatos completos, y cada archivo de audio incluye su origen, modelo, prompt, semilla, licencia y ediciones. El agente también mantiene un archivo de aprendizaje (`LEARNINGS.md`) y detecta contradicciones en `evergreen.json` para mantener la precisión de sus conocimientos.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/m4bwav/sfxwright/tree/HEAD/skills/sfxwright

Preguntar en tu IA favorita

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

Documentación

¿Qué hace sfxwright?

Resultado: cada sonido es una fila en una lista sounds.json con su evento, capas, variaciones, duración, ruta y estado, y cada archivo registra su origen, modelo, prompt, semilla, licencia y ediciones. Los números detectan fallos; el oído humano decide. Indica qué sonidos nadie ha escuchado.

SFX significa python scripts/sfx.py desde esta carpeta (ejecútalo, no lo leas; sfx_audio.py y sfx_synth.py son sus módulos). Lee una referencia cuando el paso lo necesite.

Paso 0: frescura

Lee evergreen.json. Si contradiction está establecido o la fecha de hoy es igual o posterior a next_due, dilo en una línea, realiza la tarea y luego ejecuta evergreen-refresh. Si verify_at_use es verdadero, vuelve a verificar las afirmaciones sobre el modelo y la licencia antes de confiar en ellas. El latido de exploración ai-sfx proporciona actualizaciones cuando está presente.

Paso 1: derechos primero

  • Un sonido de una película o programa nombrado, o una marca sonora famosa (sable de luz, THX Deep Note, sintonía de NBC, Intel bong, león de MGM, ta-dum de Netflix): rechaza la copia en una oración y ofrece un original construido a partir de rasgos acústicos. No pongas el título o nombre en un prompt o archivo: references/rights.md.
  • commercial en la lista decide qué fuentes están permitidas. Si el usuario no lo ha dicho, establece --commercial yes, la lectura más estricta, y dilo en una línea; no te detengas a preguntar.
  • Un archivo sin licencia conocida no entra en un proyecto comercial. Encuentra su origen o reemplázalo. Nunca adivines una licencia.
  • Nunca entrenes un modelo con, ni alimentes para entrenamiento, archivos de Sonniss, BOOM o A Sound Effect.

Paso 2: planificar

SFX init sounds.json --project NOMBRE --use game --commercial yes, luego SFX add por sonido. Un corte de película, un diseño de juego o una descripción sencilla terminan aquí: references/plan.md. Para cualquier cosa con ejes (superficie, fuerza, tamaño), ejecuta SFX plan --axis surface=6 --axis force=3 --variations 4 --budget 100 antes de confirmar los archivos. Formato: references/format.md.

Paso 3: elegir la ruta

Según el trabajo, la licencia y el hardware: references/routes.md. Ejecuta SFX doctor una vez. Di la elección y el motivo en una línea. Instalar un nodo, motor o modelo grande, y cualquier llamada a API de pago, necesita primero el sí del usuario; mientras tanto, usa lo que esté presente. Que nada sea accesible no es un error: SFX synth no necesita modelo, y SFX gen --workflow-out entrega un flujo de trabajo.

Paso 4: crear

SFX synth list                          # cada receta, sus parámetros y materiales
SFX synth footstep --param surface=gravel --takes 6 --out takes/ --name step
SFX gen "caja de madera pesada caída sobre concreto, sala muerta" --seconds 2 --takes 4 --out takes/ --name crate
SFX library found.wav --licence cc0 --library Freesound --title "..." --url ...
SFX register sounds.json crate takes/crate_01.flac

Los prompts nombran fuente, material, espacio y tiempo, no una historia. Una duración solicitada es un máximo, así que espera relleno. Prueba semillas antes de cambiar palabras. Nunca le pidas a un modelo un ciclo de caminata: crea pasos individuales, luego SFX sequence.

Paso 5: editar

SFX edit (ordenar, recortar, fundir, ganancia, pico, tono, estirar, invertir, convolucionar, dc), layer, vary, sequence, loop, place, record-sheet (plan para sonidos con ruta de grabación), tone (tramo estable y silencioso, relleno opcional; comparar con check --tone-match), pop (añadir o --verify 2 pops de cabeza y cola en una pista). Recetas y lo que cuesta cada edición: references/edit.md. El tono es por cambio de velocidad por defecto; un estiramiento mancha un impacto. Las ediciones llevan la procedencia hacia adelante, y una fuente sin derivados las rechaza. Nunca copies o renombres un sonido manualmente: el sidecar se queda atrás. Escribe en el nombre final con edit, finish o synth --out.

Paso 6: verificar cada lote

SFX check takes/*.flac --seconds 2     # lecturas y banderas por archivo
SFX set takes/step_*.wav               # casi duplicados, valores atípicos, dispersión de nivel
SFX timing walk.wav                    # demasiado uniforme, o una muestra repetida
SFX sheet takes/*.wav --out sheet.png  # mira las formas de onda

Cualquier conjunto de variaciones siempre recibe set. Una bandera significa escuchar; no es un veredicto, y un resultado limpio no significa que el sonido sea bueno. Exime lo que el brief quiera (--waive CLICK para el crujido). Qué significa cada número y con qué fue calibrado: references/thresholds.md.

Paso 7: escuchar

Los números no pueden decir si un sonido se adapta a su imagen o si un conjunto se lee como un objeto. Coloca las selecciones en una página askwright cuando esté presente, con nivel ajustado (SFX review --match) y a ciegas, con imagen para cine. De lo contrario, da una lista de archivos etiquetados y preguntas simples. Registra lo escuchado en el campo heard de la toma y marca la selección picked: true.

Paso 8: finalizar y documentar

SFX finish in out --dest game-sfx: solo ganancia, luego codifica al final. Un destino desconocido es un error: pregunta. Usa mw.py master cuando musicwright esté presente y toda la mezcla necesite un objetivo de sonoridad. Motores y destinos: references/finish.md.

SFX doc sounds.json --kind cue|impl|credits, luego SFX ship sounds.json. Reporta BLOQUEADO, VERIFICAR o LIMPIO con las razones, atribución debida y divulgación de la tienda. Es un registro, no un consejo legal.

Resultado

La ruta, la ruta de la lista, las banderas por lote, qué se escuchó y por quién, y la respuesta de ship cuando algo está saliendo.

Reglas

  • Nunca llames a un sonido generado grabado o libre de IA. ship enumera lo que necesita divulgación.
  • La música con notas, tonalidad y tempo va a musicwright; el diálogo y su tono de sala van a voicewright o cinewright.
  • Las muestras publicadas con el plugin deben tener derechos claros.

Mientras trabajas: captura aprendizajes

Si el usuario te corrige, un error se repite o aparece una solución alternativa, agrégalo a LEARNINGS.md. Si demuestra que una regla es incorrecta, corrige la regla, regístralo en CHANGELOG.md y establece contradiction en evergreen.json.

Mantenimiento

Unidad Evergreen, nivel fast; estado en evergreen.json. Consulta MAINTENANCE.md, RESEARCH.md, TESTS.md, evals/.

Skills relacionados