Avoiding MIDI Jitter
During Control Parameter Modulations


While accomplishing MIDI control parameter modulation tests on a Matrix-1000, due to its slow MIDI processing, we found that it is useful to do some general MIDI jitter testing while performing control parameter modulations. We wrote this document to give you background information and a guideline to perform control parameter modulations via MIDI while avoiding additional jitter.

Introduction

While performing MIDI control parameter modulation on hardware devices from within a DAW, mainly two aspects need to be considered to avoid additional MIDI jitter:

  • the MIDI interface and the MIDI specification,
  • the receiving MIDI device and its performance at processing incoming MIDI data.

In general MIDI jitter is referred to MIDI events, which are not processed at the intended time, but are processed at an unpredictable time earlier or later.
While MIDI jitter can occur at several places within a setup (host software, MIDI interfaces etc.), this document focuses on how to avoid adding jitter during control parameter modulations, assuming that the host application and MIDI interface are working jitter “free”.

The MIDI Interface

Technically MIDI is designed to transport roughly 1000 average (3 bytes) MIDI events per second on a standard 5-pin MIDI cable, which include note events, CC events, active sensing, MIDI clock etc. At first glance 1000 events per second seam to be plenty, but looking closely at the technical part, the event throughput is quit restricted.
Sending too many events to an interface will lead to an overflow, since the interface is restricted to send ~3200 bytes per second, due to the MIDI specification. Overflow can lead, depending on the implementation of the MIDI interface, to growing message buffers, which will result in not-in-time events.
The following table gives an approximated overview of bandwidth usage by event type.

MIDI Event Type Messages per Second Usage bandwidth
Note On + Note Off 16 + 16 (32) 3%
MIDI CC 32 3%
MIDI CC 14bit High Res 32 6%
SysEx 10 byte 32 10%

No matter what the bandwidth states, it is also important to look at the point of time when events occur. If many events occur at the same point of time, jitter will occur since MIDI is transmitted serial. Serial means that only one event at a time can be transmitted, other events at that same point of time need to be sent later (or earlier).

Single event at each time point

Multiple events at each time point

As it can be seen above, jitter “naturally” occurs, as soon multiple events need to be transmitted at the same point of time. Obviously it is important to keep the amount of data at a time point low and to leave enough time between events to avoid jitter.
While running several tests we found, that the amount of continuous data sent to an interface should not exceed approx. 30% (~960 bytes / second). This leaves enough “space” to send additional note events on time without adding jitter. This might vary depending on how many note events need to be sent.

The Receiving MIDI Device

Technically MIDI data leaves the interface within the MIDI specifications. Theoretically a receiving hardware device (such as a synth) should be able to process all incoming events in time. In reality things look a bit different. Especially vintage synths tend to have slow chips for MIDI processing on board. When sending many messages to a slow processing MIDI device the sound processing can be disrupted, or it can lead to a totally clogged device.
For demonstration an Oberheim Matrix-1000 was compelled to perform tests, which is known to have a very slow MIDI processing unit. In contrast the same test was performed on a Roland JX-8P, where the MIDI processing unit is a lot faster.

As demonstrated the behavior of MIDI devices can differ strongly. Especially for vintage synths the amount of continuous messages send per second need to be within a rate, which the receiving device can handle.

Conclusion

To avoid jitter while performing control parameter modulations it is vital to keep the amount of created MIDI date in a range which can be handled in-time by the MIDI interface. This data includes host automated MIDI data, MIDI processing plug-ins, MIDI notes, MIDI clocks etc.
Also the amount of MIDI data sent to a particular receiving MIDI device needs to be in a range which can be processed by the unit.

Guideline

While the MP3244 Modulation Processor and the SQ4 Sequence Processor are capable to process heavy modulations, MIDI overflow can easily occur on devices which may lead to jittering. By considering following points you can keep jitter as low as possible:

  • Avoid overflowing your MIDI interface. Restrict the amount of messages send to a single output of a MIDI interface to following:

    a. 8 x CC, @ 32 messages / second
        OR
    b. 4 x 14bit (high resolution) CC, @ 32 messages / second
        OR
    c. 2 x SysEx (10bit), @ 32 messages / second
  • Avoid overflowing your (vintage) MIDI devices. Lower the amount of messages sent per second to devices which have slow MIDI processing (e.g. 10 – 20 messages / second).
  • Avoid sending unneeded MIDI messages. E.g. while recording a device which is modulated, make sure to not send any unneeded MIDI messages to other devices on the same MIDI port.
  • Try to keep the amount of messages sent per second between 20 – 50.
  • Keep your MIDI daisy chains short. This results in more potential messages which can be sent to each synth.