|
@@ -383,6 +383,7 @@ export const getAllNodes = (osmd: any) => {
|
|
|
fixtime += getFixTime(beatSpeed);
|
|
|
// }
|
|
|
}
|
|
|
+ // console.log('👀时间',fixtime,beatSpeed)
|
|
|
// console.log(speed, beatSpeed)
|
|
|
// const vDenominator = 8
|
|
|
// console.log(NoteRealValue)
|
|
@@ -470,6 +471,7 @@ export const getAllNodes = (osmd: any) => {
|
|
|
}
|
|
|
|
|
|
const noteType = getNoteType(svgElelent?.duration) || note?.length?.denominator
|
|
|
+ // console.log('👀时间', noteLength, relativeTime, relaEndtime, fixtime)
|
|
|
const nodeDetail = {
|
|
|
isTie,
|
|
|
noteType,
|
|
@@ -593,29 +595,48 @@ export const getAllNoteElements = (osmd: any) => {
|
|
|
};
|
|
|
|
|
|
export const setStepIndex = (osmd: any, num: number, prev?: number) => {
|
|
|
- if (num || num === 0) {
|
|
|
+ if(osmd.product){
|
|
|
+ if(num || num === 0){
|
|
|
// console.log(prev, num)
|
|
|
if (prev && num - prev === 1) {
|
|
|
- osmd.cursor.next();
|
|
|
+ osmd.cursor.setPosition({...state.times[num].cursorBox})
|
|
|
} else if (prev && num - prev > 0) {
|
|
|
- while (num - prev > 0) {
|
|
|
- prev++;
|
|
|
- num - prev > 0;
|
|
|
- osmd.cursor.next();
|
|
|
- }
|
|
|
+ while (num - prev > 0) {
|
|
|
+ prev++
|
|
|
+ osmd.cursor.setPosition({...state.times[prev].cursorBox})
|
|
|
+ }
|
|
|
} else {
|
|
|
- let i = 0;
|
|
|
- osmd.cursor.reset();
|
|
|
- while (i < num) {
|
|
|
- i++;
|
|
|
- if (osmd.cursor.hidden !== false) {
|
|
|
- osmd.cursor.show();
|
|
|
- } else {
|
|
|
- osmd.cursor.next();
|
|
|
- }
|
|
|
+ osmd.cursor.setPosition({...state.times[num].cursorBox})
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (num || num === 0) {
|
|
|
+ // console.log(prev, num)
|
|
|
+ if (prev && num - prev === 1) {
|
|
|
+ osmd.cursor.next()
|
|
|
+ } else if (prev && num - prev > 0) {
|
|
|
+ while (num - prev > 0) {
|
|
|
+ prev++
|
|
|
+ num - prev > 0
|
|
|
+ osmd.cursor.next()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let i = 0
|
|
|
+ osmd.cursor.reset()
|
|
|
+ while (i < num) {
|
|
|
+ i++
|
|
|
+ if (osmd.cursor.hidden !== false) {
|
|
|
+ osmd.cursor.show()
|
|
|
+ } else {
|
|
|
+ // console.log(i, num)
|
|
|
+ osmd.cursor.next()
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
};
|
|
|
|
|
|
export const getIndex = (times: any[], currentTime: Number) => {
|
|
@@ -821,19 +842,22 @@ export type Duration = FractionDefault & {
|
|
|
|
|
|
export const getDuration = (osmd?: OpenSheetMusicDisplay): Duration => {
|
|
|
if (osmd) {
|
|
|
+ const firstMeasure = osmd?.GraphicSheet?.MeasureList[0][0]
|
|
|
// console.log(osmd.GraphicSheet.MeasureList[0][0]?.parentSourceMeasure)
|
|
|
- const { Duration, TempoInBPM, ActiveTimeSignature, TempoExpressions } = osmd.GraphicSheet.MeasureList[0][0]?.parentSourceMeasure;
|
|
|
- if (Duration) {
|
|
|
- let beatUnit = "quarter";
|
|
|
- for (const item of TempoExpressions) {
|
|
|
- beatUnit = item.InstantaneousTempo.beatUnit || "quarter";
|
|
|
+ if (firstMeasure) {
|
|
|
+ const { Duration, TempoInBPM, ActiveTimeSignature, TempoExpressions } = firstMeasure?.parentSourceMeasure;
|
|
|
+ if (Duration) {
|
|
|
+ let beatUnit = "quarter";
|
|
|
+ for (const item of TempoExpressions) {
|
|
|
+ beatUnit = item.InstantaneousTempo.beatUnit || "quarter";
|
|
|
+ }
|
|
|
+ const duration = formatDuration(ActiveTimeSignature, Duration) as unknown as FractionDefault;
|
|
|
+ return {
|
|
|
+ ...duration,
|
|
|
+ TempoInBPM,
|
|
|
+ beatUnit,
|
|
|
+ };
|
|
|
}
|
|
|
- const duration = formatDuration(ActiveTimeSignature, Duration) as unknown as FractionDefault;
|
|
|
- return {
|
|
|
- ...duration,
|
|
|
- TempoInBPM,
|
|
|
- beatUnit,
|
|
|
- };
|
|
|
}
|
|
|
}
|
|
|
const duration = new Fraction() as unknown as FractionDefault;
|