aboutsummaryrefslogtreecommitdiffstats
path: root/src/drawing.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-07-29 20:56:09 +0200
committerBad Diode <bd@badd10de.dev>2023-07-29 20:56:09 +0200
commitea2c7552dd414422bfe23117dc8440f4183611c7 (patch)
tree033c289efaddd9ea24fd5b8470e60dd986340ebd /src/drawing.c
parentbf2c48deb075133ca063c4f64099b159ff9422f6 (diff)
downloadstepper-ea2c7552dd414422bfe23117dc8440f4183611c7.tar.gz
stepper-ea2c7552dd414422bfe23117dc8440f4183611c7.zip
Add per-trig panning support
Diffstat (limited to 'src/drawing.c')
-rw-r--r--src/drawing.c72
1 files changed, 69 insertions, 3 deletions
diff --git a/src/drawing.c b/src/drawing.c
index a48a1ea..3ed294e 100644
--- a/src/drawing.c
+++ b/src/drawing.c
@@ -515,6 +515,11 @@ draw_params_cursor_wave(size_t i, u8 clr) {
515 y += PARAMS_BOX_H - 7 + PARAMS_BOX_OFFSET_Y; 515 y += PARAMS_BOX_H - 7 + PARAMS_BOX_OFFSET_Y;
516 txt_drawf_small("vol", x, y, COL_BG); 516 txt_drawf_small("vol", x, y, COL_BG);
517 } break; 517 } break;
518 case 9: {
519 x += 8 + PARAMS_BOX_OFFSET_X * 4;
520 y += PARAMS_BOX_H - 7 + PARAMS_BOX_OFFSET_Y;
521 txt_drawf_small("pan", x, y, COL_BG);
522 } break;
518 default: break; 523 default: break;
519 } 524 }
520 } 525 }
@@ -563,6 +568,11 @@ draw_params_cursor_noise(size_t i, u8 clr) {
563 y += PARAMS_BOX_H - 7; 568 y += PARAMS_BOX_H - 7;
564 txt_drawf_small("prob", x, y, COL_BG); 569 txt_drawf_small("prob", x, y, COL_BG);
565 } break; 570 } break;
571 case 9: {
572 x += 8 + PARAMS_BOX_OFFSET_X * 4;
573 y += PARAMS_BOX_H - 7 + PARAMS_BOX_OFFSET_Y;
574 txt_drawf_small("pan", x, y, COL_BG);
575 } break;
566 default: break; 576 default: break;
567 } 577 }
568 } 578 }
@@ -626,6 +636,11 @@ draw_params_cursor_square(size_t i, u8 clr) {
626 y += PARAMS_BOX_H - 7 + PARAMS_BOX_OFFSET_Y; 636 y += PARAMS_BOX_H - 7 + PARAMS_BOX_OFFSET_Y;
627 txt_drawf_small("dir", x, y, COL_BG); 637 txt_drawf_small("dir", x, y, COL_BG);
628 } break; 638 } break;
639 case 9: {
640 x += 8 + PARAMS_BOX_OFFSET_X * 4;
641 y += PARAMS_BOX_H - 7 + PARAMS_BOX_OFFSET_Y;
642 txt_drawf_small("pan", x, y, COL_BG);
643 } break;
629 default: break; 644 default: break;
630 } 645 }
631 } 646 }
@@ -710,6 +725,33 @@ draw_prob(u8 prob, u8 clr) {
710 } 725 }
711} 726}
712 727
728void
729draw_panning(s8 pan, u8 clr) {
730 switch (settings.sync) {
731 case SYNC_OUT_LINK_AUDIO_4:
732 case SYNC_OUT_LINK_AUDIO_8:
733 case SYNC_OUT_LINK_AUDIO_16:
734 case SYNC_OUT_AUDIO_4:
735 case SYNC_OUT_AUDIO_8:
736 case SYNC_OUT_AUDIO_16: { clr = COL_OFF; } break;
737 default: break;
738 }
739 size_t x = PARAMS_START_X + PARAMS_BOX_OFFSET_X * 4 + 3;
740 size_t y = PARAMS_START_Y + PARAMS_BOX_OFFSET_Y + 5;
741 switch (pan) {
742 case -1: {
743 txt_drawf("L", x + 9, y, clr);
744 } break;
745 case 0: {
746 txt_drawf("MID", x + 3, y, clr);
747 } break;
748 case 1: {
749 txt_drawf("R", x + 9, y, clr);
750 } break;
751 default: break;
752 }
753}
754
713IWRAM_CODE 755IWRAM_CODE
714void 756void
715draw_parameters_wave(ChannelWaveParams *params, bool global) { 757draw_parameters_wave(ChannelWaveParams *params, bool global) {
@@ -731,6 +773,9 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
731 // Trig probability. 773 // Trig probability.
732 draw_prob(params->prob, col_fg); 774 draw_prob(params->prob, col_fg);
733 775
776 // Trig pannning.
777 draw_panning(params->pan, col_fg);
778
734 // Mode selection. 779 // Mode selection.
735 { 780 {
736 size_t x = PARAMS_START_X; 781 size_t x = PARAMS_START_X;
@@ -782,13 +827,13 @@ draw_parameters_wave(ChannelWaveParams *params, bool global) {
782 y += PARAMS_BOX_OFFSET_Y; 827 y += PARAMS_BOX_OFFSET_Y;
783 txt_drawf_small("mode", x + 6 + PARAMS_BOX_OFFSET_X * 0, y + PARAMS_BOX_H - 7, col_fg); 828 txt_drawf_small("mode", x + 6 + PARAMS_BOX_OFFSET_X * 0, y + PARAMS_BOX_H - 7, col_fg);
784 txt_drawf_small("vol", x + 8 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg); 829 txt_drawf_small("vol", x + 8 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg);
830 txt_drawf_small("pan", x + 8 + PARAMS_BOX_OFFSET_X * 4, y + PARAMS_BOX_H - 7, col_fg);
785 } 831 }
786 832
787 // Empty spacers. 833 // Empty spacers.
788 { 834 {
789 draw_param_stub(7, COL_OFF); 835 draw_param_stub(7, COL_OFF);
790 draw_param_stub(8, COL_OFF); 836 draw_param_stub(8, COL_OFF);
791 draw_param_stub(9, COL_OFF);
792 } 837 }
793} 838}
794 839
@@ -877,6 +922,9 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) {
877 // Trig probability. 922 // Trig probability.
878 draw_prob(params->prob, col_fg); 923 draw_prob(params->prob, col_fg);
879 924
925 // Trig pannning.
926 draw_panning(params->pan, col_fg);
927
880 // Sweep. 928 // Sweep.
881 if (sweep) { 929 if (sweep) {
882 size_t x = PARAMS_START_X; 930 size_t x = PARAMS_START_X;
@@ -942,6 +990,7 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) {
942 txt_drawf_small("time", x + 6 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg); 990 txt_drawf_small("time", x + 6 + PARAMS_BOX_OFFSET_X * 1, y + PARAMS_BOX_H - 7, col_fg);
943 txt_drawf_small("dir", x + 8 + PARAMS_BOX_OFFSET_X * 2, y + PARAMS_BOX_H - 7, col_fg); 991 txt_drawf_small("dir", x + 8 + PARAMS_BOX_OFFSET_X * 2, y + PARAMS_BOX_H - 7, col_fg);
944 } 992 }
993 txt_drawf_small("pan", x + 8 + PARAMS_BOX_OFFSET_X * 4, y + PARAMS_BOX_H - 7, col_fg);
945 } 994 }
946 995
947 // Empty spacers. 996 // Empty spacers.
@@ -952,7 +1001,6 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep, bool global) {
952 draw_param_stub(7, COL_OFF); 1001 draw_param_stub(7, COL_OFF);
953 } 1002 }
954 draw_param_stub(8, COL_OFF); 1003 draw_param_stub(8, COL_OFF);
955 draw_param_stub(9, COL_OFF);
956 } 1004 }
957} 1005}
958 1006
@@ -996,6 +1044,9 @@ draw_parameters_noise(ChannelNoiseParams* params, bool global) {
996 // Trig probability. 1044 // Trig probability.
997 draw_prob(params->prob, col_fg); 1045 draw_prob(params->prob, col_fg);
998 1046
1047 // Trig pannning.
1048 draw_panning(params->pan, col_fg);
1049
999 // Labels. 1050 // Labels.
1000 { 1051 {
1001 size_t x = PARAMS_START_X; 1052 size_t x = PARAMS_START_X;
@@ -1005,6 +1056,8 @@ draw_parameters_noise(ChannelNoiseParams* params, bool global) {
1005 txt_drawf_small("time", x + 6 + PARAMS_BOX_OFFSET_X * 2, y + PARAMS_BOX_H - 7, col_fg); 1056 txt_drawf_small("time", x + 6 + PARAMS_BOX_OFFSET_X * 2, y + PARAMS_BOX_H - 7, col_fg);
1006 txt_drawf_small("dir", x + 8 + PARAMS_BOX_OFFSET_X * 3, y + PARAMS_BOX_H - 7, col_fg); 1057 txt_drawf_small("dir", x + 8 + PARAMS_BOX_OFFSET_X * 3, y + PARAMS_BOX_H - 7, col_fg);
1007 txt_drawf_small("prob", x + 6 + PARAMS_BOX_OFFSET_X * 4, y + PARAMS_BOX_H - 7, col_fg); 1058 txt_drawf_small("prob", x + 6 + PARAMS_BOX_OFFSET_X * 4, y + PARAMS_BOX_H - 7, col_fg);
1059 y += PARAMS_BOX_OFFSET_Y;
1060 txt_drawf_small("pan", x + 8 + PARAMS_BOX_OFFSET_X * 4, y + PARAMS_BOX_H - 7, col_fg);
1008 } 1061 }
1009 1062
1010 // Empty spacers. 1063 // Empty spacers.
@@ -1013,7 +1066,6 @@ draw_parameters_noise(ChannelNoiseParams* params, bool global) {
1013 draw_param_stub(6, COL_OFF); 1066 draw_param_stub(6, COL_OFF);
1014 draw_param_stub(7, COL_OFF); 1067 draw_param_stub(7, COL_OFF);
1015 draw_param_stub(8, COL_OFF); 1068 draw_param_stub(8, COL_OFF);
1016 draw_param_stub(9, COL_OFF);
1017 } 1069 }
1018} 1070}
1019 1071
@@ -1199,6 +1251,16 @@ draw_notif_param_edit_prob(u8 prob, u8 x, u8 y, u8 color) {
1199} 1251}
1200 1252
1201void 1253void
1254draw_notif_param_edit_pan(s8 pan, u8 x, u8 y, u8 color) {
1255 txt_drawf_small("panning: ", x + 2, y + 1, color);
1256 switch (pan) {
1257 case -1: { txt_drawf_small("left", x + 2 + 9 * 4, y + 1, color); } break;
1258 case 0: { txt_drawf_small("middle", x + 2 + 9 * 4, y + 1, color); } break;
1259 case 1: { txt_drawf_small("right", x + 2 + 9 * 4, y + 1, color); } break;
1260 }
1261}
1262
1263void
1202draw_notif_param_env_vol(u8 vol, u8 x, u8 y, u8 color) { 1264draw_notif_param_env_vol(u8 vol, u8 x, u8 y, u8 color) {
1203 txt_drawf_small("VOL: ", x + 2, y + 1, color); 1265 txt_drawf_small("VOL: ", x + 2, y + 1, color);
1204 switch (vol) { 1266 switch (vol) {
@@ -1324,6 +1386,7 @@ draw_notif_bar() {
1324 case 1: { txt_drawf_small("down", x0 + 2 + 17 * 4, y0 + 1, color); } break; 1386 case 1: { txt_drawf_small("down", x0 + 2 + 17 * 4, y0 + 1, color); } break;
1325 } 1387 }
1326 } break; 1388 } break;
1389 case 9: { draw_notif_param_edit_pan(params->pan, x0, y0, color); } break;
1327 } 1390 }
1328 return; 1391 return;
1329 } 1392 }
@@ -1351,6 +1414,7 @@ draw_notif_bar() {
1351 case 2: { draw_notif_param_env_time(params->env_time, x0, y0, color); } break; 1414 case 2: { draw_notif_param_env_time(params->env_time, x0, y0, color); } break;
1352 case 3: { draw_notif_param_env_dir(params->env_direction, x0, y0, color); } break; 1415 case 3: { draw_notif_param_env_dir(params->env_direction, x0, y0, color); } break;
1353 case 4: { draw_notif_param_edit_prob(params->prob, x0, y0, color); } break; 1416 case 4: { draw_notif_param_edit_prob(params->prob, x0, y0, color); } break;
1417 case 9: { draw_notif_param_edit_pan(params->pan, x0, y0, color); } break;
1354 } 1418 }
1355 return; 1419 return;
1356 } 1420 }
@@ -1425,6 +1489,7 @@ draw_notif_bar() {
1425 case 4: { txt_drawf_small("100", x0 + 2 + 8 * 4, y0 + 1, color); txt_drawc_small('%', x0 + 2 + 11 * 4, y0 + 1, color); } break; 1489 case 4: { txt_drawf_small("100", x0 + 2 + 8 * 4, y0 + 1, color); txt_drawc_small('%', x0 + 2 + 11 * 4, y0 + 1, color); } break;
1426 } 1490 }
1427 } break; 1491 } break;
1492 case 9: { draw_notif_param_edit_pan(params->pan, x0, y0, color); } break;
1428 } 1493 }
1429 return; 1494 return;
1430 } 1495 }
@@ -1449,6 +1514,7 @@ draw_notif_bar() {
1449 case 2: { draw_notif_param_env_time(params->env_time, x0, y0, color); } break; 1514 case 2: { draw_notif_param_env_time(params->env_time, x0, y0, color); } break;
1450 case 3: { draw_notif_param_env_dir(params->env_direction, x0, y0, color); } break; 1515 case 3: { draw_notif_param_env_dir(params->env_direction, x0, y0, color); } break;
1451 case 4: { draw_notif_param_edit_prob(params->prob, x0, y0, color); } break; 1516 case 4: { draw_notif_param_edit_prob(params->prob, x0, y0, color); } break;
1517 case 9: { draw_notif_param_edit_pan(params->pan, x0, y0, color); } break;
1452 } 1518 }
1453 return; 1519 return;
1454 } 1520 }