REAL-TIME MUSIC SYNTHESIS IN JAVA USING THE METRONOME GARBAGE COLLECTOR

Joshua S. Auerbach, David F. Bacon, Florian Bömers, Perry C. Cheng · University of Michigan Library Repository · 2007

Automatic memory management via garbage collection is the key to the safety, portability, and high productivity of modern programming languages like Java.However, until now no truly real-time garbage collector has existed for Java.As a result, the extreme real-time requirements of interactive music synthesis and processing have made it impossible to build such systems in Java.We have developed a hard real-time garbage collector, called Metronome, around which IBM has built a production real-time Java virtual machine running on a realtime variant of Redhat Enterprise Linux.In this paper we demonstrate the real-time capabilities of our virtual machine with a MIDI music synthesizer that we built entirely in standard Java using the full object-oriented feaures of the language.We show that even with the addition of another thread allocating 8 MB/second of data, our garbage collector is able to sustain error-free 44 KHz music synthesis down to buffer sizes of 1ms, achieving keyboard-to-speaker latencies of 5.0±0.75ms,comparable to a Kurzweil K2000R synthesizer (3.9±1ms) and suitable for high-fidelity interactive performance.

Read the paper · More papers on PaperTik