|
@@ -826,7 +826,6 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
let multipleRestMeasures = 0;
|
|
|
let staveNoteIndex = 0;
|
|
|
let staveIndex = 0;
|
|
|
- let xmlNoteTime = 0 // xml上面的音符时间
|
|
|
let xmlMp3BeatFixTime = 0 // xml上节拍器的时间
|
|
|
|
|
|
let preNoteEndTime = 0; // 上一个音符的结束时间
|
|
@@ -1264,9 +1263,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
const allowRange = Math.abs(_notes[idx+1]?.note?.noteTimeInfo?.[0]?.begin - _notes[idx-1]?.note?.noteTimeInfo?.[0]?.end) < 10;
|
|
|
if (allowRange) {
|
|
|
note.maxNoteNum = note.maxNoteNum - 1;
|
|
|
- // 唱名时间补齐,唱名上一个音符的结束时候,也需要补上这个时间
|
|
|
- allNotes[allNotes.length-1].xmlNoteEndTime = retain(xmlNoteTime + noteLength)
|
|
|
- xmlNoteTime += noteLength
|
|
|
+ // 唱名时间补齐,当删除这个音符的时候,上个音符的持续时间要加上这个音符的时间
|
|
|
+ allNotes[allNotes.length - 1].noteLengthTime += noteLength
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
@@ -1348,14 +1346,14 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
maxNoteNum: note.maxNoteNum, // 当前小节音符最多的分轨的音符数量
|
|
|
// repeatIdx: iterator.repeatIdx || 0, // 标记是第几遍循环,从0开始
|
|
|
repeatIdx: filterRepeatIdx,
|
|
|
- xmlNoteTime: retain(xmlNoteTime), // xml上音符开始时间 唱名用
|
|
|
- xmlNoteEndTime: retain(xmlNoteTime + noteLength), //xml上音符结束时间 唱名用
|
|
|
+ noteLengthTime: noteLength, //当前音符时长
|
|
|
+ xmlNoteTime: 0, // xml上音符开始时间 唱名用
|
|
|
+ xmlNoteEndTime: 0, //xml上音符结束时间 唱名用
|
|
|
xmlMp3BeatFixTime, //xml上节拍器的时间
|
|
|
notBeatFixtime: state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime, // 不含节拍器的fixtime值 唱名用
|
|
|
notBeatTime: state.isEvxml && evNoteStartTime ? retain(evNoteStartTime) : retain(relativeTime + (state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime)), // 不含节拍器的 音符开始时间
|
|
|
notBeatEndTime: state.isEvxml && evNoteEndTime ? retain(evNoteEndTime) : retain(relaEndtime + (state.isOpenMetronome ? fixtime - xmlMp3BeatFixTime : fixtime)) // 不含节拍器的 音符结束时间
|
|
|
};
|
|
|
- xmlNoteTime += noteLength
|
|
|
// 如果是妙极客的曲子,并且第二遍循环播放需要等待时间,并且是第二遍循环的第一个小节的第一个音符
|
|
|
// if (state.isEvxml && state.secondEvXmlBeginTime && nodeDetail.i > 0 && nodeDetail.MeasureNumberXML === 1 && nodeDetail.noteId === 0) {
|
|
|
// nodeDetail.time = nodeDetail.time + state.secondEvXmlBeginTime;
|
|
@@ -1415,6 +1413,14 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
const sortArray = allNotes.sort((a, b) => a.relativeTime - b.relativeTime).map((item, index) => Object.assign(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 }));
|
|
|
+ // 给 xmlNoteTime 和 xmlNoteEndTime 赋值
|
|
|
+ let xmlNoteTime = 0
|
|
|
+ sortArray.map(item => {
|
|
|
+ const noteLengthTime = item.noteLengthTime
|
|
|
+ item.xmlNoteTime = retain(xmlNoteTime)
|
|
|
+ item.xmlNoteEndTime = retain(xmlNoteTime + noteLengthTime)
|
|
|
+ xmlNoteTime += noteLengthTime
|
|
|
+ })
|
|
|
console.timeEnd("音符跑完时间");
|
|
|
try {
|
|
|
osmd.cursor.reset();
|