From 8076aefb18714ef386391c90b494a180a4b83dfd Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 24 May 2022 15:36:13 +0200 Subject: [PATCH] GoXLR: rewrite to use the SplitPCM macros Signed-off-by: Jaroslav Kysela --- ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf | 260 +++++++++++++-------------- ucm2/common/pcm/split.conf | 180 +++++++++++++++++++ 2 files changed, 309 insertions(+), 131 deletions(-) diff --git a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf index 343fbcc..8c12f53 100644 --- a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf +++ b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf @@ -1,137 +1,72 @@ -LibraryConfig.pcm.Config { - - pcm.goxlr_stereo_out { - @args [ CARD CHN0 CHN1 ] - @args { - CARD.type string - CHN0.type integer - CHN1.type integer +Include.pcm_split.File "/common/pcm/split.conf" + +Macro [ + { + SplitPCM { + Name "goxlr_stereo_out" + Direction Playback + Channels 2 + HWChannels 10 + HWChannelPos0 FL + HWChannelPos1 FR + HWChannelPos2 FL + HWChannelPos3 FR + HWChannelPos4 FL + HWChannelPos5 FR + HWChannelPos6 FL + HWChannelPos7 FR + HWChannelPos8 FL + HWChannelPos9 FR } - type dshare - ipc_key 5678493 - ipc_perm 0600 - slave { - pcm { - type hw - card $CARD - device 0 - } - channels 10 - } - bindings.0 $CHN0 - bindings.1 $CHN1 - } - - pcm.goxlr_stereo_in { - @args [ CARD CHN0 CHN1 ] - @args { - CARD.type string - CHN0.type integer - CHN1.type integer - } - type dsnoop - ipc_key 5678593 - ipc_perm 0600 - slave { - pcm { - type hw - card $CARD - device 0 - } - channels 23 - } - bindings.0 $CHN0 - bindings.1 $CHN1 } - - pcm.goxlr_system { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_out:" $CARD ",0,1" ] + { + SplitPCM { + Name "goxlr_stereo_in" + Direction Capture + Channels 2 + HWChannels 23 + HWChannelPos0 FL + HWChannelPos1 FR + HWChannelPos2 FL + HWChannelPos3 FR + HWChannelPos4 FL + HWChannelPos5 FR + HWChannelPos6 FL + HWChannelPos7 FR + HWChannelPos8 FL + HWChannelPos9 FR + HWChannelPos10 FL + HWChannelPos11 FR + HWChannelPos12 FL + HWChannelPos13 FR + HWChannelPos14 FL + HWChannelPos15 FR + HWChannelPos16 FL + HWChannelPos17 FR + HWChannelPos18 FL + HWChannelPos19 FR + HWChannelPos20 FL + HWChannelPos21 FR + HWChannelPos22 MONO } } - - pcm.goxlr_game { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_out:" $CARD ",2,3" ] - } - } - - pcm.goxlr_chat { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_out:" $CARD ",4,5" ] - } - } - - pcm.goxlr_music { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_out:" $CARD ",6,7" ] - } - } - - pcm.goxlr_sample { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_out:" $CARD ",8,9" ] - } - } - - pcm.goxlr_mix { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_in:" $CARD ",0,1" ] - } - } - - pcm.goxlr_chatmic { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_in:" $CARD ",2,3" ] - } - } - - pcm.goxlr_sampler_input { - @args [ CARD ] - @args.CARD.type string - type empty - slave.pcm { - @func concat - strings [ "goxlr_stereo_in:" $CARD ",4,5" ] - } - } - -} +] SectionDevice."Speaker" { Comment "System" Value { PlaybackPriority 100 - PlaybackPCM "goxlr_system:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_out" + Direction Playback + HWChannels 10 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR } } @@ -140,7 +75,16 @@ SectionDevice."Line1" { Value { PlaybackPriority 300 - PlaybackPCM "goxlr_game:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_out" + Direction Playback + HWChannels 10 + Channels 2 + Channel0 2 + Channel1 3 + ChannelPos0 FL + ChannelPos1 FR } } @@ -149,7 +93,16 @@ SectionDevice."Line2" { Value { PlaybackPriority 400 - PlaybackPCM "goxlr_music:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_out" + Direction Playback + HWChannels 10 + Channels 2 + Channel0 6 + Channel1 7 + ChannelPos0 FL + ChannelPos1 FR } } @@ -158,7 +111,16 @@ SectionDevice."Headphones" { Value { PlaybackPriority 200 - PlaybackPCM "goxlr_chat:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_out" + Direction Playback + HWChannels 10 + Channels 2 + Channel0 4 + Channel1 5 + ChannelPos0 FL + ChannelPos1 FR } } @@ -167,7 +129,16 @@ SectionDevice."Line3" { Value { PlaybackPriority 500 - PlaybackPCM "goxlr_sample:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_out" + Direction Playback + HWChannels 10 + Channels 2 + Channel0 8 + Channel1 9 + ChannelPos0 FL + ChannelPos1 FR } } @@ -176,7 +147,16 @@ SectionDevice."Line4" { Value { CapturePriority 200 - CapturePCM "goxlr_mix:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_in" + Direction Capture + HWChannels 23 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR } } @@ -185,7 +165,16 @@ SectionDevice."Headset" { Value { CapturePriority 100 - CapturePCM "goxlr_chatmic:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_in" + Direction Capture + HWChannels 23 + Channels 2 + Channel0 2 + Channel1 3 + ChannelPos0 FL + ChannelPos1 FR } } @@ -194,6 +183,15 @@ SectionDevice."Line5" { Value { CapturePriority 300 - CapturePCM "goxlr_sampler_input:${CardId}" + } + Macro.pcm_split.SplitPCMDevice { + Name "goxlr_stereo_in" + Direction Capture + HWChannels 23 + Channels 2 + Channel0 4 + Channel1 5 + ChannelPos0 FL + ChannelPos1 FR } } diff --git a/ucm2/common/pcm/split.conf b/ucm2/common/pcm/split.conf index b0596c1..95a65b5 100644 --- a/ucm2/common/pcm/split.conf +++ b/ucm2/common/pcm/split.conf @@ -71,6 +71,186 @@ DefineMacro.SplitPCM.If.0 { slave.pcm.chmap [ "${var:-__HWChannelPos3}" ] } } + If.pos4 { + Condition { + Type String + Empty "${var:-__HWChannelPos4}" + } + False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos4}" ] + } + } + If.pos5 { + Condition { + Type String + Empty "${var:-__HWChannelPos5}" + } + False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos5}" ] + } + } + If.pos6 { + Condition { + Type String + Empty "${var:-__HWChannelPos6}" + } + False.LibraryConfig.pos6.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos6}" ] + } + } + If.pos7 { + Condition { + Type String + Empty "${var:-__HWChannelPos7}" + } + False.LibraryConfig.pos7.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos7}" ] + } + } + If.pos8 { + Condition { + Type String + Empty "${var:-__HWChannelPos8}" + } + False.LibraryConfig.pos8.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos8}" ] + } + } + If.pos9 { + Condition { + Type String + Empty "${var:-__HWChannelPos9}" + } + False.LibraryConfig.pos9.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos9}" ] + } + } + If.pos10 { + Condition { + Type String + Empty "${var:-__HWChannelPos10}" + } + False.LibraryConfig.pos10.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos10}" ] + } + } + If.pos11 { + Condition { + Type String + Empty "${var:-__HWChannelPos11}" + } + False.LibraryConfig.pos11.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos11}" ] + } + } + If.pos12 { + Condition { + Type String + Empty "${var:-__HWChannelPos12}" + } + False.LibraryConfig.pos12.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos12}" ] + } + } + If.pos13 { + Condition { + Type String + Empty "${var:-__HWChannelPos13}" + } + False.LibraryConfig.pos13.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos13}" ] + } + } + If.pos14 { + Condition { + Type String + Empty "${var:-__HWChannelPos14}" + } + False.LibraryConfig.pos14.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos14}" ] + } + } + If.pos15 { + Condition { + Type String + Empty "${var:-__HWChannelPos15}" + } + False.LibraryConfig.pos15.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos15}" ] + } + } + If.pos16 { + Condition { + Type String + Empty "${var:-__HWChannelPos16}" + } + False.LibraryConfig.pos16.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos16}" ] + } + } + If.pos17 { + Condition { + Type String + Empty "${var:-__HWChannelPos17}" + } + False.LibraryConfig.pos17.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos17}" ] + } + } + If.pos18 { + Condition { + Type String + Empty "${var:-__HWChannelPos18}" + } + False.LibraryConfig.pos18.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos18}" ] + } + } + If.pos19 { + Condition { + Type String + Empty "${var:-__HWChannelPos19}" + } + False.LibraryConfig.pos19.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos19}" ] + } + } + If.pos20 { + Condition { + Type String + Empty "${var:-__HWChannelPos20}" + } + False.LibraryConfig.pos20.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos20}" ] + } + } + If.pos21 { + Condition { + Type String + Empty "${var:-__HWChannelPos21}" + } + False.LibraryConfig.pos21.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos21}" ] + } + } + If.pos22 { + Condition { + Type String + Empty "${var:-__HWChannelPos22}" + } + False.LibraryConfig.pos22.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos22}" ] + } + } + If.pos23 { + Condition { + Type String + Empty "${var:-__HWChannelPos23}" + } + False.LibraryConfig.pos23.SubstiConfig.pcm."${var:__Name}" { + slave.pcm.chmap [ "${var:-__HWChannelPos23}" ] + } + } If.ch1 { Condition { -- 2.47.1