Communitygithub.com

beatflow-skill

Composez, arrangez, révisez, validez, comparez, inspectez et exportez de la musique originale multipiste sous forme de MIDI standard avec Codex et le DSL Python neutre en style de BeatFlow. Idéal pour traduire un cahier des charges musical en rôles instrumentaux coordonnés, écrire des chansons complètes dans n'importe quel genre, diagnostiquer des problèmes de rythme ou de phrasé, ou travailler avec BeatFlow Composition 1.1 et des fichiers MIDI.

Qu'est-ce que beatflow-skill ?

BeatFlow est un outil puissant pour les agents d'IA comme Codex, conçu pour composer, arranger, réviser, valider, comparer, inspecter et exporter de la musique originale pour pistes multiples au format MIDI standard. Il utilise un DSL Python neutre en style musical, permettant aux agents de traduire un brief musical en une partition instrumentale coordonnée, avec des rôles bien définis. Il prend en charge la Composition 1.1 de BeatFlow et peut être exécuté via un script Python dédié. Son intérêt principal réside dans sa capacité à séparer clairement les décisions musicales (prises par l'agent) de l'exécution technique (timing, validation, rendu). Il offre un flux de travail structuré en 11 étapes, depuis l'extraction des contraintes jusqu'à l'export MIDI, avec des commandes pour valider, diagnostiquer, comparer, compiler et inspecter les compositions. Il est particulièrement utile pour les développeurs et les agents d'IA qui souhaitent générer de la musique originale sans aléas, en garantissant une quantification précise du timing, une gestion du tactus perceptif, et un phrasé régulier. Les références détaillées (composition-guidance.md, composition-format.md, phrasing-and-coordination.md, long-form.md, diagnostics.md) aident à résoudre des problèmes spécifiques comme la mélodie, le développement thématique, les mètres complexes, ou la réparation rythmique. Les contraintes fondamentales (quantification par défaut, explicitement tous les attaques, pas de copie de mélodies existantes) assurent une production musicale fiable et originale. Enfin, l'écoute reste la décision musicale finale, ce qui rend BeatFlow parfait pour une utilisation en collaboration avec un humain.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/the0cp/beatflow-skill/tree/master

Demander à votre IA préférée

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

Documentation

BeatFlow

Utilisez Codex pour les décisions musicales. Utilisez le moteur fourni pour le timing exact, la réalisation fonctionnelle des hauteurs, le voicing, la validation, le diagnostic, la compilation, le rendu MIDI et l'inspection.

Environnement d'exécution

Référez-vous à ce répertoire de compétence comme <skill-root> et exécutez :

python "<skill-root>/scripts/run.py" <commande> ...

Nécessite Python 3.10 ou plus récent. Écrivez les scripts de composition et les artefacts générés dans l'espace de travail de l'utilisateur, jamais dans <skill-root>.

Workflow

  1. Extrayez la durée, la forme, le tempo, la mesure, le langage tonal, l'instrumentation, la trajectoire énergétique, les priorités et les exclusions du brief. Faites des hypothèses réversibles pour les détails manquants.

  2. Classez chaque instrument comme essentiel, substituable ou optionnel. Classez séparément sa proéminence comme primaire, co-primaire, support ou fond. Préservez les instruments essentiels et réparez leur écriture, leur équilibre ou leur programme de lecture avant d'envisager une modification du contrat.

  3. Lisez composition-guidance.md et composition-format.md. Lisez phrasing-and-coordination.md pour la mélodie proéminente, le développement thématique, les mètres complexes ou la réparation temporelle. Lisez long-form.md pour les œuvres de plus de 90 secondes. Lisez diagnostics.md lors de la révision ou de la comparaison de candidats. Chargez research-foundations.md uniquement lorsque des preuves méthodologiques sont utiles.

  4. Planifiez avant d'écrire les événements :

    • cadre : durée, sections, tempo, mesure, tactus, tonique et mode ;
    • phrase : regroupement, rythme harmonique, attention, arrivées et relâchements ;
    • squelette : pulsation, basse, harmonie, entrées de rôle, silences et passations ;
    • premier plan : identité rythmique, contour, densité, texture et notes structurelles ;
    • décoration : remplissages, attaques secondaires, contre-lignes et articulation.
  5. Rendez le squelette quantifié avant d'ajouter le premier plan. Gardez au moins une référence temporelle stable et rendez les changements harmoniques importants et les arrivées perceptibles. Considérez le premier plan comme optionnel ; un hook de basse, une ligne de sommets d'accords conçue, ou une texture rythmique peuvent déjà attirer l'attention.

  6. Écrivez un fichier Python fiable dont la fonction build() renvoie Composition. Utilisez SongBuilder ; laissez le style affecter la musique écrite, pas le schéma ou le compilateur.

  7. Pour une chanson complète, séparez le matériau de section réutilisable des occurrences dans la timeline. Utilisez le développement d'occurrence et les traitements arrange() pour créer un changement formel sans copier des sections entières.

  8. Pour un travail mélodique ou thématique sensible à la qualité, écoutez de courts candidats structurellement différents avant d'étendre la forme. Comparez le rythme et la durée sans décoration de hauteur, préservez un énoncé reconnaissable précoce et sélectionnez en écoutant.

  9. Rendez le candidat sélectionné :

python "<skill-root>/scripts/run.py" compose "<sortie>/<nom>.py" "<sortie>/<nom>.mid" --composition-output "<sortie>/<nom>.composition.json" --project-output "<sortie>/<nom>.project.json" --report "<sortie>/<nom>.report.json"
  1. Traitez les erreurs de validation comme des échecs graves. Traitez les diagnostics comme des preuves contre l'intention écrite, pas comme des scores de goût. Révisez la couche causale la plus élevée responsable, re-rendez et réécoutez.
  2. Rapportez la conception musicale, les hypothèses, le résultat de validation, les conclusions diagnostiques, les faits MIDI, et toutes les décisions qui nécessitent encore un jugement à l'écoute.

Contraintes fondamentales

  • Gardez le timing par défaut exactement quantifié. Ajoutez une dérive d'attaque ou une humanisation uniquement lorsque l'utilisateur demande explicitement une expérience de timing, et préservez une base quantifiée.
  • Comptez le tactus perceptif plutôt que de supposer que chaque noire est un temps. Utilisez song.at(), song.tactus() et song.bars() pour des plans conscients de la mesure.
  • Utilisez un regroupement régulier de phrases sur une mesure entière, sauf si l'irrégularité a une fonction musicale nommée.
  • Donnez aux phrases importantes de premier plan une identité claire, un contraste interne et une arrivée principale. Utilisez phrase(), phrase_stage() et arrival() quand leur intention doit être testable.
  • Donnez aux rôles liés une dépendance intentionnelle sans forcer des attaques identiques. Utilisez interaction() lorsque l'indépendance, l'imbrication, l'appel-réponse ou la passation est centrale au brief.
  • Utilisez top_target lorsque la note la plus haute d'un voicing d'accord porte la ligne. Ajoutez une piste principale séparée uniquement lorsqu'elle a un rôle complémentaire clair.
  • Gardez chaque attaque et durée explicites. Ne déduisez jamais la longueur d'une note de l'attaque suivante.

Révision

Diagnostiquez dans cet ordre :

  1. mesure et horloge partagée ;
  2. propriété des rôles et contrats des instruments ;
  3. regroupement des phrases, continuité gestuelle et arrivée ;
  4. rythme harmonique, support de basse et voicing ;
  5. contour de hauteur et comportement des notes étrangères ;
  6. articulation, équilibre et timbre de lecture.

Utilisez trois comparaisons simples avant d'ajouter des règles :

  • écoutez le rythme de premier plan sur une seule hauteur ;
  • coupez les couches optionnelles ou concurrentes une par une ;
  • comparez la première phrase complète la plus précoce avec une fin ultérieure.

Réparez la structure causale plutôt que des notes isolées. N'utilisez pas la densité aléatoire, des fluctuations arbitraires, l'humanisation généralisée, ou une nouvelle règle de moteur spécifique à un genre comme raccourci.

Commandes

  • schema : affiche le schéma JSON de Composition 1.1
  • validate COMPOSITION : effectue des vérifications structurelles et sémantiques strictes
  • diagnose COMPOSITION : rapporte des observations musicales indicatives
  • compare COMPOSITION... : compare les empreintes de candidats
  • compile COMPOSITION PROJECT : compile vers un JSON de projet interne
  • render COMPOSITION MIDI : valide, diagnostique, compile, rend et inspecte
  • compose SCRIPT MIDI : exécute la fonction build() fiable et lance le pipeline complet
  • inspect MIDI : rapporte la structure MIDI, les programmes, les plages et les contrôleurs
  • self-check : exécute le test de fumée d'installation de bout en bout

Utilisez project-schema, project-validate et render-project uniquement pour la frontière bas niveau du Projet compilé.

Limites

  • Créez de la musique symbolique originale. Ne copiez pas une mélodie de référence et n'imitez pas un artiste vivant.
  • Vérifiez les licences avant d'importer des corpus analytiques ou des fichiers de référence.
  • Considérez la lecture MIDI standard comme un aperçu ; évaluez le timbre de production dans les instruments ou le DAW de destination.
  • Gardez l'écoute comme décision musicale finale.

Skills associés