|
@@ -714,7 +714,13 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
currentTimes.push(iterator.currentTimeStamp.realValue - currentTimeStamp);
|
|
|
currentTimeStamp = iterator.currentTimeStamp.realValue;
|
|
|
for (const v of voiceEntries) {
|
|
|
- const note = v.notes[0];
|
|
|
+
|
|
|
+ let note = v.notes[0];
|
|
|
+ if (note.IsGraceNote){
|
|
|
+ // 如果是装饰音, 取不是装饰音的时值
|
|
|
+ const voice = note.parentStaffEntry.voiceEntries.find((_v: any) => !_v.isGrace)
|
|
|
+ note = voice.notes[0];
|
|
|
+ }
|
|
|
note.fixedKey = note.ParentVoiceEntry.ParentVoice.Parent.SubInstruments[0].fixedKey || 0;
|
|
|
// 有倚音
|
|
|
if (note?.voiceEntry?.isGrace) {
|
|
@@ -743,7 +749,6 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
}
|
|
|
for (let { note, iterator, currentTime, isDouble, isMutileSubject } of _notes) {
|
|
|
if (note) {
|
|
|
- // console.log("🚀 ~ note:", note)
|
|
|
if (si === 0) {
|
|
|
allMeasures.push(note.sourceMeasure);
|
|
|
}
|
|
@@ -804,6 +809,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
if (!gradualSpeed || gradualSpeed.length < 2) {
|
|
|
gradualSpeed = createSpeedInfo(gradualChange, speed);
|
|
|
}
|
|
|
+ // console.log({...iterator.currentMeasure},gradualChange, gradualSpeed)
|
|
|
const measureListIndex = iterator.currentMeasure.measureListIndex;
|
|
|
// 计算相差时间按照比例分配到所有音符上
|
|
|
if (state.gradualTimes && Object.keys(state.gradualTimes).length > 0) {
|
|
@@ -835,21 +841,13 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- } else if (gradualChange && gradualSpeed && (gradualChange.startXmlNoteIndex === si || gradualChangeIndex > 0)) {
|
|
|
- // const tmpNoteLength = (wholeValue + numerator / denominator) * vDenominator * (60 / beatSpeed)
|
|
|
- // const tmpMeasureLength = vRealValue * 4 * (60 / beatSpeed)
|
|
|
+ } else if (state.appName === 'GYM' && gradualChange && gradualSpeed && (gradualChange.startXmlNoteIndex === si || gradualChangeIndex > 0)) {
|
|
|
const startSpeed = gradualSpeed[0] - (gradualSpeed[1] - gradualSpeed[0]);
|
|
|
- // console.log((gradualSpeed[gradualSpeed.length - 1] - startSpeed) * tmpNoteLength/tmpMeasureLength)
|
|
|
- // console.log(gradualChange, gradualSpeed, startSpeed, gradualChange.startXmlNoteIndex, si, gradualChangeIndex)
|
|
|
- // gradualChangeIndex = 0
|
|
|
const { resetXmlNoteIndex, endXmlNoteIndex } = gradualChange;
|
|
|
const noteDiff = endXmlNoteIndex;
|
|
|
let stepSpeed = (gradualSpeed[gradualSpeed.length - 1] - startSpeed) / noteDiff;
|
|
|
stepSpeed = note.DotsXml ? stepSpeed / 1.5 : stepSpeed;
|
|
|
- // console.log(gradualChangeIndex, stepSpeed, stepSpeed * gradualChangeIndex, stepSpeed * (gradualChangeIndex + 1), noteDiff, resetXmlNoteIndex)
|
|
|
if (gradualChangeIndex < noteDiff) {
|
|
|
- // stepSpeeds.push((gradualSpeed[gradualSpeed.length - 1] - startSpeed) * tmpNoteLength/tmpMeasureLength)
|
|
|
- // speed += Math.ceil((stepSpeed) * (gradualChangeIndex + 1))
|
|
|
const tempSpeed = Math.ceil(speed + stepSpeed * gradualChangeIndex);
|
|
|
let tmpSpeed = getTimeByBeatUnit(beatUnit, tempSpeed, iterator.currentMeasure.activeTimeSignature.Denominator);
|
|
|
const maxLength = (wholeValue + numerator / denominator) * vDenominator * (60 / tmpSpeed);
|
|
@@ -858,15 +856,12 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
tmpSpeed = getTimeByBeatUnit(beatUnit, speed, iterator.currentMeasure.activeTimeSignature.Denominator);
|
|
|
const minLength = (wholeValue + numerator / denominator) * vDenominator * (60 / tmpSpeed);
|
|
|
gradualLength = (maxLength + minLength) / 2;
|
|
|
- // console.table({maxLength, minLength, gradualLength, tempSpeed, speed, tmpSpeed, dot: note.DotsXml})
|
|
|
} else if (resetXmlNoteIndex > gradualChangeIndex) {
|
|
|
speed = allNotes[i - 1]?.speed;
|
|
|
- // console.log('resetXmlNoteIndex', resetXmlNoteIndex, 'gradualChangeIndex', gradualChangeIndex, allNotes[i -1]?.speed)
|
|
|
}
|
|
|
beatSpeed = (state.isSpecialBookCategory ? getTimeByBeatUnit(beatUnit, speed, iterator.currentMeasure.activeTimeSignature.Denominator) : baseSpeed) || 1;
|
|
|
const isEnd = !(gradualChangeIndex < noteDiff) && !(resetXmlNoteIndex > gradualChangeIndex);
|
|
|
gradualChangeIndex++;
|
|
|
- // console.log(gradualChangeIndex)
|
|
|
if (isEnd) {
|
|
|
gradualChangeIndex = 0;
|
|
|
gradualChange = undefined;
|
|
@@ -874,16 +869,11 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
|
|
|
stepSpeeds = [];
|
|
|
}
|
|
|
}
|
|
|
- // console.log(speed, beatSpeed)
|
|
|
- // const vDenominator = 8
|
|
|
- // console.log(NoteRealValue)
|
|
|
- // console.log(activeInstantaneousTempo)
|
|
|
- // console.log({vDenominator, NoteRealValue, denominator, numerator, wholeValue, realValue, vRealValue, measureSpeed, speed, beatSpeed})
|
|
|
- // console.log(gradualLength)
|
|
|
const _noteLength = NoteRealValue
|
|
|
let noteLength = gradualLength ? gradualLength : Math.min(vRealValue, NoteRealValue) * formatBeatUnit(beatUnit) * (60 / beatSpeed);
|
|
|
const measureLength = vRealValue * vDenominator * (60 / beatSpeed);
|
|
|
// console.table({value: iterator.currentTimeStamp.realValue, vRealValue,NoteRealValue, noteLength,measureLength, MeasureNumberXML: note.sourceMeasure.MeasureNumberXML})
|
|
|
+ // console.log(i, Math.min(vRealValue, NoteRealValue),noteLength,gradualLength, formatBeatUnit(beatUnit),beatSpeed, NoteRealValue * formatBeatUnit(beatUnit) * (60 / beatSpeed) )
|
|
|
usetime += noteLength;
|
|
|
relaMeasureLength += noteLength;
|
|
|
let relaEndtime = noteLength + relativeTime;
|