该技能面向用 MuseScore Studio 4 的 mscore 命令行工具在无图形界面环境下完成制谱、转谱、格式转换与渲染的任务。核心链路统一为:准备乐谱文件 → 通过脚本调用 mscore → 检查输出文件。
一、用途与主要能力
- 乐谱构建:scripts/musicxml-build.py 把紧凑 JSON 规格转换为 MusicXML 4.0,自动校准时值、处理移调乐器;支持旋律、和弦符号、歌词、弱起、调号、拍号、反复、文本、排练记号、换行/分页,钢琴用双谱表(notes2 写左手)。
- 单次渲染:scripts/mscore-run.sh 带超时执行一次 mscore,可导出 PDF、PNG、SVG、MP3/WAV/OGG/FLAC、MIDI、MusicXML 与 .mscz;PNG/SVG 每页一个文件。
- 批量转换:scripts/batch-convert.py 递归处理文件夹、保持子目录结构、支持含空格文件名,只读取输入;已存在的输出默认跳过,可用 --overwrite 覆盖;乐谱/图片格式与音频格式分开启动,以避免 mscore 4.7 混合任务崩溃。
- 移调与分谱:scripts/transpose-parts.py 按目标调或音程移调,输出 .mscz、总谱文件以及每个分谱的 PDF;分谱按移调乐器的书写调显示。
- 质量校验:scripts/score-check.py 检查 PDF 页数、音频时长与峰值 dB(判断音色库是否失效)、MusicXML 解析与 XSD、标题/小节数/调号/拍号/速度及各分谱和弦与歌词数量;任一文件失败则退出码为 1。
二、使用方式 先用 $SK/scripts/mscore-run.sh --which 检查 MuseScore Studio 4 是否存在;缺失时安装 MuseScore Studio 4(Muse Hub、musescore.org 或 brew install --cask musescore)。MP3 导出依赖内置 MS Basic 音色库,MuseSounds 可选。pdfinfo、ffprobe/ffmpeg、xmllint 可增强检查,缺少时 score-check.py 会降级运行。 编写音乐时先写 JSON 规格再生成 MusicXML:音高/时值写作 PITCH/DUR(中央 C 为 C4,r 为休止,[C4,E4,G4]/h 为和弦;时值 w h q e s t,. 附点,3 三连音,~ 连音,|syl 歌词);和弦用 chords 字段,@beat 指定拍位,未指定则均分小节;小节时值不足会报错并给出小节号,应修正规格而非补齐。乐器需按名称指定并以实际音高写音符,由构建器转换为移调乐器的书写音高与调号;作曲/作词署名只使用用户提供的名字。渲染示例:$SK/scripts/mscore-run.sh -o score.pdf score.musicxml;裁剪用 -T 20,DPI 用 -r 200,音频码率用 -b 192。
三、适用场景与限制 适合批量制谱、输出 PDF/图片/音频/MIDI、移调与分谱制作、自动化校验乐谱元数据。限制包括:mscore 4.x 退出码不可靠(常在写出全部输出后以 134 或段错误退出),须以输出文件判断成功;同名输出会被静默覆盖,脚本不会覆盖输入;MIDI 导入的量化与声部分割由 MuseScore 自行推测,可用 -M ops.xml 调整并用 PNG 核对;-P(总谱+分谱)在 4.7 中不产出文件,脚本改用 --score-parts-pdf;QML 插件只能在图形界面运行,不适用于此无头流程。输出 .mscz 可在 MuseScore 中手工编辑,MusicXML 可在 Sibelius、Finale、Dorico 等软件中打开。每一步结束后应报告写入的文件、执行的检查与近似处理项。