用途:该技能用于按音乐理论生成 MIDI 文件,适用于作曲、编写旋律或产出 MIDI 文件的场景。资料强调使用 skills/ 目录中提供的 Python 脚本,不要自行编写自定义 MIDI 生成代码。
主要能力:支持以 JSON 描述曲目结构(标题、bpm、多轨、乐器与音符),由脚本生成 MIDI,并自动按轨道分配 MIDI 通道。提供乐器别名(如 piano、guitar、bass、strings、brass、sax)映射到 GM 乐器,完整列表见 midi_types/gm_instruments.py。还提供归一化、精修以及 MIDI 转 WAV 的脚本。
使用方式:先安装依赖 pip install midiutil。按风格选择并阅读相关理论资源,例如流行/摇滚看 chord-progressions.md 与 voice-leading.md,古典看 counterpoint.md 与 orchestration.md,爵士看 modes-scales.md 与 chord-progressions.md。随后选择乐器、创建 composition JSON,再调用脚本生成。示例流程:import sys; sys.path.insert(0, '/path/to/midi-skill'); from skills.generate_midi import generate_midi_from_dict; 构造含 title、bpm、tracks 的 composition 后调用 generate_midi_from_dict(composition)。音符记为 pitch 与 duration,duration 用 1、2、d2、4、d4、8、16 等表示时值。
限制与注意:应遵守避免不和谐音的规则,如不演奏相隔 1 个半音的音、低音用和弦根音或五度、声部跨八度分散。最多 15 条旋律轨(MIDI 通道 0-8、10-15;通道 9 为鼓)。输出位于 output/ 目录。转 WAV 需要 FluidSynth 与 soundfonts/ 中的 A320U.sf2。具体收费、价格与平台信息暂未提供。