BeatFlow
使用 Codex 做出音乐决策。使用集成的引擎来处理精确的时序、功能性的音高实现、配器、验证、诊断、编译、MIDI 渲染和检查。
运行时
将此技能目录称为 <skill-root> 并运行:
python "<skill-root>/scripts/run.py" <command> ...
需要 Python 3.10 或更高版本。将创作脚本和生成的产物放在用户的工作区中,切勿放在 <skill-root> 内。
工作流程
-
从构思中提取时长、结构、速度、节拍、调性语言、乐器配置、能量路径、优先级和排除项。对缺失的细节做出可逆的假设。
-
将每件乐器分类为
essential(必须)、substitutable(可替换)或optional(可选)。单独将其突出程度分类为primary(主要)、co-primary(共同主要)、support(支撑)或background(背景)。在考虑更改合约之前,保留必须的乐器并修复其写作、平衡或回放程序。 -
阅读 composition-guidance.md 和 composition-format.md。对于突出的旋律、主题发展、复杂节拍或时序修复,请阅读 phrasing-and-coordination.md。对于超过 90 秒的作品,请阅读 long-form.md。在修订或比较候选方案时,请阅读 diagnostics.md。仅当方法论证据有用时,才加载 research-foundations.md。
-
在编写事件之前进行规划:
- 框架:时长、段落、速度、节拍、拍点、主音和调式;
- 乐句:分组、和声节奏、注意力、到达点和释放点;
- 骨架:脉冲、低音、和声、角色进入、休止和交接;
- 前景:节奏特征、轮廓、密度、织体和结构音;
- 装饰:填充、次要攻击、对位线条和演奏法。
-
在添加前景之前先渲染量化的骨架。至少保留一个稳定的时间参考,并使重要的和声变化和到达点可感知。将前景视为可选;低音钩子、设计好的和弦顶音或节奏织体可能已经能够引导注意力。
-
编写一个可信的 Python 文件,其
build()函数返回Composition。使用SongBuilder;让风格影响创作的音符,而不是模式或编译器。 -
对于一首完整的歌曲,将可复用的段落材料与时间线中的出现分开。使用发生的发展和
arrange()处理来创建形式上的变化,而无需复制整个段落。 -
对于质量敏感的旋律或主题作品,在扩展形式之前试听少量结构不同的候选方案。比较不带音高装饰的节奏和时长,保留早期可识别的陈述,并通过聆听进行选择。
-
渲染选定的候选方案:
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"
- 将验证错误视为硬性失败。将诊断视为与书面意图相悖的证据,而不是品味评分。修订负责的最高因果层,重新渲染,并再次聆听。
- 报告音乐设计、假设、验证结果、诊断结论、MIDI 事实以及任何仍需聆听判断的决策。
核心约束
- 保持默认时序完全量化。只有当用户明确请求时序实验时才添加起音漂移或人性化,并保留一个量化基线。
- 计算感知拍点,而不是假设每个四分音符都是一个节拍。使用
song.at()、song.tactus()和song.bars()进行节拍感知的规划。 - 除非不规律具有命名的音乐功能,否则使用规则的全小节乐句分组。
- 赋予重要的前景乐句清晰的身份、内部对比和主要的到达点。当意图需要可测试时,使用
phrase()、phrase_stage()和arrival()。 - 赋予相关角色有目的性的依赖关系,同时不强制相同的攻击点。当独立性、交织、问答或交接是构思的核心时,使用
interaction()。 - 当和弦排列的最高音承载线条时,使用
top_target。仅当有明确的互补角色时,才添加单独的领奏。 - 保持每个起音和持续时间明确。绝不要从下一个攻击点推断音符长度。
修订
按以下顺序进行诊断:
- 节拍和共享时钟;
- 角色所有权和乐器合约;
- 乐句分组、乐思连续性和到达点;
- 和声节奏、低音支撑和排列;
- 音高轮廓和非和弦音行为;
- 演奏法、平衡和回放音色。
在添加规则之前,使用三种简单的比较:
- 用一个音高试听前景节奏;
- 一次静音一个可选或竞争层;
- 比较最早的完整乐句结尾与一个较晚的结尾。
修复因果结构,而不是孤立的音符。不要使用随机密度、任意抖动、全面人性化或新的特定流派引擎规则作为捷径。
命令
schema:打印 Composition 1.1 JSON Schemavalidate COMPOSITION:执行严格的结构和语义检查diagnose COMPOSITION:报告建议性的音乐观察compare COMPOSITION...:比较候选方案的指纹compile COMPOSITION PROJECT:编译为内部 Project JSONrender COMPOSITION MIDI:验证、诊断、编译、渲染和检查compose SCRIPT MIDI:执行可信的build()并运行完整管道inspect MIDI:报告 MIDI 结构、乐器、音域和控制器self-check:运行端到端安装冒烟测试
仅对底层的编译后 Project 边界使用 project-schema、project-validate 和 render-project。
边界
- 创作原创的符号音乐。不要抄袭参考旋律或模仿在世艺术家。
- 在导入分析语料库或参考文件之前验证许可证。
- 将 General MIDI 回放视为预览;在目标乐器或 DAW 中评估制作音色。
- 始终将聆听作为最终的音乐决策。