feat: refactor transport into separate module with master/slave clock support
Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
43
tui.c
43
tui.c
@@ -277,8 +277,14 @@ static void draw_grid(void) {
|
||||
"Selected: Clip %d | State: %s | Buffer: %zu samples",
|
||||
clip_idx, clip_state_to_string(clip->state), clip->buffer_size);
|
||||
|
||||
TransportState transport_state = (TransportState)atomic_load(&g_engine->transport->state_atomic);
|
||||
ClockSource clock_source = (ClockSource)atomic_load(&g_engine->transport->clock_source_atomic);
|
||||
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 2, 0,
|
||||
"Quantize: %s | Threshold: %u",
|
||||
"Transport: %s | Clock: %s | BPM: %.1f | Quantize: %s | Threshold: %u",
|
||||
transport_state_to_string(transport_state),
|
||||
clock_source_to_string(clock_source),
|
||||
atomic_load(&g_engine->transport->bpm_atomic),
|
||||
quantize_mode_to_string((QuantizeMode)atomic_load(&g_engine->quantize_mode_atomic)),
|
||||
(unsigned int)atomic_load(&g_engine->quantize_threshold_atomic));
|
||||
|
||||
@@ -307,14 +313,20 @@ static void draw_grid(void) {
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 8, 0,
|
||||
"s - Trigger scene (current row)");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 9, 0,
|
||||
"q - Toggle quantize mode (off/beat/bar)");
|
||||
"Space - Play/Pause transport");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 10, 0,
|
||||
"T - Set quantize threshold");
|
||||
"S - Stop transport");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 11, 0,
|
||||
"x - Reset transport");
|
||||
"C - Toggle clock source (Internal/MIDI)");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 12, 0,
|
||||
"? - Toggle help");
|
||||
"q - Toggle quantize mode (off/beat/bar)");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 13, 0,
|
||||
"T - Set quantize threshold");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 14, 0,
|
||||
"x - Reset transport position");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 15, 0,
|
||||
"? - Toggle help");
|
||||
mvprintw(GRID_ROWS * CELL_HEIGHT + 16, 0,
|
||||
"Esc/q - Quit");
|
||||
attroff(COLOR_PAIR(COLOR_HELP));
|
||||
}
|
||||
@@ -669,6 +681,27 @@ void tui_run(Engine *engine) {
|
||||
break;
|
||||
}
|
||||
|
||||
case ' ': { // Space bar - toggle play/pause
|
||||
engine_transport_toggle_play(engine);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'S': { // Shift+S - stop transport
|
||||
engine_transport_stop(engine);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'C': { // Shift+C - toggle clock source
|
||||
ClockSource current = transport_get_clock_source(engine->transport);
|
||||
ClockSource next = (current == CLOCK_SOURCE_INTERNAL) ?
|
||||
CLOCK_SOURCE_MIDI : CLOCK_SOURCE_INTERNAL;
|
||||
engine_set_clock_source(engine, next);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'x':
|
||||
engine_reset_transport(engine);
|
||||
engine_process_commands(engine);
|
||||
|
||||
Reference in New Issue
Block a user