summaryrefslogtreecommitdiff
path: root/lib/libsndio/sndio.7
blob: 39132a66c952b1fbfa6a4bf5a71ab1e100e51ff3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
.\" $OpenBSD: sndio.7,v 1.5 2011/06/03 18:57:51 ratchov Exp $
.\"
.\" Copyright (c) 2007 Alexandre Ratchov <alex@caoua.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: June 3 2011 $
.Dt SNDIO 7
.Os
.Sh NAME
.Nm sndio
.Nd interface to audio and MIDI
.Sh DESCRIPTION
The
.Nm sndio
audio and MIDI system provides access to audio and MIDI hardware and
to services provided by
.Xr aucat 1
and
.Xr midicat 1 ,
summarized below.
.Pp
Hardware
.Xr audio 4
devices correspond to peripherals.
Only one application may use any device at a given time.
Generally a limited number of encodings, sample rates and channel numbers are
supported by the hardware, which may not meet the requirements of
audio programs.
.Pp
To overcome hardware limitations and to allow multiple applications
to share the hardware,
.Xr aucat 1
can be used.
It exposes one or more software subdevices backed by the underlying hardware,
while doing all necessary conversions on the fly.
It can mix multiple streams or split the hardware into
multiple subdevices, to allow programs to use the hardware
concurently.
.Pp
Hardware MIDI ports correspond to serial connectors provided by the
.Xr midi 4
driver.
They are typically used to access MIDI hardware (synthesizers, keyboards,
control surfaces, etc.), but they do not allow applications to exchange
information using the MIDI protocol.
.Pp
Software MIDI thru boxes allow one application to send MIDI data to other
applications connected to the thru box (for instance a software sequencer
can send events to multiple software synthesizers).
There's no hardware involved: thru boxes are created by
.Xr midicat 1 .
.Pp
Additionally,
.Xr aucat 1
exposes a MIDI device used to control and monitor audio streams
in real time using MIDI.
.Sh DEVICE NAMES
From the user's perspective every audio interface, MIDI port,
.Xr aucat 1
or
.Xr midicat 1
service has a name of the form:
.Bd -literal -offset center
type:[hostname/]unit[.option]
.Ed
.Pp
This information is used by audio and MIDI applications to determine
how to access the audio or MIDI device or service.
.Bl -tag -width "option"
.It Pa type
The type of the audio or MIDI device.
Possible values for audio devices are
.Pa aucat
and
.Pa sun ,
corresponding to
.Xr aucat 1
sockets and hardware
.Xr audio 4
devices.
Possible values for MIDI devices are
.Pa midithru ,
.Pa rmidi ,
and
.Pa aucat
corresponding to
.Xr midicat 1
software MIDI thru boxes, hardware
.Xr midi 4
ports and
.Xr aucat 1
control through MIDI respectively.
.It Pa hostname
The hostname where the remote
.Xr aucat 1
or
.Xr midicat 1
server to connect to is running.
.It Pa unit
For hardware audio or MIDI devices, this corresponds to
the character device minor number.
For audio or MIDI devices created with
.Xr aucat 1
or
.Xr midicat 1
it corresponds to the server
.Em unit
number, typically 0.
.It Pa option
Corresponds to the profile string registered using the
.Fl s
option of
.Xr aucat 1
or
.Xr midicat 1 .
Only meaningful for
.Pa aucat
and
.Pa midithru
device types.
.El
.Pp
For example:
.Pp
.Bl -tag -width "aucat:0.rear" -offset 3n -compact
.It Pa sun:0
First hardware audio device.
.It Pa aucat:0
Default audio device of the first
.Xr aucat 1
audio server.
.It Pa aucat:0.rear
First
.Xr aucat 1
server;
device registered with
.Fl s Fa rear .
.It Pa rmidi:5
Hardware MIDI port number 5.
.It Pa midithru:0
First software MIDI thru box created with
.Xr midicat 1 .
.It Pa aucat:0
MIDI port controlling the first
.Xr aucat 1
audio server.
.El
.Sh AUTHENTICATION
If a shared
.Xr aucat 1
or
.Xr midicat 1
server is running, for privacy reasons only one user may have
connections to it at a given time
(though the same user could have multiple connections to it).
Users are identified by their
.Em session cookie ,
which is automatically generated by audio or MIDI applications
upon the first connection to the server.
The cookie is stored in
.Pa "$HOME/.aucat_cookie"
and contains 128 bits of raw random data.
.Pp
If a session needs to be shared between multiple users, they
can connect to the server using the same cookie.
.Sh ENVIRONMENT
.Bl -tag -width "AUDIODEVICEXXX" -compact
.It AUCAT_COOKIE
Path to file containing the session cookie to be used
when connecting to
.Xr aucat
or
.Xr midicat .
.It Ev AUDIODEVICE
Audio device to use if the application provides
no device chooser.
.It Ev MIDIDEVICE
MIDI port to use if the application provides
no MIDI port chooser.
.El
.Pp
Environment variables are ignored by programs
with the set-user-ID or set-group-ID bits set.
.Sh FILES
.Bl -tag -width "/dev/audioNXXX" -compact
.It Pa /dev/audioN
Audio devices.
.It Pa /dev/rmidiN
MIDI ports.
.El
.Sh SEE ALSO
.Xr aucat 1 ,
.Xr midicat 1 ,
.Xr mio_open 3 ,
.Xr sio_open 3 ,
.Xr audio 4 ,
.Xr midi 4