OSDN Git Service

Some small addition
[android-x86/external-alsa-lib.git] / doc / asoundrc.doc
1 # Configuration file syntax
2
3 # Include a new configuration file
4 <filename>
5
6 # Simple assign
7 name [=] value [,|;]
8
9 # Compound assign (first style)
10 name [=] {
11         name1 [=] value [,|;]
12         ...
13 }
14
15 # Compound assign (second style)
16 name.name1 [=] value [,|;]
17
18 # Array assign (first style)
19 name [
20         value0 [,|;]
21         value1 [,|;]
22         ...
23 ]
24
25 # Array assign (second style)
26 name.0 [=] value0 [,|;]
27 name.1 [=] value1 [,|;]
28
29 # ******************************************************************************
30
31 # Server definition
32 server.NAME {
33   host STR              # host where the server is located (if map to local address 
34                         # server is local, and then it may be started automatically)
35   [socket STR]          # PF_LOCAL socket name to listen/connect
36   [port INT]            # PF_INET port number to listen/connect
37 }
38
39 # PCM type definition
40 pcm_type.NAME {
41   [lib STR]             # Library file (default libasound.so)
42   [open STR]            # Open function (default _snd_pcm_NAME_open)
43   [redirect {           # Redirect this PCM to an another
44      [filename STR]     # Configuration file specification
45      name STR           # PCM name specification
46   }]
47 }
48
49 # PCM scope type definition
50 pcm_scope_type.NAME {
51   [lib STR]             # Library file (default libasound.so)
52   [open STR]            # Open function (default _snd_pcm_scope_NAME_open)
53 }
54
55 # PCM scope definition
56 pcm_scope.NAME {
57   type STR              # Scope type
58   ...
59 }
60
61 # Slave PCM definition
62 pcm_slave.NAME {
63   pcm STR               # PCM name
64   # or
65   pcm { }               # PCM definition
66   format STR            # Format
67   channels INT          # Channels
68   rate INT              # Rate
69   period_time INT       # Period time
70   buffer_time INT       # Buffer time
71   etc.
72 }
73
74 # Hook arguments definition
75 hook_args.NAME {
76   ...                   # Arbitrary arguments
77 }
78
79 # PCM hook type
80 pcm_hook_type.NAME {
81   [lib STR]             # Library file (default libasound.so)
82   [install STR]         # Install function (default _snd_pcm_hook_NAME_install)
83 }
84
85 # PCM hook definition
86 pcm_hook.NAME {
87   type STR              # PCM Hook type (see pcm_hook_type)
88   [args STR]            # Arguments for install function (see hook_args)
89   # or
90   [args { }]            # Arguments for install function
91 }
92
93 # PCM definition
94 pcm.NAME {
95   type STR              # Type
96   [comment ANY]         # Saved comments
97
98
99 # PCM types:
100   type hw               # Kernel PCM
101   card INT/STR          # Card name or number
102   [device] INT          # Device number (default 0)     
103   [subdevice] INT       # Subdevice number, -1 first available (default -1)
104
105
106   type hooks            # PCM with hooks
107   slave STR             # Slave name (see pcm_slave)
108   # or
109   slave {               # Slave definition
110     pcm STR             # Slave PCM name
111     # or
112     pcm { }             # Slave PCM definition
113   }
114   hooks {
115     ID STR              # Hook name (see pcm_hook)
116     # or
117     ID { }              # Hook definition (see pcm_hook)
118   }
119
120   type plug             # Format adjusted PCM
121   slave STR             # Slave name (see pcm_slave)
122   # or
123   slave {               # Slave definition
124     pcm STR             # Slave PCM name
125     # or
126     pcm { }             # Slave PCM definition
127     [format STR]        # Slave format (default nearest) or "unchanged"
128     [channels INT]      # Slave channels (default nearest) or "unchanged"
129     [rate INT]          # Slave rate (default nearest) or "unchanged"
130   }
131   route_policy STR      # route policy for automatic ttable generation
132                         # STR can be 'sum', 'copy', 'duplicate'
133                         # sum: result is sum of input channels (default)
134                         # copy: only first channels are copied to destination
135                         # duplicate: duplicate first set of channels
136   ttable {              # Transfer table (bidimensional compound of 
137                         # cchannels * schannels numbers)
138     CCHANNEL {
139       SCHANNEL REAL     # route value (0.0 ... 1.0)
140     }
141   }
142
143
144   type copy             # Copy conversion PCM
145   slave STR             # Slave name (see pcm_slave)
146   # or
147   slave {               # Slave definition
148     pcm STR             # Slave PCM name
149     # or
150     pcm { }             # Slave PCM definition
151   }
152
153
154   type linear           # Linear format conversion PCM
155   type adpcm            # IMA-ADPCM format conversion PCM
156   type alaw             # A-Law format conversion PCM
157   type mulaw            # Mu-Law format conversion PCM
158   slave STR             # Slave name (see pcm_slave)
159   # or
160   slave {               # Slave definition
161     pcm STR             # Slave PCM name
162     # or
163     pcm { }             # Slave PCM definition
164     format STR          # Slave format
165   }
166
167
168   type rate             # Rate conversion PCM
169   slave STR             # Slave name (see pcm_slave)
170   # or
171   slave {               # Slave definition
172     pcm STR             # Slave PCM name
173     # or
174     pcm { }             # Slave PCM definition
175     [format STR]        # Slave format (default client format)
176     rate INT            # Slave rate
177   }
178
179
180   type route            # Attenuated static route PCM
181   slave STR             # Slave name (see pcm_slave)
182   # or
183   slave {               # Slave definition
184     pcm STR             # Slave PCM name
185     # or
186     pcm { }             # Slave PCM definition
187     [format STR]        # Slave format (default client format)
188     [channels INT]      # Slave channels (default client channels)
189   }
190   ttable {              # Transfer table (bidimensional compound of 
191                         # cchannels * schannels numbers)
192     CCHANNEL {
193       SCHANNEL REAL     # route value (0.0 ... 1.0)
194     }
195   }
196
197
198   type multi            # Linked PCMs (exclusive access to selected channels)
199   slaves {              # Slaves definitions
200     ID STR              # Slave name for slave N (see pcm_slave)
201     # or
202     ID {                # Slave definition for slave N
203       pcm STR           # Slave PCM name
204     # or
205       pcm { }           # Slave PCM definition
206       channels INT      # Slave channels
207     }
208   }
209   bindings {            # Bindings table
210     N {                 # Binding for client channel N
211       slave STR         # Slave key
212       channel INT       # Slave channel
213     }
214   }
215   [master INT]          # Define the master slave
216
217
218   type file             # File plugin
219   slave STR             # Slave name (see pcm_slave)
220   # or
221   slave {               # Slave definition
222     pcm STR             # Slave PCM name
223     # or
224     pcm { }             # Slave PCM definition
225   }
226   file STR              # File name
227   # or
228   file INT              # File descriptor
229   [format STR]          # File format (NYI)
230
231
232   type meter            # Meter PCM
233   slave STR             # Slave name (see pcm_slave)
234   # or
235   slave {               # Slave definition or name
236     pcm STR             # Slave PCM name
237     # or
238     pcm { }             # Slave PCM definition
239   }
240   [frequency INT]       # Updates per second
241   scopes {              # Scopes
242     ID STR              # Scope name (see pcm_scope)
243   # or
244     ID { }              # Scope definition (see pcm_scope)
245   }
246
247
248   type droute           # Attenuated dynamic route PCM (NYI)
249   slave STR             # Slave name (see pcm_slave)
250   # or
251   slave {               # Slave definition
252     pcm STR             # Slave PCM name
253     # or
254     pcm { }             # Slave PCM definition
255     [format STR]        # Slave format (default client format)
256     [channels INT]      # Slave channels (default client channels)
257   }
258   ctl STR               # Ctl name
259   bindings {            # Bindings table
260     ID {                # Binding entry
261       cchannels {       # Client channels
262         C INT           # Client channel
263       }
264       schannel {        # Slave channels
265         S INT           # Slave channel
266       }
267       control STR       # Control name of C * S (or C values: only if C == S)
268     }
269   }
270
271
272   type null             # Null endpoint plugin
273   [time INT]            # Time related or not (NYI)
274
275
276   type shm              # Shared memory client PCM
277   server STR            # Server name
278   pcm STR               # PCM name on server
279
280
281   type share            # Share PCM
282   slave STR             # Slave name (see pcm_slave)
283   bindings {            # Bindings table
284     N INT               # Slave channel for client channel N
285   }
286
287
288   type mix              # Mix PCM
289   slave STR             # Slave name (see pcm_slave)
290   bindings {            # Bindings table
291     N INT               # Slave channel for client channel N
292   }
293
294
295 }
296
297 # CTL type definition
298 ctl_type.NAME {
299   [lib STR]             # Library file (default libasound.so)
300   [open STR]            # Open function (default _snd_ctl_NAME_open)
301 }
302
303 # CTL definition
304 ctl.NAME {
305   type STR              # Type
306   [comment ANY]         # Saved comments
307
308 # CTL types
309   type hw
310   card STR/INT          # Card name or number
311
312
313   type shm              # Shared memory client CTL
314   server STR            # Server name
315   ctl STR               # CTL name on server
316
317
318 }
319
320
321 # RAWMIDI type definition
322 rawmidi_type.NAME {
323   [lib STR]             # Library file (default libasound.so)
324   [open STR]            # Open function (default _snd_rawmidi_NAME_open)
325 }
326
327 # RAWMIDI definition
328 rawmidi.NAME {
329   type STR              # Type
330   [comment ANY]         # Saved comments
331
332 # RAWMIDI types:
333   type hw               # Kernel RAWMIDI
334   card INT/STR          # Card name or number
335   [device] INT          # Device number (default 0)     
336   [subdevice] INT       # Subdevice number, -1 first available (default -1)
337
338
339 }
340
341 # SEQ type definition
342 seq_type.NAME {
343   [lib STR]             # Library file (default libasound.so)
344   [open STR]            # Open function (default _snd_seq_NAME_open)
345 }
346
347 # SEQ definition
348 seq.NAME {
349   type STR              # Type
350   [comment ANY]         # Saved comments
351
352 # SEQ types:
353   type hw               # Kernel SEQ
354
355
356 }
357
358 # Aliases
359 DEF.NAME1 NAME2         # DEF.NAME1 is an alias for DEF.NAME2
360
361 Some examples:
362
363 pcm.trident {
364         type hw
365         card 0
366         device 0
367 }
368
369 pcm.ice1712 {
370         type hw
371         card 1
372         device 0
373 }
374
375 pcm.ice1712_spdif {
376         type plug
377         ttable.0.8 1
378         ttable.1.9 1
379         slave.pcm ice1712
380 }
381
382 pcm_slave.rs {
383         pcm trident
384         rate 44100
385 }
386
387 pcm.r {
388         type rate
389         slave rs
390 }
391
392 pcm.m {
393         type meter
394         slave.pcm plug:trident
395         frequency 50
396         scopes [
397                 {
398                         type level
399                 }
400         ]
401 }
402
403 pcm_scope_type.level {
404         lib /home/abramo/scopes/liblevel.so
405