I got a rather odd MIDI related question.

So whenever I send a LOT of midi data/notes through my USB-MIDI interface to my piano, the MIDI-Interface exceeds bandwidth, and causes the song to slow down then catch up to speed once less notes are sent to the interface, however I can only notice this through watching the status LED on the interface and hearing the song slow/catchup on my keyboard, and no way to capture this.

So my question is, is there a way to simulate MIDI Cable bandwidth and either output the results in a modified MIDI file copy, or through MIDI Out?

  • What is your actual goal? To prevent these effects, don't exceed the specified bandwidth of 3125 bytes/s. – CL. Feb 14 '15 at 21:46
  • Seems like this is more about the characteristics of MIDI and MIDI modules rather than anything to do specifically with PC software or hardware. It should probably go here: music.stackexchange.com/questions/tagged/midi – LawrenceC May 13 '15 at 12:37

Having done this for a living for many years - without any way to actually measure the data stream…
MIDI transmission is serial, so you need to just line up all the data in such a way as it arrives at its destination in roughly the right order, avoiding bottlenecking. The only way to workaround your issue is to stagger the transmission, or stop quantising everything.

Most MIDI 'modules' will prioritise channel 10, as that's traditionally the drum channel.
After that, it will prioritise from 1 - 16.

So the first thing to do is order your channels by how important it is they play exactly on-beat. Anything with a slow attack, slide it all 4 or more ticks early or late, the slower the attack the more ticks you can get away with.

You can do this in such a way as the overall 'groove' is actually better when everything is 'out of time' than when it is quantised, because of the bottlenecking.

Another trick is to move all controller data away from significant beats - it's rare you need to be anything like as precise with controllers as you do with notes.

Thirdly - if you send any kind of patch changes or sysex etc, keep them right out of the way too. If you send an entire setup for all 16 channels at the head of the track, give it a bar of its own at the head of the track to give the machine plenty of time to process it before any notes start.

Additionally - make sure your setup is set to use Running Status [though I doubt anything these days would not be using it by default] Running Status will reduce the amount of data transmitted, by not repeating anything that can be 'assumed to still be valid'.

Just as an example - this track was done using just 16 MIDI channels, played 'live' to the device, with no apparent slowdown. It was done as a product demo for the company I used to work for. There is no external processing or manipulation, the audio was recorded straight from the device's stereo output.
[Track takes a while to get to the groove itself, data peaks start around 45s when the orch comes in & get heavier as the track runs, with brief respite in the drop section]


| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.