aboutsummaryrefslogtreecommitdiffstats
path: root/src/clipboard.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-04-24 17:31:17 +0200
committerBad Diode <bd@badd10de.dev>2023-04-24 17:31:17 +0200
commit4771c84572008a223b1f35f6b2cb1d8b92bb2083 (patch)
treeb7f8318c2003a43dfa75c6e5727c15e895b908fd /src/clipboard.c
parent694bcf4790f7c03751972832bf6f2cbe6a215d04 (diff)
downloadstepper-4771c84572008a223b1f35f6b2cb1d8b92bb2083.tar.gz
stepper-4771c84572008a223b1f35f6b2cb1d8b92bb2083.zip
Fix SRAM bug due to exceeding 32KB capacity
This means that currently the global channel parameters are not saved, but this is kind of unimportant, since they are just used to change all the triggers. In the future we may choose to discard a pattern, a bank or compress the data before storing it on the SRAM, depending on how much more data we need to save.
Diffstat (limited to 'src/clipboard.c')
-rw-r--r--src/clipboard.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/clipboard.c b/src/clipboard.c
index 9d39598..eba28ae 100644
--- a/src/clipboard.c
+++ b/src/clipboard.c
@@ -286,12 +286,17 @@ clipboard_paste(void) {
286 clipboard.type == CLIP_PARAM_CH1 || 286 clipboard.type == CLIP_PARAM_CH1 ||
287 clipboard.type == CLIP_PARAM_CH2) { 287 clipboard.type == CLIP_PARAM_CH2) {
288 if (clipboard.src_chan == 0) { 288 if (clipboard.src_chan == 0) {
289 for (size_t i = 0; i < 17; i++) { 289 ch1_params = pat_src->ch1.params[clipboard.src_trig];
290 for (size_t i = 0; i < 16; i++) {
290 pat_dst->ch1.params[i] = pat_src->ch1.params[clipboard.src_trig]; 291 pat_dst->ch1.params[i] = pat_src->ch1.params[clipboard.src_trig];
291 } 292 }
292 } 293 }
293 if (clipboard.src_chan == 1) { 294 if (clipboard.src_chan == 1) {
294 for (size_t i = 0; i < 17; i++) { 295 ch1_params.env_volume = pat_src->ch2.params[clipboard.src_trig].env_volume;
296 ch1_params.env_time = pat_src->ch2.params[clipboard.src_trig].env_time;
297 ch1_params.env_direction = pat_src->ch2.params[clipboard.src_trig].env_direction;
298 ch1_params.duty_cycle = pat_src->ch2.params[clipboard.src_trig].duty_cycle;
299 for (size_t i = 0; i < 16; i++) {
295 pat_dst->ch1.params[i].env_volume = pat_src->ch2.params[clipboard.src_trig].env_volume; 300 pat_dst->ch1.params[i].env_volume = pat_src->ch2.params[clipboard.src_trig].env_volume;
296 pat_dst->ch1.params[i].env_time = pat_src->ch2.params[clipboard.src_trig].env_time; 301 pat_dst->ch1.params[i].env_time = pat_src->ch2.params[clipboard.src_trig].env_time;
297 pat_dst->ch1.params[i].env_direction = pat_src->ch2.params[clipboard.src_trig].env_direction; 302 pat_dst->ch1.params[i].env_direction = pat_src->ch2.params[clipboard.src_trig].env_direction;
@@ -305,12 +310,14 @@ clipboard_paste(void) {
305 clipboard.type == CLIP_PARAM_CH1 || 310 clipboard.type == CLIP_PARAM_CH1 ||
306 clipboard.type == CLIP_PARAM_CH2) { 311 clipboard.type == CLIP_PARAM_CH2) {
307 if (clipboard.src_chan == 0) { 312 if (clipboard.src_chan == 0) {
308 for (size_t i = 0; i < 17; i++) { 313 ch2_params = pat_src->ch1.params[clipboard.src_trig];
314 for (size_t i = 0; i < 16; i++) {
309 pat_dst->ch2.params[i] = pat_src->ch1.params[clipboard.src_trig]; 315 pat_dst->ch2.params[i] = pat_src->ch1.params[clipboard.src_trig];
310 } 316 }
311 } 317 }
312 if (clipboard.src_chan == 1) { 318 if (clipboard.src_chan == 1) {
313 for (size_t i = 0; i < 17; i++) { 319 ch2_params = pat_src->ch2.params[clipboard.src_trig];
320 for (size_t i = 0; i < 16; i++) {
314 pat_dst->ch2.params[i] = pat_src->ch2.params[clipboard.src_trig]; 321 pat_dst->ch2.params[i] = pat_src->ch2.params[clipboard.src_trig];
315 } 322 }
316 } 323 }
@@ -321,7 +328,8 @@ clipboard_paste(void) {
321 return; 328 return;
322 } 329 }
323 if (clipboard.type == CLIP_TRIG || clipboard.type == CLIP_PARAM_CH3) { 330 if (clipboard.type == CLIP_TRIG || clipboard.type == CLIP_PARAM_CH3) {
324 for (size_t i = 0; i < 17; i++) { 331 ch3_params = pat_src->ch3.params[clipboard.src_trig];
332 for (size_t i = 0; i < 16; i++) {
325 pat_dst->ch3.params[i] = pat_src->ch3.params[clipboard.src_trig]; 333 pat_dst->ch3.params[i] = pat_src->ch3.params[clipboard.src_trig];
326 } 334 }
327 } 335 }
@@ -331,7 +339,8 @@ clipboard_paste(void) {
331 return; 339 return;
332 } 340 }
333 if (clipboard.type == CLIP_TRIG || clipboard.type == CLIP_PARAM_CH4) { 341 if (clipboard.type == CLIP_TRIG || clipboard.type == CLIP_PARAM_CH4) {
334 for (size_t i = 0; i < 17; i++) { 342 ch4_params = pat_src->ch4.params[clipboard.src_trig];
343 for (size_t i = 0; i < 16; i++) {
335 pat_dst->ch4.params[i] = pat_src->ch4.params[clipboard.src_trig]; 344 pat_dst->ch4.params[i] = pat_src->ch4.params[clipboard.src_trig];
336 } 345 }
337 } 346 }