/minara-music — Générer musique + effets sonores à partir du script
Transformez le script par seconde de la vidéo en une feuille de repères musicaux, cues.json, puis synthétisez localement la musique de fond et les effets sonores synchronisés à l'image. La synthèse est purement locale avec NumPy et le résultat est déterministe (les mêmes repères + graine produisent toujours le même fichier audio). Elle n'utilise aucun service externe et ne coûte rien.
Source : l'approche de partitionnement du film de lancement de Minara V2, généralisée en un script réutilisable ; examples/v2-launch.json est la feuille de repères de ce film.
Flux de travail (dans l'ordre)
- Lire le script : récupérez le script par seconde de minara-video (ou du storyboard / du timing de la voix off). Si le script comporte des colonnes « ambiance sonore » ou « musique », suivez-les ; sinon, jugez à partir de l'ambiance de l'image.
- Écrire la feuille de repères : dans le dossier
audio-src/cues.jsondu projet, écrivez :duration(= durée finale de la vidéo),bpm(par défaut 120),key(par défautLa mineur; pour les morceaux brillants / de célébration, vous pouvez utiliserDo majeur),seed.sections: découpez le script en sections musicales, choisissez uneenergypar section, et utiliseznotepour décrire l'image correspondante (pour une référence croisée facile).sfx: chaque action visible dans le script (tap, saisie, commande remplie, notification qui s'affiche, transition, verrouillage) reçoit un effet sonore, synchronisé à la seconde indiquée dans le script.
- Montrer d'abord la feuille à l'opérateur ; ne pas rendre encore : dans des tableaux Markdown, listez « plage temporelle / énergie / image correspondante » et « temps de l'effet / type / action correspondante », et attendez qu'il donne son accord avant de lancer le rendu. Il modifie la feuille, pas le code.
- Rendre :
python3 ~/.claude/skills/minara-music/scripts/make_music.py <projet>/audio-src/cues.json -o <projet>/assets [--vo <projet>/assets/vo.wav] - Auto-vérification : le script affiche chaque section ; puis mesurez le volume sonore par section pour confirmer que le climax est le plus fort, que la rupture / l'outro retombent clairement, et que le ducking fonctionne. Pour les problèmes d'écoute (trop chargé, un effet sonore qui prend le dessus), ajustez
level/gainet refaites le rendu ; chaque rendu prend quelques secondes. - Livrer : donnez le chemin vers
bgm.wav(oubgm-duck.wav), et utilisezopen -Rpour mettre en surbrillancepreview-mix.wavafin qu'il puisse écouter. Dans HyperFrames, ajoutez-le comme piste audio, avec la voix off sur une piste séparée.
Fichiers de sortie
| Fichier | Contenu |
|---|---|
bgm.wav | Musique + effets sonores, 48 kHz stéréo, crête à -1 dBFS, fondu d'entrée de 0,4 s au début et fondu de sortie de 3,2 s à la fin |
bgm-duck.wav | Généré lorsqu'il y a une voix off : la musique est réduite de duck_db (par défaut -8 dB) là où la parole se produit ; les effets sonores ne sont pas réduits |
preview-mix.wav | Généré lorsqu'il y a une voix off : musique + voix off mélangées, pour écoute uniquement, pas pour la vidéo finale |
Types de sections d'énergie
| Énergie | Son | Utilisé pour |
|---|---|---|
silent | Aucune musique | Pauses nécessitant un silence complet |
intro | Drone grave + nappe douce | Ouverture, logo, convergence des données |
light | Nappe + arpège léger + rythme clairsemé | Interactions mobiles, démos de fonctionnalités légères |
build | Ajoute une basse et une caisse claire sur chaque temps, crescendo automatique à la fin de la section | Montée progressive vers un moment clé |
full | Batterie complète + clap + basse + arpège | Démonstration continue des fonctionnalités principales (backtesting, mise en ligne, automatisation) |
breakdown | Supprime la batterie et la basse, ne laissant que la nappe et un arpège doux ; la caisse claire revient dans la dernière mesure | Changements de scène, sections sur la sécurité / la vie privée qui nécessitent de « respirer » |
climax | Le plus complet : batterie complète + mélodie principale + crash au début de la section ; ajoute automatiquement un crescendo si la section précédente n'est pas build | Nom du produit / apparition du slogan de lancement |
outro | Résout sur l'accord tonique + cloche de marque, fondu avec tout le mix | Carte de fin, appel à l'action |
Chaque section peut prendre "level": 0.5–1.3 pour ajuster finement son volume. Les accords suivent les mesures globales (mineur i–VI–III–VII, majeur I–V–vi–IV), afin qu'ils ne se brisent pas entre les sections.
Types d'effets sonores (sfx)
| Type | Son | Action typique | Paramètres optionnels |
|---|---|---|---|
tap | Clic court | Tap sur bouton, sélection | gain |
typing | Tic-tac de frappe continue | Saisie dans un champ de texte | chars, cps (caractères/seconde, correspondant à la vitesse de frappe à l'écran) |
success | Deux notes de cloche ascendantes | Commande remplie, stratégie en cours | gain |
notify | Alerte de trois notes | Notification ou rappel qui s'affiche | gain |
bell | Son de cloche unique | Apparition d'avatar/logo | note (MIDI, défaut 81) |
blips | Notes courtes ascendantes | Progression du backtest, chargement de données | count, step (secondes), note |
sparkle | Grains scintillants + bruit soufflé | Convergence de particules, ouverture | dur |
riser | Bruit montant | Transition manuelle, montée en tension | dur |
whoosh | Balayage inversé | Fenêtre qui se ferme, transition pousser/tirer | dur |
thud | Bruit sourd de verrouillage | Verrouillage, confirmation, atterrissage lourd | gain |
crash | Cymbale | Accent supplémentaire | gain |
Chaque effet sonore peut prendre gain pour ajuster son volume.
Règles
- Les effets sonores suivent uniquement les actions visibles : s'il n'y a pas d'action correspondante à l'écran, n'ajoutez aucun effet sonore, comme pour « n'ajoutez pas de texte à la légère ».
- Copiez les timings du script ; n'estimez pas : le
tde l'effet sonore utilise les secondes réelles du script par seconde / de la chronologie d'animation ;cpspour la frappe utilise la vitesse de frappe dans l'animation. - Si la longueur ou l'ordre du script change, mettez d'abord à jour
cues.jsonet refaites le rendu ; n'étirez pas l'audio manuellement. - N'utilisez pas de services de musique IA externes ni de pistes téléchargées depuis le web ; lorsqu'une musique sous licence commerciale est nécessaire, l'opérateur fournit le fichier.