From 37d6a701bcba876691ae894b3898ed424796a856 Mon Sep 17 00:00:00 2001 From: rkcf Date: Fri, 27 Jan 2023 19:00:57 -0600 Subject: [PATCH] add function to mutate sequence --- main/esp32-sequencer.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/main/esp32-sequencer.c b/main/esp32-sequencer.c index e6c10c7..fa4c0e6 100644 --- a/main/esp32-sequencer.c +++ b/main/esp32-sequencer.c @@ -181,12 +181,22 @@ static void pulse_cv(uint8_t gpio_num) { } } -static void gen_rand_seq(uint8_t *sequence) { +static void randomize_seq(uint8_t *sequence) { for (uint8_t i = 0; i < SEQ_MAX_LEN; i++) { sequence[i] = esp_random() % 2; } } +static void mutate_seq(uint8_t *sequence) { + // pick a step to mutate + uint8_t step = esp_random() % SEQ_MAX_LEN; + if (sequence[step] == 1) { + sequence[step] = 0; + } else if (sequence[step] == 0) { + sequence[step] = 1; + } +} + void app_main(void) { /* Initialize Peripherals */ /* Initialize GPIO */ @@ -196,6 +206,7 @@ void app_main(void) { /* Initialize sequence */ uint8_t sequence[SEQ_MAX_LEN] = {0}; uint8_t seq_len = SEQ_MAX_LEN; + randomize_seq(sequence); /* Main Loop */ while (1) { @@ -212,7 +223,7 @@ void app_main(void) { printf("%i", sequence[step]); vTaskDelay(500 / portTICK_PERIOD_MS); } - gen_rand_seq(sequence); + mutate_seq(sequence); printf("\n"); }