Преглед изворни кода

Merge remote-tracking branch 'origin/hqyDev' into feature-tianyong

TIANYONG пре 7 месеци
родитељ
комит
cca67199d4
2 измењених фајлова са 17 додато и 2 уклоњено
  1. 2 1
      src/helpers/formateMusic.ts
  2. 15 1
      src/helpers/metronome.ts

+ 2 - 1
src/helpers/formateMusic.ts

@@ -690,7 +690,8 @@ export const formatXML = (xml: string, xmlUrl?: string): string => {
 	if (speeds.length === 0) {
 		;(window as any).baseMeasureSpeed = state.originSpeed
 	} else {
-		state.originAudioPlayRate = speeds[0] / state.originSpeed
+		// 当前谱面的速度转为4分音符速度 因为我们速度比例转为4分音符了
+		state.originAudioPlayRate = speedBeatTo({unit:state.speedBeatUnit, speed:speeds[0]}, "1/4") / state.originSpeed
 	}
 	console.log('是否是变速的曲子:',hasVaryingSpeed,speeds)
 	let repeats: any = [];

+ 15 - 1
src/helpers/metronome.ts

@@ -324,6 +324,11 @@ class Metronome {
 			// console.log("🚀 ~ measureNumberXML", measureNumberXML, note)
 			// console.log("🚀 ~ measureNumberXML", note)
 			const measureListIndex = measureNumberXML - 1;
+			// 当渐快渐慢的时候  不播节拍器
+			if(isWithinRange(state.gradual, measureListIndex)){
+				xmlNumber = measureNumberXML;
+				continue
+			}
 			if (measureNumberXML > -1) {
 				if (measureNumberXML != xmlNumber) {
 					// 弱起的时候 根据音符结尾时间减去音符开头时间,得到的不是正常小节的时间,然后平均分配节拍之后,当前节拍间隔会非常短 这里弱起取整个小节的时间
@@ -688,5 +693,14 @@ function hideCursorTip() {
 		}, 2000);
 	}
 }
-
+function isWithinRange(ranges:any[], index:number) {
+	for (const range of ranges) {
+		const start = range[0].measureIndex;
+		const end = range[1].measureIndex;
+		if (index >= start && index <= end) {
+			return true;
+		}
+	}
+	return false;
+}
 export default Metronome;