From b1bd31f85ca3b3041cbe60843d4bd225288a1ac6 Mon Sep 17 00:00:00 2001 From: "Malte Linke (parzival-space)" Date: Wed, 4 Feb 2026 22:18:13 +0100 Subject: [PATCH] USB-Audio: Add RODECaster Pro II Use tabs instead of spaces Reduce files Include simple configs using new Synthax 8 Remove duplicated Comment assignment Update Priority values Fix regex pattern Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/656 Signed-off-by: "Malte Linke (parzival-space)" Signed-off-by: Jaroslav Kysela --- .../RODECaster-Pro-II-Multitrack-Capture.conf | 223 ++++++++++++++++++ ...RODECaster-Pro-II-Multitrack-Playback.conf | 128 ++++++++++ ucm2/USB-Audio/RODE/RODECaster-Pro-II.conf | 156 ++++++++++++ ucm2/USB-Audio/USB-Audio.conf | 7 + 4 files changed, 514 insertions(+) create mode 100644 ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Capture.conf create mode 100644 ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Playback.conf create mode 100644 ucm2/USB-Audio/RODE/RODECaster-Pro-II.conf diff --git a/ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Capture.conf b/ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Capture.conf new file mode 100644 index 0000000..9868031 --- /dev/null +++ b/ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Capture.conf @@ -0,0 +1,223 @@ +Include.pcm_split.File "/common/pcm/split.conf" + +Macro.playback.SplitPCM { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Channels 2 + HWChannels 16 + Device 1 + + HWChannelPos0 FL # Main Mix Left + HWChannelPos1 FR # Main Mix Right + + HWChannelPos2 MONO # Combo 1 + HWChannelPos3 MONO # Combo 2 + HWChannelPos4 MONO # Combo 3 + HWChannelPos5 MONO # Combo 4 + + HWChannelPos6 FL # Bluetooth Left + HWChannelPos7 FR # Bluetooth Right + + HWChannelPos8 FL # Smart Pads Left + HWChannelPos9 FR # Smart Pads Right + + HWChannelPos10 FL # System Left + HWChannelPos11 FR # System Right + + HWChannelPos12 FL # Chat Left + HWChannelPos13 FR # Chat Right + + HWChannelPos14 FL # USB2 Left + HWChannelPos15 FR # USB2 Right +} + +SectionDevice."Mic" { + Comment "Microphone" + + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},0" + } +} + +SectionDevice."Line:main" { + Comment "Main" + + Value { + CapturePriority 110 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:combo_1" { + Comment "Combo 1" + + Value { + CapturePriority 120 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 1 + Channel0 2 + ChannelPos0 MONO + } +} + +SectionDevice."Line:combo_2" { + Comment "Combo 2" + + Value { + CapturePriority 130 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 1 + Channel0 3 + ChannelPos0 MONO + } +} + +SectionDevice."Line:combo_3" { + Comment "Combo 3" + + Value { + CapturePriority 140 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 1 + Channel0 4 + ChannelPos0 MONO + } +} + +SectionDevice."Line:combo_4" { + Comment "Combo 4" + + Value { + CapturePriority 150 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 1 + Channel0 5 + ChannelPos0 MONO + } +} + +SectionDevice."Line:bluetooth" { + Comment "Bluetooth" + + Value { + CapturePriority 160 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 2 + Channel0 6 + Channel1 7 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:usb2" { + Comment "USB 2" + + Value { + CapturePriority 170 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 2 + Channel0 14 + Channel1 15 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:smart_pads" { + Comment "SMART Pads" + + Value { + CapturePriority 180 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 2 + Channel0 8 + Channel1 9 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:system" { + Comment "System" + + Value { + CapturePriority 190 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 2 + Channel0 10 + Channel1 11 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:chat" { + Comment "Chat" + + Value { + CapturePriority 200 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_in" + Direction Capture + Device 1 + HWChannels 16 + Channels 2 + Channel0 12 + Channel1 13 + ChannelPos0 FL + ChannelPos1 FR + } +} \ No newline at end of file diff --git a/ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Playback.conf b/ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Playback.conf new file mode 100644 index 0000000..30916b2 --- /dev/null +++ b/ucm2/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Playback.conf @@ -0,0 +1,128 @@ +Include.pcm_split.File "/common/pcm/split.conf" + +Macro.playback.SplitPCM { + Name "rodecaster_pro_ii_stereo_out" + Direction Playback + Channels 2 + HWChannels 10 + Device 1 + + HWChannelPos0 FL # System Left + HwChannelPos1 FR # System Right + + HWChannelPos2 FL # Game Left + HWChannelPos3 FR # Game Right + + HWChannelPos4 FL # Music Left + HWChannelPos5 FR # Music Right + + HWChannelPos6 FL # Virtual A Left + HWChannelPos7 FR # Virtual A Right + + HWChannelPos8 FL # Virtual B Left + HWChannelPos9 FR # Virtual B Right +} + +SectionDevice."Speaker" { + Comment "System" + + Value { + PlaybackPriority 100 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_out" + Direction Playback + Device 1 + HWChannels 10 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:chat" { + Comment "Chat" + + Value { + PlaybackPCM "hw:${CardId},0" + PlaybackPriority 110 + } +} + +SectionDevice."Line:game" { + Comment "Game" + + Value { + PlaybackPriority 120 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_out" + Direction Playback + Device 1 + HWChannels 10 + Channels 2 + Channel0 2 + Channel1 3 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:music" { + Comment "Music" + + Value { + PlaybackPriority 130 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_out" + Direction Playback + Device 1 + HWChannels 10 + Channels 2 + Channel0 4 + Channel1 5 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:virtual_a" { + Comment "Virtual A" + + Value { + PlaybackPriority 140 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_out" + Direction Playback + Device 1 + HWChannels 10 + Channels 2 + Channel0 6 + Channel1 7 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Line:virtual_b" { + Comment "Virtual B" + + Value { + PlaybackPriority 150 + } + Macro.pcm_split.SplitPCMDevice { + Name "rodecaster_pro_ii_stereo_out" + Direction Playback + Device 1 + HWChannels 10 + Channels 2 + Channel0 8 + Channel1 9 + ChannelPos0 FL + ChannelPos1 FR + } +} \ No newline at end of file diff --git a/ucm2/USB-Audio/RODE/RODECaster-Pro-II.conf b/ucm2/USB-Audio/RODE/RODECaster-Pro-II.conf new file mode 100644 index 0000000..abafb62 --- /dev/null +++ b/ucm2/USB-Audio/RODE/RODECaster-Pro-II.conf @@ -0,0 +1,156 @@ +# The RODECaster Pro II has two USB ports, each with its own PID. +# USB1 has additionally the special capability to send multiple additonal tracks (multitrack mode). +# The multitrack functionallity can be configured for output and input individually. +# This soundcard also provides two devices on USB1. Device 0 is always the Mic/Chat Track. Device 1 is the +# optional multitrack device. + +Comment "RODECaster Pro II USB" +If.usb1 { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB19f7:0037" + } + True { + # Multitrack is disabled for Input and Output + SectionUseCase."HiFi" { + Comment "RODECaster Pro II" + Config { + SectionDevice."Speaker" { + Comment "System" + Value { + PlaybackPCM "hw:${CardId},1" + PlaybackPriority 100 + } + } + SectionDevice."Line:chat" { + Comment "Chat" + Value { + PlaybackPCM "hw:${CardId},0" + PlaybackPriority 110 + } + } + SectionDevice."Mic" { + Comment "Microphone" + Value { + CapturePCM "hw:${CardId},0" + CapturePriority 100 + } + } + SectionDevice."Line:main" { + Comment "Main" + Value { + CapturePCM "hw:${CardId},1" + CapturePriority 110 + } + } + } + } + } +} +If.usb1_multitrack { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB19f7:0072" + } + True { + # Multitrack is enabled for Input and Output + SectionUseCase."HiFi" { + Comment "RODECaster Pro II" + Config { + Include.playback.File "/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Playback.conf" + Include.capture.File "/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Capture.conf" + } + } + } +} +If.usb1_multitrack_playback { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB19f7:0078" + } + True { + # Multitrack is only for Input enabled + SectionUseCase."HiFi" { + Comment "RODECaster Pro II" + Config { + Include.playback.File "/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Playback.conf" + SectionDevice."Mic" { + Comment "Microphone" + Value { + CapturePCM "hw:${CardId},0" + CapturePriority 100 + } + } + SectionDevice."Line:main" { + Comment "Main" + Value { + CapturePCM "hw:${CardId},1" + CapturePriority 110 + } + } + } + } + } +} +If.usb1_multitrack_capture { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB19f7:0030" + } + True { + # Multitrack is only for Output enabled + SectionUseCase."HiFi" { + Comment "RODECaster Pro II" + Config { + Include.capture.File "/USB-Audio/RODE/RODECaster-Pro-II-Multitrack-Capture.conf" + SectionDevice."Speaker" { + Comment "System" + Value { + PlaybackPCM "hw:${CardId},1" + PlaybackPriority 100 + } + } + SectionDevice."Line:chat" { + Comment "Chat" + Value { + PlaybackPCM "hw:${CardId},0" + PlaybackPriority 110 + } + } + } + } + } +} + +If.usb2 { + Condition { + Type String + Haystack "${CardComponents}" + Needle "USB19f7:0026" + } + True { + SectionUseCase."HiFi" { + Comment "RODECaster Pro II" + Config { + SectionDevice."Speaker" { + Comment "Secondary" + + Value { + PlaybackPCM "hw:${CardId},0" + } + } + SectionDevice."Mic" { + Comment "Secondary" + + Value { + CapturePCM "hw:${CardId},0" + } + } + } + } + } +} diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf index 3eac704..177e1af 100644 --- a/ucm2/USB-Audio/USB-Audio.conf +++ b/ucm2/USB-Audio/USB-Audio.conf @@ -148,6 +148,13 @@ Macro.sony-dualsense-ps5.RegexMatch "Id='054c:0((ce6)|(df2))' Profile='Sony/Dual # and generations from the same series Macro.boss-katana.StringMatch "Id='0582:01d8' Profile='BOSS/Katana'" +Macro.rode-rodecaster-pro-2.RegexMatch { + # RODECaster Pro II USB1: 19f7:0037, 19f7:0072, 19f7:0078, 19f7:0030 + # RODECaster Pro II USB2: 19f7:0026 + Id "19f7:00(37|72|78|30|26)" + Profile "RODE/RODECaster-Pro-II" +} + Macro.roland-quadcapture.StringMatch "Id='0582:012f' Profile='Roland/Quad-Capture'" Macro.roland-bridgecast.StringMatch "Id='0582:02b7' Profile='Roland/BridgeCast'" -- 2.52.0