Quellcode durchsuchen

Merge branch 'feature-tianyong-newVersion' into ktyq-online-new

TIANYONG vor 5 Monaten
Ursprung
Commit
baf022a861
1 geänderte Dateien mit 15 neuen und 4 gelöschten Zeilen
  1. 15 4
      src/helpers/formateMusic.ts

+ 15 - 4
src/helpers/formateMusic.ts

@@ -850,6 +850,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 
 	let preNoteEndTime = 0; // 上一个音符的结束时间
 
+	let preNoteMeasureNumber = 0; // 上一个小节的number值
+
 	const _notes = [] as any[];
 	if (state.gradualTimes) {
 		console.log("后台设置的渐慢小节时间", state.gradual, state.gradualTimes);
@@ -1264,10 +1266,18 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				multipleRestMeasures = 0;
 			}
 			if (multipleRestMeasures < totalMultipleRestMeasures) {
-				multipleRestMeasures++;
+				if (note?.sourceMeasure?.MeasureNumberXML !== preNoteMeasureNumber) {
+					multipleRestMeasures++;
+				} else {
+					multipleRestMeasures = allNotes.length ? allNotes.last().multipleRestMeasures : 0;
+				}
 			} else {
-				multipleRestMeasures = 0;
-				totalMultipleRestMeasures = 0;
+				if (note?.sourceMeasure?.MeasureNumberXML !== preNoteMeasureNumber) {
+					multipleRestMeasures = 0;
+					totalMultipleRestMeasures = 0;
+				} else {
+					multipleRestMeasures = allNotes.length ? allNotes.last().multipleRestMeasures : 0;
+				}
 			}
 
 			// console.log(note.tie)
@@ -1394,7 +1404,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				notBeatTime: state.isEvxml && evNoteStartTime ? retain(evNoteStartTime) : retain(relativeTime + (state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime)), // 不含节拍器的 音符开始时间
 				notBeatEndTime: state.isEvxml && evNoteEndTime ? retain(evNoteEndTime) : retain(relaEndtime + (state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime)) // 不含节拍器的 音符结束时间
 			};
-			// console.log('当前的小节',nodeDetail.MeasureNumberXML,totalMultipleRestMeasures,multipleRestMeasures)
+			// console.log(i,'当前的小节',nodeDetail.MeasureNumberXML,totalMultipleRestMeasures,multipleRestMeasures)
 			// 如果是妙极客的曲子,并且第二遍循环播放需要等待时间,并且是第二遍循环的第一个小节的第一个音符
 			// if (state.isEvxml && state.secondEvXmlBeginTime && nodeDetail.i > 0 && nodeDetail.MeasureNumberXML === 1 && nodeDetail.noteId === 0) {
 			// 	nodeDetail.time = nodeDetail.time + state.secondEvXmlBeginTime;
@@ -1450,6 +1460,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			}
 			preNoteEndTime = nodeDetail.endtime;
 		}
+		preNoteMeasureNumber = note?.sourceMeasure?.MeasureNumberXML;
 		i++;
 	}
 	// 按照时间轴排序