home
user areas
performance
charts & pics
Z features
etc

site contents
© 1998-2001
john s. cooper



Pulsar MIDI Latency Tests

Last Updated: Nov 5,1999

The following tests were performed with Pulsar v1.0.

 

The MIDI Pulse Circuit

My friends at the Center for New Music and Audio Technologies (CNMAT) at UC Berkeley helped me devise a test to accurately measure MIDI latencies. In his 1997 ICMC paper, Operating Systems Latency Measurement and Analysis for Sound Synthesis and Processing Applications, Adrian Freed describes a circuit which converts MIDI messages to audio pulses. Adrian graciously loaned me his prototype test unit (see picture).

The Connections

The output of the MIDI pulse circuit was wired to the Pulsar Analog In Left. A MIDI controller keyboard was wired through a splitter (MusicQuest 8Port/SE) to both the MIDI pulse circuit and the Pulsar MIDI Input.

The project was set up with the Pulsar Analog Source Left (the MIDI pulse circuit output) running to the Wave Dest Left, and the Pulsar synth module's output connected to the Wave Dest Right. Pulsar Midi In was connected to the Pulsar synth module.

The Test Procedure

1. Start recording (from Pulsar Wave device) in Sound Forge
2. Play a series of notes on the keyboard while recording
3. Zoom Sound Forge in to 1:1 (one sample = one screen pixel)
4. Count the number of samples between the start of left and right audio waveforms
 

For each test, I played a series of notes under various circumstances; e.g. just one note at a time with nothing else playing, or several notes simultaneously, or several notes while a bunch of other MIDI stuff was happening. For this last MIDI-intensive test, I used Creamware's "Lonely Pulsar in Space" demo project. I added my synth-to-be-tested and the MIDI pulse circuit to the project so that the only two signals wired to Wave Dest were the MIDI circuit pulse and the module I was testing. Then with "Lonely Pulsar In Space" playing from Cubase, I played my series of note hits, recording into Sound Forge. For a couple of tests (specifically the Sample Players), I also did a variation of this last test: an all-out-MIDI-torture-test, which was 4 or 5 tracks of incredibly dense bombastic polyphonic MIDI hell.

For details on Sound Forge pixel counting, see Pulsar audio latency test description.

The Chart

In the charts, I've chosen not to break it down by test situation, because I found that the latencies didn't actually increase too much as the MIDI traffic increased. So, I just put all the module test values into the same bucket, and let a spreadsheet do some simple statistical analysis on them to find the average, standard deviation, min, max.

I found that the complexity of a Modular patch or an FM One preset did not appear to affect the latency, so I don't list which preset was used (though I often tested a module with several presets).

I first performed the tests on some real-world synths to get an acceptable base-line. These were the Alesis HR-16 drum machine (generally recognized to be a pretty stable, low latency sample player), and the Waldorf Microwave XT (my favorite synth).

I tested with driver version 1.00.19 (non-beta), at a system clock of 44.1k.

Results in table are first in samples (at 44.1k), then in milliseconds.

ModuleAvg ms Dev ms Min ms Max ms Count
          
Alesis HR-1683.6 2.037.00.17731.66902.047
Microwave XT197.14.4774.11.681282.903267.3919
          
EZ Synth58.31.3210.40.24451.02741.6817
Inferno77.71.769.80.22621.41932.1116
miniscope61.11.3912.70.29481.09841.9010
Blue Synth85.21.9313.40.30591.341072.4325
Modular55.31.256.00.14400.89631.4318
FM One107.82.4412.40.28912.061333.0213
Sample Player224.85.1083.41.891523.4564914.7265

Avg: The average (mean) latency.
Dev: The standard deviation, or the average variance of each individual test from the mean. We can use this as arather simplified approximation of a device's timing jitter
Min: Minimum observed latency.
Min: Maximum observed latency.
Count: The number of tests performed on this module.

Upgrade!

In earlier versions of Pulsar (pre 1.1), the Sample Player was in dire need of optimization. As shown in the chart above, tested on v1.0, its worst observed latency was 14.72ms, which was really terrible, and worst case deviation (max minus min) was 11.27ms. I'm happy to report with 1.1, this situation was resolved (new test statistics still need to be done).

Also, pre 1.1, I noticed in some cases that when two consecutive notes were played on a synth, the second latency would be much higher than the first. I noticed this especially with the Sample Players. For example, the first note latency would be 150 samples, and the second note would be between 800 and 1600 samples. This bug was also fixed after 1.1.

So, make sure you upgrade to the latest Pulsar software!

Conclusion

Considering that my Microwave XT is my favorite synth, for which I have no latency complaints, it is interesting to observe that it compares most closely with the worst of the pulsar devices.

On the whole, I would say that the MIDI latencies are very low, and the jitter is extremely minimal.