aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-04-24 12:42:16 +0200
committerBad Diode <bd@badd10de.dev>2023-04-24 12:42:16 +0200
commitb83958d07ec0e4dcc185f40928a84d1bcdd48675 (patch)
tree5cce184744bbaf82bf30a5a9e8498c94a2758037
parent78b04e72e67eb41b67732673ef043e990ad6c57e (diff)
downloadstepper-b83958d07ec0e4dcc185f40928a84d1bcdd48675.tar.gz
stepper-b83958d07ec0e4dcc185f40928a84d1bcdd48675.zip
Add transposition of channel notes with SEL + L/R
-rw-r--r--src/main.c3
-rw-r--r--src/sequencer.c56
2 files changed, 41 insertions, 18 deletions
diff --git a/src/main.c b/src/main.c
index 54f14b4..d4e6dbb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -24,7 +24,8 @@ WITH REGARD TO THIS SOFTWARE.
24// 24//
25// Quality of life improvements. 25// Quality of life improvements.
26// - Per channel sound adjustments that modify the sound in all trigs. 26// - Per channel sound adjustments that modify the sound in all trigs.
27// - Per-octave note adjustment with Select + L/R on a trig. 27// + Per-octave note adjustment with Select + L/R on a trig.
28// + Transpose channel with SEL + L/R on channel select.
28// - Pattern chaining for more than 1 queue and/or song mode. 29// - Pattern chaining for more than 1 queue and/or song mode.
29// - Undo/Redo. 30// - Undo/Redo.
30// - Add a settings page to change some configuration parameters. 31// - Add a settings page to change some configuration parameters.
diff --git a/src/sequencer.c b/src/sequencer.c
index d3f2483..8f2b183 100644
--- a/src/sequencer.c
+++ b/src/sequencer.c
@@ -185,32 +185,63 @@ get_current_trig(void) {
185 185
186void 186void
187handle_channel_selection(void) { 187handle_channel_selection(void) {
188 Pattern *pat = &patterns[pattern_selection_loc];
188 if (key_tap(KEY_B)) { 189 if (key_tap(KEY_B)) {
189 if (key_hold(KEY_SELECT)) { 190 if (key_hold(KEY_SELECT)) {
190 clipboard_copy(); 191 clipboard_copy();
191 } else { 192 } else {
192 switch (channel_selection_loc) { 193 switch (channel_selection_loc) {
193 case 0: { 194 case 0: {
194 patterns[pattern_selection_loc].ch1.active ^= 1; 195 pat->ch1.active ^= 1;
195 } break; 196 } break;
196 case 1: { 197 case 1: {
197 patterns[pattern_selection_loc].ch2.active ^= 1; 198 pat->ch2.active ^= 1;
198 } break; 199 } break;
199 case 2: { 200 case 2: {
200 patterns[pattern_selection_loc].ch3.active ^= 1; 201 pat->ch3.active ^= 1;
201 } break; 202 } break;
202 case 3: { 203 case 3: {
203 patterns[pattern_selection_loc].ch4.active ^= 1; 204 pat->ch4.active ^= 1;
204 } break; 205 } break;
205 } 206 }
206 redraw_channels = true; 207 redraw_channels = true;
207 } 208 }
208 } else { 209 } else if (key_tap(KEY_A)) {
209 if (key_tap(KEY_A)) { 210 if (key_hold(KEY_SELECT)) {
210 if (key_hold(KEY_SELECT)) { 211 clipboard_paste();
211 clipboard_paste(); 212 }
213 } else if (key_tap(KEY_L)) {
214 s32 inc = -1;
215 if (key_hold(KEY_SELECT)) {
216 inc = -12;
217 }
218 for (size_t i = 0; i < 16; i++) {
219 TriggerNote *trig;
220 switch (channel_selection_loc) {
221 case 0: { trig = &pat->ch1.notes[i]; } break;
222 case 1: { trig = &pat->ch2.notes[i]; } break;
223 case 2: { trig = &pat->ch3.notes[i]; } break;
224 case 3: { trig = &pat->ch4.notes[i]; } break;
212 } 225 }
226 trig->note = MAX((s32)trig->note + inc, (s32)NOTE_C_2);
227 }
228 redraw_trigs = true;
229 } else if (key_tap(KEY_R)) {
230 s32 inc = 1;
231 if (key_hold(KEY_SELECT)) {
232 inc = 12;
233 }
234 for (size_t i = 0; i < 16; i++) {
235 TriggerNote *trig;
236 switch (channel_selection_loc) {
237 case 0: { trig = &pat->ch1.notes[i]; } break;
238 case 1: { trig = &pat->ch2.notes[i]; } break;
239 case 2: { trig = &pat->ch3.notes[i]; } break;
240 case 3: { trig = &pat->ch4.notes[i]; } break;
241 }
242 trig->note = MIN((s32)trig->note + inc, (s32)NOTE_C_8 - 1);
213 } 243 }
244 redraw_trigs = true;
214 } 245 }
215 if (key_tap(KEY_RIGHT)) { 246 if (key_tap(KEY_RIGHT)) {
216 trig_selection_loc = 0; 247 trig_selection_loc = 0;
@@ -887,15 +918,6 @@ handle_sequencer_input(void) {
887 clipboard_copy(); 918 clipboard_copy();
888 } 919 }
889 input_handler(); 920 input_handler();
890 // // if (input_handler == handle_right_col_selection) {
891 // // input_handler();
892 // // }
893 // // // Clipboard combo.
894 // // else if (key_tap(KEY_A)) {
895 // // clipboard_paste();
896 // // } else if (key_tap(KEY_B)){
897 // // clipboard_copy();
898 // // }
899 } else { 921 } else {
900 input_handler(); 922 input_handler();
901 } 923 }