NAME
sndio — audio and MIDI device descriptorsDESCRIPTION
Programs access audio and MIDI hardware using the sndio library. It allows both access through the sndiod(8) server and raw access to the hardware. The audio device or MIDI port, as well as the access method, are designated by the sndio descriptor. It is provided by the user with the program device selection method, or with theAUDIODEVICE
and MIDIDEVICE
environment variables if
there's no device selection method.
Usually, programs access the hardware via the
sndiod(8) server, because raw access to the
hardware is exclusive and requires additional privileges. The
sndiod(8) server supports multiple connections at
a time, allowing multiple programs to use the hardware concurrently. It
performs the necessary audio processing on the fly to overcome any
incompatibility between software and hardware. Connections to
sndiod(8) may also be established through the
network, including from virtual machines.
The sndiod(8) server exposes
MIDI thru ports, allowing one program to send
MIDI data to other programs, for instance to allow a sequencer to send events
to a synthesizer.
Additionally, sndiod(8) exposes a MIDI port used to
control audio programs using standard MIDI Machine Control (MMC), MIDI Time
Code (MTC), and master volume messages.
Server device descriptors
From the user's perspective, every audio device or MIDI port exposed by sndiod(8) has a descriptor of the form:type[@hostname][,servnum]/[devnum|option]
- type
- The type of the audio device or MIDI port. Possible values are:
- hostname
- The hostname or address where the remote sndiod(8) server to connect to is running.
- servnum
- The number of the sndiod(8) server to connect to, corresponding to the integer specified using the -U option of sndiod(8). Useful only if multiple sndiod(8) servers are running on the same system.
- devnum
- Device number. It corresponds to the number of the corresponding -f or -q option on the sndiod(8) command line.
- option
- Corresponds to the sub-device string registered using the -s option of sndiod(8).
Raw device descriptors
Every raw audio device or MIDI port has a descriptor of the form:
type/devnum
The type can be either
rsnd or rmidi. The
rsnd/0 device descriptor accesses the /dev/audio0
device, rsnd/1 accesses /dev/audio1, and so on.
Similarly, rmidi/0 accesses /dev/rmidi0 and so
on.
Default Audio and MIDI devices
When no audio device descriptor is provided to a program or when the reserved word default is used as the audio device, the program will use the one specified in theAUDIODEVICE
,
AUDIOPLAYDEVICE
and/or
AUDIORECDEVICE
environment variables. If
they are not set, the program first tries to connect to
snd/default
. If that fails, it then tries to use
rsnd/0
.
Similarly, if no MIDI descriptor is provided to a program or when the reserved
word default is passed as the device descriptor,
the program uses the one specified in the
MIDIDEVICE
environment variable. If it is
not set, the program first tries to connect to
midithru/0
. If that fails, it then tries to use
rmidi/0
. As long as
sndiod(8) is running, this allows programs to
exchange MIDI data on machines with no MIDI hardware by default, e.g. a MIDI
player could use a software synthesizer with no manual configuration required.
Authentication
For privacy reasons only one user may have connections to sndiod(8) at a given time. Users are identified by their session cookie, which is automatically generated by audio or MIDI programs upon the first connection to the server. The cookie is stored in $HOME/.sndio/cookie and contains 128 bits of raw random data. If a session needs to be shared between multiple users, they can connect to the server using the same cookie.ENVIRONMENT
AUDIODEVICE
- Audio device descriptor to use when no descriptor is explicitly specified to a program.
AUDIOPLAYDEVICE
- Audio device descriptor to use for play-only mode when no
descriptor is explicitly specified to a program. Overrides
AUDIODEVICE
. AUDIORECDEVICE
- Audio device descriptor to use for record-only mode when no
descriptor is explicitly specified to a program. Overrides
AUDIODEVICE
. MIDIDEVICE
- MIDI port descriptor to use when no descriptor is explicitly specified to a program.
FILES
- ~/.sndio/cookie
- User's session authentication cookie.
- /dev/audioN
- Raw audio devices.
- /dev/rmidiN
- Raw MIDI ports.
EXAMPLES
snd/0
- Audio device referred to by the first -f option of sndiod(8).
snd/rear
- Sub-device registered with “-s rear”.
midithru/0
- First MIDI thru port created with sndiod(8).
default
- Default audio or MIDI device.
rsnd/0
- Direct hardware access to /dev/audio0.
rmidi/5
- Direct hardware access to /dev/rmidi5.
SEE ALSO
aucat(1), midicat(1), sndioctl(1), mio_open(3), sio_open(3), sioctl_open(3), audio(4), midi(4), sndiod(8)October 29, 2024 | Debian |