Problems with keypad (library) and midi

I posted earlier a problem with my keypad library, while I solved that I instantly ran onto another problem. I have a Arduino Micro (original). I am sending midi thru USB using my numpad keypad matrix and im using the keypad library. What doesn't work is that when I press one of the keypad buttons the other ones stop functioning. This makes my device useless unless im running the drum sequencer. Can someone point me in the direction where this could fail? Is it the MIDIUSB that interrupts the loop or something similar? I am fairly new to arduino and coding.

Thank you

/* @file CustomKeypad.pde
  || @version 1.0
  || @author Alexander Brevig
  || @contact alexanderbrevig@gmail.com
  ||
  || @description
  || | Demonstrates changing the keypad size and key values.
  || #
*/
#include <Keypad.h>
#include <MIDIUSB.h>
#include <FifteenStep.h>

//KEYPAD
unsigned long loopCount;
unsigned long startTime;
String msg;

////////BLYNK/////
#define SerialBLE Serial1
#include <BlynkSimpleSerialBLE.h>
char auth[] = "2eb76ef79c144b53a6e23126124c2522";
WidgetLED led1(V13);

///



FifteenStep seq = FifteenStep();
//SEQUENCER
int steps = 16;
int tempo;
int seqmode;

int velocity = 0;
const byte ROWS = 4; //four rows
const byte COLS = 3; //four columns
//define the cymbols on the buttons of the keypads
//36, 38, 57, 48, 45, 42, 46, 59}
//  {'OPEN-HH', 'PEDAL-HIHAT', 'TAMBOURINE'},
//  {'H-H', 'TOM', 'RIMSHOT?'},
//  {'CRASH', 'TOM', 'SNARE'},
//  {'CYMBAL', 'TOM', 'KICK'}
char hexaKeys[ROWS][COLS] = {
  {46, 44, 54},
  {42, 48, 40},
  {57, 47, 38},
  {55, 45, 36}
};
//char hexaKeys[ROWS][COLS] = {
//  {1, 2, 3},
//  {4, 5, 6},
//  {7, 8, 9},
//  {10, 11, 12}
//};
bool pressed = false;
byte rowPins[ROWS] = {7, 2, 3, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 8, 4}; //connect to the column pinouts of the keypad
int intensity = 127;


/// BLYNK FUNCTIONS///

BLYNK_WRITE(V0)  //STEPS
{
  switch (param.asInt()) {
    case 1:
      seq.setSteps(32);
      Serial.println("Steps: 32");
      break;
    case 2:
      seq.setSteps(24);
      Serial.println("Steps: 824");
      break;
    case 3:

      seq.setSteps(16);
      Serial.println("Steps: 16");
      break;
    case 4:

      { seq.setSteps(12);
        Serial.println("Steps: 12");
      }
    case 5:

      seq.setSteps(8);
      Serial.println("Steps: 8");
      break;
    case 6:
      seq.setSteps(4);
      Serial.println("Steps: 4");
      break;
    case 7:

      seq.setSteps(2);
      Serial.println("Steps: 2");
      break;
  }
}

BLYNK_WRITE(V1)
{
  int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
  intensity = pinValue;
  // process received value
}
BLYNK_WRITE(V2) {
  switch (param.asInt())
  {
    case 1: // Item 1
      seq.start();
      break;
    case 2: // Item 2
      seq.pause();
      break;
    case 3: // Item 2
      seq.panic();
      break;
  }
}


BLYNK_WRITE(V3)
{
  int pinValue2 = param.asInt(); // assigning incoming value from pin V1 to a variable
  seq.setTempo(pinValue2);
  // process received value
}

BLYNK_WRITE(V4)
{

  seq.panic();
}



// Order pinout     C2   R1,   C1    R4    C3,    R3,   R2
// Pin-in Arduino    8    7    6      5      4     3     2
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);



/////////////////////////////////////////////
/////      SEQUENCER
/////////////////////////////////////////////

void midi(byte channel, byte command, byte arg1, byte arg2) {
  // init combined byte
  byte combined = command;
  // shift if necessary and add MIDI channel
  if (combined < 128) {
    combined <<= 4;
    combined |= channel;

    // send midi message
    midiEventPacket_t event = {command, combined, arg1, arg2};


    MidiUSB.sendMIDI(event);
    MidiUSB.flush();
  }
}
void step(int current, int last) {

  // blink on even steps
  if (current % 2 == 0)
  { digitalWrite(13, HIGH);
    led1.on();
  }
  else
  {
    digitalWrite(13, LOW);
    led1.off();
  }
}

void noteOn(byte channel, byte pitch, byte velocity) {
  midiEventPacket_t noteOn = {0x09, 0x90 | channel, pitch, velocity};
  MidiUSB.sendMIDI(noteOn);
}

void noteOff(byte channel, byte pitch, byte velocity) {
  midiEventPacket_t noteOff = {0x08, 0x80 | channel, pitch, velocity};
  MidiUSB.sendMIDI(noteOff);


}



/// READS


void keypadEvent(KeypadEvent key) {

  switch (customKeypad.getState()) {
    case PRESSED:
      noteOn(0, key, intensity);
      MidiUSB.flush();
      seq.setNote(0, key, intensity);
      //delay(45);
      break;

    case RELEASED:
      noteOff(0, key, 0);
      MidiUSB.flush();
      seq.setNote(0, key, 0);
      break;

    case HOLD:

      break;

  }
}

void setup() {
  Serial.begin(115200);
  //KEYPAD
  customKeypad.addEventListener(keypadEvent);
  loopCount = 0;
  startTime = millis();
  msg = "";
  //
  tempo = 100;
  seq.begin(tempo, steps);
  seq.setMidiHandler(midi);
  seq.setStepHandler(step);
  seq.pause();
  intensity = 127;
  SerialBLE.begin(9600);
  Blynk.begin(SerialBLE, auth);

}

void loop() {
  char key = customKeypad.getKey();
  loopCount++;
  if ( (millis() - startTime) > 5000 ) {
    Serial.print("Average loops per second = ");
    Serial.println(loopCount / 5);
    startTime = millis();
    loopCount = 0;
  }
  //
  //  if (key) {
  //    noteOn(0, key, intensity);
  //    MidiUSB.flush();
  //    seq.setNote(0, key, intensity);
  //    delay(75);
  //  }
  //    if (key) {
  //
  //        Serial.println(key);
  //    }
//  if (key)
//  {
//    for (int i = 0; i < LIST_MAX; i++) // Scan the whole key list.
//    {
//      if ( customKeypad.key[i].stateChanged )   // Only find keys that have changed state.
//      {
//        switch (customKeypad.key[i].kstate) {
//        }
//      }
//    }
    Blynk.run();
    seq.run();
  }