@stringsync/vexml
Version:
MusicXML to Vexflow
38 lines (37 loc) • 1.13 kB
JavaScript
export class Tuplet {
config;
log;
number;
phase;
showNumber;
placement;
constructor(config, log, number, phase, showNumber, placement) {
this.config = config;
this.log = log;
this.number = number;
this.phase = phase;
this.showNumber = showNumber;
this.placement = placement;
}
static create(config, log, musicXML) {
let phase;
switch (musicXML.tuplet.getType()) {
case 'start':
phase = 'start';
break;
default:
phase = 'stop';
break;
}
const number = musicXML.tuplet.getNumber();
const showNumber = musicXML.tuplet.getShowNumber() === 'both';
const placement = musicXML.tuplet.getPlacement();
return new Tuplet(config, log, number, phase, showNumber, placement);
}
parse(voiceEntryCtx) {
if (this.phase === 'start') {
return voiceEntryCtx.beginTuplet(this.number, this.showNumber, this.placement);
}
return voiceEntryCtx.closeTuplet(this.number);
}
}