介绍
OSMD 版本: v1.2.0
OSMD 支持指定开始结束小节来显示对应区间的曲谱,但是发现一个问题就是当截取区间的前面小节包含高音 / 低音谱号时,截取区间的第一小节的谱号显示就会出错
详情
这是正常的解析,从第 5 小节到第 12 小节
这是错误的解析,从第 9 小节到第 12 小节
可以看到第 9 小节的左手谱号显示的还是低音谱号
解决办法
这个直接看我在 issue
中的回答把,比较详细了:Wrong key signature(After setting drawFromMeasureNumber) #1079
我这里大概说一下处理方式
通过
sourceMeasures[measureIndex].lastInstructionsStaffEntries[i].instructions
能够获取到对应小节结尾是否存在谱号信息通过
sourceMeasures[measureIndex].verticalSourceStaffEntryContainers[i],staffEntries[j].instructions
能够获取到对应小姐中间是否存在谱号信息在调用
osmd.load(url)
之后,osmd.render()
之前,通过上面两个步骤检查是否需要改变谱号改变谱号,通过
sourceMeasures[measureIndex].FirstInstructionsStaffEntries.instructions
能够获取到对应小节开头的谱号信息,通过修改clefType
和line
达到修改谱号的目的
具体对应的值可查看官方的文档:https://opensheetmusicdisplay.github.io/classdoc/enums/clefenum.html
结尾
这应该是我最后一篇文章了,后面应该不会再更了,有缘再见!