|
@@ -897,6 +897,12 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
return trackName?.trim() === firstTrackName
|
|
|
});
|
|
|
}
|
|
|
+ // 多轨合并显示,或者单轨多声部的情况,需要过滤掉下半边声部的音符
|
|
|
+ if ( ((!state.isCombineRender && state.isSingleMutliTrack) || state.isCombineRender) && iterator.currentVoiceEntries.length) {
|
|
|
+ iterator.currentVoiceEntries = iterator.currentVoiceEntries.filter((item: any) => {
|
|
|
+ return item.ParentVoice.voiceId === 1
|
|
|
+ });
|
|
|
+ }
|
|
|
let minIndex = 0, elRealValue = 0
|
|
|
for (let index = 0; index < iterator.currentVoiceEntries.length; index++) {
|
|
|
const element = iterator.currentVoiceEntries[index];
|
|
@@ -909,6 +915,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
if (element.notes[0].length.realValue < elRealValue) {
|
|
|
minIndex = index
|
|
|
}
|
|
|
+ // console.log(element.notes[0].SourceMeasure.MeasureNumberXML,element.notes[0].playbackInstrumentId,element.ParentVoice.voiceId)
|
|
|
elRealValue = element.notes[0].length.realValue
|
|
|
}
|
|
|
if (minIndex !== 0 && state.isCombineRender && iterator.currentVoiceEntries[minIndex]) {
|
|
@@ -992,6 +999,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
const { beatUnit="quarter", dotted=false, tempoInBpm=state.originSpeed } = currentRealTempo
|
|
|
const speedBeatUnit = beatUnitTo(beatUnit, dotted)
|
|
|
_notes.push({
|
|
|
+ measureNum: note?.sourceMeasure?.MeasureNumberXML,
|
|
|
note,
|
|
|
iterator: { ...iterator },
|
|
|
currentTime,
|
|
@@ -1469,7 +1477,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
// console.log('👀看看endtime', nodeDetail.duration, relaEndtime, fixtime, i)
|
|
|
// console.log('音符时间',nodeDetail.i,nodeDetail.time,nodeDetail.endtime)
|
|
|
tickables = tickables.filter((tickable: any) => tickable.attrs?.type !== "GhostNote")
|
|
|
- let maxNum = (state.isCombineRender && note.maxNoteNum) || state.isSingleMutliTrack ? note.maxNoteNum : tickables.length;
|
|
|
+ let maxNum = (state.isCombineRender && note.maxNoteNum) ? note.maxNoteNum : tickables.length;
|
|
|
// 妙极客的曲子,一个休止小节内可能有多个休止符,此时maxNum是0,需要针对这种情况作处理
|
|
|
if (note.isRestFlag && maxNum === 0) {
|
|
|
maxNum = note.maxNoteNum;
|