Midi Program not sending notes
You are handling your buttons in completely the wrong way. You are basically saying:


  While I press this button send a constant stream of NOTE ON commands. Otherwise send a constant stream of NOTE OFF commands.
  
  At the same time, send more NOTE OFF commands because the other buttons aren't pressed.


So you can see it's going to be a bit of a mess.

Instead you need to detect changes in the state of a button.

For example:

void loop() {
    static bool oldButton1 = LOW;

    bool button1State = digitalRead(button1);

    if (button1State != oldButton1) { // It changed from last time
        oldButton1 = button1State; // Remember it for next time
        if (button1State) { // Pressed
            noteOn(0x90, c3, 0x64); 
        } else { // Released
            noteOn(0x80, c3, 0x00); // Note: 0x80 is NOTE OFF, not 0x90.
        }
    }

    ... etc for the other buttons ...
}