Jelajahi Sumber

fix: 总谱问题修改

TIANYONG 11 bulan lalu
induk
melakukan
6c3bb788ad
2 mengubah file dengan 14 tambahan dan 3 penghapusan
  1. 13 2
      src/helpers/formateMusic.ts
  2. 1 1
      src/view/selection/index.module.less

+ 13 - 2
src/helpers/formateMusic.ts

@@ -839,9 +839,16 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 	let differFrom = 0;
 	// let testIdx = 0;
 	let repeatIdx = 0; // 循环的次数
+	const firstTrackName = state.canSelectTracks[0] || "";
 	while (!iterator.EndReached) {
 		// console.log({ ...iterator });
 		/** 多声轨合并显示,当前音符的时值取所有声轨中的最小值 */
+		if (state.isCombineRender) {
+			iterator.currentVoiceEntries = iterator.currentVoiceEntries.filter((item: any) => {
+				const trackName = state.isEvxml && state.evxmlAddPartName ? item.parentVoice.parent.IdString || '' : item.parentVoice.parent.Name || '';
+				return item.parentVoice.parent.IdString === firstTrackName
+			});
+		}
 		let minIndex = 0, elRealValue = 0
 		for (let index = 0; index < iterator.currentVoiceEntries.length; index++) {
 			const element = iterator.currentVoiceEntries[index];
@@ -856,8 +863,10 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			}
 			elRealValue = element.notes[0].length.realValue
 		}
+		if (minIndex !== 0 && state.isCombineRender && iterator.currentVoiceEntries[minIndex]) {
+			iterator.currentVoiceEntries[minIndex].Notes[0].NoteToGraphicalNoteObjectId = iterator.currentVoiceEntries?.[0].Notes[0].NoteToGraphicalNoteObjectId;
+		}
 		const voiceEntries = iterator.currentVoiceEntries?.[minIndex] ? [iterator.currentVoiceEntries?.[minIndex]] : [];
-
 		let currentVoiceEntries: any[] = [];
 		// 多分轨,当前小节最大音符数量
 		let maxNoteNum = 0;
@@ -929,7 +938,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			if (state.multitrack > 0 && currentTime > note.length.realValue) {
 				currentTime = note.length.realValue;
 			}
-			note.maxNoteNum = maxNoteNum
+			note.maxNoteNum = maxNoteNum;
+			note.trackIndex = minIndex;
 			_notes.push({
 				note,
 				iterator: { ...iterator },
@@ -1268,6 +1278,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			}
 			const filterRepeatIdx = allNotes.filter((item: any) => item.noteId === note.NoteToGraphicalNoteObjectId).length
 			const nodeDetail = {
+				trackIndex: note.trackIndex, // 当前的音符属于第几条分轨
 				isStaccato: note.voiceEntry.isStaccato(),
 				isRestFlag: note.isRestFlag,
 				noteId: note.NoteToGraphicalNoteObjectId,

+ 1 - 1
src/view/selection/index.module.less

@@ -209,7 +209,7 @@
     transform: translate(-50%);
     > img {
         width: auto;
-        height: 35px;
+        height: 38px;
     }
 }