Que fait Constructeur de Montage Calé sur le Beat ?
Vue d'ensemble
Utilisez ce skill après qu'une chanson a été analysée avec $song-edit-analysis, ou lorsque des données équivalentes de beats/marqueurs de coupe existent déjà. L'objectif n'est pas seulement de placer des clips sous la musique ; le montage doit donner l'impression d'être écrit pour la chanson, avec des changements de sujet, des impacts, des réactions de foule et des accents visuels qui tombent sur des marqueurs musicaux significatifs.
La règle FX intégrée (non-négociable, apprise sur le terrain – 2026-07)
Les effets et les séquences ne doivent jamais être séparés. Pas d'alternance entre segments FX plein écran et plans réels plein écran – cela donne l'impression de deux vidéos collées l'une à l'autre. Chaque effet doit s'ancrer (a) sur le matte du sujet (masques de personne par image — VNGenerateForegroundInstanceMaskRequest d'Apple Vision sur macOS, ou équivalent), (b) sur la géométrie de la scène (portails dans les ciels, écrans en perspective, reflets, débordements lumineux en bordure), ou (c) sur les pixels mêmes du plan (kaleido/miroir de l'image en direct, traînées lumineuses, ondulations temporelles de l'historique des images). Les rendus procéduraux entrent dans les plans en tant qu'éléments de la scène – à travers les ciels, les écrans, les portes, les reflets – jamais en tant que segments intercalaires. Un élément non pisté avec un mode de fusion « screen » donne l'impression d'un autocollant. Lois connexes : bien paraître prime sur le respect des paramètres (restructurer plutôt que livrer un échec de cohésion) ; un seul langage d'effet par coupe, amplifié avec la structure de la chanson – des looks uniques par plan brisent la cohésion ; un étalonnage riche et assumé sur chaque plan (une retenue pure donne un rendu délavé et ennuyeux ; la formule qui fonctionne est étalonnage riche et dense + une distorsion de réalité par plan). Pour les pièces émotionnelles destinées aux réseaux sociaux, privilégiez UN plan continu avec une transformation photométrique (rampe d'étalonnage / arrivée de lumière / bloom piloté par les enveloppes de la chanson) – les coutures sont impossibles par construction.
Piège de compositing qui vous brûlera : les modes de fusion « screen » doivent être appliqués en RGB (format=gbrp) – en YUV, le noir a une chroma de 128 et le mode « screen » inonde l'image de magenta. Faites l'opacité avec une multiplication lutrgb en RGB.
Moteurs de coupe
Deux horloges, choisissez par piste :
- Verrouillé sur les attaques (préféré pour les pistes à énergie/rétention) :
librosa.onset.onset_detect(onset_envelope=onset_strength(...), hop_length=512, backtrack=False, delta=0.02, units="time"); fusionner les attaques distantes de moins de 0,13 s en conservant la plus forte ; quantifierint(round((t-t0)*FPS)); forcer l'image 0 ; couper sur CHAQUE attaque restante – tenir quand c'est épars, exploser quand c'est dense ; accents en gros plan sur les attaques du quartile supérieur. Nécessite un pool profond (~60+ plans sélectionnés). Préférez ceci aux préréglages de densité. - Piloté par les marqueurs/priorités (moteur original de ce kit) : couper sur les marqueurs primaires/secondaires selon la table de priorités ci-dessous – toujours adapté pour les montages paysage de gameplay et les montages de densité modérée.
- Accrochez toute grille de battements estimée aux attaques réelles détectées lorsqu'elles sont à moins de 60 ms ; pour les moments de changement de style/transformation, utilisez
flooret nonroundafin que le changement tombe sur l'image contenant le transitoire.
Architectures de construction
- Rendu de segment → concat → post-étalonnage (ffmpeg uniquement) : mp4 par plan avec cover-crop (
scale=W:H:force_original_aspect_ratio=increase:flags=lanczos,crop=W:H, sources HDR d'abord converties en bt709,tpad=stop_mode=clonepour étendre les clips courts par gel – ne jamais raccourcir la grille musicale), concat demuxer-c copy, unfilter_complexd'étalonnage global (eq=contrast=1.05:saturation=1.08, vignette, grain film vianoise=alls=5:allf=t+u), audio mixé en dernier avec fondus. - Pipeline numpy d'images (FX intégrés pixel par pixel) : décodage ffmpeg→rawvideo rgb24→boucle numpy→encodage ffmpeg stdin à CRF 17. Le pipeline éprouvé pour les mattes : rendre un
base.mp4propre étalonné (coupe verrouillée) → générer les mattes de personne SUR la base → piloter les effets à partir d'une table d'effets par image → mixer l'audio original. La synchronisation est parfaite par construction. - Fusion dans le shader (GLSL moderngl) : les séquences sont décodées dans une texture et le monde procédural est rendu dans le même fragment shader, les coupes sont passées via
--cutspour qu'elles atterrissent comme des chocs warp dans le shader. Intégration la plus profonde ; voir$generated-media-sourcingpour le squelette du renderer.
Entrées
Privilégiez ces entrées :
- Fichier audio ou fenêtre d'extrait.
*_cut_markers_30fps.csvprovenant de$song-edit-analysis.- Sources de séquences ou un manifeste source avec chemins de clips, catégories, poids et notes d'utilisation.
- Manifeste de médias générés ou dossier d'actifs générés provenant de
$generated-media-sourcing, lorsque l'utilisateur demande des clips/images générés ou que les sources de séquences sont incomplètes. - Format souhaité :
9:16,16:9, ou les deux. - Durée cible, généralement
30-40spour des extraits de preuve sociale.
S'il n'y a pas encore de CSV de marqueurs de coupe, exécutez d'abord $song-edit-analysis.
Workflow
- Choisissez la fenêtre musicale avant le rendu. Utilisez l'analyse de la chanson pour sélectionner une plage
30-40sà haute énergie ou narrative cohérente. - Inventoriez les séquences. Utilisez
scripts/scan_video_sources.pypour noter les vidéos candidates en fonction du mouvement, de la lueur, de la luminosité, de la saturation et des heures de début prometteuses. - Si les séquences réelles manquent ou si l'utilisateur demande des médias générés, utilisez
$generated-media-sourcingpour créer ou planifier des clips générés et des images fixes avant le mappage final des sources. - Créez une taxonomie des sources. Types courants :
gameplay,crowd,real_laser,photos_festival,photos_nature,character_select,menu,reaction,product,broll,generated_video,generated_still. - Construisez le plan de segments à partir des marqueurs de coupe adjacents. Ignorez les micro-segments en dessous d'environ
0.17 s, sauf si la piste nécessite réellement des coupes saccadées (stutter cuts). - Adaptez l'intensité de la séquence à la priorité du marqueur :
- Priorité 1-2 : mise en place, contexte, plans longs, mouvement doux.
- Priorité 3 : action modérée, changements d'angle, B-roll rythmique.
- Priorité 4 : mouvement actif, coupes rapides, réponses/réactions.
- Priorité 5 : meilleurs impacts, révélations, KOs, réactions de foule, flashs laser.
- Utilisez les accents comme ponctuation, pas comme remplissage. Les lasers réels, les réactions de foule, les flashs dans la nature, les moments de menu, les plans générés et les lumières abstraites doivent amplifier les changements de phrase, les caisses claires, les remplissages et les drops.
- Rendez les segments, concaténez, attachez l'extrait audio propre, puis produisez :
- vidéo finale
- CSV de timeline
- planche contact
- brief JSON avec le mix des sources, le mix des types, les dimensions, la fenêtre musicale et l'intention créative
- Exécutez
$edit-delivery-qaavant de déclarer le montage terminé.
Patrons de rendu
Pour les montages verticaux qui incluent des séquences paysage, gardez l'action principale lisible :
- Utilisez un fond flou/amélioré en plein écran provenant du même clip.
- Superposez le premier plan net centré avec une échelle et une position y stables.
- Ajoutez uniquement des séparateurs subtils en haut/bas si nécessaire.
- Évitez les recadrages verticaux serrés qui perdent la scène, la direction de lancement, les visages ou l'interface utilisateur importante.
Pour les séquences d'accent en plein écran :
- Mettez à l'échelle/recadrez pour remplir le format de livraison.
- Augmentez le contraste/saturation suffisamment pour une lecture rapide.
- Gardez les accents laser/festival/réaction courts : souvent
2-12images ou un beat.
Pour les montages paysage de gameplay :
- Gardez l'action plein écran visible.
- Privilégiez
1920x1080,30 ipsminimum. - Utilisez des coupes rapides d'un beat dans les sections à haute énergie, mais préservez la lisibilité de la source.
Règles de sélection des sources
Privilégiez l'action évidente à l'écran : impacts, collisions, pics, révélations, combos rapides, réactions expressives ou moments lumineux à fort mouvement.
Gardez les plans de réaction explosive humains pour les appels-réponses après les impacts majeurs. Ne rejetez pas automatiquement les séquences de foule uniquement ; ne rejetez que les réactions faibles, lentes ou visuellement plates.
Utilisez des séquences réelles pour les accents laser/festival finaux chaque fois que possible. Les espaces réservés générés sont acceptables pour l'exploration, mais remplacez-les avant la livraison finale si des sources réelles existent.
Rejetez ou dépriorisez fortement les cartes-titres, les interviews, les menus sans rôle délibéré, les scènes vides, les ardoises plates, les actions trop recadrées et les plans à faible mouvement dans les sections de pointe.
Les clips et images fixes générés doivent être étiquetés dans les sorties de timeline/brief avec generated_video ou generated_still, le prompt utilisé, et si l'actif est final_ok, replace_if_real_source_found, ou placeholder_only.
Heuristiques de timing
- Utilisez les marqueurs primaires pour les coupes franches, les changements de sujet, les impacts, les révélations et les atterrissages de changements de vitesse.
- Utilisez les marqueurs secondaires pour les coupes de continuation, les changements d'angle, les petits échanges de B-roll et les débuts de changements de vitesse.
- Pendant les sections à haute énergie, une longueur de segment moyenne d'environ
0,35-0,50 sfonctionne bien pour un montage social dense. - Pour un extrait de preuve de
35 s,70-90segments est un bon objectif lorsque le matériel source peut le supporter. - Réservez les séquences les plus fortes pour la section de plus haute énergie ; n'utilisez pas tout le meilleur matériel pendant la mise en place.
Patron de vidéo musicale verticale (2026-07)
Pour la promotion musicale en 9:16 (la piste la plus récente aux côtés du patron Smash) : 1080×1920@30 toujours ; fin en boucle (l'état photométrique revient à l'image 0 sur les ~22 dernières images) ; texte d'accroche avec cinétique de deuxième ligne (ligne 1 statique à l'image 0, ligne 2 apparaissant fusionnée avec le beat à ±100 ms d'une attaque réelle entre 0,8 et 1,3 s) ; soit un conteneur de style Sweeps (toile noire, fenêtre de séquence centrée, accroche monospace au-dessus, crédit en dessous) soit un rendu cinématographique plein écran. Itérez en versions numérotées sur une infrastructure stable – changez uniquement le langage d'effet entre les versions ; lorsque le client aime un moment de 2 secondes, faites de ce moment le langage entier de la version suivante.
Patron de projet issu de Conteto Machino
La structure réutilisable du projet Smash Mash :
- Fenêtre musicale : environ
52,98 s-88,17 s, un extrait à haute énergie de35,19 s. - Montage dense piloté par les marqueurs : environ un segment par beat ou marqueur majeur.
- L'action/le gameplay principal est dominant.
- La foule, les lasers réels, la nature et les moments de menu/contexte source apparaissent comme une brève ponctuation.
- Les livrables incluent des MP4 finaux, des planches contact, des CSV de timeline et des fichiers JSON de brief.
Pour le standard détaillé, lisez references/conteto-edit-standard.md.
Références optionnelles :
references/example-prompts.md: prompts réutilisables pour les futures tâches de montage.references/file-schemas.md: formes flexibles de CSV de timeline et de JSON de brief.references/render-recipes.md: recettes FFmpeg/layout adaptées de ce projet.references/gui-vision.md: vision produit pour un futur workflow graphique.
Script
Utilisez scripts/scan_video_sources.py lorsque vous avez besoin d'un inventaire de séquences réutilisable :
python3 scripts/scan_video_sources.py /chemin/vers/les/videos --out /chemin/vers/inventaire_sources
Il écrit un CSV et un JSON avec la durée des médias, des scores approximatifs de mouvement/lueur et des heures de début recommandées. Utilisez la sortie pour constituer des pools de sources et éviter de couper constamment dans les mêmes moments inactifs.