|  | @@ -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
 |