From: Craig McLure Date: Tue, 6 May 2025 17:40:47 +0000 (+0100) Subject: USB-Audio: Added Beacn Mic and Studio Support X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=421e37bae75efc1fc134fbc84bc301f041aaff3b;p=alsa-ucm-conf.git USB-Audio: Added Beacn Mic and Studio Support Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/558 Signed-off-by: Craig McLure Signed-off-by: Jaroslav Kysela --- diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf new file mode 100644 index 0000000..2445531 --- /dev/null +++ b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf @@ -0,0 +1,63 @@ +Include.pcm_split.File "/common/pcm/split.conf" + +Macro [ + { + SplitPCM { + Name "beacn_mic_stereo_out" + Direction Playback + Channels 2 + HWChannels 3 + HWChannelPos0 FL + HWChannelPos1 FR + HWChannelPos2 MONO + } + } + { + SplitPCM { + Name "beacn_mic_stereo_in" + Direction Capture + Channels 2 + HWChannels 4 + HWChannelPos0 FL + HWChannelPos1 FR + HWChannelPos2 MONO # Dry Mic + HWChannelPos3 MONO # Dry + Expander + } + } +] + +SectionDevice."Headphones" { + Comment "Headphones" + + Value { + PlaybackPriority 200 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_mic_stereo_out" + Direction Playback + HWChannels 3 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Mic" { + Comment "Microphone" + + Value { + CapturePriority 200 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_mic_stereo_in" + Direction Capture + HWChannels 4 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf new file mode 100644 index 0000000..95c6f81 --- /dev/null +++ b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf @@ -0,0 +1,11 @@ +Comment "Beacn Mic USB" + +SectionUseCase."HiFi" { + Comment "Default Alsa Profile" + File "/USB-Audio/Beacn/Beacn-Mic-HiFi.conf" +} + +Define.DirectPlaybackChannels 3 +Define.DirectCaptureChannels 4 + +Include.dhw.File "/common/direct.conf" diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf new file mode 100644 index 0000000..b9886f4 --- /dev/null +++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf @@ -0,0 +1,41 @@ +Include.pcm_split.File "/common/pcm/split.conf" + +Macro.playback.SplitPCM { + Name "beacn_studio_stereo_out" + Direction Playback + Channels 2 + HWChannels 11 + HWChannelPos0 FL # Headphone Left + HWChannelPos1 FR # Headphone Right + HWChannelPos2 MONO # Unused Channel + HWChannelPos3 FL # Link 1 Out Left + HWChannelPos4 FR # Link 1 Out Right + HWChannelPos5 FL # Link 2 Out Left + HWChannelPos6 FR # Link 2 Out Right + HWChannelPos7 FL # Link 3 Out Left + HWChannelPos8 FR # Link 3 Out Right + HWChannelPos9 FL # Link 4 Out Left + HWChannelPos10 FR # Link 4 Out Right +} + +Macro.capture.SplitPCM { + Name "beacn_studio_stereo_in" + Direction Capture + Channels 2 + HWChannels 12 + + HWChannelPos0 FL # Microphone Left + HWChannelPos1 FR # Microphone Right + + HWChannelPos2 MONO # UNKNOWN (Possible Dry Mic) + HWChannelPos3 MONO # UNKNOWN (Possible Dry + Expander) + + HWChannelPos4 FL # Link 1 In Left + HWChannelPos5 FR # Link 1 In Right + HWChannelPos6 FL # Link 2 In Left + HWChannelPos7 FR # Link 2 In Right + HWChannelPos8 FL # Link 3 In Left + HWChannelPos9 FR # Link 3 In Right + HWChannelPos10 FL # Link 4 In Left + HWChannelPos11 FR # Link 4 In Right +} diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf new file mode 100644 index 0000000..8c90d5b --- /dev/null +++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf @@ -0,0 +1,35 @@ +SectionDevice."Headphones" { + Comment "Headphones" + + Value { + PlaybackPriority 100 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 11 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Mic" { + Comment "Microphone" + + Value { + CapturePriority 100 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 12 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf new file mode 100644 index 0000000..74ff142 --- /dev/null +++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf @@ -0,0 +1,179 @@ +SectionDevice."Line1" { + Comment "Link 4" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 11 + Channels 2 + Channel0 9 + Channel1 10 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line2" { + Comment "Link 3" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 11 + Channels 2 + Channel0 7 + Channel1 8 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line3" { + Comment "Link 2" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 11 + Channels 2 + Channel0 5 + Channel1 6 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line4" { + Comment "Link 1" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 11 + Channels 2 + Channel0 3 + Channel1 4 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Headphones" { + Comment "Headphones" + + Value { + PlaybackPriority 100 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 11 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line5" { + Comment "Link 4" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 12 + Channels 2 + Channel0 10 + Channel1 11 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line6" { + Comment "Link 3" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 12 + Channels 2 + Channel0 8 + Channel1 9 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line7" { + Comment "Link 2" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 12 + Channels 2 + Channel0 6 + Channel1 7 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line8" { + Comment "Link 1" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 12 + Channels 2 + Channel0 4 + Channel1 5 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Mic" { + Comment "Microphone" + + Value { + CapturePriority 100 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 12 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf new file mode 100644 index 0000000..5988d41 --- /dev/null +++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf @@ -0,0 +1,175 @@ +Include.pcm_split.File "/common/pcm/split.conf" + +Macro.playback.SplitPCM { + Name "beacn_studio_stereo_out" + Direction Playback + Channels 2 + HWChannels 8 + HWChannelPos0 FL + HWChannelPos1 FR + HWChannelPos2 FL + HWChannelPos3 FR + HWChannelPos4 FL + HWChannelPos5 FR + HWChannelPos6 FL + HWChannelPos7 FR +} + +Macro.capture.SplitPCM { + Name "beacn_studio_stereo_in" + Direction Capture + Channels 2 + HWChannels 8 + HWChannelPos0 FL + HWChannelPos1 FR + HWChannelPos2 FL + HWChannelPos3 FR + HWChannelPos4 FL + HWChannelPos5 FR + HWChannelPos6 FL + HWChannelPos7 FR +} + +SectionDevice."Line1" { + Comment "Link 4" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 8 + Channels 2 + Channel0 6 + Channel1 7 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line2" { + Comment "Link 3" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 8 + Channels 2 + Channel0 4 + Channel1 5 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line3" { + Comment "Link 2" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 8 + Channels 2 + Channel0 2 + Channel1 3 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line4" { + Comment "Link 1" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_out" + Direction Playback + HWChannels 8 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line5" { + Comment "Link 4" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 8 + Channels 2 + Channel0 6 + Channel1 7 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line6" { + Comment "Link 3" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 8 + Channels 2 + Channel0 4 + Channel1 5 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line7" { + Comment "Link 2" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 8 + Channels 2 + Channel0 2 + Channel1 3 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line8" { + Comment "Link 1" + + Value { + PlaybackPriority 400 + } + Macro.pcm_split.SplitPCMDevice { + Name "beacn_studio_stereo_in" + Direction Capture + HWChannels 8 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf new file mode 100644 index 0000000..1b3adc0 --- /dev/null +++ b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf @@ -0,0 +1,42 @@ +# The Beacn Studio has two USB ports which both present different PIDs, so we do +# individual checks, and load the appropriate configs for the port connected. + +Comment "Beacn Studio USB" +If.usb1 { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB33ae:0003" + } + True { + # Channel configuration is common between all the profiles, so we'll include it here + Include.pcm_split.File "/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf" + + # If the user isn't using the 'Dual PC' feature of the Beacn Studio, there isn't really + # much point presenting them with an additional 4 unusable inputs and outputs, so we'll + # offer two profile options so those channels can be hidden. + SectionUseCase."Basic" { + Comment "Beacn Studio" + File "/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf" + } + + SectionUseCase."Link" { + Comment "Beacn Studio with Link" + File "/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf" + } + } +} + +If.usb2 { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB33ae:4003" + } + True { + SectionUseCase."Link" { + Comment "Beacn Studio Link" + File "/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf" + } + } +} diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf index fe2cd46..d90db39 100644 --- a/ucm2/USB-Audio/USB-Audio.conf +++ b/ucm2/USB-Audio/USB-Audio.conf @@ -541,7 +541,23 @@ If.ssl2plus { ProfileName "SolidStateLabs/SSL2Plus" } } +If.beacn-mic { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB33ae:0001" + } + True.Define.ProfileName "Beacn/Beacn-Mic" +} +If.beacn-studio { + Condition { + Type RegexMatch + String "${CardComponents}" + Regex "USB33ae:[04]003" + } + True.Define.ProfileName "Beacn/Beacn-Studio" +} If.mixremap { Condition { Type String