Here is the hardware test setup:
2 APC Mini’s —> powered usb hub —> USB Port 1 of my laptop (I7 quad core 2.5GHz)
1 Behringer X-touch Mini —> USB Port 2 of my laptop (I7 quad core 2.5GHz)
(no particular reason for using the hub, or for connecting the X-touch Mini into a separate laptop port.)
MT Code: 4 cases: (I don’t know how to get the MT code to you… how would I attach it?).
CASE 1:
- APC 1 faders 1, 4, and 7 (this choice is arbitrary) each send CC messages to MT.
- MT loops the messages back to APC 1 but as note on rather than CC.
- Fader 1 turns all LEDS on flashing red
- Fader 4 turns all LEDS on flashing yellow
- Fader 7 turns all LEDS on flashing green
So… A LOT of messages are being sent.
APC 2 fader 2 movement, turns off all LEDS in APC 1
CASE 2:
Same as CASE 1, but CC messages are looped back to APC’s as well as note ons and offs.
This is done to see if the extra CC feedback causes overflow more easily.
CASE 3:
Same as CASE 2, but ONLY CC messages are looped back to APC’s
CASE 4:
Same as CASE 1, but no messages are looped back to APC’s
METHOD USED TO CREATE MIDI Input Buffer Overflow:
- In all cases, I “scrub” the faders as fast as I can through their entire range (0-127)
- One scrub is both 0 to 127, and then down from 127 to 0.
- I do this with one fader, then with two and then with all three faders.
RESULTS:
CASE 1: Loopback Note on messages only.
- One fader: It takes at least 50 (sometimes 100 scrubs) to get the Overflow message.
- Two faders: It takes far fewer scrubs to get Overflow (sometimes 10, sometimes 25)
- I think the variance is caused by uneven scrubbing speed and range
- Three Faders: It usually takes only 5 to 10 scrubs to get overflow.
I can always recover by unplugging the APC’s (actually the hub they’re plugged into). When I do this, I get the message "MIDI IN buffer ok, and can continue using the APC.
CASE 2: Loopback Note on’s and CC’s
- I’m not positive, but I think there’s no difference between this and CASE 1, so CC messages looped back to APC seem not to have an additional effect.
CASE 3: Loopback CC messages only.
- Again… similar to CASE 1.
CASE 4: No loopback
- Even moving all three faders rapidly, I can’t create an overflow.
Additional information:
- After overflow, I can’t restart the project from within MT
- I can close the project, but then, even though the MT is still shown in Task Manager as a running App,
the GUI is frozen, I can’t do anything within MT regardless of the fact that I still see the project in the GUI.
I’ve also tested with all 9 faders in each APC enabled and causing loopback as above. In this case,
- I’ve been able to get two Overflow messages - one immediately after the other.
- Sometimes this happens after only a few scrubs.
- Rarely, (And I think only in CASE 3 - only CC messages looped back- MT recovers without any input from me. I get the MIDI IN buffer ok message spontaneously and everything is working.
If there is a workaround for this, I’d prefer if it didn’t close the Project and then restart it. I find that sometimes to continue working, I have to go the the task manager and end the task in the App section, and then restart MT. Not good for playing publicly. There are even cases when after overflow, I can’t end the task in the App section, and I also see it in Background processes. I can’t end the task there either, and have to shut down the computer and reboot.
It’s also confounding that I get overflow sometimes when I have only moved 2 or maybe at most, 3 faders simultaneously. And in these cases, I certainly havent scrubbed them back and forth. I’ve just adjust some parameters pretty steadily and slowly. I wish there were some way to capture a log file of these occurrences because they seem unrelated to the density of the feedback.
I think it’s also worth noting that only the controller that has caused the overflow stops working. The other controllers continue to work after overflow.
MIDI Engine overflow has happened rarely, but I haven’t tried to figure out what causes it yet. I think I remember that I’d get it if I had already caused an overflow and then used a fader from a different controller.