2016-06-21 9 views
1

Я пишу код, который будет запускаться, автоматически запускает воспроизведение MIDI-последовательности и что пользователь может сделать паузу в любое время, нажав клавишу. Они ключ погрузочно-разгрузочные работы просто отлично, однако, я получаю очень странную ошибку, где паузу секвенсора с событием:Приостановка Java Sequencer Сбрасывает Tempo

public void pause() { 
    // if the sequencer is playing, pause its playback 
    if (this.isPlaying) { 
     this.sequencer.stop(); 
    } else { // otherwise "restart" the music 
     this.sequencer.start(); 
    } 

    this.isPlaying = !this.isPlaying; 
} 

сбрасывает темп секвенсора. Песня/секвенсор начинает играть с 120000 MPQ (как загружен с моего ввода) и сбрасывается до 500000 MPQ. Кто-нибудь знает, почему это может произойти? Благодарю.

+0

Остановка не приостанавливается. И почему код в вашей реализации это известно только его автору. –

ответ

0

Оказывается, что вызов start() сбрасывает темп секвенсора по умолчанию 500000 mpq. Для тех, кто имеет такую ​​же проблему, вот решение:

public void pause() { 
    // if the sequencer is playing, pause its playback 
    if (this.isPlaying) { 
     this.sequencer.stop(); 
    } else { // otherwise "restart" the music 
     // store the tempo before it gets reset 
     long tempo = this.sequencer.getTempoInMPQ(); 

     // restart the sequencer 
     this.sequencer.start(); 

     // set/fix the tempo 
     this.sequencer.setTempoInMPQ(tempo); 
    } 

    this.isPlaying = !this.isPlaying; 
}