From 545581ec32f7cb299e84ae3177dc86c8037de20e Mon Sep 17 00:00:00 2001 From: Oleksiy Date: Mon, 21 Aug 2023 01:21:04 +0300 Subject: [PATCH] started working on CV pattern modulation --- Software/Gravity/Gravity.ino | 44 ++++++++++++++++++++----------- Software/Gravity/Interactions.ino | 24 +++++++++++++++++ 2 files changed, 52 insertions(+), 16 deletions(-) diff --git a/Software/Gravity/Gravity.ino b/Software/Gravity/Gravity.ino index 0ee7f49..443a7c2 100644 --- a/Software/Gravity/Gravity.ino +++ b/Software/Gravity/Gravity.ino @@ -280,38 +280,50 @@ void sendTriggers() { //16th notes for sequencer if (sixteenthPulseCount == 0) { bool *currentSeq; + for (byte i = 0; i < 6; i++) { - if (channels[i].seqPattern == 0) { + + //pattern modulation + //todo: limit modulation within the current bank (a or b) + int seqMod = 0; + if (channels[i].CV2Target == 3) { + seqMod = 0; map(a2Input, 0, 1023, -8, +8); + } else if (channels[i].CV1Target == 3) { + seqMod = 0; map(a1Input, 0, 1023, -8, +8); + } + byte seqPattern = channels[i].seqPattern + seqMod; + + if (seqPattern == 0) { currentSeq = seqA1; - } else if (channels[i].seqPattern == 1) { + } else if (seqPattern == 1) { currentSeq = seqA2; - } else if (channels[i].seqPattern == 2) { + } else if (seqPattern == 2) { currentSeq = seqA3; - } else if (channels[i].seqPattern == 3) { + } else if (seqPattern == 3) { currentSeq = seqA4; - } else if (channels[i].seqPattern == 4) { + } else if (seqPattern == 4) { currentSeq = seqA5; - } else if (channels[i].seqPattern == 5) { + } else if (seqPattern == 5) { currentSeq = seqA6; - } else if (channels[i].seqPattern == 6) { + } else if (seqPattern == 6) { currentSeq = seqA7; - } else if (channels[i].seqPattern == 7) { + } else if (seqPattern == 7) { currentSeq = seqA8; - } else if (channels[i].seqPattern == 8) { + } else if (seqPattern == 8) { currentSeq = seqB1; - } else if (channels[i].seqPattern == 9) { + } else if (seqPattern == 9) { currentSeq = seqB2; - } else if (channels[i].seqPattern == 10) { + } else if (seqPattern== 10) { currentSeq = seqB3; - } else if (channels[i].seqPattern == 11) { + } else if (seqPattern == 11) { currentSeq = seqB4; - } else if (channels[i].seqPattern == 12) { + } else if (seqPattern == 12) { currentSeq = seqB5; - } else if (channels[i].seqPattern == 13) { + } else if (seqPattern == 13) { currentSeq = seqB6; - } else if (channels[i].seqPattern == 14) { + } else if (seqPattern == 14) { currentSeq = seqB7; - } else if (channels[i].seqPattern == 15) { + } else if (seqPattern == 15) { currentSeq = seqB8; } if (channels[i].mode == 2 && channelPulseCount[i] == 0 && currentSeq[currentStep]) { diff --git a/Software/Gravity/Interactions.ino b/Software/Gravity/Interactions.ino index b085e48..2c6c8f1 100644 --- a/Software/Gravity/Interactions.ino +++ b/Software/Gravity/Interactions.ino @@ -246,6 +246,30 @@ void checkInputs() { channels[displayTab - 1].CV2Target = 2; } saveState(); + } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 2) { //CV1 for SEQ + channels[displayTab - 1].CV1Target = channels[displayTab - 1].CV1Target + change; + if (channels[displayTab - 1].CV1Target > 100) { + channels[displayTab - 1].CV1Target = 0; + } else if (channels[displayTab - 1].CV1Target == 1) { //hacky way to limit choices only to 0 and 3, should be a better option + channels[displayTab - 1].CV1Target = 3; + } else if (channels[displayTab - 1].CV1Target == 2) { + channels[displayTab - 1].CV1Target = 0; + } else if (channels[displayTab - 1].CV1Target > 3) { + channels[displayTab - 1].CV1Target = 3; + } + saveState(); + } else if (insideTab && (menuItemSelected || shiftBtnPushed) && displayTab != 0 && menuItem == 3 && channels[displayTab - 1].mode == 2) { //CV2 for SEQ + channels[displayTab - 1].CV2Target = channels[displayTab - 1].CV2Target + change; + if (channels[displayTab - 1].CV2Target > 100) { + channels[displayTab - 1].CV2Target = 0; + } else if (channels[displayTab - 1].CV2Target == 1) { //hacky way to limit choices only to 0 and 3, should be a better option + channels[displayTab - 1].CV2Target = 3; + } else if (channels[displayTab - 1].CV2Target == 2) { + channels[displayTab - 1].CV2Target = 0; + } else if (channels[displayTab - 1].CV2Target > 3) { + channels[displayTab - 1].CV2Target = 3; + } + saveState(); } } else if (displayScreen == 1 && !isRecording) { stepNumSelected = stepNumSelected + change;