jmamma / MCL

MCL firmware for the MegaCommand MIDI Controller.
BSD 2-Clause "Simplified" License
48 stars 9 forks source link

A4Sound transmission in send_tracks_to_devices is broken. #152

Closed jmamma closed 3 years ago

jmamma commented 3 years ago

mcl_actions::send_tracks_to_devices()

We never actually cache the A4Sound tracks after load, so the sendKitParams implementation is borked.

 49 uint16_t A4Class::sendKitParams(uint8_t* masks, void* scratchpad) {
 50   auto empty_track = (EmptyTrack*)scratchpad;
 51   for (uint8_t i = 0; i < NUM_A4_SOUND_TRACKS; i++) {
 52     if (masks[i] == 1) {
 53      DEBUG_PRINTLN("sending_kit_params");
 54      DEBUG_PRINTLN(i);
 55       auto a4_track = empty_track->load_from_mem<A4Track>(i);
 56       if (a4_track) {
 57         a4_track->sound.soundpool = true;
 58         a4_track->sound.toSysex();
 59       }
 60     }
 61   }
 62 
 63   // TODO latency?
 64   return 0;
 65 }
jmamma commented 3 years ago

There were a additional issues that were breaking a4sound transmission.

One of which was grid_task, not muting the MIDI data before sound transmission.

Fixed in 3.01