
MusicXML Synthesizer
io.github.raulkivi由 GitHub 账号 raulkivi 发布v0.2.3更新于 Oct 24, 2026
Synthesizes audio from MusicXML, with voice-part selection and tempo control
概览
借助 FluidSynth 将 MusicXML 乐谱渲染为 WAV 音频,让助手选择声部、调整速度并生成练习音轨。
- 可以做什么
- 查看乐谱:列出各声部名称、ID 与小节数,并概括标题、调性、拍号、速度、声部与时长
- 渲染音频:将整份乐谱或选定声部合成为 WAV 文件,可调整速度
- 生成练习音轨:限定小节范围、重复次数、预备拍与节拍器,选择音色和各声部音量
- 获取起音:以文本返回各声部第一个音高,并附一段简短的钢琴音频
- 检查环境:报告后端版本、音色库状态与 FluidSynth 是否可用
- 适用场景
- 适合合唱团员、指挥或音乐学习者想单独听某个声部、或需要放慢速度的练习音轨时使用;也适合助手在渲染前先了解 MusicXML 或压缩 MXL 乐谱的结构。
- 运行要求
- 以 Python 包形式在本机运行(需 Python 3.11 及以上),通过 uvx 或 uv 启动;需要 libfluidsynth 系统库,并通过 SYNTH_SOUNDFONT_PATH 指定 SF2 音色库文件路径。可选的 SHEET_MUSIC_OUTPUT_ROOT 与 SHEET_MUSIC_INPUT_ROOTS 用于限定音频写入和乐谱读取的目录。仅支持桌面端。
安装
在 SourceWeft 中
- 打开 控制台中的 MusicXML Synthesizer,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
synth-mcp
MCP server that synthesizes audio from MusicXML. Supports voice part selection (Soprano, Alto, Tenor, Bass) and tempo control.
What it does
Takes a MusicXML score, optionally filters to one or more voice parts, and renders a WAV audio file using FluidSynth. Useful for choir singers who want to practice a specific voice part.
Tools
Installation
System library required:
A soundfont (SF2) file is also required. Free options:
Quick install
Prefer not to do the above by hand? Run ./install.sh — with uv already installed, it installs the system
libfluidsynth package and a soundfont automatically. See SETUP.md for a
non-technical walkthrough, and TROUBLESHOOTING.md if something goes wrong.
Ready-made client configs (Claude Desktop, Cursor, Windsurf, Continue, Zed) are in
examples/.
Running
Configuration
Claude Desktop configuration
Usage examples
parts accepts part IDs from get_parts ("P1"), part names ("Soprano", any case) or voices
("S", "Alto", "Alt", "A1" for divisi); an unknown part returns the valid choices.
part_ids still works as a deprecated alias for one minor release.
Every tool that takes musicxml also takes musicxml_path instead (exactly one of the two): a
.musicxml, .xml or compressed .mxl file inside the output root, a folder the client shares as
an MCP root, or a folder in SHEET_MUSIC_INPUT_ROOTS. Prefer it, and pass on paths other servers
return. describe_score reports part IDs, ranges and duration without returning the score.
tempo_factor range: 0.25–4.0. Values below 1.0 slow down; above 1.0 speed up. Does not affect pitch.
Practice options on synthesize (all optional; leaving them out gives the plain track):
starting_pitches returns the text always; the clip (mono 16 kHz WAV, inline when ≤ 200 KB) needs
the soundfont and FluidSynth. Without them the result says why in audio_unavailable.
Testing
Dependencies
- music21 — score parsing and MIDI export
- pyfluidsynth — Python bindings for FluidSynth
- mcp — MCP protocol
Known limitations
- music21's MIDI export may drop some articulations and dynamics
- Audio output is always WAV; convert with
ffmpeg -i out.wav out.mp3if needed - Large scores (100+ measures) may take several seconds to synthesize
System requirements
- Python 3.11+
libfluidsynthshared library (libfluidsynth.so.3on Linux)- An SF2 soundfont file
来源:synth-mcp/README.md,提交 417deaf
工具
0版本历史
3- v0.2.3最新Oct 17, 2026
- v0.2.2Oct 12, 2026
- v0.2.1Sep 26, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分