|
@@ -153,7 +153,7 @@ export class ExpressionReader {
|
|
|
const tempoAttr: IXmlAttribute = n.attribute("tempo");
|
|
|
const dynAttr: IXmlAttribute = n.attribute("dynamics");
|
|
|
if (tempoAttr) {
|
|
|
- const match: string[] = tempoAttr.value.match(/\d+/);
|
|
|
+ const match: string[] = tempoAttr.value.match(/^(\d+\.?\d{0,9}|\.\d{1,9})$/);
|
|
|
this.soundTempo = match !== undefined ? parseInt(match[0], 10) : 100;
|
|
|
currentMeasure.TempoInBPM = this.soundTempo;
|
|
|
if (this.musicSheet.DefaultStartTempoInBpm === 0) {
|
|
@@ -184,7 +184,7 @@ export class ExpressionReader {
|
|
|
if (useCurrentFractionForPositioning) {
|
|
|
this.directionTimestamp = Fraction.createFromFraction(inSourceMeasureCurrentFraction);
|
|
|
}
|
|
|
- const bpmNumber: number = parseInt(bpm.value, 10);
|
|
|
+ const bpmNumber: number = parseFloat(bpm.value);
|
|
|
this.createNewTempoExpressionIfNeeded(currentMeasure);
|
|
|
const instantaneousTempoExpression: InstantaneousTempoExpression =
|
|
|
new InstantaneousTempoExpression(undefined,
|
|
@@ -195,7 +195,8 @@ export class ExpressionReader {
|
|
|
true);
|
|
|
instantaneousTempoExpression.parentMeasure = currentMeasure;
|
|
|
this.soundTempo = bpmNumber;
|
|
|
- currentMeasure.TempoInBPM = this.soundTempo;
|
|
|
+
|
|
|
+ currentMeasure.TempoInBPM = this.soundTempo * (dotted?1.5:1);
|
|
|
if (this.musicSheet.DefaultStartTempoInBpm === 0) {
|
|
|
this.musicSheet.DefaultStartTempoInBpm = this.soundTempo;
|
|
|
}
|