I am writing a sketch for midi controller which have 4 button, two buttons are used to control the bank up and down, two buttons are used to send ProgramChange Msg to the effect.
here is My plan
Bank1 : press button will send PC 98/99
Bank2 : press button will send PC124/125
The problem is , Bank 1 is function, but when I press the bank up button to change to bank2, those button didn't send PC 124 and 125, and press the bank down button to change back to bank1, those button function again( send PC 98 and 99)
Here is the code, can anyone help me ?
#include<MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
int upstate = 0;
int lastupstate = 0;
int downstate = 0;
int lastdownstate = 0;
int BankNumber = 1;
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
MIDI.begin(MIDI_CHANNEL_OMNI);
}
void upmove(){
upstate = digitalRead(2);
if(upstate != lastupstate){
BankNumber++;
delay(50);
lastupstate = upstate;
}
}
void downmove(){
downstate = digitalRead(3);
if(downstate != lastdownstate){
BankNumber--;
delay(50);
lastdownstate = downstate;
}
}
void loop() {
upmove();
downmove();
switch(BankNumber){
case 1 :
if (digitalRead(4) == LOW) {
MIDI.sendProgramChange(98, 1);
delay(200);}
if (digitalRead(5) == LOW) {
MIDI.sendProgramChange(99, 1);
delay(200);}
break;
case 2 :
if (digitalRead(4) == LOW) {
MIDI.sendProgramChange(124, 1);
delay(200);}
if (digitalRead(5) == LOW) {
MIDI.sendProgramChange(125, 1);
delay(200);}
break;
} }