GUI: fix when using groove

This commit is contained in:
tildearrow 2025-03-11 04:15:14 -05:00
parent ad8d1b5060
commit 1642646899
3 changed files with 5 additions and 2 deletions

View file

@ -1740,6 +1740,7 @@ void DivEngine::playSub(bool preserveDrift, int goalRow) {
subticks=1; subticks=1;
prevOrder=curOrder; prevOrder=curOrder;
prevRow=curRow; prevRow=curRow;
prevSpeed=nextSpeed;
tempoAccum=0; tempoAccum=0;
} }
skipping=false; skipping=false;
@ -2398,7 +2399,7 @@ void DivEngine::getPlayPosTick(int& order, int& row, int& tick, int& speed) {
order=prevOrder; order=prevOrder;
row=prevRow; row=prevRow;
tick=ticks; tick=ticks;
speed=nextSpeed; speed=prevSpeed;
playPosLock.unlock(); playPosLock.unlock();
} }

View file

@ -475,7 +475,7 @@ class DivEngine {
int midiOutTimeRate; int midiOutTimeRate;
float midiVolExp; float midiVolExp;
int softLockCount; int softLockCount;
int subticks, ticks, curRow, curOrder, prevRow, prevOrder, remainingLoops, totalLoops, lastLoopPos, exportLoopCount, curExportChan, nextSpeed, elapsedBars, elapsedBeats, curSpeed; int subticks, ticks, curRow, curOrder, prevRow, prevOrder, remainingLoops, totalLoops, lastLoopPos, exportLoopCount, curExportChan, nextSpeed, prevSpeed, elapsedBars, elapsedBeats, curSpeed;
size_t curSubSongIndex; size_t curSubSongIndex;
size_t bufferPos; size_t bufferPos;
double divider; double divider;
@ -1439,6 +1439,7 @@ class DivEngine {
exportLoopCount(0), exportLoopCount(0),
curExportChan(0), curExportChan(0),
nextSpeed(3), nextSpeed(3),
prevSpeed(6),
elapsedBars(0), elapsedBars(0),
elapsedBeats(0), elapsedBeats(0),
curSpeed(0), curSpeed(0),

View file

@ -1438,6 +1438,7 @@ void DivEngine::nextRow() {
memset(walked,0,8192); memset(walked,0,8192);
} }
prevSpeed=nextSpeed;
if (song.brokenSpeedSel) { if (song.brokenSpeedSel) {
unsigned char speed2=(speeds.len>=2)?speeds.val[1]:speeds.val[0]; unsigned char speed2=(speeds.len>=2)?speeds.val[1]:speeds.val[0];
unsigned char speed1=speeds.val[0]; unsigned char speed1=speeds.val[0];