Softstep Led Feedback with Mobius

dhrray

2013-05-17 12:39:33

Hi everyone,

I would like the softstep leds to respond to Mobius different status, ie Play/Overdub/Record/Mute/Reverse/HalfSpeed. Mobius is a software looper. My current set up is :

Softstep --> BMT --> Mobius (as a plugin instance of Ableton) // This part controls Mobius behavior
Mobius --> BMT --> Softstep // This part is used for softstep Led Feedback.

Keeping track of Mobius state is really difficult to achieve with BMT alone because for example, by default the reverse mode starts at the end of the loop, ie right before repeating it. Since loops can have different lenght, it seems impossible to code everything in BMT.

Thus I tried a different approach :
- BMT starts a 500ms infinitely repeated timer
- On Timer, a midi note on message is sent to Mobius
- When Mobius receives this particular midi message, a small script is run, checking the status of the different functions
- Then Mobius sends to BMT a midi note on message for each function
- BMT translates the messages from Mobius to control the softstep LED

Then Leds work fine but after a while, I get this error : "Message queue is full (actions are discarded)"
I dont know if this happens because :
A- This approach is a bad idea (too bad for me then)
B- My midi routing sucks (mobius output goes to the same BMT input as the softstep)

Any help appreciated !

mocker

2013-05-20 20:13:28

I think the best approach is to control the SS leds through its midi chart; then you don't have to have Mobius send any feedback. Using counters in BMT to specify how leds should react (1st press, 2nd press etc.) you can achieve almost anything in terms of led control.
Search in this forum by author 'mocker', we've been covering this approach quite extensively and you'll find the link to the SS midi chart and my examples, using Live's Looper instead of Mobius (but it should close).

dhrray

2013-05-21 10:52:05

Thank you for your answer Mocker.
Indeed, I have already read all your posts in this forum and in KeithMcMillen forum, they were really helpful! I also use the midi chart to control the SS leds from BMT. And I did try to program all the LED from BMT alone, but here is what happens in Mobius with the Reverse function for example :

First Press : the reverse function is programmed to be executed at the end of the loop
Second Press within the same loop : the reverse function is triggered instantly

Because this is loop-size dependant, I realized that my BMT programming was not accurate despite all my efforts. Or maybe is there a programming trick I haven't thought of!

Actually, I improved the script in Mobius to get rid of the repeated timer of BMT, which was in my opinion a bit brutal.... So now, the script is triggered for any pad I press that changes Mobius function states. I did that yesterday, so I don t have a lot of perspective yet, but I had sometimes the same "Full queue" error message from BMT. It appeared rather randomly, with a much lower frequency than with the repeated timer method.

So now I have these new questions : Is it possible that I overloaded BMT with to many Midi messages ? The script from Mobius sends around 10 midi messages in a few milliseconds. I have read somewhere in the forum that 3 incoming messages/ms is the limit, is that correct ?

Mat

mocker

2013-05-21 12:19:16

Hi, mmm…… there are some questions specific to BMT that I can't answer.
I think I'll let the gurus answer those :)
Plus I don't really know Mobius, so…

florian

2013-05-25 16:25:40

Hi,

MTP's input queue is rather large, it only overflows if there's really a lot of input events coming in at once, like hundreds per millisecond. Overflow handling is meant to somehow interrupt the blast of incoming events.

Usually, it's an indication of an error somewhere in the MIDI routing or the translators. In particular, it happens when there is a MIDI feedback loop. This can happen e.g. if an incoming MIDI message sends a MIDI message back to Ableton, which, in turn, returns the MIDI message to MTP, which will send it back to Ableton, etc. Or, even worse, a loop within MTP, where an outgoing action will trigger an incoming action, which will trigger the same outgoing action, and so on.

Regarding MIDI speed, yes, standard is 320usec per Byte, so roughly one 3-byte message per millisecond. However, when using virtual MIDI ports, they usually won't have that limitation. So Mobius/Ableton can blast thousands of messages "at once" to MTP, which will overflow the queue in MTP.

Usually a good idea is to look at the Log Window to see what's happening.

let us know if that gives any insight.
Florian