diff options
author | Bad Diode <bd@badd10de.dev> | 2023-04-24 14:49:38 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-04-24 14:49:38 +0200 |
commit | 7399fd06ad3e9682a619550c6de50a565ccc3a25 (patch) | |
tree | 23a36f4c00e4ac0a3b5154ad62067912d79309d3 /src/drawing.c | |
parent | b83958d07ec0e4dcc185f40928a84d1bcdd48675 (diff) | |
download | stepper-7399fd06ad3e9682a619550c6de50a565ccc3a25.tar.gz stepper-7399fd06ad3e9682a619550c6de50a565ccc3a25.zip |
Prepare for per-channel param adjustment
Diffstat (limited to 'src/drawing.c')
-rw-r--r-- | src/drawing.c | 454 |
1 files changed, 129 insertions, 325 deletions
diff --git a/src/drawing.c b/src/drawing.c index 964c4ce..0ee1243 100644 --- a/src/drawing.c +++ b/src/drawing.c | |||
@@ -14,18 +14,10 @@ draw_channels(void) { | |||
14 | for (size_t i = 0; i < 4; i++) { | 14 | for (size_t i = 0; i < 4; i++) { |
15 | bool active = false; | 15 | bool active = false; |
16 | switch (i) { | 16 | switch (i) { |
17 | case 0: { | 17 | case 0: { active = patterns[pattern_selection_loc].ch1.active; } break; |
18 | active = patterns[pattern_selection_loc].ch1.active; | 18 | case 1: { active = patterns[pattern_selection_loc].ch2.active; } break; |
19 | } break; | 19 | case 2: { active = patterns[pattern_selection_loc].ch3.active; } break; |
20 | case 1: { | 20 | case 3: { active = patterns[pattern_selection_loc].ch4.active; } break; |
21 | active = patterns[pattern_selection_loc].ch2.active; | ||
22 | } break; | ||
23 | case 2: { | ||
24 | active = patterns[pattern_selection_loc].ch3.active; | ||
25 | } break; | ||
26 | case 3: { | ||
27 | active = patterns[pattern_selection_loc].ch4.active; | ||
28 | } break; | ||
29 | } | 21 | } |
30 | u8 clr = active ? COL_FG : COL_GREY; | 22 | u8 clr = active ? COL_FG : COL_GREY; |
31 | size_t y = CHAN_START_Y + i * CHAN_OFFSET_Y; | 23 | size_t y = CHAN_START_Y + i * CHAN_OFFSET_Y; |
@@ -62,18 +54,10 @@ void | |||
62 | draw_trigger(size_t chan, size_t i) { | 54 | draw_trigger(size_t chan, size_t i) { |
63 | TriggerNote trig = {0}; | 55 | TriggerNote trig = {0}; |
64 | switch (chan) { | 56 | switch (chan) { |
65 | case 0: { | 57 | case 0: { trig = patterns[pattern_selection_loc].ch1.notes[i]; } break; |
66 | trig = patterns[pattern_selection_loc].ch1.notes[i]; | 58 | case 1: { trig = patterns[pattern_selection_loc].ch2.notes[i]; } break; |
67 | } break; | 59 | case 2: { trig = patterns[pattern_selection_loc].ch3.notes[i]; } break; |
68 | case 1: { | 60 | case 3: { trig = patterns[pattern_selection_loc].ch4.notes[i]; } break; |
69 | trig = patterns[pattern_selection_loc].ch2.notes[i]; | ||
70 | } break; | ||
71 | case 2: { | ||
72 | trig = patterns[pattern_selection_loc].ch3.notes[i]; | ||
73 | } break; | ||
74 | case 3: { | ||
75 | trig = patterns[pattern_selection_loc].ch4.notes[i]; | ||
76 | } break; | ||
77 | } | 61 | } |
78 | if (trig.active) { | 62 | if (trig.active) { |
79 | size_t offset_x = TRIG_OFFSET_X * (i % 8); | 63 | size_t offset_x = TRIG_OFFSET_X * (i % 8); |
@@ -373,21 +357,11 @@ draw_note(u8 note, u8 clr) { | |||
373 | y0 = PIANO_START_Y + 2; | 357 | y0 = PIANO_START_Y + 2; |
374 | y1 = PIANO_START_Y - 2 + 11; | 358 | y1 = PIANO_START_Y - 2 + 11; |
375 | switch (value) { | 359 | switch (value) { |
376 | case 1: { | 360 | case 1: { x0 = PIANO_START_X + 2 + octave * 28 + 3; } break; |
377 | x0 = PIANO_START_X + 2 + octave * 28 + 3; | 361 | case 3: { x0 = PIANO_START_X + 2 + octave * 28 + 7; } break; |
378 | } break; | 362 | case 6: { x0 = PIANO_START_X + 2 + octave * 28 + 15; } break; |
379 | case 3: { | 363 | case 8: { x0 = PIANO_START_X + 2 + octave * 28 + 19; } break; |
380 | x0 = PIANO_START_X + 2 + octave * 28 + 7; | 364 | case 10: { x0 = PIANO_START_X + 2 + octave * 28 + 23; } break; |
381 | } break; | ||
382 | case 6: { | ||
383 | x0 = PIANO_START_X + 2 + octave * 28 + 15; | ||
384 | } break; | ||
385 | case 8: { | ||
386 | x0 = PIANO_START_X + 2 + octave * 28 + 19; | ||
387 | } break; | ||
388 | case 10: { | ||
389 | x0 = PIANO_START_X + 2 + octave * 28 + 23; | ||
390 | } break; | ||
391 | } | 365 | } |
392 | x1 = x0; | 366 | x1 = x0; |
393 | draw_line(x0, y0, x1, y1, clr); | 367 | draw_line(x0, y0, x1, y1, clr); |
@@ -512,18 +486,10 @@ draw_params_cursor_square(size_t i, u8 clr, bool sweep) { | |||
512 | void | 486 | void |
513 | draw_params_cursor(size_t i, u8 clr) { | 487 | draw_params_cursor(size_t i, u8 clr) { |
514 | switch (channel_selection_loc) { | 488 | switch (channel_selection_loc) { |
515 | case 0: { | 489 | case 0: { draw_params_cursor_square(i, clr, true); } break; |
516 | draw_params_cursor_square(i, clr, true); | 490 | case 1: { draw_params_cursor_square(i, clr, false); } break; |
517 | } break; | 491 | case 2: { draw_params_cursor_wave(i, clr); } break; |
518 | case 1: { | 492 | case 3: { draw_params_cursor_noise(i, clr); } break; |
519 | draw_params_cursor_square(i, clr, false); | ||
520 | } break; | ||
521 | case 2: { | ||
522 | draw_params_cursor_wave(i, clr); | ||
523 | } break; | ||
524 | case 3: { | ||
525 | draw_params_cursor_noise(i, clr); | ||
526 | } break; | ||
527 | } | 493 | } |
528 | } | 494 | } |
529 | 495 | ||
@@ -555,12 +521,11 @@ clear_parameters(void) { | |||
555 | 521 | ||
556 | IWRAM_CODE | 522 | IWRAM_CODE |
557 | void | 523 | void |
558 | draw_parameters_wave(void) { | 524 | draw_parameters_wave(ChannelWaveParams *params) { |
559 | // Draw current wave data. | 525 | // Draw current wave data. |
560 | Pattern *pat = &patterns[pattern_selection_loc]; | ||
561 | { | 526 | { |
562 | u8 *wave_a = pat->ch3.params[trig_selection_loc].wave_a; | 527 | u8 *wave_a = params->wave_a; |
563 | u8 *wave_b = pat->ch3.params[trig_selection_loc].wave_b; | 528 | u8 *wave_b = params->wave_b; |
564 | 529 | ||
565 | size_t x = PARAMS_START_X; | 530 | size_t x = PARAMS_START_X; |
566 | size_t y = PARAMS_START_Y + 13; | 531 | size_t y = PARAMS_START_Y + 13; |
@@ -617,16 +582,10 @@ draw_parameters_wave(void) { | |||
617 | draw_line(x, y + 17, x + 30, y + 17, COL_FG); | 582 | draw_line(x, y + 17, x + 30, y + 17, COL_FG); |
618 | txt_drawf_small("mode", x + 6, y, COL_FG); | 583 | txt_drawf_small("mode", x + 6, y, COL_FG); |
619 | 584 | ||
620 | switch (pat->ch3.params[trig_selection_loc].wave_mode) { | 585 | switch (params->wave_mode) { |
621 | case 0: { | 586 | case 0: { txt_drawf("A", x + 12, y + 7, COL_FG); } break; |
622 | txt_drawf("A", x + 12, y + 7, COL_FG); | 587 | case 1: { txt_drawf("B", x + 12, y + 7, COL_FG); } break; |
623 | } break; | 588 | case 2: { txt_drawf("A+B", x + 6, y + 7, COL_FG); } break; |
624 | case 1: { | ||
625 | txt_drawf("B", x + 12, y + 7, COL_FG); | ||
626 | } break; | ||
627 | case 2: { | ||
628 | txt_drawf("A+B", x + 6, y + 7, COL_FG); | ||
629 | } break; | ||
630 | } | 589 | } |
631 | } | 590 | } |
632 | 591 | ||
@@ -641,22 +600,12 @@ draw_parameters_wave(void) { | |||
641 | draw_line(x, y + 20, x + 30, y + 20, COL_FG); | 600 | draw_line(x, y + 20, x + 30, y + 20, COL_FG); |
642 | txt_drawf_small("vol", x + 8, y + 3, COL_FG); | 601 | txt_drawf_small("vol", x + 8, y + 3, COL_FG); |
643 | 602 | ||
644 | switch (pat->ch3.params[trig_selection_loc].wave_volume) { | 603 | switch (params->wave_volume) { |
645 | case 0: { | 604 | case 0: { txt_drawf("0", x + 12, y + 10, COL_FG); } break; |
646 | txt_drawf("0", x + 12, y + 10, COL_FG); | 605 | case 1: { txt_drawf("25", x + 9, y + 10, COL_FG); } break; |
647 | } break; | 606 | case 2: { txt_drawf("50", x + 9, y + 10, COL_FG); } break; |
648 | case 1: { | 607 | case 3: { txt_drawf("75", x + 9, y + 10, COL_FG); } break; |
649 | txt_drawf("25", x + 9, y + 10, COL_FG); | 608 | case 4: { txt_drawf("100", x + 6, y + 10, COL_FG); } break; |
650 | } break; | ||
651 | case 2: { | ||
652 | txt_drawf("50", x + 9, y + 10, COL_FG); | ||
653 | } break; | ||
654 | case 3: { | ||
655 | txt_drawf("75", x + 9, y + 10, COL_FG); | ||
656 | } break; | ||
657 | case 4: { | ||
658 | txt_drawf("100", x + 6, y + 10, COL_FG); | ||
659 | } break; | ||
660 | } | 609 | } |
661 | } | 610 | } |
662 | } | 611 | } |
@@ -737,18 +686,10 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
737 | txt_drawf_small("duty", x + 3, y + 3, COL_FG); | 686 | txt_drawf_small("duty", x + 3, y + 3, COL_FG); |
738 | 687 | ||
739 | switch (params->duty_cycle) { | 688 | switch (params->duty_cycle) { |
740 | case 0: { | 689 | case 0: { txt_drawf("12", x + 6, y + 10, COL_FG); } break; |
741 | txt_drawf("12", x + 6, y + 10, COL_FG); | 690 | case 1: { txt_drawf("25", x + 6, y + 10, COL_FG); } break; |
742 | } break; | 691 | case 2: { txt_drawf("50", x + 6, y + 10, COL_FG); } break; |
743 | case 1: { | 692 | case 3: { txt_drawf("75", x + 6, y + 10, COL_FG); } break; |
744 | txt_drawf("25", x + 6, y + 10, COL_FG); | ||
745 | } break; | ||
746 | case 2: { | ||
747 | txt_drawf("50", x + 6, y + 10, COL_FG); | ||
748 | } break; | ||
749 | case 3: { | ||
750 | txt_drawf("75", x + 6, y + 10, COL_FG); | ||
751 | } break; | ||
752 | } | 693 | } |
753 | } | 694 | } |
754 | } | 695 | } |
@@ -796,54 +737,22 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
796 | txt_drawf_small("vol", x + 5, y + 3, COL_FG); | 737 | txt_drawf_small("vol", x + 5, y + 3, COL_FG); |
797 | 738 | ||
798 | switch (params->env_volume) { | 739 | switch (params->env_volume) { |
799 | case 0: { | 740 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; |
800 | txt_drawf("0", x + 9, y + 10, COL_FG); | 741 | case 1: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; |
801 | } break; | 742 | case 2: { txt_drawf("13", x + 6, y + 10, COL_FG); } break; |
802 | case 1: { | 743 | case 3: { txt_drawf("20", x + 6, y + 10, COL_FG); } break; |
803 | txt_drawf("6", x + 9, y + 10, COL_FG); | 744 | case 4: { txt_drawf("26", x + 6, y + 10, COL_FG); } break; |
804 | } break; | 745 | case 5: { txt_drawf("33", x + 6, y + 10, COL_FG); } break; |
805 | case 2: { | 746 | case 6: { txt_drawf("40", x + 6, y + 10, COL_FG); } break; |
806 | txt_drawf("13", x + 6, y + 10, COL_FG); | 747 | case 7: { txt_drawf("46", x + 6, y + 10, COL_FG); } break; |
807 | } break; | 748 | case 8: { txt_drawf("53", x + 6, y + 10, COL_FG); } break; |
808 | case 3: { | 749 | case 9: { txt_drawf("60", x + 6, y + 10, COL_FG); } break; |
809 | txt_drawf("20", x + 6, y + 10, COL_FG); | 750 | case 10: { txt_drawf("66", x + 6, y + 10, COL_FG); } break; |
810 | } break; | 751 | case 11: { txt_drawf("73", x + 6, y + 10, COL_FG); } break; |
811 | case 4: { | 752 | case 12: { txt_drawf("80", x + 6, y + 10, COL_FG); } break; |
812 | txt_drawf("26", x + 6, y + 10, COL_FG); | 753 | case 13: { txt_drawf("86", x + 6, y + 10, COL_FG); } break; |
813 | } break; | 754 | case 14: { txt_drawf("93", x + 6, y + 10, COL_FG); } break; |
814 | case 5: { | 755 | case 15: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; |
815 | txt_drawf("33", x + 6, y + 10, COL_FG); | ||
816 | } break; | ||
817 | case 6: { | ||
818 | txt_drawf("40", x + 6, y + 10, COL_FG); | ||
819 | } break; | ||
820 | case 7: { | ||
821 | txt_drawf("46", x + 6, y + 10, COL_FG); | ||
822 | } break; | ||
823 | case 8: { | ||
824 | txt_drawf("53", x + 6, y + 10, COL_FG); | ||
825 | } break; | ||
826 | case 9: { | ||
827 | txt_drawf("60", x + 6, y + 10, COL_FG); | ||
828 | } break; | ||
829 | case 10: { | ||
830 | txt_drawf("66", x + 6, y + 10, COL_FG); | ||
831 | } break; | ||
832 | case 11: { | ||
833 | txt_drawf("73", x + 6, y + 10, COL_FG); | ||
834 | } break; | ||
835 | case 12: { | ||
836 | txt_drawf("80", x + 6, y + 10, COL_FG); | ||
837 | } break; | ||
838 | case 13: { | ||
839 | txt_drawf("86", x + 6, y + 10, COL_FG); | ||
840 | } break; | ||
841 | case 14: { | ||
842 | txt_drawf("93", x + 6, y + 10, COL_FG); | ||
843 | } break; | ||
844 | case 15: { | ||
845 | txt_drawf("100", x + 3, y + 10, COL_FG); | ||
846 | } break; | ||
847 | } | 756 | } |
848 | } | 757 | } |
849 | 758 | ||
@@ -861,12 +770,8 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
861 | char arr_up[2] = { 0x19, 0 }; | 770 | char arr_up[2] = { 0x19, 0 }; |
862 | char arr_down[2] = { 0x18, 0 }; | 771 | char arr_down[2] = { 0x18, 0 }; |
863 | switch (params->env_direction) { | 772 | switch (params->env_direction) { |
864 | case 0: { | 773 | case 0: { txt_drawf(arr_up, x + 9, y + 11, COL_FG); } break; |
865 | txt_drawf(arr_up, x + 9, y + 11, COL_FG); | 774 | case 1: { txt_drawf(arr_down, x + 9, y + 11, COL_FG); } break; |
866 | } break; | ||
867 | case 1: { | ||
868 | txt_drawf(arr_down, x + 9, y + 11, COL_FG); | ||
869 | } break; | ||
870 | } | 775 | } |
871 | } | 776 | } |
872 | 777 | ||
@@ -882,30 +787,14 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
882 | txt_drawf_small("time", x + 3, y + 3, COL_FG); | 787 | txt_drawf_small("time", x + 3, y + 3, COL_FG); |
883 | 788 | ||
884 | switch (params->env_time) { | 789 | switch (params->env_time) { |
885 | case 0: { | 790 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; |
886 | txt_drawf("0", x + 9, y + 10, COL_FG); | 791 | case 1: { txt_drawf("14", x + 6, y + 10, COL_FG); } break; |
887 | } break; | 792 | case 2: { txt_drawf("28", x + 6, y + 10, COL_FG); } break; |
888 | case 1: { | 793 | case 3: { txt_drawf("42", x + 6, y + 10, COL_FG); } break; |
889 | txt_drawf("14", x + 6, y + 10, COL_FG); | 794 | case 4: { txt_drawf("57", x + 6, y + 10, COL_FG); } break; |
890 | } break; | 795 | case 5: { txt_drawf("71", x + 6, y + 10, COL_FG); } break; |
891 | case 2: { | 796 | case 6: { txt_drawf("85", x + 6, y + 10, COL_FG); } break; |
892 | txt_drawf("28", x + 6, y + 10, COL_FG); | 797 | case 7: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; |
893 | } break; | ||
894 | case 3: { | ||
895 | txt_drawf("42", x + 6, y + 10, COL_FG); | ||
896 | } break; | ||
897 | case 4: { | ||
898 | txt_drawf("57", x + 6, y + 10, COL_FG); | ||
899 | } break; | ||
900 | case 5: { | ||
901 | txt_drawf("71", x + 6, y + 10, COL_FG); | ||
902 | } break; | ||
903 | case 6: { | ||
904 | txt_drawf("85", x + 6, y + 10, COL_FG); | ||
905 | } break; | ||
906 | case 7: { | ||
907 | txt_drawf("100", x + 3, y + 10, COL_FG); | ||
908 | } break; | ||
909 | } | 798 | } |
910 | } | 799 | } |
911 | } | 800 | } |
@@ -922,30 +811,14 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
922 | txt_drawf_small("num", x + 5, y + 3, COL_FG); | 811 | txt_drawf_small("num", x + 5, y + 3, COL_FG); |
923 | 812 | ||
924 | switch (params->sweep_number) { | 813 | switch (params->sweep_number) { |
925 | case 0: { | 814 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; |
926 | txt_drawf("0", x + 9, y + 10, COL_FG); | 815 | case 1: { txt_drawf("1", x + 9, y + 10, COL_FG); } break; |
927 | } break; | 816 | case 2: { txt_drawf("2", x + 9, y + 10, COL_FG); } break; |
928 | case 1: { | 817 | case 3: { txt_drawf("3", x + 9, y + 10, COL_FG); } break; |
929 | txt_drawf("1", x + 9, y + 10, COL_FG); | 818 | case 4: { txt_drawf("4", x + 9, y + 10, COL_FG); } break; |
930 | } break; | 819 | case 5: { txt_drawf("5", x + 9, y + 10, COL_FG); } break; |
931 | case 2: { | 820 | case 6: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; |
932 | txt_drawf("2", x + 9, y + 10, COL_FG); | 821 | case 7: { txt_drawf("7", x + 9, y + 10, COL_FG); } break; |
933 | } break; | ||
934 | case 3: { | ||
935 | txt_drawf("3", x + 9, y + 10, COL_FG); | ||
936 | } break; | ||
937 | case 4: { | ||
938 | txt_drawf("4", x + 9, y + 10, COL_FG); | ||
939 | } break; | ||
940 | case 5: { | ||
941 | txt_drawf("5", x + 9, y + 10, COL_FG); | ||
942 | } break; | ||
943 | case 6: { | ||
944 | txt_drawf("6", x + 9, y + 10, COL_FG); | ||
945 | } break; | ||
946 | case 7: { | ||
947 | txt_drawf("7", x + 9, y + 10, COL_FG); | ||
948 | } break; | ||
949 | } | 822 | } |
950 | } | 823 | } |
951 | 824 | ||
@@ -961,30 +834,14 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
961 | txt_drawf_small("time", x + 3, y + 3, COL_FG); | 834 | txt_drawf_small("time", x + 3, y + 3, COL_FG); |
962 | 835 | ||
963 | switch (params->sweep_time) { | 836 | switch (params->sweep_time) { |
964 | case 0: { | 837 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; |
965 | txt_drawf("0", x + 9, y + 10, COL_FG); | 838 | case 1: { txt_drawf("1", x + 9, y + 10, COL_FG); } break; |
966 | } break; | 839 | case 2: { txt_drawf("2", x + 9, y + 10, COL_FG); } break; |
967 | case 1: { | 840 | case 3: { txt_drawf("3", x + 9, y + 10, COL_FG); } break; |
968 | txt_drawf("1", x + 9, y + 10, COL_FG); | 841 | case 4: { txt_drawf("4", x + 9, y + 10, COL_FG); } break; |
969 | } break; | 842 | case 5: { txt_drawf("5", x + 9, y + 10, COL_FG); } break; |
970 | case 2: { | 843 | case 6: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; |
971 | txt_drawf("2", x + 9, y + 10, COL_FG); | 844 | case 7: { txt_drawf("7", x + 9, y + 10, COL_FG); } break; |
972 | } break; | ||
973 | case 3: { | ||
974 | txt_drawf("3", x + 9, y + 10, COL_FG); | ||
975 | } break; | ||
976 | case 4: { | ||
977 | txt_drawf("4", x + 9, y + 10, COL_FG); | ||
978 | } break; | ||
979 | case 5: { | ||
980 | txt_drawf("5", x + 9, y + 10, COL_FG); | ||
981 | } break; | ||
982 | case 6: { | ||
983 | txt_drawf("6", x + 9, y + 10, COL_FG); | ||
984 | } break; | ||
985 | case 7: { | ||
986 | txt_drawf("7", x + 9, y + 10, COL_FG); | ||
987 | } break; | ||
988 | } | 845 | } |
989 | } | 846 | } |
990 | 847 | ||
@@ -1002,12 +859,8 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
1002 | char arr_up[2] = { 0x19, 0 }; | 859 | char arr_up[2] = { 0x19, 0 }; |
1003 | char arr_down[2] = { 0x18, 0 }; | 860 | char arr_down[2] = { 0x18, 0 }; |
1004 | switch (params->sweep_direction) { | 861 | switch (params->sweep_direction) { |
1005 | case 0: { | 862 | case 0: { txt_drawf(arr_up, x + 9, y + 11, COL_FG); } break; |
1006 | txt_drawf(arr_up, x + 9, y + 11, COL_FG); | 863 | case 1: { txt_drawf(arr_down, x + 9, y + 11, COL_FG); } break; |
1007 | } break; | ||
1008 | case 1: { | ||
1009 | txt_drawf(arr_down, x + 9, y + 11, COL_FG); | ||
1010 | } break; | ||
1011 | } | 864 | } |
1012 | } | 865 | } |
1013 | 866 | ||
@@ -1024,10 +877,8 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
1024 | } | 877 | } |
1025 | 878 | ||
1026 | void | 879 | void |
1027 | draw_parameters_noise(void) { | 880 | draw_parameters_noise(ChannelNoiseParams* params) { |
1028 | size_t x_offset = 30; | 881 | size_t x_offset = 30; |
1029 | Pattern *pat = &patterns[pattern_selection_loc]; | ||
1030 | ChannelNoiseParams *params = &pat->ch4.params[trig_selection_loc]; | ||
1031 | 882 | ||
1032 | // Bit mode. | 883 | // Bit mode. |
1033 | { | 884 | { |
@@ -1043,12 +894,8 @@ draw_parameters_noise(void) { | |||
1043 | txt_drawf_small("mode", x + 3, y + 3, COL_FG); | 894 | txt_drawf_small("mode", x + 3, y + 3, COL_FG); |
1044 | 895 | ||
1045 | switch (params->bit_mode) { | 896 | switch (params->bit_mode) { |
1046 | case 0: { | 897 | case 0: { txt_drawf("A", x + 9, y + 10, COL_FG); } break; |
1047 | txt_drawf("A", x + 9, y + 10, COL_FG); | 898 | case 1: { txt_drawf("B", x + 9, y + 10, COL_FG); } break; |
1048 | } break; | ||
1049 | case 1: { | ||
1050 | txt_drawf("B", x + 9, y + 10, COL_FG); | ||
1051 | } break; | ||
1052 | } | 899 | } |
1053 | } | 900 | } |
1054 | } | 901 | } |
@@ -1096,54 +943,22 @@ draw_parameters_noise(void) { | |||
1096 | txt_drawf_small("vol", x + 5, y + 3, COL_FG); | 943 | txt_drawf_small("vol", x + 5, y + 3, COL_FG); |
1097 | 944 | ||
1098 | switch (params->env_volume) { | 945 | switch (params->env_volume) { |
1099 | case 0: { | 946 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; |
1100 | txt_drawf("0", x + 9, y + 10, COL_FG); | 947 | case 1: { txt_drawf("6", x + 9, y + 10, COL_FG); } break; |
1101 | } break; | 948 | case 2: { txt_drawf("13", x + 6, y + 10, COL_FG); } break; |
1102 | case 1: { | 949 | case 3: { txt_drawf("20", x + 6, y + 10, COL_FG); } break; |
1103 | txt_drawf("6", x + 9, y + 10, COL_FG); | 950 | case 4: { txt_drawf("26", x + 6, y + 10, COL_FG); } break; |
1104 | } break; | 951 | case 5: { txt_drawf("33", x + 6, y + 10, COL_FG); } break; |
1105 | case 2: { | 952 | case 6: { txt_drawf("40", x + 6, y + 10, COL_FG); } break; |
1106 | txt_drawf("13", x + 6, y + 10, COL_FG); | 953 | case 7: { txt_drawf("46", x + 6, y + 10, COL_FG); } break; |
1107 | } break; | 954 | case 8: { txt_drawf("53", x + 6, y + 10, COL_FG); } break; |
1108 | case 3: { | 955 | case 9: { txt_drawf("60", x + 6, y + 10, COL_FG); } break; |
1109 | txt_drawf("20", x + 6, y + 10, COL_FG); | 956 | case 10: { txt_drawf("66", x + 6, y + 10, COL_FG); } break; |
1110 | } break; | 957 | case 11: { txt_drawf("73", x + 6, y + 10, COL_FG); } break; |
1111 | case 4: { | 958 | case 12: { txt_drawf("80", x + 6, y + 10, COL_FG); } break; |
1112 | txt_drawf("26", x + 6, y + 10, COL_FG); | 959 | case 13: { txt_drawf("86", x + 6, y + 10, COL_FG); } break; |
1113 | } break; | 960 | case 14: { txt_drawf("93", x + 6, y + 10, COL_FG); } break; |
1114 | case 5: { | 961 | case 15: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; |
1115 | txt_drawf("33", x + 6, y + 10, COL_FG); | ||
1116 | } break; | ||
1117 | case 6: { | ||
1118 | txt_drawf("40", x + 6, y + 10, COL_FG); | ||
1119 | } break; | ||
1120 | case 7: { | ||
1121 | txt_drawf("46", x + 6, y + 10, COL_FG); | ||
1122 | } break; | ||
1123 | case 8: { | ||
1124 | txt_drawf("53", x + 6, y + 10, COL_FG); | ||
1125 | } break; | ||
1126 | case 9: { | ||
1127 | txt_drawf("60", x + 6, y + 10, COL_FG); | ||
1128 | } break; | ||
1129 | case 10: { | ||
1130 | txt_drawf("66", x + 6, y + 10, COL_FG); | ||
1131 | } break; | ||
1132 | case 11: { | ||
1133 | txt_drawf("73", x + 6, y + 10, COL_FG); | ||
1134 | } break; | ||
1135 | case 12: { | ||
1136 | txt_drawf("80", x + 6, y + 10, COL_FG); | ||
1137 | } break; | ||
1138 | case 13: { | ||
1139 | txt_drawf("86", x + 6, y + 10, COL_FG); | ||
1140 | } break; | ||
1141 | case 14: { | ||
1142 | txt_drawf("93", x + 6, y + 10, COL_FG); | ||
1143 | } break; | ||
1144 | case 15: { | ||
1145 | txt_drawf("100", x + 3, y + 10, COL_FG); | ||
1146 | } break; | ||
1147 | } | 962 | } |
1148 | } | 963 | } |
1149 | 964 | ||
@@ -1182,30 +997,14 @@ draw_parameters_noise(void) { | |||
1182 | txt_drawf_small("time", x + 3, y + 3, COL_FG); | 997 | txt_drawf_small("time", x + 3, y + 3, COL_FG); |
1183 | 998 | ||
1184 | switch (params->env_time) { | 999 | switch (params->env_time) { |
1185 | case 0: { | 1000 | case 0: { txt_drawf("0", x + 9, y + 10, COL_FG); } break; |
1186 | txt_drawf("0", x + 9, y + 10, COL_FG); | 1001 | case 1: { txt_drawf("14", x + 6, y + 10, COL_FG); } break; |
1187 | } break; | 1002 | case 2: { txt_drawf("28", x + 6, y + 10, COL_FG); } break; |
1188 | case 1: { | 1003 | case 3: { txt_drawf("42", x + 6, y + 10, COL_FG); } break; |
1189 | txt_drawf("14", x + 6, y + 10, COL_FG); | 1004 | case 4: { txt_drawf("57", x + 6, y + 10, COL_FG); } break; |
1190 | } break; | 1005 | case 5: { txt_drawf("71", x + 6, y + 10, COL_FG); } break; |
1191 | case 2: { | 1006 | case 6: { txt_drawf("85", x + 6, y + 10, COL_FG); } break; |
1192 | txt_drawf("28", x + 6, y + 10, COL_FG); | 1007 | case 7: { txt_drawf("100", x + 3, y + 10, COL_FG); } break; |
1193 | } break; | ||
1194 | case 3: { | ||
1195 | txt_drawf("42", x + 6, y + 10, COL_FG); | ||
1196 | } break; | ||
1197 | case 4: { | ||
1198 | txt_drawf("57", x + 6, y + 10, COL_FG); | ||
1199 | } break; | ||
1200 | case 5: { | ||
1201 | txt_drawf("71", x + 6, y + 10, COL_FG); | ||
1202 | } break; | ||
1203 | case 6: { | ||
1204 | txt_drawf("85", x + 6, y + 10, COL_FG); | ||
1205 | } break; | ||
1206 | case 7: { | ||
1207 | txt_drawf("100", x + 3, y + 10, COL_FG); | ||
1208 | } break; | ||
1209 | } | 1008 | } |
1210 | } | 1009 | } |
1211 | } | 1010 | } |
@@ -1221,27 +1020,32 @@ draw_parameters_noise(void) { | |||
1221 | void | 1020 | void |
1222 | draw_parameters(void) { | 1021 | draw_parameters(void) { |
1223 | clear_parameters(); | 1022 | clear_parameters(); |
1224 | if (input_handler != handle_trigger_selection && | 1023 | Pattern *pat = &patterns[pattern_selection_loc]; |
1225 | input_handler != handle_param_selection_sq1 && | 1024 | if (input_handler == handle_trigger_selection || |
1226 | input_handler != handle_param_selection_sq2 && | 1025 | input_handler == handle_param_selection_sq1 || |
1227 | input_handler != handle_param_selection_wave && | 1026 | input_handler == handle_param_selection_sq2 || |
1228 | input_handler != handle_param_selection_noise) { | 1027 | input_handler == handle_param_selection_wave || |
1028 | input_handler == handle_param_selection_noise) { | ||
1029 | switch (channel_selection_loc) { | ||
1030 | case 0: { draw_parameters_square(&pat->ch1.params[trig_selection_loc], true); } break; | ||
1031 | case 1: { draw_parameters_square(&pat->ch2.params[trig_selection_loc], false); } break; | ||
1032 | case 2: { draw_parameters_wave(&pat->ch3.params[trig_selection_loc]); } break; | ||
1033 | case 3: { draw_parameters_noise(&pat->ch4.params[trig_selection_loc]); } break; | ||
1034 | } | ||
1229 | return; | 1035 | return; |
1230 | } | 1036 | } |
1231 | Pattern *pat = &patterns[pattern_selection_loc]; | 1037 | if (input_handler == handle_channel_selection || |
1232 | switch (channel_selection_loc) { | 1038 | input_handler == handle_param_selection_ch1 || |
1233 | case 0: { | 1039 | input_handler == handle_param_selection_ch2 || |
1234 | draw_parameters_square(&pat->ch1.params[trig_selection_loc], true); | 1040 | input_handler == handle_param_selection_ch3 || |
1235 | } break; | 1041 | input_handler == handle_param_selection_ch4) { |
1236 | case 1: { | 1042 | switch (channel_selection_loc) { |
1237 | draw_parameters_square(&pat->ch2.params[trig_selection_loc], false); | 1043 | case 0: { draw_parameters_square(&pat->ch1.params[16], true); } break; |
1238 | } break; | 1044 | case 1: { draw_parameters_square(&pat->ch2.params[16], false); } break; |
1239 | case 2: { | 1045 | case 2: { draw_parameters_wave(&pat->ch3.params[16]); } break; |
1240 | draw_parameters_wave(); | 1046 | case 3: { draw_parameters_noise(&pat->ch4.params[16]); } break; |
1241 | } break; | 1047 | } |
1242 | case 3: { | 1048 | return; |
1243 | draw_parameters_noise(); | ||
1244 | } break; | ||
1245 | } | 1049 | } |
1246 | } | 1050 | } |
1247 | 1051 | ||