sndio is the software layer of the
OpenBSD
OpenBSD is a security-focused operating system, security-focused, free software, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by fork (software development), forking NetBSD ...
operating system that manages
sound cards and
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
ports. It provides an optional
sound server and a documented
application programming interface
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standard that des ...
to access either the server or the audio and
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
hardware in a uniform way.
sndio is designed to work for desktop applications, but pays special attention to synchronization mechanisms and reliability required by music applications.
Features
The audio and
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
server is the main component of sndio. It aims to fill the gap between programs requirements and the bare hardware as exposed by
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
device drivers.
This includes:
* perform re-sampling and format conversions; for instance to allow a program that requires 44.1 kHz sample frequency to use a device that supports 48 kHz only.
* mix and route the sound of multiple programs; this allows multiple programs to use the audio device concurrently.
* split an audio device into sub-devices, for instance allowing one program to use the front speakers and another program to use the rear speakers as they were independent simple stereo devices.
* allow one program to record what other programs play.
* control the volume.
* route audio and
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
data through the network; this allows programs running on one computer to use the
sound card
A sound card (also known as an audio card) is an internal expansion card that provides input and output of audio signals to and from a computer under the control of computer programs. The term ''sound card'' is also applied to external audio ...
of another computer.
* route
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
data between programs, allowing one program to send
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
data to another program as it was a hardware
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
port. For instance for a
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
sequencer to control a soft synthesizer.
* start, stop and relocate synchronously a group of audio programs allowing multiple small programs to work together. This can be controlled through standard
MIDI Machine Control (MMC) protocol, for instance from within a
MIDI sequencer
A music sequencer (or audio sequencer or simply sequencer) is a device or application software that can record, edit, or play back music, by handling note and performance information in several forms, typically CV/Gate, MIDI, or Open Sound Contr ...
.
* expose the
sound card
A sound card (also known as an audio card) is an internal expansion card that provides input and output of audio signals to and from a computer under the control of computer programs. The term ''sound card'' is also applied to external audio ...
clock as
MIDI timecode
MIDI time code (MTC) embeds the same timing information as standard SMPTE timecode as a series of small 'quarter-frame' MIDI messages. There is no provision for the user bits in the standard MIDI time code messages, and SysEx messages are use ...
(MTC), allowing
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
programs (e.g. sequencers) or
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
hardware to be synchronized to audio streams.
The last few points are hooks in the
sound server aiming to improve interoperability between audio and
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
programs.
The use of standard
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
protocols for volume and synchronization control enables interoperability with
MIDI
Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
software or hardware connected to a
computer
A computer is a machine that can be Computer programming, programmed to automatically Execution (computing), carry out sequences of arithmetic or logical operations (''computation''). Modern digital electronic computers can perform generic set ...
.
History
Minimal server capabilities were added to —an audio stream manipulation tool and predecessor to —in October 2008,
shipping with OpenBSD 4.5.
In December 2011, was renamed to
and later shipped with OpenBSD 5.1 as the default
sound server started at
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
boot.
Similar frameworks
*
Advanced Linux Sound Architecture
Advanced Linux Sound Architecture (ALSA) is a software framework and part of the Linux kernel that provides an application programming interface (API) for sound card device drivers.
Some of the goals of the ALSA project at its inception were ...
*
JACK Audio Connection Kit
*
Open Sound System
The Open Sound System (OSS) is an interface for making and capturing sound in Unix and Unix-like operating systems. It is based on standard Unix devices system calls (i.e. POSIX read, write, ioctl, etc.). The term also sometimes refers to ...
*
PulseAudio
FreeBSD PCM audio device infrastructure
References
External links
*
*
*
*
{{OpenBSD
BSD software
OpenBSD
Application programming interfaces
2008 software
Audio libraries
Free audio software
OpenBSD software using the ISC license