|
@@ -1365,7 +1365,11 @@ export class PlaybackManager implements IPlaybackParametersListener {
|
|
|
// code similar to PlaybackSettings.getDurationInMilliseconds()
|
|
|
const beatRealValue: number = 1.0 / 4.0;
|
|
|
for (const measure of this.musicPartManager.MusicSheet.SourceMeasures) {
|
|
|
- const beatLengthInMs: number = 60000.0 / measure.TempoInBPM;
|
|
|
+ let tempoInBPM: number = measure.TempoInBPM;
|
|
|
+ if (tempoInBPM === 0) { // happens in Saltarello -> Infinity duration otherwise
|
|
|
+ tempoInBPM = this.sheetStartBPM;
|
|
|
+ }
|
|
|
+ const beatLengthInMs: number = 60000.0 / tempoInBPM;
|
|
|
totalDuration += measure.Duration.RealValue * beatLengthInMs / beatRealValue;
|
|
|
}
|
|
|
return totalDuration;
|
|
@@ -1380,7 +1384,11 @@ export class PlaybackManager implements IPlaybackParametersListener {
|
|
|
let loopSteps: number = 0;
|
|
|
while (!iterator.EndReached) {
|
|
|
const measure: SourceMeasure = iterator.CurrentMeasure;
|
|
|
- const beatLengthInMs: number = 60000.0 / measure.TempoInBPM;
|
|
|
+ let tempoInBPM: number = measure.TempoInBPM;
|
|
|
+ if (tempoInBPM === 0) {
|
|
|
+ tempoInBPM = this.sheetStartBPM;
|
|
|
+ }
|
|
|
+ const beatLengthInMs: number = 60000.0 / tempoInBPM;
|
|
|
totalDuration += measure.Duration.RealValue * beatLengthInMs / beatRealValue;
|
|
|
while (!iterator.EndReached) {
|
|
|
iterator.moveToNext();
|