Files
GravityHW/Software/Gravity/UI.ino
2023-08-01 01:02:41 +03:00

270 lines
9.6 KiB
C++

void updateScreen() {
u8g2.firstPage();
do {
//u8g2.clearBuffer();
//BPM Tab
if (displayTab == 0) { //BPM
u8g2.setFont(u8g2_font_5x7_tr);
//Menu items
if (masterClockMode == 0 && bpmModulationRange == 0) {
lastMenuItem = 1;
} else if (masterClockMode == 0 && bpmModulationRange != 0) {
lastMenuItem = 2;
} else if (masterClockMode == 1) {
lastMenuItem = 0;
}
if (menuItem == 0 && insideTab) {
u8g2.drawButtonUTF8(4, 8, U8G2_BTN_BW0|U8G2_BTN_INV, 20, 3, 2, "CLK:" );
} else {
u8g2.drawButtonUTF8(4, 8, U8G2_BTN_BW0, 20, 3, 2, "CLK:" );
}
if (masterClockMode == 0) {
if (menuItem == 1) {
u8g2.drawButtonUTF8(4, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 20, 3, 2, "MOD:" );
} else {
u8g2.drawButtonUTF8(4, 20, U8G2_BTN_BW0, 20, 3, 2, "MOD:" );
}
if (bpmModulationRange != 0) {
if (menuItem == 2) {
u8g2.drawButtonUTF8(4, 32, U8G2_BTN_BW0|U8G2_BTN_INV, 20, 3, 2, "RNG:" );
} else {
u8g2.drawButtonUTF8(4, 32, U8G2_BTN_BW0, 20, 3, 2, "RNG:" );
}
}
}
//Values
if (menuItem == 0 && insideTab && masterClockMode == 0) {
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "INT" );
} else if ((menuItem != 0 || !insideTab) && masterClockMode == 0) {
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0, 30, 4, 2, "INT" );
}
if (menuItem == 0 && masterClockMode == 1) {
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "EXT" );
} else if (menuItem != 0 && masterClockMode == 1) {
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0, 30, 4, 2, "EXT" );
}
if (masterClockMode == 0) {
if (menuItem == 1 && bpmModulationRange != 0 && bpmModulationChannel == 0) {
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "CV1" );
} else if (menuItem != 1 && bpmModulationRange != 0 && bpmModulationChannel == 0) {
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0, 30, 3, 2, "CV1" );
}
if (menuItem == 1 && bpmModulationRange != 0 && bpmModulationChannel == 1) {
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "CV2" );
} else if (menuItem != 1 && bpmModulationRange != 0 && bpmModulationChannel == 1){
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0, 30, 3, 2, "CV2" );
}
if (menuItem == 1 && bpmModulationRange == 0) {
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "OFF" );
} else if (menuItem != 1 && bpmModulationRange == 0) {
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0, 30, 4, 2, "OFF" );
}
String bpmModStr = String(bpmModulationRange * 10);
char bpmModChar[3];
bpmModStr.toCharArray(bpmModChar, 3);
if (menuItem == 2 && bpmModulationRange != 0) {
u8g2.drawButtonUTF8(31, 32, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, bpmModChar );
} else if (menuItem != 2 && bpmModulationRange != 0) {
u8g2.drawButtonUTF8(31, 32, U8G2_BTN_BW0, 30, 4, 2, bpmModChar );
}
}
String bpmStr = String(bpm);
char bpmChar[5];
bpmStr.toCharArray(bpmChar, 5);
u8g2.setFont(u8g2_font_logisoso26_tn);
if (!insideTab && shiftBtnPushed) {
u8g2.drawButtonUTF8(96, 28, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, 62, 0, 0, bpmChar );
u8g2.setFont(u8g2_font_7x13B_mr);
u8g2.drawButtonUTF8(96, 44, U8G2_BTN_BW1|U8G2_BTN_HCENTER, 62, 0, 0, "BPM" );
} else if (menuItem != 2 && bpmModulationRange != 0) {
u8g2.drawButtonUTF8(96, 28, U8G2_BTN_BW0|U8G2_BTN_HCENTER, 64, 0, 0, bpmChar );
u8g2.setFont(u8g2_font_7x13B_mr);
u8g2.drawButtonUTF8(96, 44, U8G2_BTN_BW0|U8G2_BTN_HCENTER, 64, 0, 0, "BPM" );
}
}
/*
} else { //CHANNELS
lastMenuItem = 3;
if (menuItem == 0 && insideTab) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(62, 1);
display.println(F("MODE:"));
if (menuItem == 1) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(62, 13);
if (channels[displayTab - 1].mode == 0) {
display.println(F("OFT:"));
} else if (channels[displayTab - 1].mode == 1) {
display.println(F("RND:"));
} else if (channels[displayTab - 1].mode == 2) {
display.println(F("PAT:"));
}
if (menuItem == 2) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(62, 25);
display.println(F("CV1:"));
if (menuItem == 3) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(62, 37);
display.println(F("CV2:"));
}*/
/*else { //CHANNELS
if (menuItem == 0 && insideTab) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(94, 1);
if (channels[displayTab - 1].mode == 0) {
display.print(F("CLK"));
} else if (channels[displayTab - 1].mode == 1) {
display.print(F("RND"));
} else if (channels[displayTab - 1].mode == 2) {
display.print(F("SEQ"));
}
if (menuItem == 1) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(94, 13);
if (channels[displayTab - 1].mode == 0) { //OFFSET
display.print(channels[displayTab - 1].offset);
display.print(F("/"));
display.print(channelPulsesPerCycle[displayTab-1]+1);
display.print(F(" "));
} else if (channels[displayTab - 1].mode == 1) { //RANDOM
display.print(channels[displayTab - 1].random);
display.print(F("0% "));
} else if (channels[displayTab - 1].mode == 2) { //SEQ
display.print(channels[displayTab - 1].seqPattern + 1);
}
if (menuItem == 2) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(94, 25);
if (channels[displayTab - 1].CV1Target == 1) {
display.print(F("DIV"));
//display.print(channels[displayTab - 1].CV1Value);
} else if (channels[displayTab - 1].CV1Target == 2) {
display.print(F("RND"));
//display.print(channels[displayTab - 1].CV1Value);
} else if (channels[displayTab - 1].CV1Target == 3) {
display.print(F("PAT"));
//display.print(channels[displayTab - 1].CV1Value);
} else {
display.print(F("OFF "));
}
if (menuItem == 3) {
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
display.setCursor(94, 37);
if (channels[displayTab - 1].CV2Target == 1) {
display.print(F("DIV"));
//display.print(channels[displayTab - 1].CV2Value);
} else if (channels[displayTab - 1].CV2Target == 2) {
display.print(F("RND"));
//display.print(channels[displayTab - 1].CV2Value);
} else if (channels[displayTab - 1].CV2Target == 3) {
display.print(F("PAT"));
//display.print(channels[displayTab - 1].CV2Value);
} else {
display.print(F("OFF "));
}
}
//Content
display.setCursor(2, 2);
display.setTextSize(3);
if (!insideTab && shiftBtnPushed){
display.fillRoundRect(0, 0, 58, 42, 5, SSD1306_WHITE);
display.setTextColor(SSD1306_BLACK);
} else {
display.setTextColor(SSD1306_WHITE);
}
if (displayTab == 0 && masterClockMode == 0) {
if (bpm < 100) {
display.print(" ");
}
display.println(bpm);
display.setCursor(19, 26);
display.setTextSize(2);
display.println(F("BPM"));
} else if (displayTab == 0 && masterClockMode == 1) {
display.println(F(" 24"));
display.setCursor(8, 26);
display.setTextSize(2);
display.println(F("PPQN"));
} else if (displayTab == 0 && masterClockMode == 2) {
display.setCursor(8, 8);
display.setTextSize(2);
display.println(F("BEAT"));
} else if (displayTab == 0 && masterClockMode == 3) {
display.setCursor(8, 8);
display.setTextSize(2);
display.println(F("1/16"));
} else {
if (subDivs[channels[displayTab - 1].subDiv] == 0) {
display.print(F("OFF"));
} else if (subDivs[channels[displayTab - 1].subDiv] > 0) {
display.print(F("/"));
display.print(abs(subDivs[channels[displayTab - 1].subDiv]));
} else {
display.print(F("x"));
display.print(abs(subDivs[channels[displayTab - 1].subDiv]));
}
}
*/
//Tabs
u8g2.drawHLine(0, 51, 128);
u8g2.setFont(u8g2_font_5x7_tr);
if (displayTab == 0) {
if (insideTab == true || shiftBtnPushed == true) {
u8g2.drawButtonUTF8(4, 60, U8G2_BTN_BW1, 0, 3, 2, "BPM" );
} else {
u8g2.drawButtonUTF8(4, 60, U8G2_BTN_BW1|U8G2_BTN_INV, 0, 3, 2, "BPM" );
}
} else {
u8g2.drawButtonUTF8(4, 60, U8G2_BTN_BW0, 0, 3, 2, "BPM" );
}
for (int i = 1; i <= 6; i++) {
if (displayTab == i) {
if (insideTab == true || shiftBtnPushed == true) { //hot mess, but for some reason it didn't want to take string/char variables
u8g2.drawButtonUTF8(i*13 + 13, 60, U8G2_BTN_BW1, 0, 3, 2, (i == 1) ? "1" : (i == 2) ? "2" : (i == 3) ? "3" : (i == 4) ? "4" : (i == 5) ? "5" : (i == 5) ? "5" : (i == 6) ? "6" : "0");
} else {
u8g2.drawButtonUTF8(i*13 + 13, 60, U8G2_BTN_BW1|U8G2_BTN_INV, 0, 3, 2, (i == 1) ? "1" : (i == 2) ? "2" : (i == 3) ? "3" : (i == 4) ? "4" : (i == 5) ? "5" : (i == 5) ? "5" : (i == 6) ? "6" : "0");
}
} else {
u8g2.drawButtonUTF8(i*13 + 13, 60, U8G2_BTN_BW0, 0, 3, 2, (i == 1) ? "1" : (i == 2) ? "2" : (i == 3) ? "3" : (i == 4) ? "4" : (i == 5) ? "5" : (i == 5) ? "5" : (i == 6) ? "6" : "0");
}
}
//u8g2.sendBuffer();
} while ( u8g2.nextPage() );
}