|
@@ -24,6 +24,7 @@ void ConfigurationScreen::keyPressed(unsigned char x, unsigned char y)
|
|
|
} else {
|
|
|
Player::Bpm minBpm = 1;
|
|
|
Player::Bpm maxBpm = (1 << (configWidth * 2)) - 1;
|
|
|
+ BeatIndex maxBeatsCount = (1 << configWidth) - 1;
|
|
|
switch(y) {
|
|
|
case 0: { // number of beats
|
|
|
unsigned int bit = (1 << (configWidth - x - 1));
|
|
@@ -33,11 +34,13 @@ void ConfigurationScreen::keyPressed(unsigned char x, unsigned char y)
|
|
|
} break;
|
|
|
case 1: { // sequence expansion
|
|
|
unsigned int factor = x + 2;
|
|
|
- sequencer.beats.expand(factor);
|
|
|
- sequencer.player.setBpm(std::min(
|
|
|
- sequencer.player.getBpm() * factor,
|
|
|
- maxBpm
|
|
|
- ));
|
|
|
+ if(sequencer.beats.size() * factor <= maxBeatsCount) {
|
|
|
+ sequencer.beats.expand(factor);
|
|
|
+ sequencer.player.setBpm(std::min(
|
|
|
+ sequencer.player.getBpm() * factor,
|
|
|
+ maxBpm
|
|
|
+ ));
|
|
|
+ }
|
|
|
} break;
|
|
|
case 2: { // sequence reduction erasing conflicts
|
|
|
unsigned int factor = x + 2;
|