|
@@ -449,19 +449,24 @@ export const getAllNodes = (osmd: any) => {
|
|
|
// console.log(iterator.currentMeasure)
|
|
|
// 如果是弱起就补齐缺省的时长
|
|
|
if (i === 0) {
|
|
|
- const diff = getMeasureDurationDiff(iterator.currentMeasure)
|
|
|
- // console.log('diff', diff)
|
|
|
- // 酷乐秀 不处理弱起
|
|
|
- if (diff > 0) {
|
|
|
- difftime = diff * vDenominator * (60 / beatSpeed)
|
|
|
- /** 如果是酷乐秀MIDI类型文件就不处理弱起 */
|
|
|
- if (state.activeDetail?.audioType === 'MIDI') {
|
|
|
- difftime = 0
|
|
|
+ let _firstMeasureRealValue = 0
|
|
|
+ const staffEntries = note.sourceMeasure.verticalMeasureList?.[0]?.staffEntries || []
|
|
|
+ //计算第一个小节里面的音符时值是否等于整个小节的时值
|
|
|
+ staffEntries.forEach((_a: any) => {
|
|
|
+ if(_a?.sourceStaffEntry?.voiceEntries?.[0]?.notes?.[0]?.length?.realValue){
|
|
|
+ _firstMeasureRealValue += _a.sourceStaffEntry.voiceEntries[0].notes[0].length.realValue
|
|
|
}
|
|
|
- // console.log('difftime', difftime, state.activeDetail?.audioType)
|
|
|
- fixtime += difftime
|
|
|
- // console.log('diff', speed, diff * vDenominator * (60 / speed), getFixTime(speed))
|
|
|
+ })
|
|
|
+ if (_firstMeasureRealValue < vRealValue){
|
|
|
+ // console.log(_firstMeasureRealValue, vRealValue)
|
|
|
+ // 如果是弱起,将整个小节的时值减去音符的时值,就是缺省的时值
|
|
|
+ difftime = measureLength - noteLength
|
|
|
+ }
|
|
|
+ /** 如果是酷乐秀MIDI类型文件就不处理弱起 */
|
|
|
+ if (state.activeDetail?.audioType === 'MIDI') {
|
|
|
+ difftime = 0
|
|
|
}
|
|
|
+ fixtime += difftime
|
|
|
}
|
|
|
const nodeDetail = {
|
|
|
fixtime,
|