|
@@ -217,6 +217,7 @@ export const getAllNodes = (osmd: any) => {
|
|
|
let skipNextNote = false
|
|
|
let multipleRestMeasures = 0
|
|
|
// const useedmeasures: Set<number> = new Set()
|
|
|
+
|
|
|
while (!iterator.endReached) {
|
|
|
// 为获取所有节点有修改源码currentVoiceEntries仅返回可见第一行,请搜索“修改为 仅根据当前可见声部第一行跳转”可找到位置
|
|
|
// 多声部仅循环一次,以第一声部为准
|
|
@@ -230,8 +231,22 @@ export const getAllNodes = (osmd: any) => {
|
|
|
cursorBox.w = cursorImg.offsetWidth
|
|
|
cursorBox.h = cursorImg.offsetHeight
|
|
|
}
|
|
|
- const voiceEntries = iterator.currentVoiceEntries?.[0] ? [iterator.currentVoiceEntries?.[0]] : []
|
|
|
+ /** 多声轨合并显示,当前音符的时值取所有声轨中的最小值 */
|
|
|
+ let minIndex = 0, elRealValue = 0
|
|
|
+ if (state.isCombineRender) {
|
|
|
+ for (let index = 0; index < iterator.currentVoiceEntries.length; index++) {
|
|
|
+ const element = iterator.currentVoiceEntries[index];
|
|
|
+ if (element.notes[0].length.realValue < elRealValue) {
|
|
|
+ minIndex = index
|
|
|
+ }
|
|
|
+ elRealValue = element.notes[0].length.realValue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let voiceEntries = iterator.currentVoiceEntries?.[0] ? [iterator.currentVoiceEntries?.[0]] : []
|
|
|
const voiceEntries2 = iterator.currentVoiceEntries?.[1]
|
|
|
+ if (state.isCombineRender) {
|
|
|
+ voiceEntries = iterator.currentVoiceEntries?.[minIndex] ? [iterator.currentVoiceEntries?.[minIndex]] : []
|
|
|
+ }
|
|
|
let skipMode = false
|
|
|
for (const v of voiceEntries) {
|
|
|
// 始终只取第一个声部中第一个音符的时间
|
|
@@ -629,6 +644,7 @@ export const getAllNodes = (osmd: any) => {
|
|
|
}
|
|
|
nodeDetail.realKey = formatRealKey(note.halfTone - fixedKey * 12, nodeDetail)
|
|
|
nodeDetail.duration = nodeDetail.endtime - nodeDetail.time
|
|
|
+ // console.log(i,nodeDetail.duration)
|
|
|
const tickables = activeVerticalMeasureList[0]?.vfVoices['1']?.tickables || []
|
|
|
const sublength = note.sourceMeasure.verticalMeasureList?.[0]?.staffEntries?.length || tickables.length
|
|
|
nodeDetail.noteLength = sublength || 1
|