fix: reset channel state on stop to prevent burst continuation
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
This commit is contained in:
15
src/looper.c
15
src/looper.c
@@ -82,11 +82,20 @@ static void apply_command(command_t cmd) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CMD_STOP:
|
case CMD_STOP:
|
||||||
if (cmd.channel >= 0 && cmd.channel < cap)
|
if (cmd.channel >= 0 && cmd.channel < cap) {
|
||||||
atomic_store(&cur[cmd.channel].state, STATE_IDLE);
|
atomic_store(&cur[cmd.channel].state, STATE_IDLE);
|
||||||
else {
|
cur[cmd.channel].loop_count = 0;
|
||||||
for (int i = 0; i < cap; i++)
|
cur[cmd.channel].record_pos = 0;
|
||||||
|
cur[cmd.channel].playback_pos = 0;
|
||||||
|
cur[cmd.channel].prev_state = -1;
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < cap; i++) {
|
||||||
atomic_store(&cur[i].state, STATE_IDLE);
|
atomic_store(&cur[i].state, STATE_IDLE);
|
||||||
|
cur[i].loop_count = 0;
|
||||||
|
cur[i].record_pos = 0;
|
||||||
|
cur[i].playback_pos = 0;
|
||||||
|
cur[i].prev_state = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CMD_BIND_CHANNEL:
|
case CMD_BIND_CHANNEL:
|
||||||
|
|||||||
Reference in New Issue
Block a user