aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-04-04 12:18:04 +0200
committerBad Diode <bd@badd10de.dev>2023-04-04 12:18:04 +0200
commit10f51ece3e266c98ac1d3646e890a1cb616677a0 (patch)
tree89d5ff0e7519d7872095ca4454a0cf4657907258
parent01a0849d23c413f9328e2a9444dc38a4d7606b36 (diff)
downloadstepper-10f51ece3e266c98ac1d3646e890a1cb616677a0.tar.gz
stepper-10f51ece3e266c98ac1d3646e890a1cb616677a0.zip
Fix some bugs with bank selection
-rw-r--r--src/sequencer.c93
1 files changed, 39 insertions, 54 deletions
diff --git a/src/sequencer.c b/src/sequencer.c
index 3b77adb..b935bdd 100644
--- a/src/sequencer.c
+++ b/src/sequencer.c
@@ -1796,6 +1796,22 @@ handle_channel_selection(void) {
1796 1796
1797void 1797void
1798stop_playing(void) { 1798stop_playing(void) {
1799 play_status = 0;
1800 if (step_counter != 0) {
1801 draw_current_step(COL_BG);
1802 }
1803 step_counter = 0;
1804 TIMER_CTRL_0 = 0;
1805 SOUND_SQUARE1_CTRL = 0;
1806 SOUND_SQUARE2_CTRL = 0;
1807 SOUND_WAVE_CTRL = 0;
1808 SOUND_NOISE_CTRL = 0;
1809 draw_current_step(COL_RED);
1810 draw_play();
1811}
1812
1813void
1814toggle_playing(void) {
1799 play_status ^= 1; 1815 play_status ^= 1;
1800 if (step_counter != 0) { 1816 if (step_counter != 0) {
1801 draw_current_step(COL_BG); 1817 draw_current_step(COL_BG);
@@ -1830,6 +1846,23 @@ pause_playing(void) {
1830} 1846}
1831 1847
1832void 1848void
1849select_bank(int i) {
1850 stop_playing();
1851 save_bank(current_bank);
1852 metadata.current_pattern = current_pattern;
1853 metadata.current_bank = i;
1854 sram_write(&metadata, 0, sizeof(Metadata));
1855 if (current_bank != i) {
1856 load_bank(i);
1857 }
1858 current_bank = i;
1859 draw_pattern_buttons();
1860 draw_triggers();
1861 draw_channels();
1862 draw_bank_buttons();
1863}
1864
1865void
1833handle_right_col_selection(void) { 1866handle_right_col_selection(void) {
1834 if (key_tap(KEY_LEFT)) { 1867 if (key_tap(KEY_LEFT)) {
1835 input_handler = handle_trigger_selection; 1868 input_handler = handle_trigger_selection;
@@ -1888,70 +1921,22 @@ handle_right_col_selection(void) {
1888 } else if (key_tap(KEY_B)) { 1921 } else if (key_tap(KEY_B)) {
1889 switch (right_col_selection_loc) { 1922 switch (right_col_selection_loc) {
1890 case R_COL_STOP: { 1923 case R_COL_STOP: {
1891 stop_playing(); 1924 toggle_playing();
1892 } break; 1925 } break;
1893 case R_COL_PLAY: { 1926 case R_COL_PLAY: {
1894 pause_playing(); 1927 pause_playing();
1895 } break; 1928 } break;
1896 case R_COL_BANK_A: { 1929 case R_COL_BANK_A: {
1897 stop_playing(); 1930 select_bank(0);
1898 save_bank(current_bank);
1899 metadata.current_pattern = current_pattern;
1900 metadata.current_bank = 0;
1901 sram_write(&metadata, 0, sizeof(Metadata));
1902 if (current_bank != 0) {
1903 load_bank(0);
1904 }
1905 current_bank = 0;
1906 draw_pattern_buttons();
1907 draw_triggers();
1908 draw_channels();
1909 draw_bank_buttons();
1910 } break; 1931 } break;
1911 case R_COL_BANK_B: { 1932 case R_COL_BANK_B: {
1912 stop_playing(); 1933 select_bank(1);
1913 save_bank(current_bank);
1914 metadata.current_pattern = current_pattern;
1915 metadata.current_bank = 1;
1916 sram_write(&metadata, 0, sizeof(Metadata));
1917 if (current_bank != 1) {
1918 load_bank(1);
1919 }
1920 current_bank = 1;
1921 draw_pattern_buttons();
1922 draw_triggers();
1923 draw_channels();
1924 draw_bank_buttons();
1925 } break; 1934 } break;
1926 case R_COL_BANK_C: { 1935 case R_COL_BANK_C: {
1927 stop_playing(); 1936 select_bank(2);
1928 save_bank(current_bank);
1929 metadata.current_pattern = current_pattern;
1930 metadata.current_bank = 2;
1931 sram_write(&metadata, 0, sizeof(Metadata));
1932 if (current_bank != 2) {
1933 load_bank(2);
1934 }
1935 current_bank = 2;
1936 draw_pattern_buttons();
1937 draw_triggers();
1938 draw_channels();
1939 draw_bank_buttons();
1940 } break; 1937 } break;
1941 case R_COL_BANK_D: { 1938 case R_COL_BANK_D: {
1942 stop_playing(); 1939 select_bank(3);
1943 save_bank(current_bank);
1944 metadata.current_pattern = current_pattern;
1945 metadata.current_bank = 3;
1946 sram_write(&metadata, 0, sizeof(Metadata));
1947 if (current_bank != 3) {
1948 load_bank(3);
1949 }
1950 current_bank = 3;
1951 draw_pattern_buttons();
1952 draw_triggers();
1953 draw_channels();
1954 draw_bank_buttons();
1955 } break; 1940 } break;
1956 } 1941 }
1957 } 1942 }
@@ -2587,7 +2572,7 @@ handle_sequencer_input(void) {
2587 2572
2588 if (key_tap(KEY_START)) { 2573 if (key_tap(KEY_START)) {
2589 // Stop the sequencer or start playing from the beginning. 2574 // Stop the sequencer or start playing from the beginning.
2590 stop_playing(); 2575 toggle_playing();
2591 } else if (key_tap(KEY_SELECT)) { 2576 } else if (key_tap(KEY_SELECT)) {
2592 // Play/pause. 2577 // Play/pause.
2593 pause_playing(); 2578 pause_playing();