]> git.alsa-project.org Git - alsa-ucm-conf.git/commitdiff
USB-Audio: Added Beacn Mic and Studio Support
authorCraig McLure <craig@mclure.net>
Tue, 6 May 2025 17:40:47 +0000 (18:40 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 27 May 2025 08:17:05 +0000 (10:17 +0200)
Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/558
Signed-off-by: Craig McLure <craig@mclure.net>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf [new file with mode: 0644]
ucm2/USB-Audio/Beacn/Beacn-Mic.conf [new file with mode: 0644]
ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf [new file with mode: 0644]
ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf [new file with mode: 0644]
ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf [new file with mode: 0644]
ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf [new file with mode: 0644]
ucm2/USB-Audio/Beacn/Beacn-Studio.conf [new file with mode: 0644]
ucm2/USB-Audio/USB-Audio.conf

diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf
new file mode 100644 (file)
index 0000000..2445531
--- /dev/null
@@ -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 (file)
index 0000000..95c6f81
--- /dev/null
@@ -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 (file)
index 0000000..b9886f4
--- /dev/null
@@ -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 (file)
index 0000000..8c90d5b
--- /dev/null
@@ -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 (file)
index 0000000..74ff142
--- /dev/null
@@ -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 (file)
index 0000000..5988d41
--- /dev/null
@@ -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 (file)
index 0000000..1b3adc0
--- /dev/null
@@ -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"
+               }
+       }
+}
index fe2cd4675272851d8ebe514a7675967b7f5ebbfb..d90db394304061fce61c248b5e822decb3aa08ff 100644 (file)
@@ -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