Communitygithub.com

syahdestiny/soundtrack

Dieses Skill sollte verwendet werden, wenn der Benutzer darum bittet, "Musik zur Animation hinzuzufügen", "Musik in Code zu erzeugen", "einen Soundtrack zu synthetisieren", "Hintergrundmusik zu komponieren, die zu den Schnitten passt", "die Musik mit dem Video zu synchronisieren", "zu prüfen, ob der Ton mit dem Bild übereinstimmt" oder "die Musik zu plötzlich / erschreckend ist". Es deckt einen codesynthetisierten Score ab, der innerhalb der Animationsseite lebt (Web Audio API, offline als WAV gerendert), KI-generierte oder vom Benutzer bereitgestellte Musik sowie eine automatische Überprüfung, dass Schnitte auf dem Beat landen, ohne einen erschreckenden Lautstärkesprung.

Was ist soundtrack?

Das Soundtrack-Skill ermöglicht es KI-Agenten, für jede Animation einen individuell in Web Audio Code synthetisierten Soundtrack zu erstellen. Der Kern ist `window.SCORE = ac => { … }`, ein Stück Code, das Oszillatoren, Rauschen, Filter, Hüllkurven und Verzögerungen verwendet, um eine einzigartige Filmmusik zu komponieren – keine zwei Filme klingen gleich. Es enthält vorgefertigte Vorlagen (`templates/groove.js` und `templates/score.js`) und rendert den Score offline mit `OfflineAudioContext` zu einer WAV-Datei, die dann in das MP4 gemuxt wird. Das Skill stellt sicher, dass die Musik dem Bild folgt, indem es eine Tempo-Karte verwendet, die jeder Szene eine ganze Anzahl von Takten zuweist, und Schnitte auf den Downbeat legt, wobei es auf sanfte Übergänge achtet, die nicht erschrecken. Ein Skript (`scripts/sync-check.mjs`) prüft automatisch, ob alle CUES auf dem Beat landen und nicht zu laut sind, und gibt Fehler für Off-Beat- oder Startle-Ereignisse aus. Das Skill unterstützt auch KI-generierte Musik (z. B. über OpenRouter) oder benutzereigene Tracks, die dann das Bild der Musik folgen lassen. Es läuft auf Plattformen, die JavaScript und Web Audio API unterstützen, und ist Teil des `javascript-animation`-Ökosystems.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/syahdestiny/skill-motion-javascript/tree/HEAD/skills/soundtrack

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht soundtrack?

Schreiben Sie den Ton für diesen Film

Der Ton eines Films wird für diesen Film geschrieben: seine eigenen Instrumente, Rhythmus und Harmonie in Web Audio, aus dem Nichts, in window.SCORE = ac => { … } (Oszillatoren, Rauschen, Filter, Hüllkurven, Verzögerungen: was immer das Stück verlangt). Drums, ein Groove oder ein Musikbett werden auf die gleiche Weise für diesen Film geschrieben: keine zwei Filme sollten gleich klingen, weil sie eine Vorlage teilen. templates/groove.js und templates/score.js sind zwei vorgefertigte Scores, die nur verwendet werden, wenn der Benutzer danach fragt; jede Datei dokumentiert ihre Optionen.

render.mjs (aus dem javascript-animation Skill) rendert window.SCORE offline mit OfflineAudioContext, schreibt <out>.wav und muxt es in das MP4; die Live-Vorschau der Seite spielt denselben Score ab, wenn darauf geklickt wird.

Bitten Sie den Benutzer nicht, von vornherein eine Musikquelle auszuwählen. Erwähnen Sie bei der Auslieferung in einem Satz, dass auch KI-generierte Musik oder ein eigener Track funktionieren.

Wie die Musik dem Bild folgt

  • Tempokarte. Jede Szene erhält eine ganze Anzahl von Takten (das Tempo kann pro Szene flexibel sein), sodass jeder Schnitt auf einem Downbeat landet.
  • Markieren Sie Schnitte mit Harmonie, nicht mit Lautstärke. Jede Szene geht zur Dominante zurück, und der Schnitt kommt auf dem Tonika an. Ein lauter Akzent auf einem Schnitt (Bass + heller Glockenton gleichzeitig) wirkt wie ein Jump Scare: Benutzer meldeten einen Sprung von +7 bis +10 dB als erschreckend; +3 bis +5 dB mit einem Akkordwechsel wirken wie ein sauberer Schnitt.
  • Verdünnen Sie den ersten Takt nicht, wenn es der einzige Takt vor dem ersten Schnitt ist; ein spärliches Intro, gefolgt von der vollen Textur, ist selbst ein Schreck.
  • Kein zusätzlicher Akzent auf dem Downbeat des Schnitts. Selbst der normale Downbeat-Akzent (lauterer Bass + erste Note) ließ kurze Stücke über +6 dB kippen, weil der Takt davor abklingt. Der Akkordwechsel reicht aus.
  • Zählen Sie auch harte Schnitte innerhalb einer Szene. Fügen Sie sie in window.CUES ein, damit sie denselben Downbeat erhalten.
  • Geben Sie dem Auge etwas, woran es sich festhalten kann. Legato-Musik ohne Percussion hat keine Akzente, auf denen Schnitte landen können. Bei einem gleichmäßigen Groove sind Akzente Teil des Rhythmus und erschrecken nicht (der Check vergleicht mit den letzten Sekunden, nicht mit einem isolierten leisen Moment).
  • Führen Sie Schichten ein, ein oder zwei pro Takt. Kick und Bass, die nach einem leisen Intro zusammen einsetzen, maßen +11 dB (erschreckend); um einen Takt versetzt, +3,5 dB.
  • Verwenden Sie eine Pause. Alles für einen Takt auf Stille zu schneiden, bevor der Höhepunkt kommt, ist der stärkste Beat in einem Kurzfilm. sync-check akzeptiert einen Schnitt in die Stille als auf dem Beat.

Andere Quellen (nur auf Anfrage)

  • KI-generierte Musik (z. B. Lyria via OpenRouter): siehe references/ai-music.md.
  • Der eigene Track des Benutzers: muxen Sie ihn mit ffmpeg.

Bei Musik, die Sie nicht kontrollieren, kehren Sie die Richtung um: das Bild folgt der Musik. Rendern, muxen, den Check durchführen, dann die Szenengrenzen in der SCENES-Tabelle der Seite um die gemeldeten Versätze verschieben und erneut rendern. Dies ist kostengünstig, da jede Szenenfunktion die lokale Zeit (0 an ihrem eigenen Start) erhält, wie der Starter geschrieben ist: Das Verschieben einer Grenze berührt nie den Szenencode.

Immer: Überprüfen

node scripts/sync-check.mjs piece.mp4 --cues-file piece.cues.json   # überprüft die deklarierten CUES (bevorzugt)
node scripts/sync-check.mjs piece.mp4                       # Fallback: erkennt Schnitte im Bild (schnelle Kamerabewegungen können als Schnitte gelesen werden)

Für jedes Ereignis gibt es den Versatz zum nächsten starken Audio-Onset und den Lautstärkesprung hinein aus. Es schlägt fehl bei OFF-BEAT (mehr als ±100 ms, ~3 Frames) oder STARTLE (mehr als +6 dB gegenüber der Sekunde davor). Die erste Sekunde und das letzte Fade werden übersprungen (kein "davor" zum Vergleich; ein Fade-Out ist kein Schnitt). "Stark" bedeutet prominent unter den Onsets innerhalb von ±2 s, sodass Akzente in leisen Passagen immer noch zählen; ein Schnitt in die Stille zählt als Landung; Musik, die nach einer Pause zurückkehrt, wird mit dem typischen Pegel der letzten 4 s verglichen. Ein Video ohne Audiostream wird als solches gemeldet. Fügen Sie in window.CUES jeden Schnitt plus jeden In-Szene-Treffer ein, den Sie überprüft haben möchten (ein harter Schnitt innerhalb einer Einstellung, der Einschlag eines Gags). Korrigieren und erneut ausführen, bis es bestanden wird, oder bis jeder verbleibende STARTLE ein bewusster Stinger ist, den Sie benennen können (ein Comedy-Einschlag soll herausstechen; ein Wiegenlied-Schnitt nicht).

Grenzen

Code-synthetisiert: Spieluhren, klavierartige Zupfer, Pads, Glocken, sanfte Percussion sind in Ordnung. Realistische Stimmen, Orchester und Genre-Produktion sind nicht möglich; verwenden Sie dafür KI-Musik oder einen echten Track.

Individual skills in this repo

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

Verwandte Skills