浏览代码

feat: 选段非第一小节不播放系统节拍器

TIANYONG 1 周之前
父节点
当前提交
8efe401fa6
共有 2 个文件被更改,包括 29 次插入16 次删除
  1. 12 7
      src/helpers/formateMusic.ts
  2. 17 9
      src/view/evaluating/index.tsx

+ 12 - 7
src/helpers/formateMusic.ts

@@ -1332,14 +1332,19 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				/**
 				 * 管乐迷,部分弱起的曲目,mp3制作不标准,没有按照补齐弱起后的时间进行制作,需要单独处理
 				 * 2670
+				 * 2025.03.14 音频文件修改了,修改后的音频文件需要计算弱起的时间
 				*/
-				if (["2670"].includes(state.cbsExamSongId)) {
-					// fixtime -= _firstMeasureRealValue * formatBeatUnit(beatUnit) * (60 / beatSpeed);
-				} else {
-					if (difftime > 0 && !state.isEvxml) {
-						fixtime += difftime;
-						state.fixtime = fixtime;
-					}
+				// if (["2670"].includes(state.cbsExamSongId)) {
+				// 	// fixtime -= _firstMeasureRealValue * formatBeatUnit(beatUnit) * (60 / beatSpeed);
+				// } else {
+				// 	if (difftime > 0 && !state.isEvxml) {
+				// 		fixtime += difftime;
+				// 		state.fixtime = fixtime;
+				// 	}
+				// }
+				if (difftime > 0 && !state.isEvxml) {
+					fixtime += difftime;
+					state.fixtime = fixtime;
 				}
 				// 管乐迷 diff获取不准确时, 弱起补齐
 				if (["2589", "2561", "2560", "2559", "2558", "2556", "2555", "2554"].includes(detailId)) {

+ 17 - 9
src/view/evaluating/index.tsx

@@ -400,15 +400,23 @@ export const handleStartBegin = async (preTimes?: number) => {
 		if (state.playState === "play" && (state.playType==="play"&&state.needTick)||(state.playType==="sing"&&state.needSingTick)) {
 			// 如果是系统节拍器 等系统节拍器播完了再播,如果是mp3节拍器 直接播
 			if((state.playType==="play" && !state.isOpenMetronome)||(state.playType==="sing" && !state.isSingOpenMetronome)){
-				const tickend = await handleStartTick();
-				console.log("🚀 ~ tickend:", tickend)
-				// 节拍器返回false, 取消播放
-				if (!tickend) {
-					state.playState = "paused";
-					evaluatingData.startBegin = false;
-					evaluatingData.isBeginMask = false
-					return;
-				}
+        /**
+        * #12291
+        * 如果是选段评测,并且开始小节不是第一个小节,不需要播放节拍器的圆点动画
+        */
+        if (state.section.length && state.section[0]?.MeasureNumberXML !== state.firstMeasureNumber) {
+          // 
+        } else {
+          const tickend = await handleStartTick();
+          console.log("🚀 ~ tickend:", tickend)
+          // 节拍器返回false, 取消播放
+          if (!tickend) {
+            state.playState = "paused";
+            evaluatingData.startBegin = false;
+            evaluatingData.isBeginMask = false
+            return;
+          }
+        }
 			}else{
 				// handleStartTick()
         // 需要等待音频返回进度后再执行节拍器圆点动画