拉帕
播放ABC记法文本的python程序
使用MIDI输出端口播放。OS上的MIDI输出设备(虚拟MIDI驱动程序、DAW、硬件音源等)。
前提条件
- Python 3.10以上
- MIDI输出设备(虚拟MIDI驱动程序或DAW)可用
- 视窗: loopMIDI、virtualMIDI、或DAW虚拟端口 - macOS:IAC驱动程序或DAW虚拟端口 - Linux:ALSA MIDI设备或FluidSynth
正常使用
用ABC记法演奏
python rappa.py "C D E F G A B c"
python rappa.py "C2 D2 E2 F2"
python rappa.py "C D E z E F G z"
python rappa.py "C ^C D _E E" # 臨時記号付き演奏MIDI文件
python rappa.py song.mid
uv run rappa.py music.midi演奏LilyPond(.ly)
python rappa.py score.ly
python rappa.py "\\relative c' { c4 d e f }"初始安装仅支持音高、音效和节奏(忽略动力学和艺术)。
支持LilyPond打击乐器部分
LilyPond的\drummode以及\DrumStaff支持打击乐器记谱。打击乐器事件输出到MIDI通道10(符合通用MIDI标准的打击通道)。
对应的鼓名(LilyPond名→GM打击乐器):
|LilyPond名称|GM打击乐器|MIDI笔记本编号| |-----------|---------|--------------| | bd |原声低音鼓|36| | sn |声学蜗牛|38| | hh |封闭式帽子|42| | hhc |封闭式帽子|42| | hho |打开Hi Hat | 46| | cymc |撞击钹1|49| | toml |低汤姆|45| | tomm |嗨,汤姆,48岁| | tomh |高汤姆|50|
使用例:
# 単純なドラムパターン
python rappa.py "\drummode { bd4 hh sn hh bd hh sn hh }"
# 同時打撃(コード記法)
python rappa.py "\drummode { 4 4 }"
# メロディとドラムの並行パート
python rappa.py ">"制限事项:
- 不包含在上述列表中的鼓名将输出警告并跳过(不会出错)
- 音阶/重音当前为固定值(64)
- 忽略动态和角色等装饰
将ABC标记保存为MIDI文件
python rappa.py "C D E F G A B c" --save output.mid
python rappa.py "C _E F G" -s blues.mid
uv run rappa.py "C D E F G A B c" --save scale.mid保存的MIDI文件可以在其他DAW软件和音乐播放器中播放和编辑。
用作MCP服务器
可以将rappa用作MCP服务器。
新电脑的安装步骤
前提条件
- 安装Python3.10以上
- 紫外线已安装(建议)
手顺
- 克隆存储库:
git clone https://github.com/nexis-yamamoto/rappa.git
cd rappa- 使用uv时(推荐):
# 依存関係をインストール
uv add mcp mido python-rtmidi python-ly
# 動作確認
uv run rappa_mcp_server.py- 使用pip时:
# 依存関係をインストール
pip install -e .
# 動作確認
python rappa_mcp_server.py在VS代码中设置
VSCode的MCP设置文件(%APPDATA%\Code\User\mcp.json)中添加以下内容:
{
"servers": {
"rappa": {
"command": "uv",
"args": [
"--directory",
"C:\\gits\\rappa",
"run",
"rappa_mcp_server.py"
],
"type": "stdio"
}
}
}注意: C:\\gits\\rappa的部分请更改为在您的环境中克隆的实际路径。
设置后,在VSCode的命令调色板(Ctrl+Shift+P)中运行“MCP:Restart Server”以启动服务器。
启动MCP服务器(手动测试)
python rappa_mcp_server.py
# または
uv run rappa_mcp_server.py可用工具
- play_abc_notation -播放ABC记法音乐
- 引数: abc_notation (字符串)-ABC符号字符串 - 例: "C D E F G A B c"
- play_lilypool -将LilyPond文本转换为MIDI并播放
- 引数: lilypond_content (字符串)-LilyPond源 - 例: "\\relative c' { c4 d e f }"
- parse_abc_note -分析ABC符号的音符
- 引数: note (字符串)-要分析的音符 - 例: "C2", "D/2", "z"
- get_note_频率 -获取可用音符和频率列表
在Claude桌面应用程序中设置
%APPDATA%\Claude\claude_desktop_config.json 添加:
{
"mcpServers": {
"rappa": {
"command": "uv",
"args": [
"--directory",
"C:\\gits\\rappa",
"run",
"rappa_mcp_server.py"
]
}
}
}注意: C:\\gits\\rappa的部分请更改为在您的环境中克隆的实际路径。
设置后,请重新启动Claude桌面应用程序。
关于ABC记法
- 音符:C,D,E,F,G,A,B(低八度),c,d,e,f,g,a,b(高八度)
- 休符z
- 长度:后面加上数字会变长(例如:C2是2倍)
- 短的:/数字变短(例如:C/2为一半)
- 临时记号:
- ^:锐化示例: ^F是F# - _:平坦(降低半音)示例: _B是B♭ - =:自然(取消临时符号)示例: =A
关于MIDI再生
主要功能
- 播放MIDI文件:将现有MIDI文件发送到MIDI输出端口并演奏
- MIDI保存:将ABC记法作曲的音乐保存为MIDI文件
所需MIDI输出设备
rappa需要系统有MIDI输出端口才能发出声音。如果没有MIDI输出端口,则显示错误。
设置虚拟MIDI驱动程序
- 视窗: loopMIDI安装
- macOS:系统设置>MIDI设置>启用IAC驱动程序
- Linux:安装流体系统(
sudo apt install fluidsynth)
或者,也可以使用“数字审计工作station”中的虚拟MIDI输入。
技术细节
- MIDI珀斯:
mido在库中分析MIDI事件 - MIDI出力:
python-rtmidi将条目添加到文档注册表 - 周波数变换:MIDI备注编号⇔频率的相互转换
- A4(440Hz)=基于MIDI注释编号69 - 12平均律: freq = 440 * 2^((note-69)/12)
使用例
# ブルースを作曲してMIDI保存
uv run rappa.py "C _E F G F _E D C2" --save blues.mid
# 保存したMIDIを再生
uv run rappa.py blues.mid
# 複雑な曲をMIDI保存
uv run rappa.py "C E G c G E C2 D F A d A F D2" -s arpeggio.mid