* Changed names for ADJUST page titles (to shorten) and added numerical value readouts for THR and MAX settings.

* Corrected start position for rotators and added reset to first position when activated and on roller release (from top five octaves like for the otf key change).
* Adjusted NiMH voltage level
This commit is contained in:
Johan Berglund 2020-10-10 19:02:25 +02:00
parent b80f9247a2
commit bc545cccc1
8 changed files with 11201 additions and 13 deletions

View file

@ -127,7 +127,7 @@ uint16_t fastBoot;
uint16_t dacMode;
byte rotatorOn = 0;
byte currentRotation = 0;
byte currentRotation = 3;
uint16_t rotations[4]; // semitones { -5, -10, -7, -14 };
uint16_t parallel; // = 7; // semitones
uint16_t rotationsb[4];
@ -928,6 +928,7 @@ void loop() {
if (pinkyKey) {
if (!rotatorOn) {
rotatorOn = 1;
currentRotation = 3;
slurSustain = 0;
parallelChord = 0;
subOctaveDouble = 0;
@ -973,7 +974,7 @@ void loop() {
if (portamento && (portamento != 5)) midiSendControlChange(CCN_Port, portLimit);
lvlTime = currentTime;
}
} else if (K5 && (portLimit > 0)){
} else if (K5 && (portLimit > 1)){
if (currentTime - lvlTime > (LVL_TIMER_INTERVAL)){
portLimit--;
if (portamento && (portamento != 5)) midiSendControlChange(CCN_Port, portLimit);
@ -2145,6 +2146,7 @@ void readSwitches() {
else if (lastOctaveR > 1) {
octaveR = lastOctaveR;
if (otfKey && polySelect && (polySelect<RT1) && rotatorOn && (mainState == NOTE_OFF)) hmzKey = fingeredNote%12;
if (mainState == NOTE_OFF) currentRotation = 3; //rotator reset by releasing rollers
}
//if rollers are released and we are not coming down from roller 1, stay at the higher octave
@ -2286,6 +2288,7 @@ void readSwitches() {
else if (lastOctaveR > 1) {
octaveR = lastOctaveR;
if (otfKey && polySelect && (polySelect<RT1) && rotatorOn && (mainState == NOTE_OFF)) hmzKey = fingeredNote%12;
if (mainState == NOTE_OFF) currentRotation = 3; //rotator reset by releasing rollers
}
//if rollers are released and we are not coming down from roller 1, stay at the higher octave
//CV filter leak prevention when putting NuEVI aside

View file

@ -77,7 +77,7 @@ static void pbSave(const AdjustMenuEntry& e) {
}
const AdjustMenuEntry pitchBendAdjustMenu = {
"PITCH BEND",
"BEND",
{
{ &pitchbThrVal, pitchbLoLimit, pitchbHiLimit },
{ &pitchbMaxVal, pitchbLoLimit, pitchbHiLimit }
@ -91,7 +91,7 @@ static void extracSave(const AdjustMenuEntry& e) {
}
const AdjustMenuEntry extraSensorAdjustMenu = {
"EXTRA CONTROLLER",
"LIP/EC",
{
{ &extracThrVal, extracLoLimit, extracHiLimit },
{ &extracMaxVal, extracLoLimit, extracHiLimit }
@ -105,7 +105,7 @@ static void ctouchThrSave(const AdjustMenuEntry& e) {
}
const AdjustMenuEntry ctouchAdjustMenu = {
"TOUCH SENSE",
"TOUCH",
{
{ &ctouchThrVal, ctouchLoLimit, ctouchHiLimit },
{ nullptr, 0, 0 }
@ -120,7 +120,7 @@ static void leverSave(const AdjustMenuEntry& e) {
}
const AdjustMenuEntry leverAdjustMenu = {
"THUMB LEVER",
"LEVER",
{
{ &leverThrVal, leverLoLimit, leverHiLimit },
{ &leverMaxVal, leverLoLimit, leverHiLimit }
@ -320,6 +320,17 @@ static void drawAdjustMenu(const AdjustMenuEntry *menu) {
pos2 = map( *menu->entries[1].value, menu->entries[1].limitLow, menu->entries[1].limitHigh, 27, 119);
display.drawLine( pos2, 50, pos2, 56, WHITE );
}
display.fillRect(64,0,64,9,BLACK);
display.setTextSize(1);
if(haveSecondValue) {
display.setCursor(68,2);
display.print(*menu->entries[0].value);
display.print("|");
display.print(*menu->entries[1].value);
} else {
display.setCursor(104,2);
display.print(*menu->entries[0].value);
}
}
//***********************************************************
@ -349,6 +360,11 @@ void plotSensorPixels(){
redraw = updateSensorPixel(pos, -1);
}
else if(adjustOption == 1) {
if (biteJumper) { //PBITE (if pulled low with jumper or if on a NuRAD, use pressure sensor instead of capacitive bite sensor)
biteSensor=analogRead(bitePressurePin); // alternative kind bite sensor (air pressure tube and sensor) PBITE
} else {
biteSensor = touchRead(bitePin); // get sensor data, do some smoothing - SENSOR PIN 17 - PCB PINS LABELED "BITE" (GND left, sensor pin right)
}
int pos = map(constrain(biteSensor,portamLoLimit,portamHiLimit), portamLoLimit, portamHiLimit, 28, 118);
redraw = updateSensorPixel(pos, -1);
}
@ -454,6 +470,7 @@ static bool updateAdjustCursor(uint32_t timeNow) {
}
static bool handleInput(const AdjustMenuEntry *currentMenu, uint32_t timeNow, uint8_t buttons, uint16_t *xpos, int ypos, int index) {
bool haveSecondValue = currentMenu->entries[1].value != nullptr;
if (buttons) {
if (buttons == BTN_DOWN+BTN_UP){
display.fillRect(26,35,90,7,BLACK);
@ -472,6 +489,18 @@ static bool handleInput(const AdjustMenuEntry *currentMenu, uint32_t timeNow, ui
} else
drawAdjustBar( buttons, ypos, &currentMenu->entries[index], xpos );
display.fillRect(64,0,64,9,BLACK);
display.setTextSize(1);
if(haveSecondValue) {
display.setCursor(68,2);
display.print(*currentMenu->entries[0].value);
display.print("|");
display.print(*currentMenu->entries[1].value);
} else {
display.setCursor(104,2);
display.print(*currentMenu->entries[0].value);
}
int last = adjustCurrent;
if(buttons == BTN_ENTER) adjustCurrent += 1;
else if( buttons == BTN_MENU) adjustCurrent = 0;

View file

@ -5,7 +5,7 @@
// Compile options, comment/uncomment to change
#define FIRMWARE_VERSION "1.5b4" // FIRMWARE VERSION NUMBER HERE <<<<<<<<<<<<<<<<<<<<<<<
#define FIRMWARE_VERSION "1.5b5" // FIRMWARE VERSION NUMBER HERE <<<<<<<<<<<<<<<<<<<<<<<
#define ON_Delay 20 // Set Delay after ON threshold before velocity is checked (wait for tounging peak)
#define CCN_Port 5 // Controller number for portamento level
@ -46,7 +46,7 @@
#define SPCKEY_LED_BRIGHTNESS 700 // up to 4095, PWM
#define ALK_BAT_FULL 2800 // about 4.6V
#define NMH_BAT_FULL 2350 // about 3.8V
#define NMH_BAT_FULL 2380 // about 3.9V
#define LIP_BAT_FULL 2550 // about 4.2V
#define ALK_BAT_LOW 2300 // about 3.8V
#define NMH_BAT_LOW 2200 // about 3.6V

View file

@ -4,7 +4,7 @@
#define REVB
//#define NURAD
#define I2CSCANNER
//#define I2CSCANNER
#if defined(NURAD) //NuRAD <<<<<<<<<<<<<<<<<<<<<<<

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,4 +1,4 @@
NuEVI and NuRAD Firmware 1.5b4 Notes
NuEVI and NuRAD Firmware 1.5b5 Notes
1.5b1:
@ -34,8 +34,6 @@ NuEVI and NuRAD Firmware 1.5b4 Notes
* AUTOCAL is available for each ADJUST menu page. With cursor on THR or MAX bar, press UP and DOWN buttons at the same time (and keep off the sensors being calibrated). AUTOCAL will be displayed for two seconds, then updated settings will be shown.
[removed for now - needs work] * Experimental breath controlled harmonic series (BRTH HARM and BR HM SEL settings). Like the lip sensor harmonics function, this shifts the fingered note up the harmonic series. For improved switching speed, try turning down the key deglitch time. (If this function is to be kept, I will probably need to tweak it quite a bit. Tongueing into higher notes and releasing them does not work well currently.)
1.5b4:
* Changed the destination setup for bite and lever to be less confusing and more powerful (custom CCs now possible). The VIB CTL item in the VIBRATO menu is now removed, and in SETUP CTL menu you will find BITE CTL, BITE CC, LEVER CTL and LEVER CC.
@ -48,3 +46,9 @@ BITE CTL and LEVER CTL can both be set to any of these destinations:
Settings in GLIDE CC and LEVER CC are only used when corresponding control is set to CC in its CTL setting as described above.
1.5b5:
* Changed names for ADJUST page titles (to shorten) and added numerical value readouts for THR and MAX settings.
* Corrected start position for rotators and added reset to first position when activated and on roller release (from top five octaves like for the otf key change).