| ![]() |
Pulsar MIDI Latency Tests Last Updated: Nov 5,1999 The following tests were performed with Pulsar v1.0. The MIDI Pulse CircuitMy 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 ConnectionsThe 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
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 ChartIn 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.
Avg: The average (mean) latency. 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! ConclusionConsidering 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.
|