فهرست منبع

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

TIANYONG 2 ماه پیش
والد
کامیت
ae59962b2d
1فایلهای تغییر یافته به همراه17 افزوده شده و 6 حذف شده
  1. 17 6
      src/helpers/formateMusic.ts

+ 17 - 6
src/helpers/formateMusic.ts

@@ -887,7 +887,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 	const currentTimes = [] as any[];
 	const currentTimes = [] as any[];
 	let isSetNextNoteReal = false;
 	let isSetNextNoteReal = false;
 	let differFrom = 0;
 	let differFrom = 0;
-	// let testIdx = 0;
+	let testIdx = 0;
 	let repeatIdx = 0; // 循环的次数
 	let repeatIdx = 0; // 循环的次数
 	const firstTrackName = state.canSelectTracks[0] || "";
 	const firstTrackName = state.canSelectTracks[0] || "";
 	while (!iterator.EndReached) {
 	while (!iterator.EndReached) {
@@ -999,7 +999,9 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				measuresTempoInBPM: note?.sourceMeasure?.tempoInBPM
 				measuresTempoInBPM: note?.sourceMeasure?.tempoInBPM
 			});
 			});
 		}
 		}
-
+		if (testIdx == 313) {
+			// debugger
+		}
 		iterator.moveToNextVisibleVoiceEntry(false);
 		iterator.moveToNextVisibleVoiceEntry(false);
 		// 从头开始循环,repeatIdx标记+1
 		// 从头开始循环,repeatIdx标记+1
 		if (iterator.backJumpOccurred) {
 		if (iterator.backJumpOccurred) {
@@ -1007,7 +1009,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 		}
 		}
 		iterator.repeatIdx = repeatIdx;
 		iterator.repeatIdx = repeatIdx;
 		// console.log('小节',testIdx,iterator.repeatIdx,iterator.EndReached,iterator.currentMeasureIndex,iterator.backJumpOccurred,iterator.forwardJumpOccurred)
 		// console.log('小节',testIdx,iterator.repeatIdx,iterator.EndReached,iterator.currentMeasureIndex,iterator.backJumpOccurred,iterator.forwardJumpOccurred)
-		// testIdx += 1;
+		testIdx += 1;
 	}
 	}
 	// 是否是变速的曲子
 	// 是否是变速的曲子
 	const hasVaryingSpeed = _notes.some((item: any) => item.measuresTempoInBPM !== _notes[0].measuresTempoInBPM)
 	const hasVaryingSpeed = _notes.some((item: any) => item.measuresTempoInBPM !== _notes[0].measuresTempoInBPM)
@@ -1626,9 +1628,10 @@ const customizationXml = (xmlParse: any) => {
 	const graces: any = Array.from(xmlParse.querySelectorAll('grace'));
 	const graces: any = Array.from(xmlParse.querySelectorAll('grace'));
 	const measures: any[] = Array.from(xmlParse.getElementsByTagName("measure"));
 	const measures: any[] = Array.from(xmlParse.getElementsByTagName("measure"));
 	const notes: any[] = Array.from(xmlParse.getElementsByTagName("note"));
 	const notes: any[] = Array.from(xmlParse.getElementsByTagName("note"));
+	const timegaps: any[] = Array.from(xmlParse.getElementsByTagName("timegap"));
 
 
 	// 获取音符最多的歌词数,time最多的次数,取两者的最大值,用于自定义循环播放次数
 	// 获取音符最多的歌词数,time最多的次数,取两者的最大值,用于自定义循环播放次数
-	let maxLyricNum = 0, maxTimeNum = 0;
+	let maxLyricNum = 0, maxTimeNum = 0, maxTimegap = 0;
 	if (notes && notes.length) {
 	if (notes && notes.length) {
 		for (const note of notes) {
 		for (const note of notes) {
 			if (maxLyricNum < note.getElementsByTagName("lyric").length) {
 			if (maxLyricNum < note.getElementsByTagName("lyric").length) {
@@ -1639,10 +1642,18 @@ const customizationXml = (xmlParse: any) => {
 			}
 			}
 		}
 		}
 	}
 	}
-	state.maxLyricNum = Math.max(maxLyricNum, maxTimeNum);
+	// 获取最多的timegap次数
+	if (timegaps && timegaps.length) {
+		for (const timegap of timegaps) {
+			if (maxTimegap < timegap.getElementsByTagName("item").length) {
+				maxTimegap = timegap.getElementsByTagName("item").length
+			}
+		}
+	}
+	state.maxLyricNum = Math.max(maxLyricNum, maxTimeNum, maxTimegap);
 	// state.osmd.EngravingRules.DYCustomRepeatCount = maxLyricNum;
 	// state.osmd.EngravingRules.DYCustomRepeatCount = maxLyricNum;
 	;(window as any).DYCustomRepeatCount = state.maxLyricNum;
 	;(window as any).DYCustomRepeatCount = state.maxLyricNum;
-	console.log('歌词次数',maxLyricNum)
+	console.log('歌词次数',maxLyricNum,'循环次数',state.maxLyricNum)
 
 
 	if (credits && credits.length) {
 	if (credits && credits.length) {
 		for (const credit of credits) {
 		for (const credit of credits) {