oss

数字乐谱即使顺畅流转,也未必原样抵达

14 条来源 9 条一手来源 已翻译 2026年9月10号

正文
1901 年,约翰·菲利普·苏萨坐在书桌前,端详《无敌之鹰进行曲》的印刷乐谱。

1901 年,约翰·菲利普·苏萨端详《无敌之鹰进行曲》的乐谱。威廉·尼科尔森·詹宁斯的照片定格了乐谱最古老的互操作层:为另一个人阅读而排列的记号。美国国会图书馆藏,经 Wikimedia Commons。[14]

一份数字乐谱从一个开源程序顺畅移交到另一个程序,抵达后却已发生变化。有时音高保留下来,换行位置却动了;有时印刷页面看起来正确,回放却选用了另一种音色;浏览器也会渲染出所有音符,同时丢下从未载入的学术标注。这些结果都不足以证明软件发生故障。它们揭示,同一个文件中的“乐谱”同时背负着几份不同的约定。

这些约定分开处理时,开放记谱体系最能发挥作用。MuseScore Studio 是带有原生项目文件的交互式编辑环境。MusicXML 是覆盖范围广的交换约定。LilyPond 把文本源文件排成可出版的谱页。MEI 可以用更丰富的学术信息描述音乐文献,Verovio 则把 MEI 和导入的 MusicXML 转为适合网页的乐谱。PDF、SVG 与音频属于交付成品,与可编辑文件承担不同职能。[1][4][8][11]

因此,本文绘制的是职责归属图,目标不在选出唯一赢家。能长期维持的工作流需要写明:音乐含义以哪种表示为准,交接时使用哪一种,版面由哪个渲染器定夺,哪些文件已经定稿并交给读者。开放性让每一层都可检查,各层依旧承担不同任务。

MusicXML 架起桥梁,整栋建筑仍需分工

MusicXML 4.0 将自身定义为用于交换和归档数字乐谱的开放格式。常用的 score-partwise 形式把小节放在各个乐器声部之内;另一种 score-timewise 形式则把声部放在各个小节之内。这两种组织方式引出第一个难题:音乐很难自然落进一棵简单的 XML 树。它既包含每个声部内部横向延续的时序,也要求同时发声的各声部在纵向对齐。[1][2]

MusicXML 携带实质性的音乐语义,包括音符、时值、声部、延音线、歌词、演奏指示和乐器声部标识,也容纳大量谱面显示信息。压缩后的 .mxl 文件把 XML 装入基于 ZIP 的容器。美国国会图书馆的保存指南也将 MusicXML 描述为开放交换格式,可跨软件平台共享记谱数据。[13] MusicXML 能保存页面与谱表系统信息;MuseScore 文档中关于导入后清理的说明,则提醒使用者:它无法像经审阅的 PDF 那样冻结最终阅读版面。[3]

把音乐声部与固定页面分开,正是这种格式的长处。小提琴声部得以继续作为可处理的音乐声部存在,没有退化成五条线的静态图片。另一个程序可以为它移调、抽取分谱、重新设定样式,或针对不同页面规格重新渲染。代价在于,接收应用必须解释这份表示。它采用的字体度量、间距引擎、默认值、元素支持范围与导入规则,都会在结果上留下痕迹。

因此,“支持 MusicXML”只回答了第一层问题。实际运作还要问得更精确:

格式徽章给不出这些答案,一套有代表性的乐谱测试集可以。

MuseScore 负责交互式编辑状态

MuseScore 的原生格式是 .mscz.mscx。它有意涵盖更广的导出范围:MusicXML、MEI、MIDI、PDF、SVG、音频及其他文件离开应用后,各自承担不同任务。[4] 代码库也要据此安排这些文件的角色。当音乐家还要在 MuseScore 里重新打开乐谱,继续调整记谱、分谱、样式与回放时,原生 MuseScore 文件通常应继续作为可编辑内容的权威源。MusicXML 导出文件承担交接任务,可编辑内容仍以原生工作文件为准。

项目手册坦率地说明了预期:MusicXML 可以忠实保留音符与配器,但要精确复现原来的外观,通常还要在导入后清理。导出方可以选择压缩或未压缩的 MusicXML,也可以决定纳入全部换行与分页,还是只纳入手动设置的换行与分页。导入时,文本位置和自定义属性会尽量保留,也可随后重置为 MuseScore 默认值。[3]

这些控制项会直接决定交接结果。出版方收到一份经过细致分页的分谱时,会希望手动换行与分页被视为硬性要求。教师把旧乐谱导入新的统一样式时,则会倾向于丢弃大部分旧有位置记录。两种选择都有充分理由,同一个文件却判断不了哪一种意图更加重要。

持续维护也让版本记录具有实际价值。MuseScore Studio 4.7.5 于 2026 年 9 月 8 日发布,此前已有多个 4.7 系列小版本;发布动态明确记录了该系列中的导入与 MusicXML 修复。[5] 因此,导出验收测试应记录写入端与读取端的准确版本。导入器行为可随小版本变化,“MuseScore 4”这样的记录过于粗略。

LilyPond 把制谱决定写进流程

LilyPond 的重心有所不同。它把文本形式的 .ly 文件作为长期维护的输入,由渲染器运用制谱规则生成页面。2.26 稳定版文档将 musicxml2ly 描述为一个转换器,可以从 partwise MusicXML(按声部组织的 MusicXML)中抽取音符、奏法记号、乐谱组织和歌词,生成 LilyPond 源文件。同一页也提醒,MusicXML 的部分元素属于低层表示,偏重图形呈现;自动转换因此十分复杂,有些内容甚至无法转换。[6]

这些命令选项显示制谱决定权如何转移。--no-page-layout 可以忽略导入的页边距、分页和谱表系统换行。--no-beaming--no-stem-directions 会让 LilyPond 自行决定符杠编组和符干方向。其他选项则分别保留或抑制特定类别的信息。导入的结果是一份按这些选项生成的源文件,其中每项取舍都清晰可见。

团队一旦开始编辑生成的 .ly,就建立了一条新的权威分支。日后从另一款编辑器重新导出并再次生成这个文件,会像用脚手架程序的输出覆盖源代码一样,把人工完成的 LilyPond 修改一并抹去。合理的出版流水线只导入一次,审阅生成的源文件并提交入库;此后,上游乐谱的变更都作为合并来处理,同时接受音乐与视觉审阅。

项目仍在持续维护:LilyPond 2.26.0 于 2026 年 4 月成为稳定版本,同年稍晚,2.27 系列继续作为开发版本推进。[7] 为了复现制谱结果,应连同 .ly 源文件一起固定 LilyPond 程序版本与字体环境。文本便于比较差异,但渲染器或字体改变后,完全相同的文本也无法保证页面几何保持一致。

Verovio 是带有转换分界的网页组件

Verovio 位于这张地图的另一处。它是一套可移植的乐谱排版库,原生表示为 MEI,并提供命令行、Python 与 JavaScript 工具包。它可以把 MusicXML 直接导入内部 MEI 模型,再为浏览器渲染 SVG。在 JavaScript 中,压缩 MusicXML 需要专门处理:.mxl 数据必须以 ArrayBuffer 或 base64 字符串送入,并交给 loadZipDataBuffer()loadZipDataBase64() 载入,普通的 loadData() 调用不负责载入压缩数据。[8]

在生产环境中,这项 API 差异决定了上传服务能否处理常见导出文件。演示程序可以只处理未压缩 XML,上传服务还要处理记谱程序默认导出的压缩文件。可靠的导入层应检查文件,选择正确的载入器,呈现转换警告,并把 HTTP 响应成功与乐谱导入成功分别判定。

Verovio 可以输出 SVG、MEI、MIDI 与 JSON timemap。它的 renderToMIDI() 路径会为独立播放器生成 MIDI 数据,timemap 输出则把乐谱时间轴上的事件与音符标识符连接起来。[9] 这些能力很适合交互式乐谱版本:应用可以渲染记谱、高亮元素、协调回放或翻页,服务器端也免去了运行桌面编辑器的负担。

Verovio 文档对往返转换的限制说得格外明确。它不会载入未受支持的 MEI 元素,输出的 MEI 自然也不会保留这些元素;部分分析性标记会被规范化,除非调用方明确要求保留。Verovio 将 MusicXML 转为 MEI 时,输出会落在工具本身支持的范围内。它是一份有效表示,却无法成为源文件全部意图的档案级摹本。[9]

这里同样需要记录版本。Verovio 6.3.0 于 2026 年 8 月发布,更新内容包括进一步改进 MusicXML 导入器。[10] 对于需要重新生成数千页 SVG 的网站,升级前应以视觉和语义回归集检验渲染器。API 仍能初始化,只说明调用入口还在,无法代替这套检验。

MEI 追问乐谱属于怎样的文献

MusicXML 的突出优势,是在记谱应用之间广泛交换数据。MEI 则从更宽广的文献问题起步。音乐编码倡议(Music Encoding Initiative)将 MEI schema 描述为一种记录音乐文献物质特征与智识特征的方法。这套 schema 由一个横跨技术、图书馆学、历史学与理论研究的社区开发。[11]

因此,MEI 很适合校勘版、手稿、异文与研究馆藏,因为这些材料重视记谱与其文献来源之间的关系。各个 MEI 使用方对这套模型的覆盖程度各不相同。例如,MuseScore 表示其 MEI 支持集中在 MEI Basic,即一个用于数据交换的子集。[4] Verovio 的渲染模型也有明确的支持范围。[9]

美国国会图书馆的一份研究指南重点讨论 MusicXML、MEI 与 PDF/A 三种格式,用于数字乐谱交换与长期保存。指南还提醒,档案馆有时缺少打开原生项目文件所需的原记谱软件。[12] 两条信息合在一起,说明结构化记谱为未来的解释与复用保留空间,固定页面成品则保存一份经过认可的阅读版面。因此,一套保存包同时收录原生编辑器文件、经过验证的交换文件和固定呈现版本,是合理的安排;三者分别抵御不同类型的失效。

测试一段旅程,格式勾选只是起点

一条上行音阶不足以构成最低限度的可信互操作测试。应准备一份紧凑的“基准乐谱”(golden score)。其中要覆盖实际曲目库依赖的元素:同一谱表中的多个声部、移调乐器、跨谱表记谱、跨小节线延音线、带结尾段的反复、歌词与和弦符号。还要纳入力度标记、提示音符大小的内容、打击乐映射,以及刻意设置的谱表系统换行和分页。再从真实档案中加入一两份历来转换棘手的文件。测试目的在于让静默丢失在波及数百份乐谱前显现,遍历 MusicXML 的每个元素则超出这套测试的范围。

每一个转换环节都要检查四层内容:

  1. 音乐组织:音高、时值、声部、小节、连音组、延音线、反复、移调和乐器声部顺序。
  2. 阅读版面:谱表分组、元素避碰、谱行换行和分页、歌词对齐、提示音符尺寸,以及演奏指示与音符的位置关系。
  3. 演奏诠释:速度变化、反复、乐器映射、奏法记号,以及符号化 MIDI 数据与渲染后音频之间的差别。
  4. 来源与处理记录:源文件哈希、导出器与导入器版本、所选参数、验证结果、警告、字体,以及批准渲染结果的人员。

先让乐谱沿预定路线向前流转,往返转换只作诊断。MuseScore 文件导出为 MusicXML 并重新打开后,应拿结果与原生乐谱对照;文件能打开,只证明读取完成,不能证明两者等价。经 musicxml2ly 转换的 MusicXML 应作为新生成的源文件接受审阅。在审查转换警告与未支持的构造之前,Verovio 输出的 MEI 始终不得覆盖信息更丰富的权威 MEI。[3][6][9]

把表现稳定的环节交给自动化流程。按照带版本的 schema 验证 XML,解析转换前后的文件并比较选定的语义不变量。渲染页面后,用图像差异比较标出移动,再由人工判断哪些改动属于音乐上合理的重新排版。试听一小组回放用例。测试夹具和通过验收的输出应与流水线一同存放。这样,每次升级除了改动依赖锁定文件,也会留下可见的比较依据。

把最终决定权放在失效代价最低的位置

不同团队应画出不同的地图。

对于学校乐团或社区编曲者,MuseScore 原生文件可以掌握编辑权,MusicXML 可以服务使用其他记谱程序的协作者,PDF 与音频则交付给演奏者。工作流容易使用,原生文件也保留了最快的改正通道。

对于采用代码审阅与自动制谱的出版方,.ly 可以成为该版乐谱的权威源。MusicXML 此时负责接收来稿,工作流不会把它当作往返协作总线。机构付出审核导入结果的成本,换来结果可确定的文本变更和集中管理的制谱规则。

对于数字图书馆或交互式学术版,MEI 可以掌握文献模型,Verovio 则作为锁定版本的交付组件。生成的 SVG、MIDI 与 timemap 文件都是可替换的缓存。网站若接收 MusicXML,原始上传文件与导入报告应和规范化后的 MEI 一同留存,转换完成后仍然可查。

运维成熟度决定了这条分界落在哪里。对只有两人的音乐小组,自建 schema 规范化服务超出了实际规模。一所接收 10,000 份乐谱的机构,则要把每次导出对话框的选择写进记录,个人记忆承担不了这项工作。馆藏规模越大,预期寿命越长,带版本的 schema、转换日志、基准测试样例与多种保存表示就越有价值。

封面照片中,约翰·菲利普·苏萨的书桌上放着纸质乐谱,没有 XML,底层的约定却依然清晰可辨。乐谱始终需要把意图送过一道分界——从作曲家传向抄谱员、制谱师、指挥、演奏者或读者。今天的开放工具让转换过程可供检查,也能重复执行。真正的成果是团队能够说清改了什么、改在何处,并确认哪一种表示仍有权修正变化。它们从未承诺乐谱会完美地保持原样。

来源

  1. W3C Music Notation Community Group,MusicXML 4.0,Final Community Group Report,2021 年 6 月 1 日——格式用途、规范状态、schema 文件与压缩文件资源。
  2. W3C Music Notation Community Group,“The Structure of MusicXML Files”——score-partwisescore-timewise、小节与声部层级,以及转换样式表。
  3. MuseScore Studio Handbook,“Working with MusicXML files”——导入后清理的预期,以及 MusicXML 导出时对压缩、换行与分页的控制。
  4. MuseScore Studio Handbook,“File export”——MuseScore 原生格式,以及 MusicXML、MEI、MIDI、PDF、SVG 与音频各自不同的导出用途。
  5. MuseScore 项目,“Releases”——4.7 系列的维护节奏,以及导入器、制谱、稳定性与 MusicXML 修复。
  6. GNU LilyPond 2.26 文档,“Invoking musicxml2ly”——从 MusicXML 到 LilyPond 的转换范围、限制与版面策略选项。
  7. GNU LilyPond 项目,“Releases”——稳定版 2.26 与开发版 2.27 的发布动态。
  8. Verovio Reference Book,“Input formats”——原生 MEI 处理、MusicXML 导入路线、压缩 MXL 载入,以及不同工具包的适用范围。
  9. Verovio Reference Book,“Output formats”——SVG、MEI、MIDI 与 timemap 输出、规范化,以及未支持元素的保留限制。
  10. Verovio 项目,“Releases”——当前维护动态,以及 6.3.0 版本中的 MusicXML 导入器工作。
  11. Music Encoding Initiative,“About MEI”——社区、schema,以及文献的物质特征与智识特征。
  12. 美国国会图书馆,“Music Notation: Preferred Preservation Formats for Digital Scores”——关于 MusicXML、MEI、PDF/A 与原生项目文件可访问性风险的独立保存指南。
  13. 美国国会图书馆,“MusicXML”——关于 MusicXML 作为跨记谱平台、可供机器与人阅读的交换格式之独立指南。
  14. Wikimedia Commons,“John Philip Sousa seated at a desk and looking at ‘The Invincible Eagle March’ sheet music”——1901 年美国国会图书馆藏照片,以及创作者、尺寸与来源记录。
Previous SQLite 把代码交给所有人,提交权依然稀缺 Next Plan 9 让每个进程组装自己的世界

Recommended In oss

Matched by subject and format