Browse Source

单声轨多声部计算节拍器修改

TIANYONG 2 months ago
parent
commit
cc878595a3
1 changed files with 7 additions and 1 deletions
  1. 7 1
      src/helpers/formateMusic.ts

+ 7 - 1
src/helpers/formateMusic.ts

@@ -923,6 +923,12 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				return trackName?.trim() === firstTrackName
 			});
 		}
+		// 多轨合并显示,或者单轨多声部的情况,需要过滤掉下半边声部的音符
+		if ( ((!state.isCombineRender && state.isSingleMutliTrack) || state.isCombineRender) && iterator.currentVoiceEntries.length) {
+			iterator.currentVoiceEntries = iterator.currentVoiceEntries.filter((item: any) => {
+				return item.ParentVoice.voiceId === 1
+			});
+		}		
 		let minIndex = 0, elRealValue = 0
 		for (let index = 0; index < iterator.currentVoiceEntries.length; index++) {
 			const element = iterator.currentVoiceEntries[index];
@@ -1526,7 +1532,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			// console.log('音符时间',nodeDetail.i,nodeDetail.time,nodeDetail.endtime)
 
 			tickables = tickables.filter((tickable: any) => tickable.attrs?.type !== "GhostNote")
-			let maxNum = (state.isCombineRender && note.maxNoteNum) || state.isSingleMutliTrack ? note.maxNoteNum : tickables.length;
+			let maxNum = (state.isCombineRender && note.maxNoteNum) ? note.maxNoteNum : tickables.length;
 			// 妙极客的曲子,一个休止小节内可能有多个休止符,此时maxNum是0,需要针对这种情况作处理
 			if (note.isRestFlag && maxNum === 0) {
 				maxNum = note.maxNoteNum;