What very odd code
if (button1State != lastButton1State) {
if (button1State == LOW) {
delay(300);
if (button1State == LOW) {
MIDI.sendControlChange(105, 127, 1);
delay(150);
Could be rewritten
if (button1State != lastButton1State && button1state == LOW) {
delay(300);
MIDI.sendControlChange(105, 127, 1);
delay(150);
Which in turn is an odd thing to want to do. You normally want as low a latency as possible not a long 300mS delay before anything happens.
Also that else clause will never be run because it is the same condition as the first part of the if.
Please read the how to use this forum sticky post on how to post code correctly.