Communitygithub.com

beatflow-skill

使用 Codex 和 BeatFlow 风格中立的 Python DSL 创作、编排、修改、验证、比较、检查和导出原始多轨音乐为标准 MIDI 文件。适用于将音乐构思转化为协调的乐器角色、书写任何流派的完整歌曲、诊断节奏或乐句问题,或处理 BeatFlow Composition 1.1 和 MIDI 文件。

beatflow-skill 是什么?

BeatFlow 技能旨在帮助用户通过 Codex 代理和 BeatFlow 提供的 Python DSL(领域特定语言)来完成音乐创作工作流。它支持完整的作曲流程:从音乐构思解析、多乐器编排、节奏与和声规划、到标准 MIDI 文件导出。核心能力包括音乐结构验证(硬校验与语义检查)、诊断(节奏、乐句、和声等音乐性观察)、以及候选方案的比较与选择。该技能适用于多种平台(如 Codex、Cursor 等支持技能定义的 AI 代理平台),要求 Python 3.10+ 环境。其工作方式强调在用户工作区内编写可执行的 Python 脚本,通过 `SongBuilder` 构建 `Composition` 对象,再由内置引擎进行编译、渲染和 MIDI 生成。技能同时内置了详细的参考文档(如作曲指南、格式说明、诊断手册等),帮助用户在创作过程中遵循一致的音乐逻辑和最佳实践。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/the0cp/beatflow-skill/tree/master

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

BeatFlow

使用 Codex 做出音乐决策。使用集成的引擎来处理精确的时序、功能性的音高实现、配器、验证、诊断、编译、MIDI 渲染和检查。

运行时

将此技能目录称为 <skill-root> 并运行:

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

需要 Python 3.10 或更高版本。将创作脚本和生成的产物放在用户的工作区中,切勿放在 <skill-root> 内。

工作流程

  1. 从构思中提取时长、结构、速度、节拍、调性语言、乐器配置、能量路径、优先级和排除项。对缺失的细节做出可逆的假设。

  2. 将每件乐器分类为 essential(必须)、substitutable(可替换)或 optional(可选)。单独将其突出程度分类为 primary(主要)、co-primary(共同主要)、support(支撑)或 background(背景)。在考虑更改合约之前,保留必须的乐器并修复其写作、平衡或回放程序。

  3. 阅读 composition-guidance.md 和 composition-format.md。对于突出的旋律、主题发展、复杂节拍或时序修复,请阅读 phrasing-and-coordination.md。对于超过 90 秒的作品,请阅读 long-form.md。在修订或比较候选方案时,请阅读 diagnostics.md。仅当方法论证据有用时,才加载 research-foundations.md。

  4. 在编写事件之前进行规划:

    • 框架:时长、段落、速度、节拍、拍点、主音和调式;
    • 乐句:分组、和声节奏、注意力、到达点和释放点;
    • 骨架:脉冲、低音、和声、角色进入、休止和交接;
    • 前景:节奏特征、轮廓、密度、织体和结构音;
    • 装饰:填充、次要攻击、对位线条和演奏法。
  5. 在添加前景之前先渲染量化的骨架。至少保留一个稳定的时间参考,并使重要的和声变化和到达点可感知。将前景视为可选;低音钩子、设计好的和弦顶音或节奏织体可能已经能够引导注意力。

  6. 编写一个可信的 Python 文件,其 build() 函数返回 Composition。使用 SongBuilder;让风格影响创作的音符,而不是模式或编译器。

  7. 对于一首完整的歌曲,将可复用的段落材料与时间线中的出现分开。使用发生的发展和 arrange() 处理来创建形式上的变化,而无需复制整个段落。

  8. 对于质量敏感的旋律或主题作品,在扩展形式之前试听少量结构不同的候选方案。比较不带音高装饰的节奏和时长,保留早期可识别的陈述,并通过聆听进行选择。

  9. 渲染选定的候选方案:

python "<skill-root>/scripts/run.py" compose "<output>/<name>.py" "<output>/<name>.mid" --composition-output "<output>/<name>.composition.json" --project-output "<output>/<name>.project.json" --report "<output>/<name>.report.json"
  1. 将验证错误视为硬性失败。将诊断视为与书面意图相悖的证据,而不是品味评分。修订负责的最高因果层,重新渲染,并再次聆听。
  2. 报告音乐设计、假设、验证结果、诊断结论、MIDI 事实以及任何仍需聆听判断的决策。

核心约束

  • 保持默认时序完全量化。只有当用户明确请求时序实验时才添加起音漂移或人性化,并保留一个量化基线。
  • 计算感知拍点,而不是假设每个四分音符都是一个节拍。使用 song.at()、song.tactus() 和 song.bars() 进行节拍感知的规划。
  • 除非不规律具有命名的音乐功能,否则使用规则的全小节乐句分组。
  • 赋予重要的前景乐句清晰的身份、内部对比和主要的到达点。当意图需要可测试时,使用 phrase()、phrase_stage() 和 arrival()。
  • 赋予相关角色有目的性的依赖关系,同时不强制相同的攻击点。当独立性、交织、问答或交接是构思的核心时,使用 interaction()。
  • 当和弦排列的最高音承载线条时,使用 top_target。仅当有明确的互补角色时,才添加单独的领奏。
  • 保持每个起音和持续时间明确。绝不要从下一个攻击点推断音符长度。

修订

按以下顺序进行诊断:

  1. 节拍和共享时钟;
  2. 角色所有权和乐器合约;
  3. 乐句分组、乐思连续性和到达点;
  4. 和声节奏、低音支撑和排列;
  5. 音高轮廓和非和弦音行为;
  6. 演奏法、平衡和回放音色。

在添加规则之前,使用三种简单的比较:

  • 用一个音高试听前景节奏;
  • 一次静音一个可选或竞争层;
  • 比较最早的完整乐句结尾与一个较晚的结尾。

修复因果结构,而不是孤立的音符。不要使用随机密度、任意抖动、全面人性化或新的特定流派引擎规则作为捷径。

命令

  • schema:打印 Composition 1.1 JSON Schema
  • validate COMPOSITION:执行严格的结构和语义检查
  • diagnose COMPOSITION:报告建议性的音乐观察
  • compare COMPOSITION...:比较候选方案的指纹
  • compile COMPOSITION PROJECT:编译为内部 Project JSON
  • render COMPOSITION MIDI:验证、诊断、编译、渲染和检查
  • compose SCRIPT MIDI:执行可信的 build() 并运行完整管道
  • inspect MIDI:报告 MIDI 结构、乐器、音域和控制器
  • self-check:运行端到端安装冒烟测试

仅对底层的编译后 Project 边界使用 project-schema、project-validate 和 render-project。

边界

  • 创作原创的符号音乐。不要抄袭参考旋律或模仿在世艺术家。
  • 在导入分析语料库或参考文件之前验证许可证。
  • 将 General MIDI 回放视为预览;在目标乐器或 DAW 中评估制作音色。
  • 始终将聆听作为最终的音乐决策。

相关技能