feat: add 8x8 scene/channel grid, MIDI clock sync, and quantization engine
Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
@@ -11,6 +11,16 @@ static Engine *create_test_engine(void) {
|
||||
|
||||
engine->control_channel = 0;
|
||||
engine->sample_rate = 48000;
|
||||
engine->quantize_mode = QUANTIZE_OFF;
|
||||
engine->quantize_threshold = 0;
|
||||
engine->queued_triggers = NULL;
|
||||
|
||||
// Initialize transport
|
||||
engine->transport.rolling = false;
|
||||
engine->transport.clock_count = 0;
|
||||
engine->transport.beat_position = 0;
|
||||
engine->transport.bar_position = 0;
|
||||
engine->transport.sample_position = 0;
|
||||
|
||||
for (int i = 0; i < MAX_CLIPS; i++) {
|
||||
engine->clips[i].state = CLIP_EMPTY;
|
||||
@@ -26,6 +36,14 @@ static Engine *create_test_engine(void) {
|
||||
|
||||
static void destroy_test_engine(Engine *engine) {
|
||||
if (engine) {
|
||||
// Free queued triggers
|
||||
QueuedTrigger *qt = engine->queued_triggers;
|
||||
while (qt) {
|
||||
QueuedTrigger *next = qt->next;
|
||||
free(qt);
|
||||
qt = next;
|
||||
}
|
||||
|
||||
for (int i = 0; i < MAX_CLIPS; i++) {
|
||||
free(engine->clips[i].buffer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user