Browse Source

feat: 计算原始的播放倍率时,需要兼容带附点的速度

TIANYONG 11 months ago
parent
commit
f107913837
1 changed files with 6 additions and 2 deletions
  1. 6 2
      src/helpers/formateMusic.ts

+ 6 - 2
src/helpers/formateMusic.ts

@@ -665,8 +665,12 @@ export const formatXML = (xml: string, xmlUrl?: string): string => {
 	const minutes: any = xmlParse.getElementsByTagName("per-minute");
 	let speeds: any = []
 	for (const minute of minutes) {
-		if (minute.textContent && !!Number(minute.textContent)) {
-			speeds.push(Number(minute.textContent))
+		let measureSpeed = minute.textContent ? Number(minute.textContent) : 0;
+		// 速度带附点,需要转换成不带附点的速度值
+		const hasSpeedDot = Array.from(minute?.parentElement?.children || []).some((item: any) => item?.tagName === 'beat-unit-dot')
+		measureSpeed = hasSpeedDot ? measureSpeed + measureSpeed/2 : measureSpeed;
+		if (minute.textContent && measureSpeed) {
+			speeds.push(Number(measureSpeed))
 		}
 	}
 	speeds = [...new Set(speeds)]