|
@@ -772,6 +772,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
let staveNoteIndex = 0;
|
|
|
let staveIndex = 0;
|
|
|
|
|
|
+ let preNoteEndTime = 0; // 上一个音符的结束时间
|
|
|
+
|
|
|
const _notes = [] as any[];
|
|
|
if (state.gradualTimes) {
|
|
|
console.log("后台设置的渐慢小节时间", state.gradual, state.gradualTimes);
|
|
@@ -957,6 +959,12 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
}
|
|
|
|
|
|
let relativeTime = usetime;
|
|
|
+
|
|
|
+ // 妙极客的曲子,修复有的音符有times,有的音符没有times导致的,累计时长错误问题
|
|
|
+ if (state.isEvxml && relativeTime < preNoteEndTime - fixtime) {
|
|
|
+ relativeTime = preNoteEndTime - fixtime
|
|
|
+ }
|
|
|
+
|
|
|
let beatSpeed = 0;
|
|
|
// 速度不能为0 此处的速度应该是按照设置的速度而不是校准后的速度,否则mp3速度不对
|
|
|
if (measureSpeed !== baseSpeed && !hasVaryingSpeed) {
|
|
@@ -1127,10 +1135,12 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
evNoteEndTime = note?.noteTimeInfo[idx]?.end
|
|
|
if (evNoteStartTime) {
|
|
|
relativeTime = evNoteStartTime - fixtime
|
|
|
+ // usetime = evNoteStartTime - fixtime
|
|
|
}
|
|
|
// usetime = evNoteStartTime - fixtime
|
|
|
}
|
|
|
svgElement?.attrs.id && noteIds.push(svgElement?.attrs.id)
|
|
|
+
|
|
|
const nodeDetail = {
|
|
|
isStaccato: note.voiceEntry.isStaccato(),
|
|
|
isRestFlag: note.isRestFlag,
|
|
@@ -1219,12 +1229,14 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
relaMeasureLength = 0;
|
|
|
measures = [];
|
|
|
}
|
|
|
+ preNoteEndTime = nodeDetail.endtime;
|
|
|
}
|
|
|
i++;
|
|
|
}
|
|
|
// 按照时间轴排序
|
|
|
const sortArray = allNotes.sort((a, b) => a.relativeTime - b.relativeTime).map((item, index) => ({ ...item, i: index }));
|
|
|
// const sortArray = allNotes.sort((a, b) => a.time - b.time).map((item, index) => ({ ...item, i: index }));
|
|
|
+ // const sortArray = allNotes.map((item, index) => ({ ...item, i: index }));
|
|
|
console.timeEnd("音符跑完时间");
|
|
|
try {
|
|
|
osmd.cursor.reset();
|