started adding swing and gate to UI
This commit is contained in:
@ -6,9 +6,9 @@
|
||||
#include <avr/wdt.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 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;
|
||||
|
||||
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 CV1Target; //0 - Off, 1 - Subdiv, 2 - RND, 3 - SeqPattern
|
||||
byte CV1Range;
|
||||
byte CV2Target;
|
||||
byte CV2Range;
|
||||
uint8_t offset;
|
||||
byte random;
|
||||
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
|
||||
|
||||
@ -175,6 +175,30 @@ void checkInputs() {
|
||||
channels[displayTab - 1].seqPattern = 15;
|
||||
}
|
||||
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) {
|
||||
menuItem = menuItem + change;
|
||||
if (menuItem > 100) { //for "negative" values
|
||||
@ -193,7 +217,7 @@ void checkInputs() {
|
||||
masterClockMode = masterClockMode + change;
|
||||
if (masterClockMode > 100) {
|
||||
masterClockMode = 0;
|
||||
} else if (masterClockMode > 2) { //Set to 1 to hide MIDI mode
|
||||
} else if (masterClockMode > 2) {
|
||||
masterClockMode = 2;
|
||||
}
|
||||
saveState();
|
||||
@ -244,8 +268,8 @@ void checkInputs() {
|
||||
channels[displayTab - 1].mode = channels[displayTab - 1].mode + change;
|
||||
if (channels[displayTab - 1].mode > 100) {
|
||||
channels[displayTab - 1].mode = 0;
|
||||
} else if (channels[displayTab - 1].mode > 2) {
|
||||
channels[displayTab - 1].mode = 2;
|
||||
} else if (channels[displayTab - 1].mode > 4) {
|
||||
channels[displayTab - 1].mode = 4;
|
||||
}
|
||||
channels[displayTab - 1].CV1Target = 0;
|
||||
channels[displayTab - 1].CV2Target = 0;
|
||||
|
||||
@ -126,7 +126,7 @@ void updateScreen() {
|
||||
valueStr = F("MODE:");
|
||||
} else if (i == 2 && channels[displayTab - 1].mode == 0) {
|
||||
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:");
|
||||
} else if (i == 2 && channels[displayTab - 1].mode == 2) {
|
||||
valueStr = F("EDIT PATTERN");
|
||||
@ -148,6 +148,10 @@ void updateScreen() {
|
||||
valueStr = F("RAND");
|
||||
} else if (i == 1 && channels[displayTab - 1].mode == 2) {
|
||||
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
|
||||
valueStr = String(channels[displayTab - 1].offset) + F("/");
|
||||
int PulsesPerStep;
|
||||
@ -157,10 +161,10 @@ void updateScreen() {
|
||||
PulsesPerStep = subDivs[channels[displayTab - 1].subDiv] * PPQN;
|
||||
}
|
||||
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 = 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 = valueStr + String(abs(subDivs[channels[displayTab - 1].subDiv]));
|
||||
} 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");
|
||||
} else if (channels[displayTab - 1].mode == 2) {
|
||||
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)) {
|
||||
u8g2.drawButtonUTF8(leftOffset, 41, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, width, 0, 3, valueStr.c_str() );
|
||||
} else {
|
||||
@ -219,6 +228,10 @@ void updateScreen() {
|
||||
valueStr = F("B");
|
||||
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);
|
||||
if ((!insideTab && shiftBtnPushed) || (insideTab && menuItem == 0 && (menuItemSelected || shiftBtnPushed))) {
|
||||
|
||||
Reference in New Issue
Block a user