I think I’ve solved the problem by being even more severe in limiting the flow of note on/off messages to the APC Mini’s.
I’ll explain, but first, in response to Steve… I have never have sent CC info to the Mini’s. Midi Translator receives CC messages from the Midi’s, and from Live. Sometimes, MT then sends note ons (for LEDs on) or note offs (for LEDs off), but never CC messages.
And in response to Florian’s question, yes.. indeed… I believe it has been when I’ve moved the faders slowly that the problem resurfaces… but probably only at certain speeds of motion.
My solution (hopefully it IS a solution) is NOT to send THIS to an APC in response to each fader increment:
Translator 1:
90 00 00 90 01 00 90 02 00 90 03 00 90 04 00 90 05 00 90 06 00 90 07 00 90 02 01
which turns off 8 LEDs in a column and then turns on the third one.
Instead I start a timer at each increment of the fader. timer delay is 300 ms. The timer is restarted with each increment. So … only if fader movement stops (or is very very slow) does the timer time out. This triggers the output of the 9 translators as below (each with a delay of its own.:
Translator 1: – no delay
90 00 00
Translator 2: – 50 ms delay
90 01 00
Translator 3: – 100 ms delay
90 02 00
.
.
.
Translator 8: – 400 ms delay
90 07 00
Translator 9: – 450 ms delay
90 02 01
I know this is overkill, but it seems to do the trick. I certainly can wait a second for the LED states to change, and I didn’t want to spend yet more time paring down the delay values to see if I could make it happen faster.
*****************************************************************************************************************
An explanation of why I needed this kind of LED control is below, if you’re interested. I’ll leave out much of the detail because it becomes plodding to explain it in depth, though I will do so if someone actually wants it.
In my project, with 8 APC Mini’s, for each Mini, I need to select one LED out of a column of 8 LEDs and turn only this LED on. If one of the other LEDs has previously been lit, I need to turn it off. Since I was nearly out of global variables and didn’t want to do bit mapping. I decided to use brute force and turn off all the LEDs, and then turn on only the one I wanted to light for each Mini. This requires no globals at all.
I think my mistake was to do this by sending out a string of Raw Midi messages for each Mini, turning off 8 LEDs first and then turning on the desired one. That’s 27 bytes. This wouldn’t be a problem if it were only done once, But it is sometimes repeatedly done – 127 times – as a fader moves through its range. And if I move more than one fader at a time it really is a lot of throughput.
My first step was to use a timer to prevent the messages from being sent as often. This was a step in the right direction, but now and again I’d get the error message. I think maybe his happened because I didn’t choose a large enough delay for the timer. And I get the feeling that moving the faders at a certain speed made things worse.