瀏覽代碼

fix: 修复曲目有休止符导致播放异常问题

TIANYONG 1 年之前
父節點
當前提交
c0f9442c0d
共有 1 個文件被更改,包括 19 次插入8 次删除
  1. 19 8
      src/pages/detail/helpers.ts

+ 19 - 8
src/pages/detail/helpers.ts

@@ -405,14 +405,24 @@ export const getAllNodes = (osmd: any) => {
               (60 / beatSpeed)
           }
 
+          /**
+           * 
+           * bug修复说明
+           * 曲目:'我和我的祖国’,
+           * 从第32节点后播放异常,进和管乐迷endtime值对比,发现是noteLength计算不一致导致
+           * 不一致的原因是:noteLength值计算,多了下面这段逻辑,故先注释掉
+           * 20.23.10.13
+           * 
+           */
+
           // 如果是休止符并且整个小节休止,休止符的时值小于小节时值,取小节的时值
-          if (note.isRestFlag && note?.sourceMeasure?.allRests) {
-            multipleRestMeasures = note?.sourceMeasure?.multipleRestMeasures
-          }
-          if (multipleRestMeasures > 0) {
-            multipleRestMeasures -= 1
-            noteLength = measureLength
-          }
+          // if (note.isRestFlag && note?.sourceMeasure?.allRests) {
+          //   multipleRestMeasures = note?.sourceMeasure?.multipleRestMeasures
+          // }
+          // if (multipleRestMeasures > 0) {
+          //   multipleRestMeasures -= 1
+          //   noteLength = measureLength
+          // }
 
           // 如果休止符的时值大于小节的时值
           if (note.isRestFlag && noteLength > measureLength) {
@@ -442,6 +452,7 @@ export const getAllNodes = (osmd: any) => {
           currentRealValueTotal = iterator.currentTimeStamp.realValue
           usetime += noteLength
           relaMeasureLength += noteLength
+          //console.log('👀看看noteLength',noteLength,relativeTime, i)
           let relaEndtime = noteLength + relativeTime
           // console.log({noteLength,relativeTime ,relaEndtime, endtime: relaEndtime + fixtime})
           const fixedKey = note.ParentVoiceEntry.ParentVoice.Parent.SubInstruments[0].fixedKey || 0
@@ -473,7 +484,7 @@ export const getAllNodes = (osmd: any) => {
             }
             fixtime += difftime
           }
-          // console.log('👀看看', relaEndtime, fixtime)
+          //console.log('👀看看endtime', relaEndtime, fixtime, i)
           const nodeDetail = {
             fixtime,
             skipMode,