CreepyPants
2019-07-28 20:06:44
Okay, still trying to figure out HOW to troubleshoot this.
Because: reasons, i have a pretty complex script (well, complex for an idiot like me) that uses masks in the form of bit mapping for statuses for, in this application, 16 Tracks and their On/Off (Mute/Unmuted) status.
The output is facilitated by a Timer that cycles through an index 1-16, comparing the Masks (is this CC affected or not) to the statuses (a "Layers" mask and a "Group" mask). If the result is "1", then that track should be "On" and I send out the corresponding CC value (0=off, 1+=on).
Everything works okay on the script side of things. Really: I went thru this for months, tested, re-tested, rewrote from scratch multiple times, etc. I've verified on the logs that what I'm sending out is correct.
I'm hyperfocusing on one specific event, because the problem I'm having is intermittent: <em>sometimes the correct tracks do not update on the Pyramid.</em>
In my tests, I'm bopping around different layers. What I'm calling a 'layer' is more than just a single MIDI Track, but a group of related Tracks. (say, snares & claps would be a Layer together because my relationship might be the same with them, that is, I won't be playing snares w/out claps and vice versa (just for an example))
'nuff said, but basically I'm flipping between 2 of these layers. One of the layers should be only Track 2 which is toggled by sending B0 02 xx where xx=0 for off and 01 or greater for on.
The logs most definitely show that I'm sending B0 02 32 or B0 02 00. All good from the MT Pro side.
But the Pyramid doesn't always respond as expected.
Normally I'd just dump this on the shoulders of the Pyramid, but I've tried overloading the Pyramid with incoming MIDI data, sending CC's to turn on/off multiple tracks at once with keystrokes. In all those tests, the Pyramid behaved completely as expected.
So honestly I'm at a loss for what directions I should take to troubleshoot this. From the MTPro side, it would seem from the MTPro logs it is doing exactly what is expected. In tests, the Pyramid should respond, but it's not. Of course, unless I start "recording" that data to see what is happening on the other end, I can't really verify the Log is an accurate representation, but I'm not sure that's a proper place to start.
Note: What my Translators actually do is take the note info from a button controller, update some masks, then call two output Timers, one of which updates the LED stats on the button controller and the other cycles through the 16 Tracks in question, compares the 'state' masks for Layers and Groups with the status of "hey, was this turned on or off" and updates the salient CCs. Really: all that works as expected as evidenced by the logs.
working backwards from the logs I notice when I use the script Tracks don't always update. Moving backwards, one item in particular B0 02 32 should be turning the Track ON and B0 02 00 should turn it off, but it doesn't always.
I have Delays in my Timers (didn't originally). The Test script calls a "DO" 0ms Timer that has an initial delay of 5ms. The CC Output Timer has an inital delay of 5ms and a Repeat Delay of 5ms.
So, finally Question: Where do you think I should go to troubleshoot next?