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.
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:
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”.
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 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.
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.
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.
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: