Event-based timer interrupts

void setup() {

  //initialize Timer1
  //disable global interrupts
  cli();
  //set entire TCCR1A register to 0
  TCCR1A = 0;
  //same for TCCR1B
  TCCR1B = 0;
  //set compare match register to desired timer count
  OCR1A = 15624;
  //turn on CTC mode
  TCCR1B |= (1 << WGM12);
  //set CS10 and CS12 bits for 1024 prescaler:
  TCCR1B |= (1 << CS10);
  TCCR1B |= (1 << CS12);
  //enable timer compare interrupt:
  TIMSK1 |= (1 << OCIE1A);
  //enable global interrupts
  sei();
  
  //initialise all pins
  initPins();
  //turn off all leds
  openDeck.resetLEDs();
  
  //read incoming MIDI messages on channel 6
  MIDI.begin(6);
  //define funnction for handling incoming MIDI data
  MIDI.setHandleNoteOn(callSetLEDstate);
  
  //start serial
  Serial.begin(115200);
  
}
void loop() {
  
  //read incoming MIDI data
  MIDI.read();
}
ISR(TIMER1_COMPA_vect)
{
    openDeck.blinkLED(BLINK_LED_1, BLINK_LED_2);
}
void callSetLEDstate(byte channel, byte pitch, byte velocity) {
 
 switch(pitch) {
  
  case PLAY_LEFT_NOTE:
  //this is where I want to activate interrupt
  openDeck.changeBlinkState(0, velocity);
  break;
  
  case PLAY_RIGHT_NOTE:
  //or here
  openDeck.changeBlinkState(1, velocity);
  break;
  }
void OpenDeckRewrite::blinkLED(int blinkLED_1, int blinkLED_2)  {

    int arrayOfBlinkLeds[NUMBER_OF_BLINK_LEDS] = {blinkLED_1, blinkLED_2};

    for (int i=0; i<NUMBER_OF_BLINK_LEDS; i++) {

    if (blinkLedOn[i]) {

    // if the LED is off turn it on and vice-versa:
    if (ledState[arrayOfBlinkLeds[i]] == LOW)   ledState[arrayOfBlinkLeds[i]] = true;
    else    ledState[arrayOfBlinkLeds[i]] = false;
    }

        else ledState[arrayOfBlinkLeds[i]] = false;
  }
    writeLEDs();
}