diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sequencer.c | 155 |
1 files changed, 47 insertions, 108 deletions
diff --git a/src/sequencer.c b/src/sequencer.c index fd47d0b..b689bf5 100644 --- a/src/sequencer.c +++ b/src/sequencer.c | |||
@@ -9,11 +9,20 @@ | |||
9 | 9 | ||
10 | void set_time(int bpm); | 10 | void set_time(int bpm); |
11 | 11 | ||
12 | bool redraw_pattern_buttons = false; | ||
13 | bool redraw_play_pause = false; | ||
14 | bool redraw_trigs = false; | ||
15 | bool redraw_channels = false; | ||
16 | bool redraw_bank_buttons = false; | ||
17 | bool redraw_params = false; | ||
18 | bool redraw_bpm = false; | ||
19 | bool redraw_piano_note = false; | ||
20 | |||
12 | void | 21 | void |
13 | irq_timer(void) { | 22 | irq_timer(void) { |
14 | if (current_pattern != next_pattern && step_counter == 0) { | 23 | if (current_pattern != next_pattern && step_counter == 0) { |
15 | current_pattern = next_pattern; | 24 | current_pattern = next_pattern; |
16 | draw_pattern_buttons(); | 25 | redraw_pattern_buttons = true; |
17 | } | 26 | } |
18 | Pattern *pat = &patterns[current_pattern]; | 27 | Pattern *pat = &patterns[current_pattern]; |
19 | set_time(pat->bpm); | 28 | set_time(pat->bpm); |
@@ -135,9 +144,7 @@ irq_timer(void) { | |||
135 | SOUND_NOISE_CTRL = 0; | 144 | SOUND_NOISE_CTRL = 0; |
136 | SOUND_NOISE_FREQ = 0; | 145 | SOUND_NOISE_FREQ = 0; |
137 | } | 146 | } |
138 | draw_current_step(COL_BG); | ||
139 | step_counter = (step_counter + 1) % 16; | 147 | step_counter = (step_counter + 1) % 16; |
140 | draw_current_step(COL_RED); | ||
141 | } | 148 | } |
142 | 149 | ||
143 | void | 150 | void |
@@ -230,25 +237,18 @@ handle_channel_selection(void) { | |||
230 | void | 237 | void |
231 | stop_playing(void) { | 238 | stop_playing(void) { |
232 | play_status = 0; | 239 | play_status = 0; |
233 | if (step_counter != 0) { | ||
234 | draw_current_step(COL_BG); | ||
235 | } | ||
236 | step_counter = 0; | 240 | step_counter = 0; |
237 | TIMER_CTRL_0 = 0; | 241 | TIMER_CTRL_0 = 0; |
238 | SOUND_SQUARE1_CTRL = 0; | 242 | SOUND_SQUARE1_CTRL = 0; |
239 | SOUND_SQUARE2_CTRL = 0; | 243 | SOUND_SQUARE2_CTRL = 0; |
240 | SOUND_WAVE_CTRL = 0; | 244 | SOUND_WAVE_CTRL = 0; |
241 | SOUND_NOISE_CTRL = 0; | 245 | SOUND_NOISE_CTRL = 0; |
242 | draw_current_step(COL_RED); | 246 | redraw_play_pause = true; |
243 | draw_play(); | ||
244 | } | 247 | } |
245 | 248 | ||
246 | void | 249 | void |
247 | toggle_playing(void) { | 250 | toggle_playing(void) { |
248 | play_status ^= 1; | 251 | play_status ^= 1; |
249 | if (step_counter != 0) { | ||
250 | draw_current_step(COL_BG); | ||
251 | } | ||
252 | step_counter = 0; | 252 | step_counter = 0; |
253 | if ((TIMER_CTRL_0 & TIMER_CTRL_ENABLE) == 0) { | 253 | if ((TIMER_CTRL_0 & TIMER_CTRL_ENABLE) == 0) { |
254 | set_time(patterns[current_pattern].bpm); | 254 | set_time(patterns[current_pattern].bpm); |
@@ -259,8 +259,7 @@ toggle_playing(void) { | |||
259 | SOUND_WAVE_CTRL = 0; | 259 | SOUND_WAVE_CTRL = 0; |
260 | SOUND_NOISE_CTRL = 0; | 260 | SOUND_NOISE_CTRL = 0; |
261 | } | 261 | } |
262 | draw_current_step(COL_RED); | 262 | redraw_play_pause = true; |
263 | draw_play(); | ||
264 | } | 263 | } |
265 | 264 | ||
266 | void | 265 | void |
@@ -275,7 +274,7 @@ pause_playing(void) { | |||
275 | SOUND_WAVE_CTRL = 0; | 274 | SOUND_WAVE_CTRL = 0; |
276 | SOUND_NOISE_CTRL = 0; | 275 | SOUND_NOISE_CTRL = 0; |
277 | } | 276 | } |
278 | draw_play(); | 277 | redraw_play_pause = true; |
279 | } | 278 | } |
280 | 279 | ||
281 | void | 280 | void |
@@ -290,10 +289,10 @@ select_bank(int i) { | |||
290 | load_bank(i); | 289 | load_bank(i); |
291 | } | 290 | } |
292 | current_bank = i; | 291 | current_bank = i; |
293 | draw_pattern_buttons(); | 292 | redraw_pattern_buttons = true; |
294 | draw_triggers(); | 293 | redraw_trigs = true; |
295 | draw_channels(); | 294 | redraw_channels = true; |
296 | draw_bank_buttons(); | 295 | redraw_bank_buttons = true; |
297 | } | 296 | } |
298 | 297 | ||
299 | void | 298 | void |
@@ -309,22 +308,14 @@ handle_right_col_selection(void) { | |||
309 | trig_selection_loc = 7; | 308 | trig_selection_loc = 7; |
310 | } break; | 309 | } break; |
311 | } | 310 | } |
312 | draw_right_col_cursor(COL_BG); | 311 | redraw_params = true; |
313 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | ||
314 | TriggerNote *trig = get_current_trig(); | ||
315 | draw_note(trig->note, COL_NOTE_PRESSED); | ||
316 | draw_parameters(); | ||
317 | } else if (key_tap(KEY_UP)) { | 312 | } else if (key_tap(KEY_UP)) { |
318 | if (right_col_selection_loc < R_COL_BANK_A) { | 313 | if (right_col_selection_loc < R_COL_BANK_A) { |
319 | draw_right_col_cursor(COL_BG); | ||
320 | right_col_selection_loc++; | 314 | right_col_selection_loc++; |
321 | draw_right_col_cursor(COL_CURSOR); | ||
322 | } | 315 | } |
323 | } else if (key_tap(KEY_DOWN)) { | 316 | } else if (key_tap(KEY_DOWN)) { |
324 | if (right_col_selection_loc > R_COL_BPM) { | 317 | if (right_col_selection_loc > R_COL_BPM) { |
325 | draw_right_col_cursor(COL_BG); | ||
326 | right_col_selection_loc--; | 318 | right_col_selection_loc--; |
327 | draw_right_col_cursor(COL_CURSOR); | ||
328 | } | 319 | } |
329 | } else if (key_tap(KEY_L)) { | 320 | } else if (key_tap(KEY_L)) { |
330 | switch (right_col_selection_loc) { | 321 | switch (right_col_selection_loc) { |
@@ -335,7 +326,7 @@ handle_right_col_selection(void) { | |||
335 | && current_pattern == pattern_selection_loc) { | 326 | && current_pattern == pattern_selection_loc) { |
336 | set_time(patterns[current_pattern].bpm); | 327 | set_time(patterns[current_pattern].bpm); |
337 | } | 328 | } |
338 | draw_bpm(); | 329 | redraw_bpm = true; |
339 | } | 330 | } |
340 | } break; | 331 | } break; |
341 | } | 332 | } |
@@ -348,7 +339,7 @@ handle_right_col_selection(void) { | |||
348 | && current_pattern == pattern_selection_loc) { | 339 | && current_pattern == pattern_selection_loc) { |
349 | set_time(patterns[current_pattern].bpm); | 340 | set_time(patterns[current_pattern].bpm); |
350 | } | 341 | } |
351 | draw_bpm(); | 342 | redraw_bpm = true; |
352 | } | 343 | } |
353 | } break; | 344 | } break; |
354 | } | 345 | } |
@@ -380,29 +371,24 @@ void | |||
380 | handle_pattern_selection(void) { | 371 | handle_pattern_selection(void) { |
381 | if (key_tap(KEY_B)) { | 372 | if (key_tap(KEY_B)) { |
382 | next_pattern = pattern_selection_loc; | 373 | next_pattern = pattern_selection_loc; |
383 | draw_pattern_buttons(); | 374 | redraw_pattern_buttons = true; |
384 | } | 375 | } |
385 | if (key_tap(KEY_RIGHT)) { | 376 | if (key_tap(KEY_RIGHT)) { |
386 | input_handler = handle_channel_selection; | 377 | input_handler = handle_channel_selection; |
387 | draw_channel_cursor(channel_selection_loc, COL_CURSOR); | ||
388 | draw_pattern_cursor(pattern_selection_loc, COL_GREY); | ||
389 | } else if (key_tap(KEY_UP)) { | 378 | } else if (key_tap(KEY_UP)) { |
390 | if (pattern_selection_loc > 0) { | 379 | if (pattern_selection_loc > 0) { |
391 | draw_pattern_cursor(pattern_selection_loc, COL_BG); | ||
392 | pattern_selection_loc = pattern_selection_loc - 1; | 380 | pattern_selection_loc = pattern_selection_loc - 1; |
393 | draw_pattern_cursor(pattern_selection_loc, COL_CURSOR); | 381 | redraw_channels = true; |
394 | draw_channels(); | 382 | redraw_trigs = true; |
395 | draw_triggers(); | 383 | redraw_bpm = true; |
396 | draw_bpm(); | ||
397 | } | 384 | } |
398 | } else if (key_tap(KEY_DOWN)) { | 385 | } else if (key_tap(KEY_DOWN)) { |
399 | if (pattern_selection_loc < 7) { | 386 | if (pattern_selection_loc < 7) { |
400 | draw_pattern_cursor(pattern_selection_loc, COL_BG); | 387 | draw_pattern_cursor(pattern_selection_loc, COL_BG); |
401 | pattern_selection_loc = pattern_selection_loc + 1; | 388 | pattern_selection_loc = pattern_selection_loc + 1; |
402 | draw_pattern_cursor(pattern_selection_loc, COL_CURSOR); | 389 | redraw_channels = true; |
403 | draw_channels(); | 390 | redraw_trigs = true; |
404 | draw_triggers(); | 391 | redraw_bpm = true; |
405 | draw_bpm(); | ||
406 | } | 392 | } |
407 | } | 393 | } |
408 | } | 394 | } |
@@ -411,9 +397,7 @@ void | |||
411 | handle_param_selection_sq1(void) { | 397 | handle_param_selection_sq1(void) { |
412 | // Go back to trigger selection. | 398 | // Go back to trigger selection. |
413 | if (key_released(KEY_A)) { | 399 | if (key_released(KEY_A)) { |
414 | draw_params_cursor(param_selection_loc, COL_BG); | ||
415 | input_handler = handle_trigger_selection; | 400 | input_handler = handle_trigger_selection; |
416 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | ||
417 | return; | 401 | return; |
418 | } | 402 | } |
419 | 403 | ||
@@ -434,9 +418,7 @@ handle_param_selection_sq1(void) { | |||
434 | inc = -2; | 418 | inc = -2; |
435 | } | 419 | } |
436 | } | 420 | } |
437 | draw_params_cursor(param_selection_loc, COL_BG); | ||
438 | param_selection_loc = CLAMP(loc + inc, 0, 6); | 421 | param_selection_loc = CLAMP(loc + inc, 0, 6); |
439 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
440 | } | 422 | } |
441 | if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { | 423 | if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { |
442 | int inc = 0; | 424 | int inc = 0; |
@@ -458,9 +440,7 @@ handle_param_selection_sq1(void) { | |||
458 | inc = -1; | 440 | inc = -1; |
459 | } | 441 | } |
460 | } | 442 | } |
461 | draw_params_cursor(param_selection_loc, COL_BG); | ||
462 | param_selection_loc = CLAMP(loc + inc, 0, 6); | 443 | param_selection_loc = CLAMP(loc + inc, 0, 6); |
463 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
464 | } | 444 | } |
465 | 445 | ||
466 | // Adjust parameter. | 446 | // Adjust parameter. |
@@ -496,8 +476,7 @@ handle_param_selection_sq1(void) { | |||
496 | params->sweep_direction ^= 1; | 476 | params->sweep_direction ^= 1; |
497 | } break; | 477 | } break; |
498 | } | 478 | } |
499 | draw_parameters(); | 479 | redraw_params = true; |
500 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
501 | } | 480 | } |
502 | } | 481 | } |
503 | 482 | ||
@@ -505,9 +484,7 @@ void | |||
505 | handle_param_selection_sq2(void) { | 484 | handle_param_selection_sq2(void) { |
506 | // Go back to trigger selection. | 485 | // Go back to trigger selection. |
507 | if (key_released(KEY_A)) { | 486 | if (key_released(KEY_A)) { |
508 | draw_params_cursor(param_selection_loc, COL_BG); | ||
509 | input_handler = handle_trigger_selection; | 487 | input_handler = handle_trigger_selection; |
510 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | ||
511 | return; | 488 | return; |
512 | } | 489 | } |
513 | 490 | ||
@@ -520,9 +497,7 @@ handle_param_selection_sq2(void) { | |||
520 | } else { | 497 | } else { |
521 | inc = -1; | 498 | inc = -1; |
522 | } | 499 | } |
523 | draw_params_cursor(param_selection_loc, COL_BG); | ||
524 | param_selection_loc = CLAMP(loc + inc, 0, 3); | 500 | param_selection_loc = CLAMP(loc + inc, 0, 3); |
525 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
526 | } | 501 | } |
527 | 502 | ||
528 | // Adjust parameter. | 503 | // Adjust parameter. |
@@ -549,8 +524,7 @@ handle_param_selection_sq2(void) { | |||
549 | params->env_time = CLAMP(params->env_time + inc, 0, 7); | 524 | params->env_time = CLAMP(params->env_time + inc, 0, 7); |
550 | } break; | 525 | } break; |
551 | } | 526 | } |
552 | draw_parameters(); | 527 | redraw_params = true; |
553 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
554 | } | 528 | } |
555 | } | 529 | } |
556 | 530 | ||
@@ -560,9 +534,7 @@ handle_param_selection_wave(void) { | |||
560 | 534 | ||
561 | // Go back to trigger selection. | 535 | // Go back to trigger selection. |
562 | if (key_released(KEY_A)) { | 536 | if (key_released(KEY_A)) { |
563 | draw_params_cursor(param_selection_loc, COL_BG); | ||
564 | input_handler = handle_trigger_selection; | 537 | input_handler = handle_trigger_selection; |
565 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | ||
566 | return; | 538 | return; |
567 | } | 539 | } |
568 | 540 | ||
@@ -589,9 +561,7 @@ handle_param_selection_wave(void) { | |||
589 | inc = -1; | 561 | inc = -1; |
590 | } | 562 | } |
591 | } | 563 | } |
592 | draw_params_cursor(param_selection_loc, COL_BG); | ||
593 | param_selection_loc = CLAMP(loc + inc, 0, 73); | 564 | param_selection_loc = CLAMP(loc + inc, 0, 73); |
594 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
595 | } | 565 | } |
596 | if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { | 566 | if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { |
597 | int inc = 0; | 567 | int inc = 0; |
@@ -645,9 +615,7 @@ handle_param_selection_wave(void) { | |||
645 | inc = -1; | 615 | inc = -1; |
646 | } | 616 | } |
647 | } | 617 | } |
648 | draw_params_cursor(param_selection_loc, COL_BG); | ||
649 | param_selection_loc = CLAMP(loc + inc, 0, 73); | 618 | param_selection_loc = CLAMP(loc + inc, 0, 73); |
650 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
651 | } | 619 | } |
652 | 620 | ||
653 | // Adjust parameter. | 621 | // Adjust parameter. |
@@ -727,8 +695,7 @@ handle_param_selection_wave(void) { | |||
727 | u8 *wave_volume = &pat->ch3.params[trig_selection_loc].wave_volume; | 695 | u8 *wave_volume = &pat->ch3.params[trig_selection_loc].wave_volume; |
728 | *wave_volume = CLAMP(*wave_volume + inc, 0, 4); | 696 | *wave_volume = CLAMP(*wave_volume + inc, 0, 4); |
729 | } | 697 | } |
730 | draw_parameters(); | 698 | redraw_params = true; |
731 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
732 | } | 699 | } |
733 | } | 700 | } |
734 | 701 | ||
@@ -736,9 +703,7 @@ void | |||
736 | handle_param_selection_noise(void) { | 703 | handle_param_selection_noise(void) { |
737 | // Go back to trigger selection. | 704 | // Go back to trigger selection. |
738 | if (key_released(KEY_A)) { | 705 | if (key_released(KEY_A)) { |
739 | draw_params_cursor(param_selection_loc, COL_BG); | ||
740 | input_handler = handle_trigger_selection; | 706 | input_handler = handle_trigger_selection; |
741 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | ||
742 | return; | 707 | return; |
743 | } | 708 | } |
744 | 709 | ||
@@ -751,9 +716,7 @@ handle_param_selection_noise(void) { | |||
751 | } else { | 716 | } else { |
752 | inc = -1; | 717 | inc = -1; |
753 | } | 718 | } |
754 | draw_params_cursor(param_selection_loc, COL_BG); | ||
755 | param_selection_loc = CLAMP(loc + inc, 0, 3); | 719 | param_selection_loc = CLAMP(loc + inc, 0, 3); |
756 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
757 | } | 720 | } |
758 | 721 | ||
759 | // Adjust parameter. | 722 | // Adjust parameter. |
@@ -780,8 +743,7 @@ handle_param_selection_noise(void) { | |||
780 | params->env_time = CLAMP(params->env_time + inc, 0, 7); | 743 | params->env_time = CLAMP(params->env_time + inc, 0, 7); |
781 | } break; | 744 | } break; |
782 | } | 745 | } |
783 | draw_parameters(); | 746 | redraw_params = true; |
784 | draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
785 | } | 747 | } |
786 | } | 748 | } |
787 | 749 | ||
@@ -792,24 +754,20 @@ handle_trigger_selection(void) { | |||
792 | if (key_tap(KEY_B)) { | 754 | if (key_tap(KEY_B)) { |
793 | // Toggle trigger. | 755 | // Toggle trigger. |
794 | trig->active ^= 1; | 756 | trig->active ^= 1; |
795 | draw_trigger(channel_selection_loc, trig_selection_loc); | 757 | redraw_trigs = true; |
796 | } else if (key_tap(KEY_L)) { | 758 | } else if (key_tap(KEY_L)) { |
797 | // Decrease note. | 759 | // Decrease note. |
798 | if (trig->active) { | 760 | if (trig->active) { |
799 | draw_note(trig->note, COL_FG); | ||
800 | trig->note = MAX(trig->note - 1, NOTE_C_2); | 761 | trig->note = MAX(trig->note - 1, NOTE_C_2); |
801 | draw_note(trig->note, COL_NOTE_PRESSED); | 762 | redraw_trigs = true; |
802 | clear_trigger(trig_selection_loc); | 763 | redraw_piano_note = true; |
803 | draw_trigger(channel_selection_loc, trig_selection_loc); | ||
804 | } | 764 | } |
805 | } else if (key_tap(KEY_R)) { | 765 | } else if (key_tap(KEY_R)) { |
806 | // Increase note. | 766 | // Increase note. |
807 | if (trig->active) { | 767 | if (trig->active) { |
808 | draw_note(trig->note, COL_FG); | ||
809 | trig->note = MIN( trig->note + 1, NOTE_C_8 - 1); | 768 | trig->note = MIN( trig->note + 1, NOTE_C_8 - 1); |
810 | draw_note(trig->note, COL_NOTE_PRESSED); | 769 | redraw_trigs = true; |
811 | clear_trigger(trig_selection_loc); | 770 | redraw_piano_note = true; |
812 | draw_trigger(channel_selection_loc, trig_selection_loc); | ||
813 | } | 771 | } |
814 | } | 772 | } |
815 | 773 | ||
@@ -817,50 +775,31 @@ handle_trigger_selection(void) { | |||
817 | if (key_tap(KEY_LEFT)) { | 775 | if (key_tap(KEY_LEFT)) { |
818 | if (trig_selection_loc == 0 || trig_selection_loc == 8) { | 776 | if (trig_selection_loc == 0 || trig_selection_loc == 8) { |
819 | // We are at the boundary, switch to channel selection. | 777 | // We are at the boundary, switch to channel selection. |
820 | draw_trig_cursor(trig_selection_loc, COL_BG); | ||
821 | draw_note(trig->note, COL_FG); | ||
822 | input_handler = handle_channel_selection; | 778 | input_handler = handle_channel_selection; |
823 | draw_channel_cursor(channel_selection_loc, COL_CURSOR); | 779 | redraw_params = true; |
824 | clear_parameters(); | ||
825 | } else { | 780 | } else { |
826 | draw_trig_cursor(trig_selection_loc, COL_BG); | ||
827 | draw_note(trig->note, COL_FG); | ||
828 | trig_selection_loc = MAX(trig_selection_loc - 1, 0); | 781 | trig_selection_loc = MAX(trig_selection_loc - 1, 0); |
829 | trig = get_current_trig(); | 782 | redraw_piano_note = true; |
830 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | 783 | redraw_params = true; |
831 | draw_note(trig->note, COL_NOTE_PRESSED); | ||
832 | draw_parameters(); | ||
833 | } | 784 | } |
834 | } else if (key_tap(KEY_RIGHT)) { | 785 | } else if (key_tap(KEY_RIGHT)) { |
835 | if (trig_selection_loc != 7 && trig_selection_loc != 15) { | 786 | if (trig_selection_loc != 7 && trig_selection_loc != 15) { |
836 | draw_trig_cursor(trig_selection_loc, COL_BG); | ||
837 | draw_note(trig->note, COL_FG); | ||
838 | trig_selection_loc = MIN(trig_selection_loc + 1, 15); | 787 | trig_selection_loc = MIN(trig_selection_loc + 1, 15); |
839 | trig = get_current_trig(); | 788 | redraw_piano_note = true; |
840 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | 789 | redraw_params = true; |
841 | draw_note(trig->note, COL_NOTE_PRESSED); | ||
842 | draw_parameters(); | ||
843 | } else if (trig_selection_loc == 7) { | 790 | } else if (trig_selection_loc == 7) { |
844 | input_handler = handle_right_col_selection; | 791 | input_handler = handle_right_col_selection; |
845 | right_col_selection_loc = R_COL_STOP; | 792 | right_col_selection_loc = R_COL_STOP; |
846 | draw_trig_cursor(trig_selection_loc, COL_BG); | 793 | redraw_params = true; |
847 | draw_note(trig->note, COL_FG); | ||
848 | draw_right_col_cursor(COL_CURSOR); | ||
849 | } else if (trig_selection_loc == 15) { | 794 | } else if (trig_selection_loc == 15) { |
850 | right_col_selection_loc = R_COL_BPM; | 795 | right_col_selection_loc = R_COL_BPM; |
851 | input_handler = handle_right_col_selection; | 796 | input_handler = handle_right_col_selection; |
852 | draw_trig_cursor(trig_selection_loc, COL_BG); | 797 | redraw_params = true; |
853 | draw_note(trig->note, COL_FG); | ||
854 | draw_right_col_cursor(COL_CURSOR); | ||
855 | } | 798 | } |
856 | } else if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { | 799 | } else if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { |
857 | draw_trig_cursor(trig_selection_loc, COL_BG); | ||
858 | draw_note(trig->note, COL_FG); | ||
859 | trig_selection_loc = (trig_selection_loc + 8) % 16; | 800 | trig_selection_loc = (trig_selection_loc + 8) % 16; |
860 | trig = get_current_trig(); | 801 | redraw_piano_note = true; |
861 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); | 802 | redraw_params = true; |
862 | draw_note(trig->note, COL_NOTE_PRESSED); | ||
863 | draw_parameters(); | ||
864 | } else if (key_tap(KEY_A)) { | 803 | } else if (key_tap(KEY_A)) { |
865 | // Switch to parameter selection. | 804 | // Switch to parameter selection. |
866 | switch (channel_selection_loc) { | 805 | switch (channel_selection_loc) { |
@@ -877,8 +816,8 @@ handle_trigger_selection(void) { | |||
877 | input_handler = handle_param_selection_noise; | 816 | input_handler = handle_param_selection_noise; |
878 | } break; | 817 | } break; |
879 | } | 818 | } |
880 | draw_params_cursor(param_selection_loc, COL_CURSOR); | 819 | redraw_piano_note = true; |
881 | draw_trig_cursor(trig_selection_loc, COL_GREY); | 820 | redraw_params = true; |
882 | } | 821 | } |
883 | } | 822 | } |
884 | 823 | ||