Added foot pedal (cc#4) to extra controller. Display cc selections in text instead of numbers. Added midi panic function (half pb key + special key, or enter key in patch view).
This commit is contained in:
parent
7bba7bcf25
commit
f6d4b2ce08
1 changed files with 78 additions and 28 deletions
88
NuEVI.ino
88
NuEVI.ino
|
|
@ -30,8 +30,8 @@ PROGRAMME FUNCTION: EVI Wind Controller using the Freescale MP3V5004GP breath
|
||||||
|
|
||||||
// Teensy pins
|
// Teensy pins
|
||||||
|
|
||||||
#define specialKeyPin 0 // 0
|
#define specialKeyPin 0
|
||||||
#define halfPitchBendKeyPin 1 // 1
|
#define halfPitchBendKeyPin 1
|
||||||
|
|
||||||
#define bitePin 17
|
#define bitePin 17
|
||||||
#define extraPin 16
|
#define extraPin 16
|
||||||
|
|
@ -177,7 +177,7 @@ PROGRAMME FUNCTION: EVI Wind Controller using the Freescale MP3V5004GP breath
|
||||||
#define CTOUCH_THR_ADDR 42
|
#define CTOUCH_THR_ADDR 42
|
||||||
|
|
||||||
//"factory" values for settings
|
//"factory" values for settings
|
||||||
#define VERSION 18
|
#define VERSION 19
|
||||||
#define BREATH_THR_FACTORY 1400
|
#define BREATH_THR_FACTORY 1400
|
||||||
#define BREATH_MAX_FACTORY 4000
|
#define BREATH_MAX_FACTORY 4000
|
||||||
#define PORTAM_THR_FACTORY 1730
|
#define PORTAM_THR_FACTORY 1730
|
||||||
|
|
@ -193,12 +193,12 @@ PROGRAMME FUNCTION: EVI Wind Controller using the Freescale MP3V5004GP breath
|
||||||
#define VELOCITY_FACTORY 0 // 0 is dynamic/breath controlled velocity
|
#define VELOCITY_FACTORY 0 // 0 is dynamic/breath controlled velocity
|
||||||
#define PORTAM_FACTORY 2 // 0 - OFF, 1 - ON, 2 - SW
|
#define PORTAM_FACTORY 2 // 0 - OFF, 1 - ON, 2 - SW
|
||||||
#define PB_FACTORY 1 // 0 - OFF, 1 - 12
|
#define PB_FACTORY 1 // 0 - OFF, 1 - 12
|
||||||
#define EXTRA_FACTORY 1 // 0 - OFF, 1 - ON->Modulation, 2 - Sustain
|
#define EXTRA_FACTORY 1 // 0 - OFF, 1 - Modulation wheel, 2 - Foot pedal, 3 - Sustain pedal
|
||||||
#define VIBRATO_FACTORY 3 // 0 - OFF, 1 - 6 depth
|
#define VIBRATO_FACTORY 3 // 0 - OFF, 1 - 6 depth
|
||||||
#define DEGLITCH_FACTORY 20 // 0 - OFF, 5 to 70 ms in steps of 5
|
#define DEGLITCH_FACTORY 20 // 0 - OFF, 5 to 70 ms in steps of 5
|
||||||
#define PATCH_FACTORY 1 // MIDI program change 1-128
|
#define PATCH_FACTORY 1 // MIDI program change 1-128
|
||||||
#define OCTAVE_FACTORY 3 // 3 is 0 octave change
|
#define OCTAVE_FACTORY 3 // 3 is 0 octave change
|
||||||
#define CTOUCH_THR_FACTORY 110 // MPR121 touch threshold
|
#define CTOUCH_THR_FACTORY 130 // MPR121 touch threshold
|
||||||
|
|
||||||
#define OLED_RESET 4
|
#define OLED_RESET 4
|
||||||
Adafruit_SSD1306 display(OLED_RESET);
|
Adafruit_SSD1306 display(OLED_RESET);
|
||||||
|
|
@ -292,12 +292,12 @@ unsigned short extracMaxVal;// = 2400;
|
||||||
unsigned short ctouchThrVal;// = 120;
|
unsigned short ctouchThrVal;// = 120;
|
||||||
unsigned short transpose;
|
unsigned short transpose;
|
||||||
unsigned short MIDIchannel;
|
unsigned short MIDIchannel;
|
||||||
unsigned short breathCC;
|
unsigned short breathCC; // OFF:MW+:BR:VOL:EXP
|
||||||
unsigned short breathAT;
|
unsigned short breathAT;
|
||||||
unsigned short velocity;
|
unsigned short velocity;
|
||||||
unsigned short portamento;// switching on cc65? just cc5 enabled? SW:ON:OFF
|
unsigned short portamento;// switching on cc65? just cc5 enabled? SW:ON:OFF
|
||||||
unsigned short PBdepth; // OFF:1-12 divider
|
unsigned short PBdepth; // OFF:1-12 divider
|
||||||
unsigned short extraCT; // OFF:MOD
|
unsigned short extraCT; // OFF:MW:FP:SP
|
||||||
unsigned short vibrato; // OFF:1-6
|
unsigned short vibrato; // OFF:1-6
|
||||||
unsigned short deglitch; // 0-70 ms in steps of 5
|
unsigned short deglitch; // 0-70 ms in steps of 5
|
||||||
unsigned short patch; // 1-128
|
unsigned short patch; // 1-128
|
||||||
|
|
@ -595,6 +595,7 @@ void loop() {
|
||||||
} else parallelChord = 0;
|
} else parallelChord = 0;
|
||||||
}
|
}
|
||||||
if (K1) subOctaveDouble = !subOctaveDouble;
|
if (K1) subOctaveDouble = !subOctaveDouble;
|
||||||
|
if (halfPitchBendKey) midiPanic();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastSpecialKey = specialKey;
|
lastSpecialKey = specialKey;
|
||||||
|
|
@ -780,6 +781,14 @@ int noteValueCheck(int note){
|
||||||
return note;
|
return note;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//**************************************************************
|
||||||
|
|
||||||
|
void midiPanic(){
|
||||||
|
for (int i = 0; i < 128; i++){
|
||||||
|
usbMIDI.sendNoteOff(i,0,activeMIDIchannel);
|
||||||
|
dinMIDIsendNoteOff(i,0,activeMIDIchannel - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//**************************************************************
|
//**************************************************************
|
||||||
|
|
||||||
|
|
@ -963,7 +972,7 @@ void extraController(){
|
||||||
if (extraCT && (exSensor >= extracThrVal)) { // if we are enabled and over the threshold, send data
|
if (extraCT && (exSensor >= extracThrVal)) { // if we are enabled and over the threshold, send data
|
||||||
if (!extracIsOn) {
|
if (!extracIsOn) {
|
||||||
extracIsOn=1;
|
extracIsOn=1;
|
||||||
if (extraCT == 2){ //Sustain ON
|
if (extraCT == 3){ //Sustain ON
|
||||||
usbMIDI.sendControlChange(64,127, activeMIDIchannel);
|
usbMIDI.sendControlChange(64,127, activeMIDIchannel);
|
||||||
dinMIDIsendControlChange(64,127, activeMIDIchannel - 1);
|
dinMIDIsendControlChange(64,127, activeMIDIchannel - 1);
|
||||||
}
|
}
|
||||||
|
|
@ -976,14 +985,27 @@ void extraController(){
|
||||||
}
|
}
|
||||||
oldextrac = extracCC;
|
oldextrac = extracCC;
|
||||||
}
|
}
|
||||||
|
if (extraCT == 2){ //Send foot pedal (CC#4)
|
||||||
|
int extracCC = map(constrain(exSensor,extracThrVal,extracMaxVal),extracThrVal,extracMaxVal,1,127);
|
||||||
|
if (extracCC != oldextrac){
|
||||||
|
usbMIDI.sendControlChange(4,extracCC, activeMIDIchannel);
|
||||||
|
dinMIDIsendControlChange(4,extracCC, activeMIDIchannel - 1);
|
||||||
|
}
|
||||||
|
oldextrac = extracCC;
|
||||||
|
}
|
||||||
} else if (extracIsOn) { // we have just gone below threshold, so send zero value
|
} else if (extracIsOn) { // we have just gone below threshold, so send zero value
|
||||||
extracIsOn=0;
|
extracIsOn=0;
|
||||||
if (extraCT == 1){ //MOD
|
if (extraCT == 1){ //MW
|
||||||
//send modulation 0
|
//send modulation 0
|
||||||
usbMIDI.sendControlChange(1,0, activeMIDIchannel);
|
usbMIDI.sendControlChange(1,0, activeMIDIchannel);
|
||||||
dinMIDIsendControlChange(1,0, activeMIDIchannel - 1);
|
dinMIDIsendControlChange(1,0, activeMIDIchannel - 1);
|
||||||
oldextrac = 0;
|
oldextrac = 0;
|
||||||
} else if (extraCT == 2){ //SUS
|
} else if (extraCT == 2){ //FP
|
||||||
|
//send foot pedal 0
|
||||||
|
usbMIDI.sendControlChange(4,0, activeMIDIchannel);
|
||||||
|
dinMIDIsendControlChange(4,0, activeMIDIchannel - 1);
|
||||||
|
oldextrac = 0;
|
||||||
|
} else if (extraCT == 3){ //SP
|
||||||
//send sustain off
|
//send sustain off
|
||||||
usbMIDI.sendControlChange(64,0, activeMIDIchannel);
|
usbMIDI.sendControlChange(64,0, activeMIDIchannel);
|
||||||
dinMIDIsendControlChange(64,0, activeMIDIchannel - 1);
|
dinMIDIsendControlChange(64,0, activeMIDIchannel - 1);
|
||||||
|
|
@ -1211,6 +1233,7 @@ void menu() {
|
||||||
case 2:
|
case 2:
|
||||||
// enter
|
// enter
|
||||||
patchViewTime = millis();
|
patchViewTime = millis();
|
||||||
|
midiPanic();
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
// up
|
// up
|
||||||
|
|
@ -2396,7 +2419,7 @@ void menu() {
|
||||||
plotExtra(BLACK);
|
plotExtra(BLACK);
|
||||||
if (extraCT > 0){
|
if (extraCT > 0){
|
||||||
extraCT--;
|
extraCT--;
|
||||||
} else extraCT = 2;
|
} else extraCT = 3;
|
||||||
plotExtra(WHITE);
|
plotExtra(WHITE);
|
||||||
cursorNow = BLACK;
|
cursorNow = BLACK;
|
||||||
display.display();
|
display.display();
|
||||||
|
|
@ -2413,7 +2436,7 @@ void menu() {
|
||||||
case 4:
|
case 4:
|
||||||
// up
|
// up
|
||||||
plotExtra(BLACK);
|
plotExtra(BLACK);
|
||||||
if (extraCT < 2){
|
if (extraCT < 3){
|
||||||
extraCT++;
|
extraCT++;
|
||||||
} else extraCT = 0;
|
} else extraCT = 0;
|
||||||
plotExtra(WHITE);
|
plotExtra(WHITE);
|
||||||
|
|
@ -3028,8 +3051,24 @@ void plotBreathCC(int color){
|
||||||
display.setTextColor(color);
|
display.setTextColor(color);
|
||||||
display.setTextSize(2);
|
display.setTextSize(2);
|
||||||
if (breathCC){
|
if (breathCC){
|
||||||
display.setCursor(90,33);
|
switch (breathCC){
|
||||||
display.println(ccList[breathCC]);
|
case 1:
|
||||||
|
display.setCursor(79,33);
|
||||||
|
display.println("MW+");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
display.setCursor(83,33);
|
||||||
|
display.println("BR");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
display.setCursor(79,33);
|
||||||
|
display.println("VOL");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
display.setCursor(79,33);
|
||||||
|
display.println("EXP");
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
display.setCursor(79,33);
|
display.setCursor(79,33);
|
||||||
display.println("OFF");
|
display.println("OFF");
|
||||||
|
|
@ -3143,12 +3182,23 @@ void plotExtra(int color){
|
||||||
display.setTextColor(color);
|
display.setTextColor(color);
|
||||||
display.setTextSize(2);
|
display.setTextSize(2);
|
||||||
display.setCursor(79,33);
|
display.setCursor(79,33);
|
||||||
if (extraCT == 1){
|
switch (extraCT){
|
||||||
display.println("MOD");
|
case 0:
|
||||||
} else if (extraCT == 2){
|
display.setCursor(79,33);
|
||||||
display.println("SUS");
|
|
||||||
} else {
|
|
||||||
display.println("OFF");
|
display.println("OFF");
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
display.setCursor(83,33);
|
||||||
|
display.println("MW");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
display.setCursor(83,33);
|
||||||
|
display.println("FP");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
display.setCursor(83,33);
|
||||||
|
display.println("SP");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue