|
@@ -158,6 +158,7 @@ const tranTime = (str: string = '') => {
|
|
|
return `1970-01-01 00:${result}0`
|
|
|
}
|
|
|
export const getAllNodes = (osmd: any) => {
|
|
|
+ console.log(9999, osmd)
|
|
|
const detailId = getLinkId()
|
|
|
let fixtime = browserInfo.huawei ? 0.08 : 0 //getFixTime()
|
|
|
const allNotes: any[] = []
|
|
@@ -283,10 +284,14 @@ export const getAllNodes = (osmd: any) => {
|
|
|
/**
|
|
|
* 速度不能为0, 此处的速度应该是按照设置的速度而不是校准后的速度,否则mp3速度不对
|
|
|
*/
|
|
|
- let beatSpeed =
|
|
|
- (state.isSpecialBookCategory
|
|
|
- ? getTimeByBeatUnit(beatUnit, measureSpeed, iterator.currentMeasure.activeTimeSignature.Denominator)
|
|
|
- : baseSpeed) || 1
|
|
|
+
|
|
|
+ // let beatSpeed =
|
|
|
+ // (state.isSpecialBookCategory
|
|
|
+ // ? getTimeByBeatUnit(beatUnit, measureSpeed, iterator.currentMeasure.activeTimeSignature.Denominator)
|
|
|
+ // : baseSpeed) || 1
|
|
|
+ // #8456 光标和节拍对应不上等bug修复,
|
|
|
+ let beatSpeed = (state.isSpecialBookCategory ? measureSpeed : baseSpeed) || 1;
|
|
|
+
|
|
|
let speed = (state.isSpecialBookCategory ? measureSpeed : baseSpeed) || 1
|
|
|
// console.log('曲谱设置的速度', { base: getTimeByBeatUnit(beatUnit, measureSpeed, iterator.currentMeasure.activeTimeSignature.Denominator), beatSpeed, speed})
|
|
|
gradualChange = iterator.currentMeasure.speedInfo || gradualChange
|
|
@@ -380,7 +385,7 @@ export const getAllNodes = (osmd: any) => {
|
|
|
if (i === 0) {
|
|
|
fixtime += getFixTime(beatSpeed)
|
|
|
}
|
|
|
- // console.log({fixtime, relativeTime})
|
|
|
+ // console.log(fixtime, '看看1',beatSpeed, baseSpeed,beatUnit, speed, iterator.currentMeasure.activeTimeSignature.Denominator)
|
|
|
// 酷乐秀计算音符时值方法
|
|
|
// let noteLength =
|
|
|
// (numerator === 0 && note.isRestFlag ? vRealValue : (wholeValue + numerator) / denominator) *
|
|
@@ -400,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) {
|
|
@@ -437,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
|
|
@@ -468,6 +484,7 @@ export const getAllNodes = (osmd: any) => {
|
|
|
}
|
|
|
fixtime += difftime
|
|
|
}
|
|
|
+ //console.log('👀看看endtime', relaEndtime, fixtime, i)
|
|
|
const nodeDetail = {
|
|
|
fixtime,
|
|
|
skipMode,
|
|
@@ -635,6 +652,7 @@ export const getAllNodes = (osmd: any) => {
|
|
|
} catch (error) {}
|
|
|
}
|
|
|
// 按照时间轴排序
|
|
|
+ // console.log('看看👀', allNotes)
|
|
|
const sortArray = allNotes
|
|
|
.sort((a, b) => a.relativeTime - b.relativeTime)
|
|
|
.map((item, index) => ({ ...item, i: index }))
|