diff options
author | Bad Diode <bd@badd10de.dev> | 2023-04-24 17:31:17 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-04-24 17:31:17 +0200 |
commit | 4771c84572008a223b1f35f6b2cb1d8b92bb2083 (patch) | |
tree | b7f8318c2003a43dfa75c6e5727c15e895b908fd /src/clipboard.c | |
parent | 694bcf4790f7c03751972832bf6f2cbe6a215d04 (diff) | |
download | stepper-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.c | 21 |
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 | } |