SuperAPI AI 工具集

programmatic-music

通用与其它

查看项目

更新于 10-15 19:50

技能介绍

用途:用代码完成音乐的作曲、编曲、分析与渲染,既可从零创作,也可基于现有乐谱或音频文件改编。核心是 music21 库,并补齐它缺失的演奏表现与音频渲染层。

主要能力:处理音高、和弦、节拍、速度、装饰音、和声与音阶理论;解析与写出 MusicXML、MIDI、kern、ABC 等格式;MIDI 通道与打击乐控制;音频转乐谱;调性、和弦与特征分析;乐器与音域校验;通过 FluidSynth 渲染并混音导出 mp3、分轨。m21kit 为纯函数库,不子类化或猴补丁。

使用方式:安装 pip install music21,以及 brew install fluidsynth ffmpeg(或 apt install fluidsynth ffmpeg);运行 python -c "from m21kit import render; print(render.ensure_soundfont())" 获取约141MB音源一次。将 m21kit/ 放入 PYTHONPATH 或复制到项目。常用脚本包括 python scripts/analyze_score.py <file|corpus-path>、python scripts/audio_to_score.py in.mp3 -o out.mid、python scripts/fetch_score.py --corpus bach/bwv66.6、python scripts/check_ranges.py score.mid --instrument Violin、python scripts/render_audio.py score.mid -o out.mp3、python scripts/verify_music.py out.mp3 --midi out.mid、python scripts/new_project.py my-piece。

关键规则:每个 Part 分配独立 MIDI 通道,用 midiio.write_midi(score, path, channels=[1,2,3,10]),并用 midiio.describe_midi 校验;打击乐必须放在通道10;Dynamic 会按比例缩放 velocity,且 Crescendo/Diminuendo 不生效,默认 velocity 为90;不要写出乐器实际音域之外;发布前必须运行 references/15-verifying-without-listening.md 中的检查。

适用场景:需要可编程生成、分析、改编或渲染音乐的项目,包括从零作曲、编配与改风格、音频转谱。限制:music21 对演奏表现建模不足且本身不渲染音频;该技能无法真正聆听,只能数值验证,须如实说明未听过;引用现有音乐需区分来源与原创;非节拍性传统节奏不应强行套入拍子。部分具体价格、平台与效果资料暂未提供。