sndio

{{Short description|Sound server}}

{{lowercase title}}

{{Use mdy dates|date=June 2016}}

{{Infobox software

| name = sndio

| title = sndio

| logo =

| logo caption =

| author = {{ubl | Alexandre Ratchov | Jacob Meuser}}

| developer = The OpenBSD Project

| released = {{Start date and age|2008|10}}

| discontinued =

| programming language = C

| operating system = OpenBSD, FreeBSD, NetBSD, Linux

| genre = Sound server

| license = ISC

| alexa =

| website = {{URL|http://www.sndio.org/}}

}}

sndio is the software layer of the OpenBSD operating system that manages sound cards and MIDI ports. It provides an optional sound server and a documented application programming interface to access either the server or the audio and MIDI hardware in a uniform way.{{cite web|url=http://man.openbsd.org/sio_open.3|title=sndio interface to audio devices |work=OpenBSD manual pages|accessdate=August 3, 2016}}

sndio is designed to work for desktop applications, but pays special attention to synchronization mechanisms and reliability required by music applications.{{cite web |url=http://2010.asiabsdcon.org/papers/abc2010-P1B-paper.pdf |title=OpenBSD audio & MIDI framework for music and desktop applications |first1=Alexandre |last1=Ratchov |work = AsiaBSDCon |year=2010 |accessdate=September 16, 2012 }}

Features

The {{mono|sndiod}} audio and MIDI 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 device drivers.{{cite web |url=http://xenia.media.mit.edu/~barons/pdf/arons_AVIOSJ91_audio_servers.pdf |title=The Design of Audio Servers and Toolkits for Supporting Speech in the User Interface |first1=Barry |last1=Arons |date=March 1991 |work=Journal of the American Voice I/O Society |accessdate=September 16, 2012 }} This includes:{{Cite web|url=http://man.openbsd.org/OpenBSD-current/man8/sndiod.8|title=OpenBSD manual pages|website=man.openbsd.org|access-date=May 14, 2016}}

  • 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 data through the network; this allows programs running on one computer to use the sound card of another computer.
  • route MIDI data between programs, allowing one program to send MIDI data to another program as it was a hardware MIDI port. For instance for a MIDI 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.
  • expose the sound card clock as MIDI timecode (MTC), allowing MIDI programs (e.g. sequencers) or MIDI 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 programs.{{cite book |url=http://www.halleonardbooks.com/product/viewproduct.do?itemid=330576 |title=How MIDI Works, 6th Edition |first1=Peter Lawrence |last1=Alexander |first2=Caroline J. |last2=Whitear |publisher=Hal Leonard |year=2001 |isbn=9780634020834 }} The use of standard MIDI protocols for volume and synchronization control enables interoperability with MIDI software or hardware connected to a computer.{{cite web |url=http://undeadly.org/cgi?action=article&sid=20120401171457 |title=The Story Of The Extra Audio Track: Recording Music With OpenBSD |first=Alexandre |last=Ratchov |work=Undeadly |date=March 31, 2012 |accessdate=September 16, 2012 }}

History

Minimal server capabilities were added to {{mono|aucat}}—an audio stream manipulation tool and predecessor to {{mono|sndiod}}—in October 2008,{{cite web |url=http://undeadly.org/cgi?action=article&sid=20081027151344 |title=Developer Blog: ratchov@'s recent audio work |first=Alexandre |last=Ratchov |work=Undeadly |date=October 27, 2008 |accessdate=September 16, 2012 }} shipping with OpenBSD 4.5.{{cite web |url=http://www.openbsd.org/45.html |title=The OpenBSD 4.5 Release |work=OpenBSD |date=May 1, 2009 |accessdate=September 16, 2012 }}{{cite web |url=http://broadcast.oreilly.com/print/37194.html |title=PuffyTron recommends OpenBSD 4.5 |first1=Federico |last1=Biancuzzi |publisher=O'Reilly Media |date=June 15, 2009 |accessdate=September 16, 2012 }} In December 2011, {{mono|aucat}} was renamed to {{mono|sndiod}}{{cite web|url=http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/etc/rc.conf?rev=1.164|title=src/etc/rc.conf|date=December 9, 2011|work=OpenBSD CVS|accessdate=May 14, 2016}} and later shipped with OpenBSD 5.1 as the default sound server started at operating system boot.{{cite web |url=http://www.openbsd.org/51.html |title=The OpenBSD 5.1 Release |work=OpenBSD |date=May 1, 2012 |accessdate=September 16, 2012 }}

Similar frameworks

References

{{Reflist|30em}}