Browse Source

fix: 弱起修改

TIANYONG 1 year ago
parent
commit
47c8729596
4 changed files with 26 additions and 14 deletions
  1. 1 1
      osmd-extended
  2. 10 2
      src/helpers/formateMusic.ts
  3. 9 4
      src/helpers/metronome.ts
  4. 6 7
      src/page-instrument/theme.css

+ 1 - 1
osmd-extended

@@ -1 +1 @@
-Subproject commit 360d72eff6334642de04053c91ac270c87a9abc2
+Subproject commit 1c3096cff67a43a57ea8052cebc0689268e94ce2

+ 10 - 2
src/helpers/formateMusic.ts

@@ -951,8 +951,16 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 					// 如果是弱起,将整个小节的时值减去该小节所有音符相加的时值,就是缺省的时值
 					difftime = measureLength - _firstMeasureRealValue * formatBeatUnit(beatUnit) * (60 / beatSpeed);
 				}
-				if (difftime > 0) {
-					fixtime += difftime;
+				/**
+				 * 管乐迷,部分弱起的曲目,mp3制作不标准,没有按照补齐弱起后的时间进行制作,需要单独处理
+				 * 2670:需要减去第一小节音符的时间
+				*/
+				if (["2670"].includes(detailId)) {
+					fixtime -= _firstMeasureRealValue * formatBeatUnit(beatUnit) * (60 / beatSpeed);
+				} else {
+					if (difftime > 0) {
+						fixtime += difftime;
+					}
 				}
 				// 管乐迷 diff获取不准确时, 弱起补齐
 				if (["2589", "2561", "2560", "2559", "2558", "2556", "2555", "2554"].includes(detailId)) {

+ 9 - 4
src/helpers/metronome.ts

@@ -386,10 +386,15 @@ function calculateMetroStep(arr: any[], m: any): number[] {
 				const measure_bbox = wholeNote?.attrs?.el?.parentElement?.parentElement?.getBoundingClientRect?.() || { x: 0, right: 0 };
 				let bbox = wholeNote?.attrs?.el?.getBoundingClientRect?.() || { x: 0 };
 				let stepWidth = Math.abs(measure_bbox.right - bbox.x) / m.numerator;
-				let stepList: number[] = [];
-				for (let i = -1; i < m.numerator - 1; i++) {
-					stepList.push(bbox.x - measure_bbox.x + i * stepWidth);
-				}
+				let stepList: any[] = [];
+				// 第一小节是休止符,节拍指针应该等分宽度
+				const widthStep = 100 / (m.numerator + 1);
+				// for (let i = -1; i < m.numerator - 1; i++) {
+				// 	stepList.push(bbox.x - measure_bbox.x + i * stepWidth);
+				// }
+				// for (let i = 1; i <= m.numerator; i++) {
+				// 	stepList.push(widthStep * i + '%');
+				// }
 				// console.log(wholeNote?.attrs?.el, m.measureNumberXML)
 				// console.log("🚀 ~ stepList:", stepList, m.measureNumberXML)
 				return stepList;

+ 6 - 7
src/page-instrument/theme.css

@@ -15,21 +15,20 @@ body{
     background: linear-gradient(90deg, #5BECFF, #259CFE );
     color: #fff;
     border-radius: 50%;
-    padding: 4px;
     top: 0;
     right: 0;
-    transform: translate(15%, -40%);
-    width: 18px;
-    height: 18px;
+    transform: translate(20%, -40%);
+    width: 25px;
+    height: 25px;
 }
 .center-closeBtn > .van-icon-cross::before,
 .center-closeBtn > .van-icon-cross::after{
     content: "";
     position: absolute;
-    height: 12px;
+    height: 14px;
     width: 1px;
-    top: 3px;
-    right: 8px;
+    top: 5px;
+    right: 12px;
     background: #fff;
 }
 .center-closeBtn > .van-icon-cross::before{