Browse Source

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

TIANYONG 6 months ago
parent
commit
73e464df40
2 changed files with 7 additions and 3 deletions
  1. 1 1
      osmd-extended
  2. 6 2
      src/helpers/formateMusic.ts

+ 1 - 1
osmd-extended

@@ -1 +1 @@
-Subproject commit f757e1c4b7125efbdf514db6a6835335829d20ec
+Subproject commit 9b847e5f475415bbeaba33e736fc5c563a9eead6

+ 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)]