diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sequencer.c | 485 |
1 files changed, 260 insertions, 225 deletions
diff --git a/src/sequencer.c b/src/sequencer.c index b935bdd..d69c450 100644 --- a/src/sequencer.c +++ b/src/sequencer.c | |||
@@ -944,60 +944,22 @@ draw_params_cursor_wave(size_t i, u8 clr) { | |||
944 | 944 | ||
945 | void | 945 | void |
946 | draw_params_cursor_noise(size_t i, u8 clr) { | 946 | draw_params_cursor_noise(size_t i, u8 clr) { |
947 | // TODO: Handle this. | 947 | u8 x_positions[] = { |
948 | (void)i; | 948 | 0, // Bit mode. |
949 | (void)clr; | 949 | 31, // Env. Vol. |
950 | // u8 x_positions[] = { | 950 | 59, // Env. Direction. |
951 | // // 32 half bytes (Wave A). | 951 | 87, // Env. Time. |
952 | // 0, 4, 8, 12, 16, 20, 24, 28, | 952 | }; |
953 | // 34, 38, 42, 46, 50, 54, 58, 62, | 953 | u8 y_positions[] = { |
954 | // 0, 4, 8, 12, 16, 20, 24, 28, | 954 | 20, // Bit mode. |
955 | // 34, 38, 42, 46, 50, 54, 58, 62, | 955 | 20, // Env. Vol. |
956 | // // 32 half bytes (Wave B). | 956 | 20, // Env. Direction. |
957 | // 70, 74, 78, 82, 86, 90, 94, 98, | 957 | 20, // Env. Time. |
958 | // 104, 108, 112, 116, 120, 124, 128, 132, | 958 | }; |
959 | // 70, 74, 78, 82, 86, 90, 94, 98, | 959 | size_t cursor_length = 24; |
960 | // 104, 108, 112, 116, 120, 124, 128, 132, | 960 | size_t x = PARAMS_START_X + x_positions[i] + 30; |
961 | // // Default wave A. | 961 | size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; |
962 | // 1, 18, 35, 52, | 962 | draw_line(x, y, x + cursor_length, y, clr); |
963 | // // Default wave B. | ||
964 | // 71, 88, 105, 122, | ||
965 | // // Mode selection. | ||
966 | // 141, | ||
967 | // // Volume selection. | ||
968 | // 141, | ||
969 | // }; | ||
970 | // u8 y_positions[] = { | ||
971 | // // 32 half bytes (Wave A) | ||
972 | // 0, 0, 0, 0, 0, 0, 0, 0, | ||
973 | // 0, 0, 0, 0, 0, 0, 0, 0, | ||
974 | // 8, 8, 8, 8, 8, 8, 8, 8, | ||
975 | // 8, 8, 8, 8, 8, 8, 8, 8, | ||
976 | // // 32 half bytes (Wave B) | ||
977 | // 0, 0, 0, 0, 0, 0, 0, 0, | ||
978 | // 0, 0, 0, 0, 0, 0, 0, 0, | ||
979 | // 8, 8, 8, 8, 8, 8, 8, 8, | ||
980 | // 8, 8, 8, 8, 8, 8, 8, 8, | ||
981 | // // Default wave A. | ||
982 | // 20, 20, 20, 20, | ||
983 | // // Default wave B. | ||
984 | // 20, 20, 20, 20, | ||
985 | // // Mode selection. | ||
986 | // 20, | ||
987 | // // Volume selection. | ||
988 | // 0, | ||
989 | // }; | ||
990 | // size_t cursor_length = 0; | ||
991 | // if (i < 64) { | ||
992 | // cursor_length = 4; | ||
993 | // } else if (i < 72) { | ||
994 | // cursor_length = 13; | ||
995 | // } else { | ||
996 | // cursor_length = 30; | ||
997 | // } | ||
998 | // size_t x = PARAMS_START_X + x_positions[i] - 1; | ||
999 | // size_t y = PARAMS_START_Y + PARAMS_H - 23 + y_positions[i]; | ||
1000 | // draw_line(x, y, x + cursor_length, y, clr); | ||
1001 | } | 963 | } |
1002 | 964 | ||
1003 | void | 965 | void |
@@ -1542,6 +1504,201 @@ draw_parameters_square(ChannelSquareParams *params, bool sweep) { | |||
1542 | } | 1504 | } |
1543 | 1505 | ||
1544 | void | 1506 | void |
1507 | draw_parameters_noise(void) { | ||
1508 | size_t x_offset = 30; | ||
1509 | Pattern *pat = &patterns[pattern_selection_loc]; | ||
1510 | ChannelNoiseParams *params = &pat->ch4.params[trig_selection_loc]; | ||
1511 | |||
1512 | // Bit mode. | ||
1513 | { | ||
1514 | // Param box. | ||
1515 | { | ||
1516 | size_t x = PARAMS_START_X + x_offset; | ||
1517 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | ||
1518 | draw_line(x, y + 7, x + 2, y + 7, COL_FG); | ||
1519 | draw_line(x + 22, y + 7, x + 24, y + 7, COL_FG); | ||
1520 | draw_line(x, y + 8, x, y + 19, COL_FG); | ||
1521 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | ||
1522 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | ||
1523 | txt_drawf_small("mode", x + 3, y + 3, 4, COL_FG); | ||
1524 | |||
1525 | switch (params->bit_mode) { | ||
1526 | case 0: { | ||
1527 | txt_drawf("A", x + 9, y + 10, 6, COL_FG); | ||
1528 | } break; | ||
1529 | case 1: { | ||
1530 | txt_drawf("B", x + 9, y + 10, 6, COL_FG); | ||
1531 | } break; | ||
1532 | } | ||
1533 | } | ||
1534 | } | ||
1535 | |||
1536 | // Envelope. | ||
1537 | { | ||
1538 | // Env. drawing. | ||
1539 | { | ||
1540 | // Bounding box. | ||
1541 | { | ||
1542 | size_t x0 = PARAMS_START_X + 31 + x_offset; | ||
1543 | size_t y0 = PARAMS_START_Y + PARAMS_H - 47; | ||
1544 | size_t x1 = x0 + 79; | ||
1545 | size_t y1 = y0 + 21; | ||
1546 | draw_rect(x0, y0, x1, y1, COL_CYAN); | ||
1547 | } | ||
1548 | |||
1549 | size_t x = PARAMS_START_X + 42 + x_offset; | ||
1550 | size_t y = PARAMS_START_Y + PARAMS_H - 44; | ||
1551 | size_t x0 = x; | ||
1552 | size_t y0 = y + 15 - params->env_volume; | ||
1553 | size_t x1 = x + 8 * params->env_time; | ||
1554 | size_t y1 = params->env_direction == 0 ? y + 15 : y; | ||
1555 | size_t x2 = x + 8 * 7 + 1; | ||
1556 | size_t y2 = y1; | ||
1557 | |||
1558 | // Env. | ||
1559 | if (params->env_time == 0) { | ||
1560 | draw_line(x1, y0, x2, y0, COL_CYAN); | ||
1561 | } else { | ||
1562 | draw_line(x0, y0, x1, y1, COL_CYAN); | ||
1563 | draw_line(x1, y1, x2, y2, COL_CYAN); | ||
1564 | } | ||
1565 | } | ||
1566 | |||
1567 | // Env. volume. | ||
1568 | { | ||
1569 | size_t x = PARAMS_START_X + 31 + x_offset; | ||
1570 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | ||
1571 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | ||
1572 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | ||
1573 | draw_line(x, y + 8, x, y + 19, COL_FG); | ||
1574 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | ||
1575 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | ||
1576 | txt_drawf_small("vol", x + 5, y + 3, 4, COL_FG); | ||
1577 | |||
1578 | switch (params->env_volume) { | ||
1579 | case 0: { | ||
1580 | txt_drawf("0", x + 9, y + 10, 6, COL_FG); | ||
1581 | } break; | ||
1582 | case 1: { | ||
1583 | txt_drawf("6", x + 9, y + 10, 6, COL_FG); | ||
1584 | } break; | ||
1585 | case 2: { | ||
1586 | txt_drawf("13", x + 6, y + 10, 6, COL_FG); | ||
1587 | } break; | ||
1588 | case 3: { | ||
1589 | txt_drawf("20", x + 6, y + 10, 6, COL_FG); | ||
1590 | } break; | ||
1591 | case 4: { | ||
1592 | txt_drawf("26", x + 6, y + 10, 6, COL_FG); | ||
1593 | } break; | ||
1594 | case 5: { | ||
1595 | txt_drawf("33", x + 6, y + 10, 6, COL_FG); | ||
1596 | } break; | ||
1597 | case 6: { | ||
1598 | txt_drawf("40", x + 6, y + 10, 6, COL_FG); | ||
1599 | } break; | ||
1600 | case 7: { | ||
1601 | txt_drawf("46", x + 6, y + 10, 6, COL_FG); | ||
1602 | } break; | ||
1603 | case 8: { | ||
1604 | txt_drawf("53", x + 6, y + 10, 6, COL_FG); | ||
1605 | } break; | ||
1606 | case 9: { | ||
1607 | txt_drawf("60", x + 6, y + 10, 6, COL_FG); | ||
1608 | } break; | ||
1609 | case 10: { | ||
1610 | txt_drawf("66", x + 6, y + 10, 6, COL_FG); | ||
1611 | } break; | ||
1612 | case 11: { | ||
1613 | txt_drawf("73", x + 6, y + 10, 6, COL_FG); | ||
1614 | } break; | ||
1615 | case 12: { | ||
1616 | txt_drawf("80", x + 6, y + 10, 6, COL_FG); | ||
1617 | } break; | ||
1618 | case 13: { | ||
1619 | txt_drawf("86", x + 6, y + 10, 6, COL_FG); | ||
1620 | } break; | ||
1621 | case 14: { | ||
1622 | txt_drawf("93", x + 6, y + 10, 6, COL_FG); | ||
1623 | } break; | ||
1624 | case 15: { | ||
1625 | txt_drawf("100", x + 3, y + 10, 6, COL_FG); | ||
1626 | } break; | ||
1627 | } | ||
1628 | } | ||
1629 | |||
1630 | // Env. direction | ||
1631 | { | ||
1632 | size_t x = PARAMS_START_X + 59 + x_offset; | ||
1633 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | ||
1634 | draw_line(x, y + 7, x + 4, y + 7, COL_FG); | ||
1635 | draw_line(x + 20, y + 7, x + 24, y + 7, COL_FG); | ||
1636 | draw_line(x, y + 8, x, y + 19, COL_FG); | ||
1637 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | ||
1638 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | ||
1639 | txt_drawf_small("dir", x + 5, y + 3, 4, COL_FG); | ||
1640 | |||
1641 | char arr_up[2] = { 0x19, 0 }; | ||
1642 | char arr_down[2] = { 0x18, 0 }; | ||
1643 | switch (params->env_direction) { | ||
1644 | case 0: { | ||
1645 | txt_drawf(arr_up, x + 9, y + 11, 6, COL_FG); | ||
1646 | } break; | ||
1647 | case 1: { | ||
1648 | txt_drawf(arr_down, x + 9, y + 11, 6, COL_FG); | ||
1649 | } break; | ||
1650 | } | ||
1651 | } | ||
1652 | |||
1653 | // Env. time. | ||
1654 | { | ||
1655 | size_t x = PARAMS_START_X + 87 + x_offset; | ||
1656 | size_t y = PARAMS_START_Y + PARAMS_H - 25; | ||
1657 | draw_line(x, y + 7, x + 2, y + 7, COL_FG); | ||
1658 | draw_line(x + 22, y + 7, x + 24, y + 7, COL_FG); | ||
1659 | draw_line(x, y + 8, x, y + 19, COL_FG); | ||
1660 | draw_line(x + 24, y + 8, x + 24, y + 19, COL_FG); | ||
1661 | draw_line(x, y + 20, x + 24, y + 20, COL_FG); | ||
1662 | txt_drawf_small("time", x + 3, y + 3, 4, COL_FG); | ||
1663 | |||
1664 | switch (params->env_time) { | ||
1665 | case 0: { | ||
1666 | txt_drawf("0", x + 9, y + 10, 6, COL_FG); | ||
1667 | } break; | ||
1668 | case 1: { | ||
1669 | txt_drawf("14", x + 6, y + 10, 6, COL_FG); | ||
1670 | } break; | ||
1671 | case 2: { | ||
1672 | txt_drawf("28", x + 6, y + 10, 6, COL_FG); | ||
1673 | } break; | ||
1674 | case 3: { | ||
1675 | txt_drawf("42", x + 6, y + 10, 6, COL_FG); | ||
1676 | } break; | ||
1677 | case 4: { | ||
1678 | txt_drawf("57", x + 6, y + 10, 6, COL_FG); | ||
1679 | } break; | ||
1680 | case 5: { | ||
1681 | txt_drawf("71", x + 6, y + 10, 6, COL_FG); | ||
1682 | } break; | ||
1683 | case 6: { | ||
1684 | txt_drawf("85", x + 6, y + 10, 6, COL_FG); | ||
1685 | } break; | ||
1686 | case 7: { | ||
1687 | txt_drawf("100", x + 3, y + 10, 6, COL_FG); | ||
1688 | } break; | ||
1689 | } | ||
1690 | } | ||
1691 | } | ||
1692 | |||
1693 | // Labels. | ||
1694 | { | ||
1695 | size_t x = PARAMS_START_X + x_offset; | ||
1696 | size_t y = PARAMS_START_Y + PARAMS_H - 45; | ||
1697 | txt_drawf_small("envelope", x + 54, y - 12, 4, COL_FG); | ||
1698 | } | ||
1699 | } | ||
1700 | |||
1701 | void | ||
1545 | draw_parameters(void) { | 1702 | draw_parameters(void) { |
1546 | clear_parameters(); | 1703 | clear_parameters(); |
1547 | Pattern *pat = &patterns[pattern_selection_loc]; | 1704 | Pattern *pat = &patterns[pattern_selection_loc]; |
@@ -1556,6 +1713,7 @@ draw_parameters(void) { | |||
1556 | draw_parameters_wave(); | 1713 | draw_parameters_wave(); |
1557 | } break; | 1714 | } break; |
1558 | case 3: { | 1715 | case 3: { |
1716 | draw_parameters_noise(); | ||
1559 | } break; | 1717 | } break; |
1560 | } | 1718 | } |
1561 | } | 1719 | } |
@@ -1679,7 +1837,7 @@ irq_timer(void) { | |||
1679 | SOUND_NOISE_FREQ = SOUND_FREQ_RESET | 1837 | SOUND_NOISE_FREQ = SOUND_FREQ_RESET |
1680 | | SOUND_NOISE_PRESTEP_FREQ(pre_freq[trig->note]) | 1838 | | SOUND_NOISE_PRESTEP_FREQ(pre_freq[trig->note]) |
1681 | | SOUND_NOISE_DIV_FREQ(div_freq[trig->note]) | 1839 | | SOUND_NOISE_DIV_FREQ(div_freq[trig->note]) |
1682 | | SOUND_NOISE_COUNTER_STAGE(1) | 1840 | | SOUND_NOISE_COUNTER_STAGE(params->bit_mode) |
1683 | | SOUND_NOISE_TIMED_MODE(0); | 1841 | | SOUND_NOISE_TIMED_MODE(0); |
1684 | } else { | 1842 | } else { |
1685 | SOUND_NOISE_FREQ = 0; | 1843 | SOUND_NOISE_FREQ = 0; |
@@ -2296,176 +2454,53 @@ handle_param_selection_wave(void) { | |||
2296 | void | 2454 | void |
2297 | handle_param_selection_noise(void) { | 2455 | handle_param_selection_noise(void) { |
2298 | // Go back to trigger selection. | 2456 | // Go back to trigger selection. |
2299 | // if (key_tap(KEY_A)) { | 2457 | if (key_tap(KEY_A)) { |
2300 | // draw_params_cursor(param_selection_loc, COL_BG); | 2458 | draw_params_cursor(param_selection_loc, COL_BG); |
2301 | // input_handler = handle_trigger_selection; | 2459 | input_handler = handle_trigger_selection; |
2302 | // draw_trig_cursor(trig_selection_loc, COL_CURSOR); | 2460 | draw_trig_cursor(trig_selection_loc, COL_CURSOR); |
2303 | // } | 2461 | } |
2304 | 2462 | ||
2305 | // // Cursor movement. | 2463 | // Cursor movement. |
2306 | // if (key_tap(KEY_LEFT) || key_tap(KEY_RIGHT)) { | 2464 | if (key_tap(KEY_LEFT) || key_tap(KEY_RIGHT)) { |
2307 | // int inc = 0; | 2465 | int inc = 0; |
2308 | // int loc = param_selection_loc; | 2466 | int loc = param_selection_loc; |
2309 | // if (key_tap(KEY_RIGHT)) { | 2467 | if (key_tap(KEY_RIGHT)) { |
2310 | // if (loc == 15 || loc == 31) { | 2468 | inc = 1; |
2311 | // inc = 17; | 2469 | } else { |
2312 | // } else if (loc == 47) { | 2470 | inc = -1; |
2313 | // inc = 26; | 2471 | } |
2314 | // } else if (loc == 63) { | 2472 | draw_params_cursor(param_selection_loc, COL_BG); |
2315 | // inc = 9; | 2473 | param_selection_loc = CLAMP(loc + inc, 0, 3); |
2316 | // } else if (loc != 47 && loc != 63 && loc < 72) { | 2474 | draw_params_cursor(param_selection_loc, COL_CURSOR); |
2317 | // inc = 1; | 2475 | } |
2318 | // } | 2476 | |
2319 | // } else { | 2477 | // Adjust parameter. |
2320 | // if (loc == 32 || loc == 48) { | 2478 | if (key_tap(KEY_R) || key_tap(KEY_L)) { |
2321 | // inc = -17; | 2479 | int inc; |
2322 | // } else if (loc == 73) { | 2480 | if (key_tap(KEY_L)) { |
2323 | // inc = -26; | 2481 | inc = -1; |
2324 | // } else if (loc != 16 && loc != 64) { | 2482 | } else { |
2325 | // inc = -1; | 2483 | inc = 1; |
2326 | // } | 2484 | } |
2327 | // } | 2485 | Pattern *pat = &patterns[pattern_selection_loc]; |
2328 | // draw_params_cursor(param_selection_loc, COL_BG); | 2486 | ChannelNoiseParams *params = &pat->ch4.params[trig_selection_loc]; |
2329 | // param_selection_loc = CLAMP(loc + inc, 0, 73); | 2487 | switch (param_selection_loc) { |
2330 | // draw_params_cursor(param_selection_loc, COL_CURSOR); | 2488 | case 0: { |
2331 | // } | 2489 | params->bit_mode = CLAMP(params->bit_mode + inc, 0, 1); |
2332 | // if (key_tap(KEY_UP) || key_tap(KEY_DOWN)) { | 2490 | } break; |
2333 | // int inc = 0; | 2491 | case 1: { |
2334 | // int loc = param_selection_loc; | 2492 | params->env_volume = CLAMP(params->env_volume + inc, 0, 15); |
2335 | // if (key_tap(KEY_UP)) { | 2493 | } break; |
2336 | // if ((loc >= 16 && loc < 32) || (loc >= 48 && loc < 64)) { | 2494 | case 2: { |
2337 | // inc = -16; | 2495 | params->env_direction ^= 1; |
2338 | // } else if (loc == 64) { | 2496 | } break; |
2339 | // inc = -48; | 2497 | case 3: { |
2340 | // } else if (loc == 65) { | 2498 | params->env_time = CLAMP(params->env_time + inc, 0, 7); |
2341 | // inc = -45; | 2499 | } break; |
2342 | // } else if (loc == 66) { | 2500 | } |
2343 | // inc = -42; | 2501 | draw_parameters(); |
2344 | // } else if (loc == 67) { | 2502 | draw_params_cursor(param_selection_loc, COL_CURSOR); |
2345 | // inc = -39; | 2503 | } |
2346 | // } else if (loc == 68) { | ||
2347 | // inc = -20; | ||
2348 | // } else if (loc == 69) { | ||
2349 | // inc = -17; | ||
2350 | // } else if (loc == 70) { | ||
2351 | // inc = -14; | ||
2352 | // } else if (loc == 71) { | ||
2353 | // inc = -11; | ||
2354 | // } else if (loc == 72) { | ||
2355 | // inc = 1; | ||
2356 | // } else if (loc == 73) { | ||
2357 | // inc = -1; | ||
2358 | // } | ||
2359 | // } else { | ||
2360 | // if (loc < 16 || (loc >= 32 && loc < 48)) { | ||
2361 | // inc = 16; | ||
2362 | // } else if (loc >= 16 && loc <= 19) { | ||
2363 | // inc = 48 - (loc - 16); | ||
2364 | // } else if (loc >= 20 && loc <= 23) { | ||
2365 | // inc = 45 - (loc - 20); | ||
2366 | // } else if (loc >= 24 && loc <= 27) { | ||
2367 | // inc = 42 - (loc - 24); | ||
2368 | // } else if (loc >= 28 && loc <= 31) { | ||
2369 | // inc = 39 - (loc - 28); | ||
2370 | // } else if (loc >= 48 && loc <= 51) { | ||
2371 | // inc = 20 - (loc - 48); | ||
2372 | // } else if (loc >= 52 && loc <= 55) { | ||
2373 | // inc = 17 - (loc - 52); | ||
2374 | // } else if (loc >= 56 && loc <= 59) { | ||
2375 | // inc = 14 - (loc - 56); | ||
2376 | // } else if (loc >= 60 && loc <= 63) { | ||
2377 | // inc = 11 - (loc - 60); | ||
2378 | // } else if (loc == 72) { | ||
2379 | // inc = 1; | ||
2380 | // } else if (loc == 73) { | ||
2381 | // inc = -1; | ||
2382 | // } | ||
2383 | // } | ||
2384 | // draw_params_cursor(param_selection_loc, COL_BG); | ||
2385 | // param_selection_loc = CLAMP(loc + inc, 0, 73); | ||
2386 | // draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
2387 | // } | ||
2388 | |||
2389 | // // Adjust parameter. | ||
2390 | // if (key_tap(KEY_R) || key_tap(KEY_L)) { | ||
2391 | // int odd = param_selection_loc & 0x1; | ||
2392 | // int inc; | ||
2393 | // if (key_tap(KEY_R)) { | ||
2394 | // inc = 1; | ||
2395 | // } else { | ||
2396 | // inc = -1; | ||
2397 | // } | ||
2398 | |||
2399 | // // Wave: AA BB CC DD ... | ||
2400 | // // ^^ | ||
2401 | // // |`- odd | ||
2402 | // // `-- even | ||
2403 | // if (param_selection_loc < 32) { | ||
2404 | // // Draw on wave a. | ||
2405 | // u8 byte_number = param_selection_loc / 2; | ||
2406 | // u8 *byte = &ch3.params[trig_selection_loc].wave_a; | ||
2407 | // byte += byte_number; | ||
2408 | // if (odd) { | ||
2409 | // *byte = (~0xF & *byte) | ((*byte + inc) & 0xF); | ||
2410 | // } else { | ||
2411 | // *byte = (0xF & *byte) | (((*byte >> 4) + inc) & 0xF) << 4; | ||
2412 | // } | ||
2413 | // } else if (param_selection_loc < 64){ | ||
2414 | // // Draw on wave b. | ||
2415 | // u8 byte_number = (param_selection_loc - 32) / 2; | ||
2416 | // u8 *byte = &ch3.params[trig_selection_loc].wave_b; | ||
2417 | // byte += byte_number; | ||
2418 | // if (odd) { | ||
2419 | // *byte = (~0xF & *byte) | ((*byte + inc) & 0xF); | ||
2420 | // } else { | ||
2421 | // *byte = (0xF & *byte) | (((*byte >> 4) + inc) & 0xF) << 4; | ||
2422 | // } | ||
2423 | // } else if (param_selection_loc < 72) { | ||
2424 | // // Copy default waves. | ||
2425 | // u32 *wave_a = &ch3.params[trig_selection_loc].wave_a; | ||
2426 | // u32 *wave_b = &ch3.params[trig_selection_loc].wave_b; | ||
2427 | // switch (param_selection_loc) { | ||
2428 | // case 64: { | ||
2429 | // memcpy32(wave_a, sine_wave, 16); | ||
2430 | // } break; | ||
2431 | // case 65: { | ||
2432 | // memcpy32(wave_a, saw_wave, 16); | ||
2433 | // } break; | ||
2434 | // case 66: { | ||
2435 | // memcpy32(wave_a, square_wave, 16); | ||
2436 | // } break; | ||
2437 | // case 67: { | ||
2438 | // u32 rand_wave[4] = { | ||
2439 | // rng32(), rng32(), rng32(), rng32(), | ||
2440 | // }; | ||
2441 | // memcpy32(wave_a, rand_wave, 16); | ||
2442 | // } break; | ||
2443 | // case 68: { | ||
2444 | // memcpy32(wave_b, sine_wave, 16); | ||
2445 | // } break; | ||
2446 | // case 69: { | ||
2447 | // memcpy32(wave_b, saw_wave, 16); | ||
2448 | // } break; | ||
2449 | // case 70: { | ||
2450 | // memcpy32(wave_b, square_wave, 16); | ||
2451 | // } break; | ||
2452 | // case 71: { | ||
2453 | // u32 rand_wave[4] = { | ||
2454 | // rng32(), rng32(), rng32(), rng32(), | ||
2455 | // }; | ||
2456 | // memcpy32(wave_b, rand_wave, 16); | ||
2457 | // } break; | ||
2458 | // } | ||
2459 | // } else if (param_selection_loc == 72) { | ||
2460 | // u8 *wave_mode = &ch3.params[trig_selection_loc].wave_mode; | ||
2461 | // *wave_mode = CLAMP(*wave_mode + inc, 0, 2); | ||
2462 | // } else if (param_selection_loc == 73) { | ||
2463 | // u8 *wave_volume = &ch3.params[trig_selection_loc].wave_volume; | ||
2464 | // *wave_volume = CLAMP(*wave_volume + inc, 0, 4); | ||
2465 | // } | ||
2466 | // draw_parameters(); | ||
2467 | // draw_params_cursor(param_selection_loc, COL_CURSOR); | ||
2468 | // } | ||
2469 | } | 2504 | } |
2470 | 2505 | ||
2471 | void | 2506 | void |