OpenBSD audio & MIDI framework for music and desktop applications Alexandre Ratchov
[email protected] AsiaBSDCon 2010 — Tokyo, Japan Abstract to overcome linux audio subsystem limitations before ALSA became available; now they are replaced by pulse which has sndio is an enhancement of OpenBSD audio and MIDI sub- yet more features than ALSA plug-ins [7, 8]. systems. It features an audio and MIDI server and pro- Above kernel or user-space frameworks suppose that au- vides a new library-based API. The framework is designed dio applications are independent, i.e., that synchronization with certain constraints of music applications in mind: strict or data exchange between applications are not handled by latency control and precise synchronization between audio the audio subsystem. Such frameworks are usable for mu- streams. It supports resampling and format conversions on sic production (or other more complex audio tasks) as long the fly, sharing devices between multiple applications, split- as all audio-related processing is done inside a single mono- ting a device in multiple subdevices and synchronization lithic program. The jack [9] framework overcomes this limi- with non-audio applications. tation: it allows programs to cooperate: they can pass data Simplicity of the architecture, the design and the imple- synchronously to each other; furthermore, jack provides a mentation are of first importance, attempting to obtain a synchronization mechanism for non-audio applications. On lightweight, fast and reliable tool. the other hand, jack supports only one sample format and runs at fixed sample rate, which is acceptable for music ap- plications. In theory jack could be used for desktop also, 1 Introduction but other frameworks have been privileged by Linux desktop Desktop and music audio applications require the operating distributions.