|
@@ -24,21 +24,20 @@ export class VexFlowConverter {
|
|
|
|
|
|
public static duration(fraction: Fraction): string {
|
|
|
let dur: number = fraction.RealValue;
|
|
|
- switch (dur) {
|
|
|
- case 0.25:
|
|
|
- return "q";
|
|
|
- case 0.5:
|
|
|
- return "h";
|
|
|
- case 1:
|
|
|
- return "w";
|
|
|
- case 0.125:
|
|
|
- return "8";
|
|
|
- case 0.0625:
|
|
|
- return "16";
|
|
|
- // FIXME TODO
|
|
|
- default:
|
|
|
- return "16";
|
|
|
+ if (dur === 1) {
|
|
|
+ return "w";
|
|
|
+ } else if (dur < 1 && dur >= 0.5) {
|
|
|
+ return "h";
|
|
|
+ } else if (dur < 0.5 && dur >= 0.25) {
|
|
|
+ return "q";
|
|
|
+ } else if (dur < 0.25 && dur >= 0.125) {
|
|
|
+ return "8";
|
|
|
+ } else if (dur < 0.125 && dur >= 0.0625) {
|
|
|
+ return "16";
|
|
|
+ } else if (dur < 0.0625 && dur >= 0.03125) {
|
|
|
+ return "32";
|
|
|
}
|
|
|
+ return "128";
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -74,7 +73,8 @@ export class VexFlowConverter {
|
|
|
|
|
|
public static StaveNote(notes: GraphicalNote[]): Vex.Flow.StaveNote {
|
|
|
let keys: string[] = [];
|
|
|
- let duration: string = VexFlowConverter.duration(notes[0].sourceNote.Length);
|
|
|
+ let frac: Fraction = notes[0].sourceNote.Length;
|
|
|
+ let duration: string = VexFlowConverter.duration(frac);
|
|
|
let accidentals: string[] = [];
|
|
|
let vfclef: string;
|
|
|
for (let note of notes) {
|
|
@@ -95,6 +95,10 @@ export class VexFlowConverter {
|
|
|
auto_stem: true,
|
|
|
clef: vfclef,
|
|
|
duration: duration,
|
|
|
+ duration_override: {
|
|
|
+ denominator: frac.Denominator,
|
|
|
+ numerator: frac.Numerator,
|
|
|
+ },
|
|
|
keys: keys,
|
|
|
});
|
|
|
for (let i: number = 0, len: number = keys.length; i < len; i += 1) {
|
|
@@ -126,7 +130,6 @@ export class VexFlowConverter {
|
|
|
break;
|
|
|
default:
|
|
|
}
|
|
|
- console.log("CLEF", clef, type);
|
|
|
return type;
|
|
|
}
|
|
|
|