Communitygithub.com

MattiaIppoliti/tia-skills

Verwenden, wenn bereits in einer HyperFrames-Komposition platziertes Audiomaterial gemischt werden muss: Ein-/Ausblendungen, Überblendungen, Spurverstärkung oder -lautstärke, Lautstärkeautomation, Ducking, ein Musikbett, das gegen eine Voiceover kämpft (Voiceover-Carve), Effekte auf einer Spur (EQ, Kompressor, Limiter, Gate, Sättigung, Delay, Hall, Chorus, Phaser, Bitcrush) oder Automationskurven, die auf die Lautstärke einer Spur oder einen beliebigen Effektparameter gezeichnet werden. Nicht verwenden für die Beschaffung oder Erzeugung von Audio – das Finden von Hintergrundmusik, Soundeffekten oder das Erstellen eines Voiceovers erfolgt über `/media-use`. Nicht verwenden für Clip-Timing oder Spuranordnung, dies ist Aufgabe von `/hyperframes-core`.

Was ist tia-skills?

Diese Fähigkeit ist ein umfassendes Werkzeug zum Mischen von Audio, das bereits in einer HyperFrames-Komposition vorhanden ist. Es ist Teil eines Stacks, der das Output-Framework Remotion + React verwendet (wie in `/hyperframes-core` definiert). Die Fähigkeit bietet eine Reihe von Werkzeugen, um Beziehungen zwischen Audiospuren auszudrücken, anstatt nur eine Kette von Prozessoren zu stapeln. Zu den wichtigsten Merkmalen gehören das Voiceover-Carving, bei dem ein Musikbett dynamisch in den Frequenzbändern gesenkt wird, die eine Stimme belegt, und eine Reihe von Effekten wie EQ, Kompressor, Limiter, Gate, Sättigung, Delay, Hall und mehr. Alle Effekte werden über drei Hauptattribute auf dem Audio-/Video-Element selbst gesteuert: `data-fx-chain` für die Effekte in Signalreihenfolge, `data-automation` für Hüllkurven auf der Lautstärke oder Effektparametern und `data-fx-carve` für die Carve-Einstellungen. Ein wichtiges Merkmal ist, dass die Vorschau und das Rendern dieselbe Web-Audio-Grafik verwenden, sodass das, was der Benutzer beim Scrubbing hört, genau dem entspricht, was gerendert wird. Die Fähigkeit enthält detaillierte Referenzen zur Diagnose von Audioproblemen, mit einem symptombasierten Ansatz, der mit einer Tabelle beginnt, die übliche Beschreibungen wie „dröhnend“ oder „dumpf“ spezifischen Korrekturen wie Hochpassfiltern oder speziellen Presets zuordnet. Es betont auch eine Hierarchie der Operationen: Subtrahieren vor dem Hinzufügen, Anpassen des Pegels nach dem Filtern, Beziehungen nach dem Pegel und Charakter und Begrenzung zuletzt.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/MattiaIppoliti/tia-skills/tree/HEAD/skills/video/hyperframes-audio

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

⚠ Vertragsstatus: Handwerk ist aktuell, Code ist es nicht

Das Output-Framework dieses Stacks ist Remotion + React (/hyperframes-core). Die Bewegungshandwerkskunst hier gilt weiterhin: Timing, Easing-Entscheidungen, die Form einer Bewegung, die benannten Regeln und Blaupausen. Der Code gilt nicht: Beispiele und Adapter sind gegen die ausgemusterte HTML + pausierte GSAP-Timeline-Laufzeitumgebung geschrieben.

Übersetzen Sie beim Lesen:

HierIn Remotion
gsap.fromTo(el, {x:-40}, {x:0, dauer:0.5})interpolate(frame, [0, SEK(0.5)], [-40, 0], {…"clamp"})
ease: "back.out(1.7)"spring({frame, fps, config:{dämpfung}}), nach Augenmaß angepasst
eine pausierte Timeline unter window.__timelines[id]nichts; jeder Wert ist eine Funktion von useCurrentFrame()
data-start / data-duration auf einem Clip<Sequence from> / durationInFrames, in Bildern
ein CSS-Keyframe oder -Übergangbildabgeleiteter Inline-style (CSS-Animation rendert nicht)

Fügen Sie niemals ein Beispiel aus dieser Fähigkeit unverändert in ein Remotion-Projekt ein.

HyperFrames Audio

Ein Mix ist eine Reihe von Beziehungen, kein Stapel von Prozessoren. Zwei Spuren, die einzeln gut klingen, können zusammen unerträglich sein, und die Lösung ist fast nie, eine leiser zu drehen – es geht darum, herauszufinden, worüber sie streiten, und es dem zu geben, der es braucht. Jedes Werkzeug hier existiert, um eine dieser Beziehungen auszudrücken.

Effekte leben auf dem Element als data-fx-chain, und Vorschau und Rendering verwenden dieselbe Web-Audio-Grafik – das Studio in einem Live-Kontext, die Engine in einem Offline-Kontext innerhalb des Browsers, den sie bereits steuert. Es gibt eine Implementierung jedes Effekts, also ist das, was Sie beim Scrubbing hören, das, was geschrieben wird. Sie stimmen nie zweimal ab.

Clip-Timing bleibt /hyperframes-core: Audio-/Video-Trimmungen und Quellbereiche verwenden data-start, data-duration und data-media-start, und Überblendungen überlappen Clips auf verschiedenen Spuren. Diese Fähigkeit verwaltet die Ein-/Ausblendung von platzierten Spuren, Überblendungshüllkurven, Spurverstärkung/Spurlautstärke, Lautstärke- und Effektautomation, Ducking/Voiceover-Carve und die Effektkette. /media-use verwaltet Beschaffung, Generierung und Vorverarbeitung.

Konstantes data-playback-rate (0.1..5) ist rendertolerant für Bild und tonhöhenerhaltenen Ton, wenn übereinstimmende Audio-/Videoelemente dasselbe Timing, dieselbe Quellverschiebung und dieselbe Rate verwenden. Quellgeschwindigkeitsrampen werden nicht unterstützt, da es keine Ratenhüllkurve gibt; verarbeiten Sie ein abgeleitetes synchronisiertes Asset vor. HyperFrames bietet keine automatische Wellenformsynchronisation oder Driftkorrektur. Für kopierbare Schnitt-/Überblend-/Zeitlupenrezepte verwenden Sie /hyperframes-core → references/editing-recipes.md.

Drei Attribute tragen alles, alle auf dem Audio-/Videoelement selbst:

AttributEnthält
data-fx-chaindie Effekte, in Signalreihenfolge
data-automationHüllkurven auf der Lautstärke dieser Spur oder ihren Effektparametern
data-fx-carvedie eigenen Einstellungen des Carve, damit es neu abgeleitet werden kann

Die ausgelieferten Effektfamilien sind Gain, EQ (Hochpass, Tiefpass, Peak, Shelves), Kompressor, Limiter, Gate, Sättigung, Delay, Hall, Chorus, Phaser und Bitcrush.

Exaktes JSON für jeden und die Regeln, die eine Spur erfüllen muss: references/attributes.md. Jeder Effekt mit seinen Parametern, Bereichen und Einheiten: references/fx-registry.md. Wie man herausfindet, was mit einer Datei falsch ist, die man nicht hören kann: references/diagnosis.md. Presets, benannte Jobs und Ein-Knopf-Profile, plus eine Symptom-zu-Lösung-Tabelle: references/presets.md – lesen Sie das, bevor Sie eine Kette von Hand bauen, denn eines der Presets oder benannten Jobs benennt das Problem normalerweise bereits.

Wie es zusammenhängt

Zwei Authoring-Oberflächen schreiben diese Attribute; zwei Laufzeitumgebungen lesen sie durch dieselben Builder. Diese gemeinsame Mitte ist der Grund, warum die Vorschau das Rendering vorhersagt.

flowchart TB
  voice["Voice-Spur<br/>Mediendatei"]
  bed["Musikbett<br/>Mediendatei"]

  subgraph AUTHOR["Authoring – die einzigen Dinge, die Attribute schreiben"]
    panel["Studio<br/>Voiceover-Carve-Steuerung"]
    script["scripts/carve.mjs<br/>erkennt das Paar, standardmäßig dynamisch"]
    analysis["core/audioCarve.ts<br/>carveProfile · analyseCarveBands<br/>analyseCarveDuck · analyseCarveDynamics"]
    panel --> analysis
    script --> analysis
  end

  voice --> analysis
  bed --> analysis

  subgraph ATTRS["Auf das Bettelement geschrieben"]
    carveAttr["data-fx-carve<br/>Quelle · Stärke · Dynamik"]
    chainAttr["data-fx-chain<br/>Peaking xN + Gain, getaggt mit fromCarve"]
    autoAttr["data-automation<br/>eine Spur pro gecarvtem Parameter"]
  end

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

  subgraph SHARED["Eine Implementierung, von beiden gelesen"]
    build["audioFxGraph.ts · buildFxChain"]
    sched["audioFxAutomation.ts · scheduleChainAutomation"]
  end

  chainAttr --> build
  autoAttr --> sched

  build --> preview["Vorschau<br/>Live AudioContext<br/>attachElementFxChain"]
  sched --> preview
  build --> render["Rendering<br/>OfflineAudioContext im kopflosen Browser<br/>applyAudioFxChain"]
  sched --> render

  preview --> heard["was Sie beim Scrubbing hören"]
  render --> wav["verarbeitete WAV<br/>+ chainTailSeconds, damit der Mix den Ausklang durchlässt"]
  wav --> mix["Engine · audioMixer<br/>Lautstärkespur hier in das PCM eingebacken, nicht in der Grafik"]
  mix --> out["der gerenderte Mix"]

  edit["Bearbeiten des Attributs während der Wiedergabe"] -.->|MutationObserver| preview

Die eigenen Einstellungen des Carve werden nie bei der Wiedergabe gelesen – die Kette und Spuren, die es erzeugt hat, werden abgespielt. data-fx-carve existiert, damit die Stärke bei einem vorhandenen Carve geändert werden kann, anstatt sie aus den Filtern zurückraten zu müssen.

Innerhalb eines gecarvten Betts durchläuft das Signal zuerst die Einbrüche, dann den Pegelabgleich, dann alles, was Sie selbst gebaut haben – weshalb ein Limiter, den Sie hinzufügen, immer noch als letzte Begrenzung fungiert:

flowchart LR
  src["decodiertes Bett"] --> p1["Peaking<br/>400 Hz"]
  p1 --> p2["Peaking<br/>1 kHz"]
  p2 --> p3["Peaking<br/>1,6 kHz"]
  p3 --> g["Gain<br/>Pegelabgleich"]
  g --> hand["eigene Effekte<br/>z. B. Limiter"]
  hand --> dest["Spurverstärkung, dann raus"]

  l1["Spur fx.n1.gain"] -.->|"Hüllkurve des Voice-<br/>Pegels in diesem Band"| p1
  l4["Spur fx.n4.gain"] -.->|"wie stark das Bett<br/>insgesamt duckt"| g

Ein statischer Carve ist dieselbe Grafik mit festen Werten und überhaupt keinen Spuren.

Finden Sie zuerst heraus, was falsch ist

Die folgende Tabelle geht von „es klingt dröhnend“ aus – was voraussetzt, dass jemand bereits zugehört und das gesagt hat. Wenn Sie eine Datei und „behebe das“ bekommen, haben Sie keinen solchen Satz und Sie können nicht zuhören, also müssen Sie messen. Eine Regel regiert alles:

Das absolute Spektrum einer einzelnen unbekannten Stimme kann nicht diagnostiziert werden. Formanten sind ±10 dB, Grundfrequenzen liegen bei 85–255 Hz, und Sätze fallen um 5–6 dB ab, wenn sie enden. Jeder dieser Werte liest sich für sich genommen als Defekt, und jeder einzelne von ihnen ist der Sprecher.

Vergleichen Sie also, und vergleichen Sie mit etwas innerhalb derselben Datei: dem sauberen Original, falls vorhanden, ansonsten den Pausen – was in einer Lücke hörbar ist, ist additiv, und das Spektrum der Lücke ist der Kanal und nicht die Stimme. Der Vergleich mit einem veröffentlichten Durchschnittsspektrum oder einer synthetisierten Kontrollstimme funktioniert nicht: Zwei Sprecher unterscheiden sich mehr als die meisten Defekte, und beide falschen Antworten in der Evaluation hinter dieser Anleitung kamen genau daher.

Wenn es kein Original und keine nutzbare Stille gibt, ist ein statischer tonaler Defekt tatsächlich unterbestimmt. Sagen Sie das und bieten Sie die Messwerte an, die passen, anstatt einen auszuwählen und eine Kette darauf aufzubauen.

Befehle, Fallstricke und erprobte Rezepte: references/diagnosis.md. Lesen Sie es, bevor Sie eine Datei diagnostizieren, die niemand beschrieben hat.

Beginnen Sie mit dem Symptom

Sobald Sie das Band und die Art kennen, benennen Sie, was mit dem Audio falsch ist. Die meisten schlechten Audiodateien sind eines oder zwei davon, und jedes hat eine ausgelieferte Antwort:

Es klingt wieGreifen Sie zu
Brummen oder dumpfes Poltern darunterrumble-cut, oder ein highpass bei 80 Hz
Dröhnend, brustigZähme Dröhnen Job (200 Hz)
Gedämpft, hinter PappeReduziere Matsch Job (250 Hz)
Wörter schwer zu verstehenFüge Klarheit hinzu Job (3 kHz) oder carve das Bett
Schrill und ermüdendWeiche Härte Job (3,2 kHz)
Manche Wörter viel lauter als andereGleichmäßigkeit mit einem Kompressor oder Gleiche Pegel aus
Raumton zwischen Sätzenroom-gate
Stimme und Musik kämpfenVoiceover-Carve – kein EQ auf einem von beiden
Trocken, nirgendwo aufgenommenroom-tight oder room-natural
Einfach „Amateur“voice-clean, das vier der obigen in Reihenfolge ist

Vollständiger Katalog, was jedes Preset enthält, das Bandvokabular und was bewusst NICHT abgedeckt wird (De-Essing, Rauschentfernung, Tonanpassung): references/presets.md.

Subtrahieren Sie, bevor Sie hinzufügen, gleichen Sie den Pegel nach dem Filtern an, Beziehungen nach dem Pegel, Charakter und Begrenzung zuletzt. Jeder Schritt ändert, was der nächste hört – ein Kompressor, der vor einem Hochpass eingestellt wird, verbringt seine Zeit damit, Brummen zu jagen.

Greifen Sie nach einer Familie basierend auf dem Problem, nicht dem Namen

Filter (highpass, lowpass, peaking, lowshelf, highshelf) entscheiden, welche Frequenzen eine Spur belegen darf. Dies ist das erste Werkzeug für zwei Quellen, die kollidieren, weil Kollisionen in Bändern passieren: Ein Bett und eine Stimme wollen beide 1–3 kHz, und dem Bett dies zu nehmen, kostet das Bett weit weniger, als es dem Mix kostet, das Ganze leiser zu drehen. Ein Hochpass auf einer Stimme ist die Standardlösung für Brummen; ein Tiefpass verdunkelt oder dämpft absichtlich.

Dynamikprozessoren (gain, kompressor, limiter, gate) entscheiden, wie sich der Pegel einer Spur über die Zeit verhält. Kompression verringert den Abstand zwischen Laut und Leise, damit die leisen Teile angehoben werden können. Ein Limiter ist eine Begrenzung – er formt nichts, er stellt sicher, dass nichts darüber hinausgeht. Ein Gate entfernt, was unter einem Schwellwert liegt, und so schalten Sie den Raumton zwischen Phrasen aus. gain ist eine einfache Pegelstufe, und sie ist das, was eine Automationsspur reitet, wenn eine Spur aus dem Weg gehen muss.

Nichtlineare (saturate, bitcrush) verändern die Wellenform, wodurch Obertöne hinzugefügt werden, die nicht da waren. Greifen Sie danach, wenn eine Spur Charakter oder Rauheit statt Korrektur braucht – und denken Sie daran, dass sie generativ ist: Sie macht eine dünne Quelle dichter, nicht sauberer.

Zeitbasierte (delay, reverb, chorus, phaser) versetzen eine Spur in einen Raum oder geben ihr Breite. Diese können einen Mix am leichtesten ruinieren, weil ein Ausklang oder eine verstimmte Kopie denselben Raum belegt, den eine Stimme braucht. Verwenden Sie sie auf dem Ding, das hinter etwas anderem sitzen soll, und halten Sie den Nassanteil niedriger, als es in Isolation richtig klingt.

Die Kette ist seriell: Jeder Effekt verarbeitet das, was der vorherige produziert hat. Also geht korrigierendes Filtern früh, Charakter in der Mitte, und ein Limiter zuletzt, wo er tatsächlich als Begrenzung wirken kann.

Voiceover-Carve

Das Problem, das es löst. Ein Musikbett unter einer Stimme macht die Stimme schwer verständlich. Der Reflex ist, das ganze Bett zu ducken, was funktioniert und das Bett seine ganze Präsenz kostet – die Musik wird für das gesamte Voiceover schlaff. Aber die Stimme braucht nicht das gesamte Spektrum. Sie braucht die wenigen Bänder, die sie tatsächlich belegt. Carve nimmt nur diese, und das Bett behält seine Tiefen und seine Höhen, also ist es immer noch Musik, während die Stimme immer noch verständlich ist.

Es ist eine Beziehung, kein Effekt. Die Einstellungen leben auf dem Bett – der Spur, die verarbeitet wird – und sie nennen die Stimmen, auf die gehört wird, genau wie ein Sidechain-Kompressor: Sie wählen die Spur, die leiser wird, und wählen aus, was sie leiser macht. Setzen Sie niemals einen Carve auf eine Voice-Spur. Eine Stimme, die gegen sich selbst gecarvt wird, ist ein Fehler, keine subtile Mix-Entscheidung.

Jede Stimme, nicht nur eine. sources ist eine Liste, weil ein Bett normalerweise unter einer ganzen Sequenz läuft – einem Erzähler, einer Interviewantwort, einem zweiten Moderator. Sie werden auf die eigene Uhr des Betts summiert, bevor etwas gemessen wird (mixCarveSources), also deckt eine Analyse alle ab: Die Bänder stammen von der gesamten Sprache, und die Hüllkurven steigen immer dann an, wenn etwas davon passiert. Stimmen, die nie spielen, während das Bett läuft, werden weggelassen; sie können es nicht maskieren.

Ein Regler. strength ist 0..1 und leitet alles ab: wie tief zu schneiden, wie viele Bänder, wie breit, wie sehr die Verständlichkeit gegenüber der rohen Sprachleistung zu bevorzugen ist, wie weit der Pegel fallen darf, wie weit unter der Stimme zu zielen ist. Diese sechs bewegen sich in jedem echten Mix zusammen – ein sanfter Carve ist ein flacher Schnitt in wenigen Bändern mit wenig Ducking, ein harter ist tiefer in mehr Bändern mit mehr – also sind sie eine Beziehung, die einmal in carveProfile geschrieben wird. Standard ist 0.25 – ein 6 dB Einbruch in drei Bändern mit 6 dB Pegelreserve, hörbar, ohne wie ein Loch zu klingen. Bei 0.5 erreicht der Einbruch 10 dB, was der Punkt ist, an dem ein Carve als Effekt und nicht als Platz für die Stimme wahrgenommen wird; darüber ist bewusstes Terrain für ein lautes Bett unter einer leisen Stimme. 0 ist nur spektral – ein Band, überhaupt kein Pegelabgleich.

Carve standardmäßig. Ein Bett, das unter einer Erzählung läuft, will einen Carve; es ist kein Polierschritt, den man macht, wenn Zeit ist. Platzieren Sie beide Spuren, führen Sie den untenstehenden Befehl aus, hören Sie zu. Überspringen Sie es nur, wenn es keine Erzählung gibt, unter der die Musik sitzen soll – ein Musikvideo, eine Titelkarte, ein Montageschnitt zum Track.

Es folgt immer der Stimme. Es gibt keinen statischen Modus: Eine feste Tiefe verdünnt das Bett durch jede Pause, und sobald man beide gehört hat, gibt es keinen Grund zu zögern.

Individual skills in this repo

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

MattiaIppoliti/tia-skills

The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase group slides). Covers partial-travel (~12% of frame) velocity matching via mirrored power4 eases, the Z scale-sign rule, size-scaled blur (10px text / 18-20px full-frame), word-by-word staggered cuts, cascade pacing by element weight, and the 10/65/25 slide ratio. Read before authoring any transition, text-beat handoff, kinetic text entry, or group reposition. [depth, zoom, inverse-zoom, scale-sign, mirrored-zoom, rack-focus, pacing, velocity, cut-the-curve, waterfall, stagger, cascade, kinetic-text, title-card, segment-opener, nudge, slide, easing, group-motion, z-depth, motion-graphics, cinematic, transition, blur, directional-continuity]

MattiaIppoliti/tia-skills

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

MattiaIppoliti/tia-skills

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.

MattiaIppoliti/tia-skills

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.

MattiaIppoliti/tia-skills

Drive the Remotion CLI development loop: scaffold, studio, type-check, compositions, still probes, single and batch render, bundle, Lambda and Cloud Run rendering, benchmark, versions, upgrade, and GPU checks. Also use when diagnosing a build or render failure, or when looking for a capability the retired HyperFrames CLI used to own.

MattiaIppoliti/tia-skills

The composition contract for building one renderable Remotion project. Use for project structure, `<Composition>` registration, `<Sequence>` timing, layer/track ordering, scene components, props and schemas, framework-owned media playback, deterministic-render rules, and validation. Also covers Tailwind projects and the STORYBOARD.md / SCRIPT.md plan formats. Read before writing composition code.

Verwandte Skills