Générateur de Musique
Un système de génération musicale procédurale qui crée de la musique originale via un pipeline strict et mesurable. Toutes les décisions sont prises par l'agent ; les scripts les exécutent. Le pipeline utilise des mesures objectives et des contrôles qualité plutôt que des suppositions subjectives.
Quand l'utiliser
Utilisez ce skill lorsque :
- Vous créez de la musique originale pour la vidéo, les jeux, les publicités, les podcasts ou les voix-off
- Vous générez des bandes-son à partir de descriptions d'ambiance (ex. "montée cinématique tendue", "lo-fi calme")
- Vous clonez des instruments à partir d'enregistrements
- Vous mixez ou masterisez des stems existants
- Vous écrivez une musique adaptée à une vidéo avec coupes/dialogue
- Vous corrigez une musique robotique, plate ou déséquilibrée
- Vous travaillez avec des styles culturels spécifiques (carnatique, arabe, africain, est-asiatique, etc.)
Démarrage rapide
Exécutez depuis le répertoire du skill avec son environnement virtuel :
- Windows :
.venv/Scripts/python.exe - Unix :
.venv/bin/python
Première configuration : voir references/setup.md.
Flux de travail
Suivez ces étapes dans l'ordre. Ne sautez jamais d'étapes.
| Étape | Action | Résultat | Vérification |
|---|---|---|---|
| 1 | Créer le projet | python scripts/setup_project.py --new-project <dossier> --title "<Titre>" (ajouter --ambience uniquement si demandé) | Structure de projet avec direction/, presets/, scores/, out/, reports/, STATUS.md |
| 2 | Recherche | python scripts/research_kb.py <dossier> --topic "<sujet>" --tags <mots-clés>. Ajoutez des sources web via TinyFish. Pour ambiances/effets, utilisez --sounds et documentez des références réelles avec licences/mesures. | reports/research_<sujet>.md avec citations de la base de connaissances et sources |
| 3 | Fiche de direction | Copiez templates/direction_sheet.json vers <dossier>/direction/direction_<titre>.json. Remplissez tous les champs selon references/music-direction.md. Pour la vidéo, exécutez d'abord scripts/video_score.py. | Fiche complète avec job, feeling, sections, motifs, hits, intention de mix, spatialisation |
| 4 | Créer les presets | python scripts/presets.py scaffold instruments/vocals/environments/sfx <nom> --project <dossier>. Chaque preset nécessite un placement spatial unique. | Presets dans le projet avec caractère, azimuth/distance spatiale |
| 5 | Écrire la partition | Créez <dossier>/scores/<titre>_score.json (déclaratif, référence les presets). Utilisez templates/custom_score_template.py pour un contrôle précis. | JSON valide avec des pistes référençant les presets |
| 6 | Rendu et contrôle qualité | python scripts/pipeline.py <dossier>/scores/<titre>_score.json --project <dossier> | out/master.wav (copie de la version la plus récente), out/master_vNN.wav, out/versions.json, <master>.json tags, stems/, midi/, reports/ci_report.json avec 0 ÉCHEC |
| 7 | Réviser | Modifiez UN seul levier à la fois (references/music-direction.md §6). Relancez l'étape 6 jusqu'à succès (max 5 tentatives). | Tous les contrôles passent |
| 8 | Écouter et livrer | python scripts/listen.py out/master.wav --direction direction/<fiche>.json | Vérifier et rapporter les résultats |
Métadonnées de livraison et versions
La certification écrit automatiquement trois éléments, une fois le contrôle musical passé :
out/master_vNN.wav— chaque rendu certifié obtient son propre fichier de version. Les versions antérieures sont conservées ; un nouveau rendu n'en écrase jamais un.out/master.wav— une copie de la version la plus récente, pour les outils qui attendent un seul master.out/versions.json— chaque version avec son horodatage, ses mesures et le changement qui l'a validée (les échecs de contrôle qu'elle a résolus, oupremier rendu certifié).out/master.json— les balises standard écrites à côté du master.
D'où viennent les balises : valeurs par défaut dans presets/metatdats/metadata.json (artiste, album, copyright, licence, éditeur, ISRC, langue), puis valeurs dérivées de la partition (titre, genre depuis piece_type, année, un commentaire factuel tonalité · BPM · piece_type), puis les propres surcharges du fichier <projet>/metadata.json. Écrivez les valeurs réelles dans <projet>/metadata.json plutôt que dans les scripts.
Règles pour un agent :
- Ne jamais supprimer ou écraser un
master_vNN.wavou un enregistrement dansversions.json. Si une livraison nécessite une prise propre, elle devient une nouvelle version. - Vérifiez l'enregistrement après un rendu :
python scripts/helpers/version_manager.py list --project <dossier>. - La compression MP3 est manuelle, jamais intégrée au pipeline :
python scripts/helpers/compress_mp3.py out/master_vNN.wav -o <fichier>.mp3 -b 320k. Elle transporte les balises sidecar dans le MP3. - Les lignes de contrôle
meta.tagsetmeta.versionne font que tracer cet enregistrement. Elles avertissent, n'échouent jamais, et sont de niveauINFOlors du premier rendu d'une pièce.
Principes clés
- Modulaire : Son/espace dans
presets/, notes dansscores/, intention dansdirection/. Pas de scripts monolithiques. - Basé sur la recherche : Chaque instrument/voix/culture personnalisé nécessite des citations issues de la base de connaissances.
- Les données plutôt que le code : Les nouveaux sons utilisent des données de scène (
"scene"/"scene_layers"), pas des générateurs Python. - Un seul changement à la fois : Lors de la correction d'échecs de contrôle, modifiez exactement un paramètre et re-mesurez.
- Mesurer, ne pas deviner : Utilisez les métriques et diagnostics du pipeline. Le goût n'est pas mesuré.
- Chaque pièce reçoit un preset de mix : Contrôle le gain staging, la dynamique, le sidechain, le mastering.
Routes par tâche
| Tâche | Références clés |
|---|---|
| Adaptation/coupes vidéo | references/video-scoring.md, scripts/video_score.py |
| Voix/cheeurs/hum | references/vocals-and-choirs.md, references/vocal-engine.md |
| Styles culturels/fusion | knowledgebase/README.md, references/cultural-soul.md, references/genre-fusion.md |
| SFX/ambiances/bruitages | references/sound-effects.md, references/physical-scene.md, references/environments-as-presets.md |
| Orchestre SFZ | references/sfz-libraries.md, scripts/sfz_libs.py |
| Clonage/extraction d'instruments | references/instrument-cloning.md, references/extraction.md |
| Mixage/mastérisation | references/mixing-and-mastering.md, scripts/mixer.py, scripts/mix_diagnostics.py |
| Échecs de contrôle qualité | references/quality-gate.md, scripts/gate_profiles.py |
Modèle de sortie
Terminé : out/master.wav (Xs, -X.X LUFS, -X.X dBTP), midi/<titre>_score.mid, stems/ (N), reports/ci_report.json.
Ce que c'est : <feeling, tonalité, BPM, instruments, presets>.
Contrôles : <N succès, 0 échec après K tentatives> ; écoute : <relevés>.
Non vérifié : goût, réalisme instrumental, adéquation dans la vidéo finale.
Suite : <un changement suggéré>.
Notes et limites
- SoundFont GM utilisé par défaut ; bibliothèques SFZ optionnelles. Pas de mots chantés dans la synthèse standard (cheeurs/hum sont des textures).
listen.pynécessite le modèle earshot (python scripts/setup_project.py --earspour installer).- Spatialisation casque uniquement pour les presets avec
spatial.binaural : true. - Les diagnostics de mix rapportent mais ne bloquent pas les contrôles (les contrôles bloquants sont dans le contrôle qualité).
- Voir
AGENTS.mdpour les règles complètes etreferences/troubleshooting-and-limits.mdpour toutes les limites.