Communitygithub.com

beatflow-skill

Componga, organice, revise, valide, compare, inspeccione y exporte música original multipista como MIDI Estándar con Codex y el DSL en Python neutral en estilo de BeatFlow. Úselo para traducir un resumen musical a roles instrumentales coordinados, escribir canciones completas en cualquier género, diagnosticar problemas de ritmo o fraseo, o trabajar con BeatFlow Composition 1.1 y archivos MIDI.

¿Qué es beatflow-skill?

BeatFlow es un skill para agentes de IA (Codex, Cursor, Claude Code, etc.) que permite componer, arreglar y exportar música original multipista en formato MIDI Estándar. Utiliza un DSL en Python neutral en estilo llamado `SongBuilder` para definir composiciones con control preciso sobre temporización, armonía, instrumentación y fraseo. El skill incluye un motor que maneja validación estructural, diagnóstico musical, compilación, renderizado e inspección de archivos MIDI, separando las decisiones musicales de la implementación técnica. Está diseñado para seguir un flujo de trabajo estructurado en 11 pasos, desde extraer parámetros del resumen musical hasta reportar hallazgos y decisiones, con soporte para formatos largos, métricas complejas y desarrollo temático. Los comandos permiten validar, diagnosticar, comparar múltiples candidatos, compilar a Project JSON y renderizar MIDI, todo desde scripts Python ejecutados con un comando unificado.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

BeatFlow

Use Codex para decisiones musicales. Use el motor incluido para temporización exacta, realización funcional de alturas, instrumentación, validación, diagnóstico, compilación, renderizado MIDI e inspección.

Entorno de ejecución

Consulte este directorio del skill como <skill-root> y ejecute:

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

Requiere Python 3.10 o superior. Escriba los scripts de composición y los artefactos generados en el espacio de trabajo del usuario, nunca en <skill-root>.

Flujo de trabajo

  1. Extraiga del resumen: duración, forma, tempo, métrica, lenguaje tonal, instrumentación, trayectoria energética, prioridades y exclusiones. Haga supuestos reversibles para detalles faltantes.

  2. Clasifique cada instrumento como esencial, sustituible u opcional. Clasifique por separado su prominencia como primario, coprimario, soporte o fondo. Preserve los instrumentos esenciales y repare su escritura, balance o programa de reproducción antes de considerar un cambio de contrato.

  3. Lea composition-guidance.md y composition-format.md. Lea phrasing-and-coordination.md para melodía prominente, desarrollo temático, métrica compleja o reparación de temporización. Lea long-form.md para obras de más de 90 segundos. Lea diagnostics.md al revisar o comparar candidatos. Cargue research-foundations.md solo cuando la evidencia metodológica sea útil.

  4. Planifique antes de escribir eventos:

    • marco: duración, secciones, tempo, métrica, tactus, tónica y modo;
    • frase: agrupación, ritmo armónico, atención, llegadas y liberaciones;
    • esqueleto: pulso, bajo, armonía, entradas de roles, silencios y traspasos;
    • primer plano: identidad rítmica, contorno, densidad, textura y notas estructurales;
    • decoración: rellenos, ataques secundarios, contracantos y articulación.
  5. Renderice el esqueleto cuantizado antes de agregar el primer plano. Mantenga al menos una referencia temporal estable y haga perceptibles los cambios armónicos importantes y las llegadas. Trate el primer plano como opcional; un gancho de bajo, una línea superior de acorde diseñada o una textura rítmica pueden ya guiar la atención.

  6. Cree un archivo Python de confianza cuya función build() devuelva Composition. Use SongBuilder; deje que el estilo afecte la música creada, no el esquema ni el compilador.

  7. Para una canción completa, separe el material de sección reutilizable de las ocurrencias en la línea de tiempo. Use desarrollo de ocurrencias y tratamientos arrange() para crear cambio formal sin copiar secciones completas.

  8. Para melodía o trabajo temático sensibles a la calidad, escuche candidatos cortos y estructuralmente diferentes antes de expandir la forma. Compare ritmo y duración sin decoración de altura, preserve una declaración temprana reconocible y seleccione escuchando.

  9. Renderice el candidato seleccionado:

python "<skill-root>/scripts/run.py" compose "<salida>/<nombre>.py" "<salida>/<nombre>.mid" --composition-output "<salida>/<nombre>.composition.json" --project-output "<salida>/<nombre>.project.json" --report "<salida>/<nombre>.report.json"
  1. Trate los errores de validación como fallos críticos. Trate los diagnósticos como evidencia contra la intención escrita, no como puntuaciones de gusto. Revise la capa causal más alta responsable, vuelva a renderizar y escuche de nuevo.
  2. Reporte el diseño musical, supuestos, resultado de validación, hallazgos de diagnóstico, hechos MIDI y cualquier decisión que aún requiera juicio auditivo.

Restricciones principales

  • Mantenga la temporización predeterminada exactamente cuantizada. Agregue desviación de inicio o humanización solo cuando el usuario solicite explícitamente un experimento de temporización, y preserve una línea base cuantizada.
  • Cuente el tactus perceptual en lugar de asumir que cada negra es un pulso. Use song.at(), song.tactus() y song.bars() para planes conscientes de la métrica.
  • Use agrupación de frases regular de compás completo a menos que la irregularidad tenga una función musical nombrada.
  • Dé a las frases importantes de primer plano una identidad clara, contraste interno y llegada principal. Use phrase(), phrase_stage() y arrival() cuando su intención necesite ser comprobable.
  • Dé a los roles relacionados una dependencia intencionada sin forzar ataques idénticos. Use interaction() cuando la independencia, el entrelazado, la llamada y respuesta o el traspaso sean centrales para el resumen.
  • Use top_target cuando la nota más alta de una instrumentación de acorde lleve la línea. Agregue una línea principal separada solo cuando tenga un rol complementario claro.
  • Mantenga cada inicio y duración explícitos. Nunca infiera la duración de una nota a partir del siguiente ataque.

Revisión

Diagnostique en este orden:

  1. métrica y reloj compartido;
  2. propiedad de roles y contratos de instrumentos;
  3. agrupación de frases, continuidad de gestos y llegada;
  4. ritmo armónico, soporte de bajo e instrumentación;
  5. contorno de alturas y comportamiento de notas no acordales;
  6. articulación, balance y timbre de reproducción.

Use tres comparaciones simples antes de agregar reglas:

  • escuche el ritmo del primer plano en una sola altura;
  • silencie las capas opcionales o en competencia una a la vez;
  • compare el final de la frase completa más temprana con un final posterior.

Repare la estructura causal en lugar de notas aisladas. No use densidad aleatoria, fluctuación arbitraria, humanización generalizada o una nueva regla de motor específica para el género como un atajo.

Comandos

  • schema: imprime el esquema JSON de Composition 1.1
  • validate COMPOSITION: ejecuta verificaciones estructurales y semánticas estrictas
  • diagnose COMPOSITION: reporta observaciones musicales de asesoramiento
  • compare COMPOSITION...: compara huellas de candidatos
  • compile COMPOSITION PROJECT: compila a Project JSON interno
  • render COMPOSITION MIDI: valida, diagnostica, compila, renderiza e inspecciona
  • compose SCRIPT MIDI: ejecuta la build() de confianza y ejecuta el pipeline completo
  • inspect MIDI: reporta estructura MIDI, programas, rangos y controladores
  • self-check: ejecuta la prueba de humo de instalación de extremo a extremo

Use project-schema, project-validate y render-project solo para el límite de Project compilado de bajo nivel.

Límites

  • Cree música simbólica original. No copie una melodía de referencia ni imite a un artista vivo.
  • Verifique las licencias antes de importar corpus analíticos o archivos de referencia.
  • Trate la reproducción General MIDI como una vista previa; evalúe el timbre de producción en los instrumentos de destino o DAW.
  • Mantenga la escucha como la decisión musical final.

Skills relacionados