
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 分