started adding swing and gate to UI

This commit is contained in:
Oleksiy
2024-10-17 19:39:39 +03:00
parent 5729650a34
commit c5b9ebe868
3 changed files with 49 additions and 12 deletions

View File

@ -6,9 +6,9 @@
#include <avr/wdt.h> #include <avr/wdt.h>
#include <NeoHWSerial.h> #include <NeoHWSerial.h>
#define VERSION "V:1.1.1" #define VERSION "V:1.2A"
byte memCode = 'D'; //Change to different letter if you changed the data structure byte memCode = 'E'; //Change to different letter if you changed the data structure
#define PPQN 24 #define PPQN 24
#define PULSE_LENGTH 120 //1/10ms resolution. 12ms was failing at 1ms resolution at higher bpm. 60000/200/24 = 12.5 the max pulse length at 1ms resolution for 200bpm is 11ms #define PULSE_LENGTH 120 //1/10ms resolution. 12ms was failing at 1ms resolution at higher bpm. 60000/200/24 = 12.5 the max pulse length at 1ms resolution for 200bpm is 11ms
@ -60,15 +60,15 @@ byte bpmModulationChannel = 200; //0 - CV1, 1 - CV2, 255 - OFF
byte bpmModulationRange = 0; byte bpmModulationRange = 0;
struct channel { struct channel {
byte mode; //0 - CLK, 1 - RND, 2 - SEQ byte mode; //0 - CLK, 1 - RND, 2 - SEQ, 3 - SWING, 4 - Gate
byte subDiv; byte subDiv;
byte CV1Target; //0 - Off, 1 - Subdiv, 2 - RND, 3 - SeqPattern byte CV1Target; //0 - Off, 1 - Subdiv, 2 - RND, 3 - SeqPattern
byte CV1Range;
byte CV2Target; byte CV2Target;
byte CV2Range;
uint8_t offset; uint8_t offset;
byte random; byte random;
byte seqPattern; byte seqPattern;
uint8_t gate;
uint8_t swing; //some of this params can be combinde into 4+4 bits to save space
}; };
channel channels[6] = { //array of channel settings channel channels[6] = { //array of channel settings

View File

@ -175,6 +175,30 @@ void checkInputs() {
channels[displayTab - 1].seqPattern = 15; channels[displayTab - 1].seqPattern = 15;
} }
saveState(); saveState();
} else if (((!insideTab && shiftBtnPushed)
|| (insideTab && menuItem == 0
&& (menuItemSelected || shiftBtnPushed)))
&& displayTab != 0
&& channels[displayTab - 1].mode == 3) { //Change SWING
channels[displayTab - 1].swing = channels[displayTab - 1].swing + change;
if (channels[displayTab - 1].swing > 100) {
channels[displayTab - 1].swing = 0;
} else if (channels[displayTab - 1].swing > 15) {
channels[displayTab - 1].swing = 15;
}
saveState();
} else if (((!insideTab && shiftBtnPushed)
|| (insideTab && menuItem == 0
&& (menuItemSelected || shiftBtnPushed)))
&& displayTab != 0
&& channels[displayTab - 1].mode == 4) { //Change GATE
channels[displayTab - 1].gate = channels[displayTab - 1].gate + change;
if (channels[displayTab - 1].gate > 100) {
channels[displayTab - 1].gate = 0;
} else if (channels[displayTab - 1].gate > 15) {
channels[displayTab - 1].gate = 15;
}
saveState();
} else if (insideTab && !shiftBtnPushed && !menuItemSelected) { } else if (insideTab && !shiftBtnPushed && !menuItemSelected) {
menuItem = menuItem + change; menuItem = menuItem + change;
if (menuItem > 100) { //for "negative" values if (menuItem > 100) { //for "negative" values
@ -193,7 +217,7 @@ void checkInputs() {
masterClockMode = masterClockMode + change; masterClockMode = masterClockMode + change;
if (masterClockMode > 100) { if (masterClockMode > 100) {
masterClockMode = 0; masterClockMode = 0;
} else if (masterClockMode > 2) { //Set to 1 to hide MIDI mode } else if (masterClockMode > 2) {
masterClockMode = 2; masterClockMode = 2;
} }
saveState(); saveState();
@ -244,8 +268,8 @@ void checkInputs() {
channels[displayTab - 1].mode = channels[displayTab - 1].mode + change; channels[displayTab - 1].mode = channels[displayTab - 1].mode + change;
if (channels[displayTab - 1].mode > 100) { if (channels[displayTab - 1].mode > 100) {
channels[displayTab - 1].mode = 0; channels[displayTab - 1].mode = 0;
} else if (channels[displayTab - 1].mode > 2) { } else if (channels[displayTab - 1].mode > 4) {
channels[displayTab - 1].mode = 2; channels[displayTab - 1].mode = 4;
} }
channels[displayTab - 1].CV1Target = 0; channels[displayTab - 1].CV1Target = 0;
channels[displayTab - 1].CV2Target = 0; channels[displayTab - 1].CV2Target = 0;

View File

@ -126,7 +126,7 @@ void updateScreen() {
valueStr = F("MODE:"); valueStr = F("MODE:");
} else if (i == 2 && channels[displayTab - 1].mode == 0) { } else if (i == 2 && channels[displayTab - 1].mode == 0) {
valueStr = F("OFFSET:"); valueStr = F("OFFSET:");
} else if (i == 2 && channels[displayTab - 1].mode == 1) { } else if (i == 2 && (channels[displayTab - 1].mode == 1 || channels[displayTab - 1].mode == 4)) {
valueStr = F("SUBDIV:"); valueStr = F("SUBDIV:");
} else if (i == 2 && channels[displayTab - 1].mode == 2) { } else if (i == 2 && channels[displayTab - 1].mode == 2) {
valueStr = F("EDIT PATTERN"); valueStr = F("EDIT PATTERN");
@ -148,6 +148,10 @@ void updateScreen() {
valueStr = F("RAND"); valueStr = F("RAND");
} else if (i == 1 && channels[displayTab - 1].mode == 2) { } else if (i == 1 && channels[displayTab - 1].mode == 2) {
valueStr = F("SEQ"); valueStr = F("SEQ");
} else if (i == 1 && channels[displayTab - 1].mode == 3) {
valueStr = F("SWING");
} else if (i == 1 && channels[displayTab - 1].mode == 4) {
valueStr = F("GATE");
} else if (i == 2 && channels[displayTab - 1].mode == 0) { //SubDiv and offset } else if (i == 2 && channels[displayTab - 1].mode == 0) { //SubDiv and offset
valueStr = String(channels[displayTab - 1].offset) + F("/"); valueStr = String(channels[displayTab - 1].offset) + F("/");
int PulsesPerStep; int PulsesPerStep;
@ -157,10 +161,10 @@ void updateScreen() {
PulsesPerStep = subDivs[channels[displayTab - 1].subDiv] * PPQN; PulsesPerStep = subDivs[channels[displayTab - 1].subDiv] * PPQN;
} }
valueStr = valueStr + String(PulsesPerStep); //(playingModes[i] * PPQN) - 1 //String(channelPulsesPerCycle[displayTab-1]+1) valueStr = valueStr + String(PulsesPerStep); //(playingModes[i] * PPQN) - 1 //String(channelPulsesPerCycle[displayTab-1]+1)
} else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] > 0) { } else if (i == 2 && (channels[displayTab - 1].mode == 1 || channels[displayTab - 1].mode == 4) && subDivs[channels[displayTab - 1].subDiv] > 0) {
valueStr = F("/"); valueStr = F("/");
valueStr = valueStr + String(subDivs[channels[displayTab - 1].subDiv]); valueStr = valueStr + String(subDivs[channels[displayTab - 1].subDiv]);
} else if (i == 2 && channels[displayTab - 1].mode == 1 && subDivs[channels[displayTab - 1].subDiv] < 0) { } else if (i == 2 && (channels[displayTab - 1].mode == 1 || channels[displayTab - 1].mode == 4) && subDivs[channels[displayTab - 1].subDiv] < 0) {
valueStr = F("x"); valueStr = F("x");
valueStr = valueStr + String(abs(subDivs[channels[displayTab - 1].subDiv])); valueStr = valueStr + String(abs(subDivs[channels[displayTab - 1].subDiv]));
} else if (i == 3 && channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 0) { //MOD } else if (i == 3 && channels[displayTab - 1].CV1Target == 0 && channels[displayTab - 1].CV2Target == 0) { //MOD
@ -195,7 +199,12 @@ void updateScreen() {
valueStr = F("SKIP CHANCE"); valueStr = F("SKIP CHANCE");
} else if (channels[displayTab - 1].mode == 2) { } else if (channels[displayTab - 1].mode == 2) {
valueStr = F("PATTERN"); valueStr = F("PATTERN");
} else if (channels[displayTab - 1].mode == 3) {
valueStr = F("SWING");
} else if (channels[displayTab - 1].mode == 4) {
valueStr = F("GATE");
} }
if ((!insideTab && shiftBtnPushed) || (insideTab && menuItem == 0)) { if ((!insideTab && shiftBtnPushed) || (insideTab && menuItem == 0)) {
u8g2.drawButtonUTF8(leftOffset, 41, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, width, 0, 3, valueStr.c_str() ); u8g2.drawButtonUTF8(leftOffset, 41, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, width, 0, 3, valueStr.c_str() );
} else { } else {
@ -219,6 +228,10 @@ void updateScreen() {
valueStr = F("B"); valueStr = F("B");
valueStr = valueStr + String(channels[displayTab - 1].seqPattern - 7); valueStr = valueStr + String(channels[displayTab - 1].seqPattern - 7);
} }
} else if (channels[displayTab - 1].mode == 3) {
valueStr = String(channels[displayTab - 1].swing) + "%";
} else if (channels[displayTab - 1].mode == 4) {
valueStr = String(channels[displayTab - 1].gate) + "%";
} }
u8g2.setFont(stkL); u8g2.setFont(stkL);
if ((!insideTab && shiftBtnPushed) || (insideTab && menuItem == 0 && (menuItemSelected || shiftBtnPushed))) { if ((!insideTab && shiftBtnPushed) || (insideTab && menuItem == 0 && (menuItemSelected || shiftBtnPushed))) {