From 4771c84572008a223b1f35f6b2cb1d8b92bb2083 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 24 Apr 2023 17:31:17 +0200 Subject: 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. --- src/clipboard.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src/clipboard.c') 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) { clipboard.type == CLIP_PARAM_CH1 || clipboard.type == CLIP_PARAM_CH2) { if (clipboard.src_chan == 0) { - for (size_t i = 0; i < 17; i++) { + ch1_params = pat_src->ch1.params[clipboard.src_trig]; + for (size_t i = 0; i < 16; i++) { pat_dst->ch1.params[i] = pat_src->ch1.params[clipboard.src_trig]; } } if (clipboard.src_chan == 1) { - for (size_t i = 0; i < 17; i++) { + ch1_params.env_volume = pat_src->ch2.params[clipboard.src_trig].env_volume; + ch1_params.env_time = pat_src->ch2.params[clipboard.src_trig].env_time; + ch1_params.env_direction = pat_src->ch2.params[clipboard.src_trig].env_direction; + ch1_params.duty_cycle = pat_src->ch2.params[clipboard.src_trig].duty_cycle; + for (size_t i = 0; i < 16; i++) { pat_dst->ch1.params[i].env_volume = pat_src->ch2.params[clipboard.src_trig].env_volume; pat_dst->ch1.params[i].env_time = pat_src->ch2.params[clipboard.src_trig].env_time; pat_dst->ch1.params[i].env_direction = pat_src->ch2.params[clipboard.src_trig].env_direction; @@ -305,12 +310,14 @@ clipboard_paste(void) { clipboard.type == CLIP_PARAM_CH1 || clipboard.type == CLIP_PARAM_CH2) { if (clipboard.src_chan == 0) { - for (size_t i = 0; i < 17; i++) { + ch2_params = pat_src->ch1.params[clipboard.src_trig]; + for (size_t i = 0; i < 16; i++) { pat_dst->ch2.params[i] = pat_src->ch1.params[clipboard.src_trig]; } } if (clipboard.src_chan == 1) { - for (size_t i = 0; i < 17; i++) { + ch2_params = pat_src->ch2.params[clipboard.src_trig]; + for (size_t i = 0; i < 16; i++) { pat_dst->ch2.params[i] = pat_src->ch2.params[clipboard.src_trig]; } } @@ -321,7 +328,8 @@ clipboard_paste(void) { return; } if (clipboard.type == CLIP_TRIG || clipboard.type == CLIP_PARAM_CH3) { - for (size_t i = 0; i < 17; i++) { + ch3_params = pat_src->ch3.params[clipboard.src_trig]; + for (size_t i = 0; i < 16; i++) { pat_dst->ch3.params[i] = pat_src->ch3.params[clipboard.src_trig]; } } @@ -331,7 +339,8 @@ clipboard_paste(void) { return; } if (clipboard.type == CLIP_TRIG || clipboard.type == CLIP_PARAM_CH4) { - for (size_t i = 0; i < 17; i++) { + ch4_params = pat_src->ch4.params[clipboard.src_trig]; + for (size_t i = 0; i < 16; i++) { pat_dst->ch4.params[i] = pat_src->ch4.params[clipboard.src_trig]; } } -- cgit v1.2.1