Sfoglia il codice sorgente

fix: 节拍指针位置问题修复

TIANYONG 8 mesi fa
parent
commit
220bb1b232
2 ha cambiato i file con 7 aggiunte e 2 eliminazioni
  1. 3 1
      src/helpers/formateMusic.ts
  2. 4 1
      src/helpers/metronome.ts

+ 3 - 1
src/helpers/formateMusic.ts

@@ -1122,6 +1122,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			// 计算音符时值,使用转换成1/4的速度计算
 			beatSpeed = measuresTempoInBPM;
 			// let beatSpeed = measureSpeed || baseSpeed
+			beatSpeed = beatSpeed / state.originAudioPlayRate;
 			// 如果有节拍器,需要将节拍器的时间算出来
 			if (i === 0) {
 				if(state.isOpenMetronome){
@@ -1133,7 +1134,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				// console.log("fixtime:", fixtime, '速度:', beatSpeed, "state.isSpecialBookCategory:", state.isSpecialBookCategory, 'state.isOpenMetronome:', state.isOpenMetronome);
 			}
 			let gradualLength = 0;
-			let speed = (state.isSpecialBookCategory ? measureSpeed : baseSpeed) || 1;
+			// let speed = (state.isSpecialBookCategory ? measureSpeed : baseSpeed) || 1;
+			let speed = measureSpeed ? measureSpeed : baseSpeed;
 			gradualChange = iterator.currentMeasure.speedInfo || gradualChange;
 			gradualSpeed = osmd.Sheet.SoundTempos?.get(note.sourceMeasure.measureListIndex) || gradualSpeed;
 			if (!gradualSpeed || gradualSpeed.length < 2) {

+ 4 - 1
src/helpers/metronome.ts

@@ -421,6 +421,9 @@ class Metronome {
 				const widthStep = 100 / (beatTypeArr.length+1);
 				// 当前拍子的组合数(2+3+2,3+2)中的数字
 				let beatNum = 0;
+				// if (measure.measureNumberXML == 98) {
+				// 	debugger
+				// }
 				for (let j = 0; j < beatTypeArr.length; j++) {
 					// 累加
 					const beatMuit = Array(j).fill("").reduce((num:number,v:any,i:number) => {
@@ -445,7 +448,7 @@ class Metronome {
 						left = measure.stepList[currentIdx] + "px";
 					} else {
 						const preLeft = measure.stepList[j - 1];
-						left = !preLeft || preLeft.toString().indexOf("%") > -1 ? `${widthStep*(j+1)}%` : `${preLeft}px + ${widthStep*(j+1)}%`;
+						left = !preLeft || preLeft.toString().indexOf("%") > -1 ? `${widthStep}%` : `${preLeft}px + ${widthStep}%`;
 						measure.stepList[j] = left;
 					}					
 					metroMeasure[i].push({