Skip to content

Commit aa2469a

Browse files
committed
common: pcm/split: add support up to 32 / 8 channels
MOTU 828 has up to 32 hardware channels. Add support for this configuration to common/pcm/split.conf. Also, add support for up to 8 channels for the abstact devices (like 7.1 surround). Note that this change requires recent alsa-lib (Syntax 7). Link: alsa-project#416 Signed-off-by: Jaroslav Kysela <[email protected]>
1 parent 2740b6c commit aa2469a

File tree

1 file changed

+100
-236
lines changed

1 file changed

+100
-236
lines changed

ucm2/common/pcm/split.conf

Lines changed: 100 additions & 236 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,52 @@
22
# Split multichannel PCM stream to channel groups
33
#
44

5+
#
6+
# Helper macros
7+
#
8+
9+
DefineMacro.SplitPCM_chnpos.If.0 {
10+
Condition {
11+
Type String
12+
Empty "${var:__HWChannelPos}"
13+
}
14+
False.LibraryConfig.0.SubstiConfig.pcm."${var:__Name}" {
15+
slave.pcm.chmap [ "${var:__HWChannelPos}" ]
16+
}
17+
}
18+
19+
DefineMacro.SplitPCM_chn.If.0 {
20+
Condition {
21+
Type RegexMatch
22+
Regex "${var:__ChRegex}"
23+
String "${var:__Channels}"
24+
}
25+
True.LibraryConfig.0.SubstiConfig.pcm."${var:__Name}" {
26+
@args."${eval:$__ChIndex+2}" "CHN${var:__ChIndex}"
27+
@args { "CHN${var:__ChIndex}".type integer }
28+
bindings."${var:__ChIndex}" "$CHN${var:__ChIndex}"
29+
}
30+
}
31+
32+
DefineMacro.SplitPCMDevice_chnpos.If.0 {
33+
Condition {
34+
Type String
35+
Empty "${var:__Channel}"
36+
}
37+
False.Value {
38+
"${var:__Direction}Channel${var:__Index}" "${var:__Channel}"
39+
"${var:__Direction}ChannelPos${var:__Index}" "${var:__ChannelPos}"
40+
}
41+
}
42+
43+
DefineMacro.SplitPCMDevice_addchn.If.0 {
44+
Condition {
45+
Type String
46+
Empty "${var:__Channel}"
47+
}
48+
False.Define.__pcmdev "${var:__pcmdev},${var:__Channel}"
49+
}
50+
551
#
652
# Macro SplitPCM
753
#
@@ -72,226 +118,46 @@ DefineMacro.SplitPCM.If.0 {
72118
bindings.0 $CHN0
73119
}
74120

75-
If.pos1 {
76-
Condition {
77-
Type String
78-
Empty "${var:__HWChannelPos1}"
79-
}
80-
False.LibraryConfig.pos1.SubstiConfig.pcm."${var:__Name}" {
81-
slave.pcm.chmap [ "${var:__HWChannelPos1}" ]
82-
}
83-
}
84-
If.pos2 {
85-
Condition {
86-
Type String
87-
Empty "${var:-__HWChannelPos2}"
88-
}
89-
False.LibraryConfig.pos2.SubstiConfig.pcm."${var:__Name}" {
90-
slave.pcm.chmap [ "${var:-__HWChannelPos2}" ]
91-
}
92-
}
93-
If.pos3 {
94-
Condition {
95-
Type String
96-
Empty "${var:-__HWChannelPos3}"
97-
}
98-
False.LibraryConfig.pos3.SubstiConfig.pcm."${var:__Name}" {
99-
slave.pcm.chmap [ "${var:-__HWChannelPos3}" ]
100-
}
101-
}
102-
If.pos4 {
103-
Condition {
104-
Type String
105-
Empty "${var:-__HWChannelPos4}"
106-
}
107-
False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" {
108-
slave.pcm.chmap [ "${var:-__HWChannelPos4}" ]
109-
}
110-
}
111-
If.pos5 {
112-
Condition {
113-
Type String
114-
Empty "${var:-__HWChannelPos5}"
115-
}
116-
False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" {
117-
slave.pcm.chmap [ "${var:-__HWChannelPos5}" ]
118-
}
119-
}
120-
If.pos6 {
121-
Condition {
122-
Type String
123-
Empty "${var:-__HWChannelPos6}"
124-
}
125-
False.LibraryConfig.pos6.SubstiConfig.pcm."${var:__Name}" {
126-
slave.pcm.chmap [ "${var:-__HWChannelPos6}" ]
127-
}
128-
}
129-
If.pos7 {
130-
Condition {
131-
Type String
132-
Empty "${var:-__HWChannelPos7}"
133-
}
134-
False.LibraryConfig.pos7.SubstiConfig.pcm."${var:__Name}" {
135-
slave.pcm.chmap [ "${var:-__HWChannelPos7}" ]
136-
}
137-
}
138-
If.pos8 {
139-
Condition {
140-
Type String
141-
Empty "${var:-__HWChannelPos8}"
142-
}
143-
False.LibraryConfig.pos8.SubstiConfig.pcm."${var:__Name}" {
144-
slave.pcm.chmap [ "${var:-__HWChannelPos8}" ]
145-
}
146-
}
147-
If.pos9 {
148-
Condition {
149-
Type String
150-
Empty "${var:-__HWChannelPos9}"
151-
}
152-
False.LibraryConfig.pos9.SubstiConfig.pcm."${var:__Name}" {
153-
slave.pcm.chmap [ "${var:-__HWChannelPos9}" ]
154-
}
155-
}
156-
If.pos10 {
157-
Condition {
158-
Type String
159-
Empty "${var:-__HWChannelPos10}"
160-
}
161-
False.LibraryConfig.pos10.SubstiConfig.pcm."${var:__Name}" {
162-
slave.pcm.chmap [ "${var:-__HWChannelPos10}" ]
163-
}
164-
}
165-
If.pos11 {
166-
Condition {
167-
Type String
168-
Empty "${var:-__HWChannelPos11}"
169-
}
170-
False.LibraryConfig.pos11.SubstiConfig.pcm."${var:__Name}" {
171-
slave.pcm.chmap [ "${var:-__HWChannelPos11}" ]
172-
}
173-
}
174-
If.pos12 {
175-
Condition {
176-
Type String
177-
Empty "${var:-__HWChannelPos12}"
178-
}
179-
False.LibraryConfig.pos12.SubstiConfig.pcm."${var:__Name}" {
180-
slave.pcm.chmap [ "${var:-__HWChannelPos12}" ]
181-
}
182-
}
183-
If.pos13 {
184-
Condition {
185-
Type String
186-
Empty "${var:-__HWChannelPos13}"
187-
}
188-
False.LibraryConfig.pos13.SubstiConfig.pcm."${var:__Name}" {
189-
slave.pcm.chmap [ "${var:-__HWChannelPos13}" ]
190-
}
191-
}
192-
If.pos14 {
193-
Condition {
194-
Type String
195-
Empty "${var:-__HWChannelPos14}"
196-
}
197-
False.LibraryConfig.pos14.SubstiConfig.pcm."${var:__Name}" {
198-
slave.pcm.chmap [ "${var:-__HWChannelPos14}" ]
199-
}
200-
}
201-
If.pos15 {
202-
Condition {
203-
Type String
204-
Empty "${var:-__HWChannelPos15}"
205-
}
206-
False.LibraryConfig.pos15.SubstiConfig.pcm."${var:__Name}" {
207-
slave.pcm.chmap [ "${var:-__HWChannelPos15}" ]
208-
}
209-
}
210-
If.pos16 {
211-
Condition {
212-
Type String
213-
Empty "${var:-__HWChannelPos16}"
214-
}
215-
False.LibraryConfig.pos16.SubstiConfig.pcm."${var:__Name}" {
216-
slave.pcm.chmap [ "${var:-__HWChannelPos16}" ]
217-
}
218-
}
219-
If.pos17 {
220-
Condition {
221-
Type String
222-
Empty "${var:-__HWChannelPos17}"
223-
}
224-
False.LibraryConfig.pos17.SubstiConfig.pcm."${var:__Name}" {
225-
slave.pcm.chmap [ "${var:-__HWChannelPos17}" ]
226-
}
227-
}
228-
If.pos18 {
229-
Condition {
230-
Type String
231-
Empty "${var:-__HWChannelPos18}"
232-
}
233-
False.LibraryConfig.pos18.SubstiConfig.pcm."${var:__Name}" {
234-
slave.pcm.chmap [ "${var:-__HWChannelPos18}" ]
235-
}
236-
}
237-
If.pos19 {
238-
Condition {
239-
Type String
240-
Empty "${var:-__HWChannelPos19}"
241-
}
242-
False.LibraryConfig.pos19.SubstiConfig.pcm."${var:__Name}" {
243-
slave.pcm.chmap [ "${var:-__HWChannelPos19}" ]
244-
}
245-
}
246-
If.pos20 {
247-
Condition {
248-
Type String
249-
Empty "${var:-__HWChannelPos20}"
250-
}
251-
False.LibraryConfig.pos20.SubstiConfig.pcm."${var:__Name}" {
252-
slave.pcm.chmap [ "${var:-__HWChannelPos20}" ]
253-
}
254-
}
255-
If.pos21 {
256-
Condition {
257-
Type String
258-
Empty "${var:-__HWChannelPos21}"
259-
}
260-
False.LibraryConfig.pos21.SubstiConfig.pcm."${var:__Name}" {
261-
slave.pcm.chmap [ "${var:-__HWChannelPos21}" ]
262-
}
263-
}
264-
If.pos22 {
265-
Condition {
266-
Type String
267-
Empty "${var:-__HWChannelPos22}"
268-
}
269-
False.LibraryConfig.pos22.SubstiConfig.pcm."${var:__Name}" {
270-
slave.pcm.chmap [ "${var:-__HWChannelPos22}" ]
271-
}
272-
}
273-
If.pos23 {
274-
Condition {
275-
Type String
276-
Empty "${var:-__HWChannelPos23}"
277-
}
278-
False.LibraryConfig.pos23.SubstiConfig.pcm."${var:__Name}" {
279-
slave.pcm.chmap [ "${var:-__HWChannelPos23}" ]
280-
}
281-
}
121+
Macro.pos1.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos1}" }
122+
Macro.pos2.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos2}" }
123+
Macro.pos3.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos3}" }
124+
Macro.pos4.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos4}" }
125+
Macro.pos5.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos5}" }
126+
Macro.pos6.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos6}" }
127+
Macro.pos7.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos7}" }
128+
Macro.pos8.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos8}" }
129+
Macro.pos9.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos9}" }
130+
Macro.pos10.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos10}" }
131+
Macro.pos11.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos11}" }
132+
Macro.pos12.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos12}" }
133+
Macro.pos13.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos13}" }
134+
Macro.pos14.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos14}" }
135+
Macro.pos15.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos15}" }
136+
Macro.pos16.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos16}" }
137+
Macro.pos17.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos17}" }
138+
Macro.pos18.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos18}" }
139+
Macro.pos19.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos19}" }
140+
Macro.pos20.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos20}" }
141+
Macro.pos21.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos21}" }
142+
Macro.pos22.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos22}" }
143+
Macro.pos23.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos23}" }
144+
Macro.pos24.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos24}" }
145+
Macro.pos25.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos25}" }
146+
Macro.pos26.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos26}" }
147+
Macro.pos27.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos27}" }
148+
Macro.pos28.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos28}" }
149+
Macro.pos29.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos29}" }
150+
Macro.pos30.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos30}" }
151+
Macro.pos31.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos31}" }
152+
Macro.pos32.SplitPCM_chnpos { HWChannelPos="${var:-__HWChannelPos32}" }
282153

283-
If.ch1 {
284-
Condition {
285-
Type RegexMatch
286-
Regex "^([2-9]|[1-9][0-9])$"
287-
String "${var:__Channels}"
288-
}
289-
True.LibraryConfig.ch1.SubstiConfig.pcm."${var:__Name}" {
290-
@args.3 CHN1
291-
@args { CHN1.type integer }
292-
bindings.1 $CHN1
293-
}
294-
}
154+
Macro.ch1.SplitPCM_chn { ChIndex=1 ChRegex="^([2-9]|[1-9][0-9])$" }
155+
Macro.ch2.SplitPCM_chn { ChIndex=2 ChRegex="^([3-9]|[1-9][0-9])$" }
156+
Macro.ch3.SplitPCM_chn { ChIndex=3 ChRegex="^([4-9]|[1-9][0-9])$" }
157+
Macro.ch4.SplitPCM_chn { ChIndex=4 ChRegex="^([5-9]|[1-9][0-9])$" }
158+
Macro.ch5.SplitPCM_chn { ChIndex=5 ChRegex="^([6-9]|[1-9][0-9])$" }
159+
Macro.ch6.SplitPCM_chn { ChIndex=6 ChRegex="^([7-9]|[1-9][0-9])$" }
160+
Macro.ch7.SplitPCM_chn { ChIndex=7 ChRegex="^([8-9]|[1-9][0-9])$" }
295161

296162
If.dir {
297163
Condition {
@@ -342,26 +208,24 @@ DefineMacro.SplitPCMDevice {
342208
"${var:__Direction}Channel0" "${var:__Channel0}"
343209
"${var:__Direction}ChannelPos0" "${var:__ChannelPos0}"
344210
}
345-
If.ch1 {
346-
Condition {
347-
Type String
348-
Empty "${var:-__Channel1}"
349-
}
350-
False.Value {
351-
"${var:__Direction}Channel1" "${var:__Channel1}"
352-
"${var:__Direction}ChannelPos1" "${var:__ChannelPos1}"
353-
}
354-
}
211+
212+
Macro.chn1.SplitPCMDevice_chnpos { Index=1 Channel="${var:-__Channel1}" ChannelPos="${var:-__ChannelPos1}" }
213+
Macro.chn2.SplitPCMDevice_chnpos { Index=2 Channel="${var:-__Channel2}" ChannelPos="${var:-__ChannelPos2}" }
214+
Macro.chn3.SplitPCMDevice_chnpos { Index=3 Channel="${var:-__Channel3}" ChannelPos="${var:-__ChannelPos3}" }
215+
Macro.chn4.SplitPCMDevice_chnpos { Index=4 Channel="${var:-__Channel4}" ChannelPos="${var:-__ChannelPos4}" }
216+
Macro.chn5.SplitPCMDevice_chnpos { Index=5 Channel="${var:-__Channel5}" ChannelPos="${var:-__ChannelPos5}" }
217+
Macro.chn6.SplitPCMDevice_chnpos { Index=6 Channel="${var:-__Channel6}" ChannelPos="${var:-__ChannelPos6}" }
218+
Macro.chn7.SplitPCMDevice_chnpos { Index=7 Channel="${var:-__Channel7}" ChannelPos="${var:-__ChannelPos7}" }
355219
}
356220
True {
357221
Define.__pcmdev "${var:__Name}:${CardId},${var:__Device},${var:__Channel0}"
358-
If.ch1 {
359-
Condition {
360-
Type String
361-
Empty "${var:-__Channel1}"
362-
}
363-
False.Define.__pcmdev "${var:__pcmdev},${var:__Channel1}"
364-
}
222+
Macro.ch1.SplitPCMDevice_addchn { Channel="${var:-__Channel1}" }
223+
Macro.ch2.SplitPCMDevice_addchn { Channel="${var:-__Channel2}" }
224+
Macro.ch3.SplitPCMDevice_addchn { Channel="${var:-__Channel3}" }
225+
Macro.ch4.SplitPCMDevice_addchn { Channel="${var:-__Channel4}" }
226+
Macro.ch5.SplitPCMDevice_addchn { Channel="${var:-__Channel5}" }
227+
Macro.ch6.SplitPCMDevice_addchn { Channel="${var:-__Channel6}" }
228+
Macro.ch7.SplitPCMDevice_addchn { Channel="${var:-__Channel7}" }
365229
Value {
366230
"${var:__Direction}Channels" "${var:__Channels}"
367231
"${var:__Direction}PCM" "${var:__pcmdev}"

0 commit comments

Comments
 (0)