单小节双声部MusicXML经musicxml2ly转换后第二声部移位问题
问题产生原因
- 你的MusicXML文件缺少多声部场景下的时间回溯标记,
musicxml2ly工具默认按照XML中音符的写入顺序累加计算时间偏移:你先连续写完了声部1的2个二分音符,总时长刚好占满4/4拍的整小节,后续写入的声部2音符会被工具判定为起始时间在第一小节结束的位置,自然就被渲染到了下一小节。 - 多声部MusicXML的标准编写逻辑是:写完一个声部的当前小节全部音符后,需要通过
<backup>标签将时间指针回退到小节起始位置,再编写下一个声部的内容,你的代码缺失了这个关键标签导致解析错误。
修复方案
在声部1的最后一个音符、声部2的第一个音符之间插入以下回溯代码,将时间线回退4个单位(当前配置divisions=1时对应4拍,也就是整小节的长度):
<backup> <duration>4</duration> </backup>
修改后重新执行转换、渲染流程,即可得到双声部共处于第一小节的正确效果。
内容的提问来源于stack exchange,提问作者user4035
相关产品推荐
相关产品推荐

