Example #1
0
void serial_midi_config_bypass(MidiDevice* midi_device){
    //enable catchall THRU
    midi_register_catchall_callback(midi_device, serial_midi_send);
    
    //disable THRU for only non-arpeggiator messages
    midi_register_fallthrough_callback(midi_device, NULL);   
}
Example #2
0
int main(void) {
   midi_init_device(&test_device);
   midi_device_set_send_func(&test_device, send_func);

   midi_send_cc(&test_device, 0, 0, 1);
   midi_send_cc(&test_device, 15, 1, 1);

   midi_register_fallthrough_callback(&test_device, fallthrough_callback);
   midi_register_realtime_callback(&test_device, realtime_callback);

   assert(!fallthrough_called);
   assert(!realtime_called);
   midi_device_input(&test_device, 3, 0xB0, 0, 1);
   midi_device_input(&test_device, 1, MIDI_CLOCK, 0, 0);
   midi_process(&test_device);
   assert(fallthrough_called);
   assert(realtime_called);

   reset();
   assert(!fallthrough_called);
   assert(!realtime_called);
   //interspersed
   midi_device_input(&test_device, 1, 0xB0, 0, 0);
   midi_device_input(&test_device, 1, MIDI_CLOCK, 0, 0);
   midi_device_input(&test_device, 1, 0, 0, 0);
   midi_device_input(&test_device, 1, MIDI_START, 0, 0);
   midi_device_input(&test_device, 1, 1, 0, 0);
   midi_process(&test_device);
   assert(fallthrough_called);
   assert(realtime_called);

   midi_register_cc_callback(&test_device, cc_callback);
   assert(!cc_called);
   midi_device_input(&test_device, 3, 0xB0, 0, 1);
   midi_process(&test_device);
   assert(cc_called);

   reset();
   assert(!cc_called);
   assert(!realtime_called);
   midi_device_input(&test_device, 1, 0xB0, 0, 0);
   midi_device_input(&test_device, 1, MIDI_CLOCK, 0, 0);
   midi_device_input(&test_device, 1, 0, 0, 0);
   midi_device_input(&test_device, 1, MIDI_START, 0, 0);
   midi_device_input(&test_device, 1, 1, 0, 0);
   midi_process(&test_device);
   assert(cc_called);
   assert(realtime_called);

   reset();
   assert(!anything_called());
   midi_device_input(&test_device, 1, 0xB0, 0, 0);
   midi_device_input(&test_device, 1, 0, 0, 0);
   midi_process(&test_device);
   assert(!anything_called());

   printf("\n\nTEST PASSED!\n\n");
   return 0;
}