Communitygithub.com

AntlersSam/saas-launch-video-kit

Úsalo cuando el audio ya esté colocado en una composición de HyperFrames y necesite ser mezclado: fundido de entrada/salida, crossfade, ganancia/volumen de pista, automatización de volumen, ducking, atenuación de música de fondo sobre locución (voiceover carve), efectos en una pista (EQ, compresor, limitador, puerta, saturación, delay, reverberación, coro, phaser, bitcrush), envolventes de automatización dibujadas sobre el volumen de una pista o cualquier parámetro de efecto, o un bus de submezcla que transporta una cadena, un fader y un reloj de automatización para varias pistas a la vez (`<hf-audio-group>`).

¿Qué es saas-launch-video-kit?

Este skill de HyperFrames está diseñado para mezclar pistas de audio que ya han sido colocadas en una composición. Proporciona un conjunto completo de herramientas para procesar y dar forma al audio, incluyendo efectos de filtro (highpass, lowpass, peaking, shelves), dinámicos (compresor, limitador, puerta, ganancia), no lineales (saturación, bitcrush) y de tiempo (delay, reverb, coro, phaser). Su principal fortaleza es la automatización: permite dibujar envolventes de volumen y de parámetros de efectos, y soporta ducking y una sofisticada técnica de "voiceover carve" para que la música de fondo no compita con la locución. El sistema está implementado en JavaScript y se integra con el flujo de trabajo de HyperFrames, utilizando atributos de datos (`data-fx-chain`, `data-automation`, `data-fx-carve`) para definir la cadena de efectos, la automatización y la configuración del carve directamente en los elementos HTML de audio. Funciona tanto en previsualización como en renderizado, asegurando que lo que se escucha al editar es exactamente lo que se obtiene en el archivo final. Es útil para editores de video, desarrolladores y creadores de contenido que buscan control granular sobre la mezcla de audio dentro de un entorno basado en la web, como el que ofrece HyperFrames.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AntlersSam/saas-launch-video-kit/tree/HEAD/skills/hyperframes-audio

Preguntar en tu IA favorita

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

Documentación

Instalación del plugin: Antes de los comandos de configuración o frescura, sigue las reglas de ejecución del plugin cuando este skill esté dentro de un plugin de HyperFrames. Las instalaciones independientes mantienen las instrucciones de actualización a continuación.

HyperFrames Audio

Una mezcla es un conjunto de relaciones, no una pila de procesadores. Dos pistas que suenan bien por separado pueden ser inaudibles juntas, y la solución casi nunca es "bajar una" — se trata de encontrar por qué están compitiendo y asignarlo a quien lo necesita. Cada herramienta aquí existe para expresar una de esas relaciones.

Los efectos viven en el elemento como data-fx-chain, y la previsualización y el renderizado ejecutan el mismo gráfico de Web Audio — el estudio en un contexto en vivo, el motor en uno offline dentro del navegador que ya maneja. Hay una única implementación de cada efecto, por lo que lo que escuchas al desplazarte es lo que se escribe. Nunca ajustas dos veces.

El tiempo de los clips sigue siendo /hyperframes-core: los recortes de audio/video y los rangos de origen usan data-start, data-duration y data-media-start, y los crossfades superponen clips en diferentes pistas. Este skill posee el fundido de entrada/salida de pistas colocadas, envolventes de crossfade, ganancia/volumen de pista, automatización de volumen y efectos, ducking/voiceover carve y la cadena de efectos. /media-use posee la búsqueda, generación y preprocesamiento.

La constante data-playback-rate (0.1..10) es segura para renderizado de imagen y sonido con preservación de tono cuando los elementos de audio/video coincidentes usan el mismo tiempo, desplazamiento de origen y velocidad. Una rampa de velocidad es un carril rate en data-automation (ver docs/reference/speed-ramps); prevalece sobre la constante y mantiene el tono en la previsualización y el renderizado. HyperFrames no proporciona sincronización automática de formas de onda ni corrección de deriva. Para recetas de corte/crossfade/re-tiempo copiables, usa /hyperframes-core → references/creator-editing-recipes.md.

Tres atributos lo llevan todo, en el propio elemento de audio/video — o, para los dos primeros, en un bus <hf-audio-group> (ver "Un bus para muchas pistas"):

AtributoContiene
data-fx-chainlos efectos, en orden de señal
data-automationenvolventes en el volumen de esta pista o sus parámetros de efecto
data-fx-carvela configuración del carve para que pueda ser re-derivado

Las familias de efectos incluidas son ganancia, EQ (highpass, lowpass, peaking, shelves), compresor, limitador, puerta, saturación, delay, reverberación, coro, phaser y bitcrush.

JSON exacto para cada uno y las reglas que debe cumplir un carril: references/attributes.md. Cada efecto con sus parámetros, rangos y unidades: references/fx-registry.md. Cómo determinar qué está mal en un archivo que no puedes escuchar: references/diagnosis.md. Presets, trabajos con nombre y perfiles de un solo mando, además de una tabla de síntoma a solución: references/presets.md — léelo antes de construir una cadena manualmente, porque uno de los presets o trabajos con nombre suele nombrar el problema.

Cómo encaja

Dos superficies de autoría escriben esos atributos; dos tiempos de ejecución los leen a través de los mismos constructores. E ese punto intermedio compartido es la razón por la que la previsualización predice el renderizado.

flowchart TB
  voice["pista de voz<br/>archivo de audio"]
  bed["pista de música de fondo<br/>archivo de audio"]

  subgraph AUTORIA["Autoría — las únicas cosas que escriben atributos"]
    panel["Estudio<br/>Control de voiceover carve"]
    script["scripts/carve.mjs<br/>detecta el par, dinámico por defecto"]
    analysis["core/audioCarve.ts<br/>carveProfile · analyseCarveBands<br/>analyseCarveDuck · analyseCarveDynamics"]
    panel --> analysis
    script --> analysis
  end

  voice --> analysis
  bed --> analysis

  subgraph ATTRS["Escrito en el elemento de la música de fondo"]
    carveAttr["data-fx-carve<br/>origen · fuerza · dinámica"]
    chainAttr["data-fx-chain<br/>peaking xN + ganancia, etiquetado fromCarve"]
    autoAttr["data-automation<br/>un carril por parámetro tallado"]
  end

  analysis --> carveAttr
  analysis --> chainAttr
  analysis --> autoAttr

  subgraph COMPARTIDO["Una implementación, leída por ambos"]
    build["audioFxGraph.ts · buildFxChain"]
    sched["audioFxAutomation.ts · scheduleChainAutomation"]
  end

  chainAttr --> build
  autoAttr --> sched

  build --> previsualizacion["Previsualización<br/>AudioContext en vivo<br/>attachElementFxChain"]
  sched --> previsualizacion
  build --> renderizado["Renderizado<br/>OfflineAudioContext en el navegador sin cabeza<br/>applyAudioFxChain"]
  sched --> renderizado

  previsualizacion --> escuchado["lo que escuchas al desplazarte"]
  renderizado --> wav["WAV procesado<br/>+ chainTailSeconds para que la mezcla deje pasar la cola"]
  wav --> mezcla["motor · audioMixer<br/>el carril de volumen se hornea en el PCM aquí, no en el gráfico"]
  mezcla --> salida["la mezcla renderizada"]

  editar["editar el atributo durante la reproducción"] -.->|MutationObserver| previsualizacion

La configuración propia del carve nunca se lee durante la reproducción — la cadena y los carriles que produjo son lo que se reproduce. data-fx-carve existe para que se pueda cambiar la fuerza en un carve existente en lugar de tener que adivinarla a partir de los filtros.

Dentro de una pista de fondo tallada, la señal pasa primero por las atenuaciones, luego por la coincidencia de nivel, y luego por lo que hayas construido tú mismo — por eso un limitador que añadas sigue actuando como el último techo:

flowchart LR
  src["pista de fondo decodificada"] --> p1["peaking<br/>400 Hz"]
  p1 --> p2["peaking<br/>1 kHz"]
  p2 --> p3["peaking<br/>1.6 kHz"]
  p3 --> g["ganancia<br/>coincidencia de nivel"]
  g --> mano["tus propios efectos<br/>ej. limitador"]
  mano --> dest["ganancia de pista, luego salida"]

  l1["carril fx.n1.gain"] -.->|"envolvente del nivel<br/>de la voz en esa banda"| p1
  l4["carril fx.n4.gain"] -.->|"cuánto se<br/>atenúa la pista de fondo en general"| g

Un carve estático es el mismo gráfico con valores fijos y sin carriles.

Primero, determina qué está mal

La tabla a continuación comienza con "suena retumbante" — lo que presupone que alguien ya escuchó y lo dijo. Si te dan un archivo y la instrucción "arréglalo", no tienes esa frase y no puedes escuchar, por lo que tienes que medir. Una regla lo gobierna todo:

El espectro absoluto de una sola voz desconocida no se puede diagnosticar. Los formantes son de ±10 dB, los fundamentales van de 85 a 255 Hz, y las oraciones bajan de 5 a 6 dB al final. Cada uno de esos se lee como un defecto por sí solo, y cada uno de ellos es el hablante.

Por lo tanto, compara, y compara con algo dentro del mismo archivo: el original limpio si existe, de lo contrario las pausas — lo que sea audible en un silencio es aditivo, y el espectro del silencio es el canal en lugar de la voz. Comparar contra un espectro promedio publicado o una voz de control sintetizada no funciona: dos hablantes difieren más que la mayoría de los defectos, y ambas respuestas incorrectas en la evaluación detrás de esta guía provinieron exactamente de eso.

Cuando no hay original ni silencio utilizable, un defecto tonal estático está genuinamente indeterminado. Dilo y ofrece las lecturas que encajen, en lugar de elegir una y construir una cadena sobre ella.

Comandos, trampas y recetas prácticas: references/diagnosis.md. Léelo antes de diagnosticar un archivo que nadie ha descrito.

Empieza por el síntoma

Una vez que conozcas la banda y el tipo, nombra lo que está mal con el audio. La mayoría del audio deficiente es uno o dos de estos, y cada uno tiene una respuesta incluida:

Suena aRecurre a
Zumbido o golpeteo debajorumble-cut, o un highpass a 80 Hz
Retumbante, pectoralTame Boominess trabajo (200 Hz)
Apagado, detrás de cartónReduce Mud trabajo (250 Hz)
Palabras difíciles de entenderAdd Clarity trabajo (3 kHz), o talla la pista de fondo
Áspero y cansinoSoften Harshness trabajo (3.2 kHz)
Algunas palabras mucho más fuertes que otrasEvenness en un compresor, o Even Out Levels
Ruido de sala entre frasesroom-gate
Voz y música compitiendoVoiceover carve — no un EQ en ninguno
Seco, grabado en ninguna parteroom-tight o room-natural
Simplemente "amateur"voice-clean, que es cuatro de los anteriores en orden

Catálogo completo, qué contiene cada preset, el vocabulario de bandas y lo que deliberadamente NO está cubierto (de-essing, eliminación de ruido, coincidencia de tono): references/presets.md.

Resta antes de sumar, nivela después de filtrar, relaciones después del nivel, carácter y techo al final. Cada paso cambia lo que el siguiente escucha — un compresor configurado antes de un high-pass pasa su tiempo persiguiendo el retumbo.

Recurre a una familia por el problema, no por el nombre

Filtros (highpass, lowpass, peaking, lowshelf, highshelf) deciden qué frecuencias puede ocupar una pista. Esta es la primera herramienta para dos fuentes que chocan, porque las colisiones ocurren en bandas: una pista de fondo y una voz quieren ambas 1–3 kHz, y quitar eso de la pista de fondo le cuesta mucho menos que bajar todo el volumen le cuesta a la mezcla. Un high-pass en una voz es la solución estándar para el retumbo; un low-pass oscurece o apaga deliberadamente.

Dinámicos (gain, compressor, limiter, gate) deciden cómo se comporta el nivel de una pista a lo largo del tiempo. La compresión reduce la distancia entre lo fuerte y lo suave para que las partes suaves puedan subir. Un limitador es un techo — no da forma a nada, garantiza que nada lo supere. Una puerta elimina lo que está por debajo de un umbral, así es como se silencia el ruido de sala entre frases. gain es una etapa de nivel simple, y es lo que monta un carril de automatización cuando una pista tiene que hacerse a un lado.

No lineales (saturate, bitcrush) cambian la forma de la forma de onda, lo que añade armónicos que no estaban allí. Recurre a ellos cuando una pista necesita carácter o granulosidad en lugar de corrección — y recuerda que es generativo: hace que una fuente delgada sea más densa, no más limpia.

Tiempo (delay, reverb, chorus, phaser) coloca una pista en un espacio o le da anchura. Estos son los que más fácilmente arruinan una mezcla, porque una cola o una copia desafinada ocupa el mismo espacio que necesita una voz. Úsalos en la cosa que debe estar detrás de otra, y mantén la cantidad de efecto más baja de lo que suena bien en aislamiento.

La cadena es en serie: cada efecto procesa lo que produjo el anterior. Por lo tanto, el filtrado correctivo va temprano, el carácter en medio, y un limitador al final, donde puede actuar realmente como un techo.

Voiceover carve

El problema que resuelve. Una pista de música de fondo debajo de una voz dificulta seguir la voz. El reflejo es atenuar toda la pista de fondo, lo que funciona pero le cuesta a la pista de fondo toda su presencia — la música se vuelve débil durante toda la locución. Pero la voz no necesita todo el espectro. Necesita las pocas bandas que realmente ocupa. El carve toma solo esas, y la pista de fondo conserva sus graves y sus agudos, por lo que sigue siendo música mientras la voz sigue siendo inteligible.

Es una relación, no un efecto. La configuración vive en la pista de fondo — la pista que se procesa — y nombra las voces a las que escuchar, exactamente como lo hace un compresor de sidechain: seleccionas la pista que se vuelve más silenciosa y eliges qué la vuelve más silenciosa. Nunca pongas un carve en una pista de voz. Una voz tallada contra sí misma es un error, no una elección sutil de mezcla.

Cada voz, no una de ellas. sources es una lista, porque una pista de fondo suele ir debajo de una secuencia completa — un narrador, una respuesta de entrevista, un segundo presentador. Se suman en el propio reloj de la pista de fondo antes de medir nada (mixCarveSources), por lo que un análisis las cubre a todas: las bandas provienen de todo el discurso que hay, y las envolventes se elevan dondequiera que esté sucediendo algo. Las voces que nunca suenan mientras la pista de fondo está activa se omiten; no pueden enmascararla.

Un carve contra más de un id de clip está mal. Agrupa los clips y talla contra el grupo. Esto es un invariante, no un consejo. Nombrar clips uno por uno tiene que ser exhaustivamente correcto y sigue siendo correcto solo hasta la próxima edición — un cuarto clip de narración añadido más tarde se reproduce fuera del conocimiento del carve, y la pista de fondo no se atenúa debajo de él silenciosamente. Nombrar el grupo en su lugar resuelve la pertenencia en el momento del análisis, por lo que un clip añadido al grupo más tarde está cubierto sin tocar sources en absoluto:

<!-- agrupa la narración, luego talla la pista de fondo contra el grupo -->
<audio id="vo-intro" data-audio-group="voiceover" …></audio>
<audio id="vo-middle" data-audio-group="voiceover" …></audio>
<audio id="vo-outro" data-audio-group="voiceover" …></audio>

<audio id="music" data-fx-carve='{"enabled":true,"sources":["voiceover"],"strength":0.8}' …></audio>

Una lista sources que nombra dos o más ids de clip simples en lugar de un grupo es detectada por la regla de lint audio_carve_ungrouped_sources — sigue funcionando, pero es la versión que se estropea silenciosamente cuando se añade un clip.

Mantén el grupo de tallado como un grupo de voz: sin pista de fondo, sin SFX, sin música. Un id de grupo en sources se resuelve a cada miembro actual en cada análisis, por lo que el grupo que nombras es el grupo que obtienes después — no las pistas que se midieron cuando se escribió. Dos formas en que esto muerde:

  • La pista de fondo en su propio grupo de origen. Se entrega a sí misma como una voz y se talla contra su propio contenido — la regla "nunca talles una pista contra sí misma" llega un re-análisis después.
  • Un clip de SFX o música en el grupo de voz. Entra en el sidechain en el siguiente análisis y la pista de fondo comienza a atenuarse bajo un whoosh, aunque la ejecución que escribió el atributo nunca lo midió.

Ambos son invisibles en el momento en que se escribe el tallado: el análisis suma las voces que detectó y nunca recorre la resolución del grupo, por lo que la primera pasada es genuinamente correcta y solo la siguiente es incorrecta. Por lo tanto, asigna a cada función su propio grupo — music para la pista de fondo, voiceover para la narración, sfx para los golpes — y mantén el grupo nombrado en sources conteniendo solo voces.

carve.mjs se niega a escribir la forma de grupo cuando ve cualquiera de los casos, registra los ids de clip y dice

…[truncado para traducción]

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

AntlersSam/saas-launch-video-kit

Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill.

AntlersSam/saas-launch-video-kit

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

AntlersSam/saas-launch-video-kit

Use the HyperFrames CLI development loop: init, add, catalog, capture, lint, check, snapshot, compare, grade-compare, preview, play, present, beats, keyframes, single or batch render, publish, cloud, cloudrun, feedback, lambda, doctor, browser, info, upgrade, skills, compositions, timeline, history, clean, docs, benchmark, telemetry, transcribe, auth, tts, and remove-background. Also use when diagnosing build or render failures. validate, inspect, and layout are deprecated aliases; use check. Covers local, HeyGen-hosted cloud, AWS Lambda, and Google Cloud Run rendering.

AntlersSam/saas-launch-video-kit

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Skills relacionados