Communitygithub.com

scorewright

Composer et produire une bande originale de film pour une vidéo – regarder et repérer la vidéo, choisir une identité musicale (genre, tonalité/mode, BPM, instruments, leitmotiv), écrire un score.json, render des instruments réels (FluidSynth + samples GeneralUser GS, synthés audio-as-code, design sonore), mixer sous la narration (ducking + speech dip, lit X LU sous la voix) et livrer stems, MIDI, aperçus et QC.

Qu'est-ce que scorewright ?

Scorewright est une compétence avancée pour agent IA (Claude Code, Cursor, etc.) qui permet de composer et produire une bande originale de film complète à partir d’une vidéo. L’agent analyse la vidéo pour en extraire les faits (durée, coupures, régions de parole, mots temporels), regarde la vidéo via des vignettes, et établit une table de repérage (spotting) avec les points d’impact. Il choisit une identité musicale (genre, tonalité, BPM, instruments, leitmotiv) et écrit un fichier `score.json` qui décrit chaque piste et chaque note. Le rendu utilise FluidSynth avec la SoundFont GeneralUser GS pour les instruments acoustiques, des synthés audio-as-code pour les sons designés, et des effets sonores ponctuels. Le mixage applique un ducking automatique pour que la musique reste sous la narration (LU cible configurable), et le résultat final inclut stems, fichier MIDI, aperçus avec et sans voix, un rapport QC et un spectrogramme. La compétence est conçue pour les vidéos explicatives/narrées (mode « bed » sans mélodie) et les films/documentaires (mode « score » avec leitmotiv). Elle intègre des règles de composition (silence, contraste, développement du leitmotiv) et des limites connues (un seul tempo par cue, rendu audio-as-code lent).

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jayaprakash-pixel/scorewright/tree/HEAD

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Scorewright – Claude compose, les outils rendent

Règle zéro : Claude prend toutes les décisions créatives dans score.json et écrit la raison (direction, why de chaque cue). Le script n’a pas de style, BPM, tonalité ou progression par défaut. Ne jamais réutiliser la dernière partition comme modèle ; partir de la vidéo.

PY = un environnement Python 3.10+ avec requirements.txt installé. SW = <ce dossier>/scripts/scorewright.py. Avant le premier rendu sur une machine, exécuter PY SW doctor. Si le message MISSING apparaît, suivre README.md > Installer, puis s’arrêter et prévenir l’utilisateur.

Runbook (DÉMARRAGE RAPIDE)

#ÉtapeCommande / actionTerminé quand
0VérificationPY SW doctoraffiche ready
1FaitsPY SW analyze <video> <work> --words <words.json> (ou --voice)facts.json (durée, coupures, régions de parole, mots temporels) + contact.jpg
2RegarderLire contact.jpg (vignette i = t i*step) et les mots temporels ; lire le script/storyboard s’il existePouvoir énoncer le message, le ressenti du public, l’arc émotionnel
3RepérerÉcrire une table de repérage : entrée/sortie de cue, points d’impact (temps des mots, révélations, retournements), où le silence est préférable, émotion par section (dominante + secondaire + intensité)Chaque début/hit de cue est un temps mesuré
4DirectionChoisir l’identité avec raisons : mélange de genres, tonalité/mode, BPM par cue, palette, leitmotiv (+ comment il se transforme), arc dynamique. Utiliser references/craft.mdÉcrite dans direction
5PartitionÉcrire score.json (references/score-format.md, exemple examples/bed_demo.json). Commencer chaque cue SUR son point d’impact ; utiliser s:<sec> pour placer les notes sur les mots ; PY SW fit <times> uniquement pour tester un tempo à l’intérieur d’un cueJSON valide
6RenduPY SW render score.json <out>stems, full, no_percussion, composition.mid, previews, SCORE_NOTES.md, qc.json, spectrogram.png
7QCLire qc.json + spectrogram.png ; corriger et re-rendre (nouveau dossier out par version)tous les checks true ; chaque hit rise_db >= 3 ; aucun silence involontaire
8ÉcouterL’utilisateur écoute preview_with_voice.mp3. Claude ne peut pas entendre : le dire, rapporter les chiffres, demander quoi modifierL’utilisateur approuve
9LivraisonRemettre full_soundtrack.wav (déjà à X LU sous la voix brute, à placer à 0 dB) ou les stems à l’éditeur de l’utilisateur-

PREMIÈRE DÉCISION : bed ou score

  • Vidéo explicative / narrée (parole quasi continue) = BED. Pas de mélodie, pas de leitmotiv, pas de thème sous la parole. Utiliser pulsation, texture, harmonie lente, sub seulement. L’énergie change aux frontières des sections ; 2-3 hits/drop-outs sur les vraies révélations ; l’identité vient du timbre/rythme, pas d’une mélodie. Une courte mélodie uniquement là où il n’y a PAS de parole (intro avant le premier mot, 1-2 dernières secondes après le dernier mot).
  • Film / documentaire avec de vraies plages sans parole = SCORE. Leitmotiv et mélodie vivent dans ces trous.
  • Une mélodie sous une explication est une seconde voix : le spectateur doit choisir, et l’explication perd.

À FAIRE

  • Silence, retenue et contraste sont des outils. Toutes les vidéos n’ont pas besoin de musique partout.
  • Un leitmotiv par idée centrale ; le développer (inverser, augmenter, réharmoniser, changer une note) aux tournants de l’histoire.
  • Réduire la densité sous une explication dense ; laisser la musique parler dans les trous de parole et les moments purement visuels.
  • Choix du moteur par piste : gm pour le réalisme acoustique (piano, cordes, cuivres, bois, chœur, mallets), aac pour les synthés / voix design sonore (lent : ~10× gm ; utiliser pour peu de pistes clairsemées ; optionnel), sfx pour impacts/swells/sub drops sur les points d’impact.
  • Bed bed_lu_under_voice 11 (énergique) à 12.6 (calme), mesuré dans les régions de parole – le script le définit exactement.
  • Nouvelle version = nouveau dossier out ; ne jamais écraser un rendu approuvé.

À NE PAS FAIRE

  • Pas de bruit de swish / whoosh / page qui se tourne. riser/swell sont des crescendos tonals, à utiliser avec parcimonie.
  • Pas de mélodies copiées, de thèmes reconnaissables ou d’arrangements de référence.
  • Pas de même BPM/tonalité/progression pour chaque vidéo ; pas de volume sonore comme substitut à l’émotion.
  • Pas d’effet sonore sans raison visuelle ou narrative ; pas d’effet sonore plus fort que la narration.

Limites connues (testées)

  • Orchestre SoundFont GM = bonne maquette, pas le réalisme Spitfire/Kontakt. Piano solo, nappes, pincés, pizzicati et synthés tiennent le mieux.
  • Un tempo par cue (changement de tempo = nouveau cue). composition.mid utilise le temps absolu avec le tempo du premier cue.
  • Le rendu audio-as-code est lent (partition tout-aac 76 s : environ 8 min sur un Ryzen 5 5600H ; partition mixte : environ 50 s).
  • Claude ne peut pas entendre ; les chiffres QC + spectrogramme + oreilles de l’utilisateur sont la boucle de rétroaction.

Skills associés