8 translators causes MIDI in buffer overflow and latency

I have a project with 8 translators listening for all 3 byte midi messages. Depending on the conditions, each of the translators output different midi messages based on the incoming midi.

The purpose of the the project is simply to route midi input from one channel to up to eight channels simultaneously.

The project works great, but BMT’s midi in buffer gets overloaded too easily, causing latency and lost notes etc. (Error log: "MIDI IN buffer overflow (MIDI messages lost).

It seems BMT handles the 8 translator listening for the same midi messages by creating 8 identical midi messages. Things like modulation wheel, aftertouch etc. creates a lot of midi messages on their own, so when those streams are multiplied by 8, then BMT’s midi in buffer is overloaded.

Is there a way to fix that? Increase the buffer size! :slight_smile:

(The channel routing to the 8 channels each has their own translator in order to use local variables to complete the operation of each midi message. I am worried that using global variables will result in lots of mistakes in the outputted midi, when many midi messages are coming in at the same time and are manipulating the same global variables.)

Thanks in advance!
Mathias

EDIT: SOLVED! I couldn’t eliminate the problem on my Windows 7 system, but the project runs without issues on the BomeBox. That’s fine with me, because the project was always intended to run from the BomeBox, I think Windows 7 is known for bad MIDI implementation, so my guess is that the problem is rooted here.

Hi,

This is highly unusual as MT Pro is very quick at handling even very fast incoming MIDI messages. Perhaps there some sort of MIDI loop happening in your project file. Could you share it please so I can have a closer look?

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Interesting. I assumed that the error was due to BMT running at standard MIDI speed internally.

Anyway, here’s the project. At the moment I have a midi keyboard routed to MIDI INPUT 1 and three different hardware synths routed to SYNTH 1-3. If I give the modulation wheel on the midi keyboard a good workout (back and forth at considerable speed), the MIDI IN buffer overflows every time. The result is both latency and lost notes.

The preset “Beatstep GUI” is unrelated to the error.

Looking forward to hear what you see in there! :slight_smile:

BR, Mathias

MIDI Channel Patchbay.bmtp (26.3 KB)

I think I see the problem.

If the message type is invalid you are sending a bad status byte.

I added the first and last rules so that if the message type is invalid, nothing is sent.

rr=-1
if gh!=1 then exit rules, skip Outgoing Action
//NoteOffCh1
if oo==128 then rr=oo+7
//NoteOnCh1
if oo==144 then rr=oo+7
//PolyATCh1
if oo==160 then rr=oo+7
//CCCh1
if oo==176 then rr=oo+7
//PitchBCh1
if oo==224 then rr=oo+7
if rr<0 then exit rules, skip Outgoing Action

Here is the updated project file.

MIDI Channel Patchbay-sjc.bmtp (26.5 KB)

Thanks. Were you able to reproduce the problem?
Unfortunately, the problem persists on my system even with your change.

Below is a screenshot showing the log. Turning the modulation wheel generates about 2500 log entries in 2-3 seconds.

BR, Mathias

I don’t see any errors but yes, moving a pitch bend from end to end will generation 16384 messages which each translator will log if you have the log turned on.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Were you able to recreate the problem and cause a MIDI IN buffer overflow?

The screenshot just shows what leads up to the error, and the error is evident in that BMT reports “MIDI IN buffer ok” as a sign that the overflow has passed again. The actual error message is on the error tab, and it’s “MIDI IN buffer overflow (MIDI messages lost).”

Any suggestions on how to avoid the overflow problem?

Best, Mathias

Yes, turn off logging. The logging function of MT Pro will slow down acceptance of MIDI messages. When you turn on logging, it usually warns you of this unless you have checked “Do not show in future”.
Closing the log window should eliminate the overflow errors. You can turn this warning on again in settings.

do-not-show
image

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Ah, I had that warning turned off. But unfortunately, it does not solve the issue to close the log window…

Could you copy and paste your log window. I’m not seeing the problem here. Also, let me know if there is anything else connected up to any other MIDI Inputs such as MIDI 1 or whether any of your synths have a MIDI thru path that may be causing a loop.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

I’ve attached the log content. There are two midi controllers (Beatstep, Swissonic) connected, and 3 hardware synths (Streichfett, Blofeld, DSI Tetra). Those five devices are connected via USB to a USB hub.

None of them (or the pc) are connected to anything else. However, the USB connections are inherently bi-directional, so perhaps there’s something there.

BR, Mathias
Log.txt (244.7 KB)

So try disconnecting one of the synths at a time and see if and when the problem goes away. It is possible that maybe one or more of the synths have a MIDI Thru connection.

You could also assign the Synth aliases to unused Bome Virtual Ports if you don’t want to physically disconnect. If the problem goes away, you likely have a MIDI feedback loop there.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Indeed, the problem seems to be there. Having any synth connected alone solves the problem. However, when any two synths are connected the buffer overflows.

It doesn’t seem to be a setting on the synths. Only the Tetra has a thru function, and that is disabled.

It puzzles me that those synths are not opened for input in BMT. Nothing should get through from them, and nothing from them show up in the BMT log.

Did you see a problem in the port/routing setup?

Thanks for identifying the root of the problem!

BR, Mathias

Disconnect your BeatStep. It is the only thing that has Both MIDI IN and MIDI OUT so maybe it is creating a thru route and a MIDI loop.

Reconnect your other synths with your Beatstep disconnected.

Could you show me your alias assignment? Is anything going to the synth via a separate patchbay or maybe through an iConnectivty device?

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Tried disconnecting the Beatstep, doesn’t fix the overflow.

My alias assignment is:
BEATSTEP ← Beatstep
MIDI INPUT 1 ← Swissonic midi controller
SYNTH 1 → Blofeld
SYNTH 2 → Tetra
SYNTH 3 → Streichfett

I haven’t set any MIDI routing up in the project setting. Does that matter?

Thanks, Mathias

No routing needed as it may cause additional issues. Are your controllers hooked to your computer directly via USB or are they going through some sort of MIDI interface? Are you on Windows or Mac? Are you running Bome Network or any type of virtual port software to anything?

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

They’re connected directly to the pc through a Startech USB hub of good quality. Running Windows 7. No Bome Network or anything else…

Do any of these devices require MIDI drivers or are they all using the standard Windows MIDI drivers?

They don’t require drivers. I have drivers for other MIDI equipment installed, though…

Well, my guess is that only one of these is causing the problem so, disconnect one at a time and see which one is the likely culprit. I doubt if they would all be causing the issue.