Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package alsa-ucm-conf for openSUSE:Factory 
checked in at 2026-01-12 10:15:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/alsa-ucm-conf (Old)
 and      /work/SRC/openSUSE:Factory/.alsa-ucm-conf.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "alsa-ucm-conf"

Mon Jan 12 10:15:57 2026 rev:37 rq:1326292 version:1.2.15.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/alsa-ucm-conf/alsa-ucm-conf.changes      
2026-01-03 17:26:18.865020545 +0100
+++ /work/SRC/openSUSE:Factory/.alsa-ucm-conf.new.1928/alsa-ucm-conf.changes    
2026-01-12 10:23:23.782601088 +0100
@@ -1,0 +2,9 @@
+Fri Jan  9 08:39:12 UTC 2026 - Takashi Iwai <[email protected]>
+
+- Update to alsa-ucm-conf 1.2.15.2:
+  * fix common config
+  * USB-Audio: updates, Scarlett 18i20, Steinberg UR22C fixes
+  * ucm2: HDA: headphone handling fixes
+  * ucm2: sof-soundwire: cirrus codec fixes
+
+-------------------------------------------------------------------

Old:
----
  alsa-ucm-conf-1.2.15.1.tar.bz2
  alsa-ucm-conf-1.2.15.1.tar.bz2.sig

New:
----
  alsa-ucm-conf-1.2.15.2.tar.bz2
  alsa-ucm-conf-1.2.15.2.tar.bz2.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ alsa-ucm-conf.spec ++++++
--- /var/tmp/diff_new_pack.r8b9OD/_old  2026-01-12 10:23:24.330623574 +0100
+++ /var/tmp/diff_new_pack.r8b9OD/_new  2026-01-12 10:23:24.334623738 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           alsa-ucm-conf
-Version:        1.2.15.1
+Version:        1.2.15.2
 Release:        0
 Summary:        ALSA UCM Profiles
 License:        BSD-3-Clause

++++++ alsa-ucm-conf-1.2.15.1.tar.bz2 -> alsa-ucm-conf-1.2.15.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/HDA/HiFi-analog.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/HDA/HiFi-analog.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/HDA/HiFi-analog.conf        2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/HDA/HiFi-analog.conf        2026-01-08 
15:28:01.000000000 +0100
@@ -42,6 +42,14 @@
        }
 }
 
+If.hpvol {
+       Condition {
+               Type ControlExists
+               Control "name='Headphone Playback Volume'"
+       }
+       False.Define.hpvol ""
+}
+
 If.hplo {
        Condition {
                Type ControlExists
@@ -53,32 +61,38 @@
        }
 }
 
-SectionDevice."Headphones" {
-       Comment "Headphones"
+If.hp {
+       Condition {
+               Type String
+               Empty "${var:hpvol}"
+       }
+       False.SectionDevice."Headphones" {
+               Comment "Headphones"
 
-       If.headphone_switch {
-               Condition {
-                       Type ControlExists
-                       Control "name='Headphone Playback Switch'"
-               }
-               True {
-                       EnableSequence [
-                               cset "name='Headphone Playback Switch' on"
-                       ]
-                       DisableSequence [
-                               cset "name='Headphone Playback Switch' off"
-                       ]
+               If.headphone_switch {
+                       Condition {
+                               Type ControlExists
+                               Control "name='Headphone Playback Switch'"
+                       }
+                       True {
+                               EnableSequence [
+                                       cset "name='Headphone Playback Switch' 
on"
+                               ]
+                               DisableSequence [
+                                       cset "name='Headphone Playback Switch' 
off"
+                               ]
+                       }
                }
-       }
 
-       Value {
-               PlaybackPriority 200
-               PlaybackPCM "hw:${CardId}"
-               PlaybackMixerElem "${var:hpvol}"
-               PlaybackMasterElem "Master"
-               PlaybackVolume "${var:hpvol} Playback Volume"
-               PlaybackSwitch "Headphone Playback Switch"
-               JackControl "${var:hpjack}"
+               Value {
+                       PlaybackPriority 200
+                       PlaybackPCM "hw:${CardId}"
+                       PlaybackMixerElem "${var:hpvol}"
+                       PlaybackMasterElem "Master"
+                       PlaybackVolume "${var:hpvol} Playback Volume"
+                       PlaybackSwitch "Headphone Playback Switch"
+                       JackControl "${var:hpjack}"
+               }
        }
 }
 
@@ -128,7 +142,13 @@
        }
 }
 
-Include.hifi-mic.File "/HDA/HiFi-mic.conf"
+If.cap-sw {
+       Condition {
+               Type ControlExists
+               Control "name='Capture Switch'"
+       }
+       True.Include.hifi-mic.File "/HDA/HiFi-mic.conf"
+}
 
 If.line {
        Condition {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf 
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/AllenAndHeath/Zedi10.conf 
2026-01-08 15:28:01.000000000 +0100
@@ -5,8 +5,6 @@
        File "/USB-Audio/AllenAndHeath/Zedi10-Hifi.conf"
 }
 
-Define.DirectCardName "Zedi10"
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" CardName="Zedi10" PlaybackChannels=4 
CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Arturia/Minifuse-12.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Arturia/Minifuse-12.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Arturia/Minifuse-12.conf  
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Arturia/Minifuse-12.conf  
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Arturia/Minifuse-12-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Arturia/Minifuse-4.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Arturia/Minifuse-4.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Arturia/Minifuse-4.conf   
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Arturia/Minifuse-4.conf   
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Arturia/Minifuse-4-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 6
-Define.DirectCaptureChannels 6
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=6 CaptureChannels=6 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Audient/Audient-iD14-0008.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Audient/Audient-iD14-0008.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Audient/Audient-iD14-0008.conf    
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Audient/Audient-iD14-0008.conf    
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Audient/Audient-iD14-HiFi-0008.conf"
 }
 
-Define.DirectPlaybackChannels 6
-Define.DirectCaptureChannels 12
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=6 CaptureChannels=12 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf     
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Audient/Audient-iD4-0003.conf     
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Audient/Audient-iD4-HiFi-0003.conf"
 }
 
-Define.DirectPlaybackChannels 2
-Define.DirectCaptureChannels 2
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=2 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf     
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Audient/Audient-iD4-0009.conf     
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Audient/Audient-iD4-HiFi-0009.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Beacn/Beacn-Mic.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Beacn/Beacn-Mic.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Beacn/Beacn-Mic.conf      
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Beacn/Beacn-Mic.conf      
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Beacn/Beacn-Mic-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 3
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=3 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/Flow8-Recording.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/Flow8-Recording.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/Flow8-Recording.conf    
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/Flow8-Recording.conf    
2026-01-08 15:28:01.000000000 +0100
@@ -5,8 +5,6 @@
        File "/USB-Audio/Behringer/Flow8-Recording-Hifi.conf"
 }
 
-Define.DirectCardName "Flow8 Recording"
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 10
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" CardName="Flow8 Recording" 
PlaybackChannels=4 CaptureChannels=10 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf    
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/Flow8-Streaming.conf    
2026-01-08 15:28:01.000000000 +0100
@@ -5,8 +5,6 @@
        File "/USB-Audio/Behringer/Flow8-Streaming-Hifi.conf"
 }
 
-Define.DirectCardName "Flow8 Streaming"
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 2
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" CardName="Flow8 Streaming" 
PlaybackChannels=4 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/UMC202HD.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/UMC202HD.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/UMC202HD.conf   
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/UMC202HD.conf   
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Behringer/UMC202HD-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 2
-Define.DirectCaptureChannels 2
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=2 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/UMC204HD.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/UMC204HD.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/UMC204HD.conf   
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/UMC204HD.conf   
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Behringer/UMC204HD-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 2
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/UMC404HD.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/UMC404HD.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Behringer/UMC404HD.conf   
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Behringer/UMC404HD.conf   
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Behringer/UMC404HD-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf 
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Digidesign/Digidesign-Mbox-3.conf 
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Digidesign/Digidesign-Mbox-3-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Focusrite/Scarlett-18i20-HiFi.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Focusrite/Scarlett-18i20-HiFi.conf
--- 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Focusrite/Scarlett-18i20-HiFi.conf    
    2025-12-19 11:32:00.000000000 +0100
+++ 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Focusrite/Scarlett-18i20-HiFi.conf    
    2026-01-08 15:28:01.000000000 +0100
@@ -9,7 +9,7 @@
                        Direction Playback
                        Format S24_3LE
                        Channels 2
-                       HWChannels 20
+                       HWChannels "${var:DirectPlaybackChannels}"
                        HWChannelPos0 FL
                        HWChannelPos1 FR
                        HWChannelPos2 FL
@@ -38,7 +38,7 @@
                        Direction Capture
                        Format S24_3LE
                        Channels 1
-                       HWChannels 20
+                       HWChannels "${var:DirectCaptureChannels}"
                        HWChannelPos0 MONO
                        HWChannelPos1 MONO
                        HWChannelPos2 MONO
@@ -67,7 +67,7 @@
                        Direction Capture
                        Format S24_3LE
                        Channels 2
-                       HWChannels 20
+                       HWChannels "${var:DirectCaptureChannels}"
                        HWChannelPos0 FL
                        HWChannelPos1 FR
                        HWChannelPos2 FL
@@ -96,7 +96,7 @@
                        Direction Playback
                        Format S24_3LE
                        Channels 8
-                       HWChannels 20
+                       HWChannels "${var:DirectPlaybackChannels}"
                        HWChannelPos0 UNKNOWN
                        HWChannelPos1 UNKNOWN
                        HWChannelPos2 UNKNOWN
@@ -125,7 +125,7 @@
                        Direction Capture
                        Format S24_3LE
                        Channels 8
-                       HWChannels 20
+                       HWChannels "${var:DirectCaptureChannels}"
                        HWChannelPos0 UNKNOWN
                        HWChannelPos1 UNKNOWN
                        HWChannelPos2 UNKNOWN
@@ -163,7 +163,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 6
                Channel1 7
@@ -182,7 +182,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 8
                Channel1 9
@@ -201,7 +201,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 0
                Channel1 1
@@ -220,7 +220,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 2
                Channel1 3
@@ -239,7 +239,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 4
                Channel1 5
@@ -262,7 +262,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 6
                Channel1 7
@@ -281,7 +281,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 8
                Channel1 9
@@ -302,7 +302,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 0
                ChannelPos0 MONO
@@ -319,7 +319,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 1
                ChannelPos0 MONO
@@ -336,7 +336,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 2
                ChannelPos0 MONO
@@ -353,7 +353,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 3
                ChannelPos0 MONO
@@ -370,7 +370,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 4
                ChannelPos0 MONO
@@ -387,7 +387,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 5
                ChannelPos0 MONO
@@ -404,7 +404,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 6
                ChannelPos0 MONO
@@ -421,7 +421,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 7
                ChannelPos0 MONO
@@ -440,7 +440,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_stereo_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 2
                Channel0 10
                Channel1 11
@@ -461,7 +461,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_adat_out"
                Direction Playback
-               HWChannels 20
+               HWChannels "${var:DirectPlaybackChannels}"
                Channels 8
                Channel0 12
                Channel1 13
@@ -494,7 +494,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 10
                ChannelPos0 MONO
@@ -511,7 +511,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_mono_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 1
                Channel0 11
                ChannelPos0 MONO
@@ -530,7 +530,7 @@
        Macro.pcm_split.SplitPCMDevice {
                Name "18i20_adat_in"
                Direction Capture
-               HWChannels 20
+               HWChannels "${var:DirectCaptureChannels}"
                Channels 8
                Channel0 12
                Channel1 13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Focusrite/Scarlett-18i20.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Focusrite/Scarlett-18i20.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Focusrite/Scarlett-18i20.conf     
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Focusrite/Scarlett-18i20.conf     
2026-01-08 15:28:01.000000000 +0100
@@ -1,4 +1,4 @@
-# The 18i20 provides 20 playback and capture channels each:
+# Channel mapping
 #
 # +----+---------------+-----------------+
 # | Ch |     Inputs    |      Outputs    |
@@ -56,6 +56,19 @@
 #
 
 Define.Generation "1st"
+Define.DirectPlaybackChannels 20
+Define.DirectCaptureChannels 20  # fallback; overridden per generation
+
+If.gen1 {
+       Condition {
+               Type RegexMatch
+               String "${CardComponents}"
+               Regex "USB1235:800c"
+       }
+       True.Define {
+               DirectCaptureChannels 18
+       }
+}
 
 If.gen2 {
        Condition {
@@ -63,7 +76,10 @@
                String "${CardComponents}"
                Regex "USB1235:8201"
        }
-       True.Define.Generation "2nd"
+       True.Define {
+               Generation "2nd"
+               DirectCaptureChannels 18
+       }
 }
 
 If.gen3 {
@@ -72,7 +88,10 @@
                String "${CardComponents}"
                Regex "USB1235:8215"
        }
-       True.Define.Generation "3rd"
+       True.Define {
+               Generation "3rd"
+               DirectCaptureChannels 20
+       }
 }
 
 If.gen4 {
@@ -81,7 +100,32 @@
                String "${CardComponents}"
                Regex "USB1235:821d"
        }
-       True.Define.Generation "4th"
+       True {
+               Define {
+                       Generation "4th"
+                       DirectPlaybackChannels 26
+                       DirectCaptureChannels 26
+                       bcdDevice "${sys-card:device/../bcdDevice}"
+               }
+               If.fwp {
+                       # bcdNumbers 0900-097a
+                       Condition {
+                               Type RegexMatch
+                               String "${var:bcdDevice}"
+                               Regex "(09[0-6].|097[0-9a])"
+                       }
+                       True.Define.DirectPlaybackChannels 24
+               }
+               If.fwc {
+                       # bcdNumbers 0000-08ff, 0900-097a
+                       Condition {
+                               Type RegexMatch
+                               String "${var:bcdDevice}"
+                               Regex "(0[0-8]..|09[0-6].|097[0-9a])"
+                       }
+                       True.Define.DirectCaptureChannels 20
+               }
+       }
 }
 
 Comment "Focusrite Scarlett 18i20 ${var:Generation} Gen"
@@ -91,7 +135,29 @@
        File "/USB-Audio/Focusrite/Scarlett-18i20-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 20
-Define.DirectCaptureChannels 20
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase {
+       Id="Direct 48kHz"
+       PlaybackChannels="${var:DirectPlaybackChannels}"
+       PlaybackRate=48000
+       CaptureChannels="${var:DirectCaptureChannels}"
+       CaptureRate=48000
+}
+#
+# Uncomment when tested!
+#
+#Macro.1.DirectUseCase {
+#      Id="Direct 96kHz"
+#      PlaybackChannels=16
+#      PlaybackRate=96000
+#      CaptureChannels=16
+#      CaptureRate=96000
+#}
+#Macro.2.DirectUseCase {
+#      Id="Direct 192kHz"
+#      PlaybackChannels=10
+#      PlaybackRate=192000
+#      CaptureChannels=10
+#      CaptureRate=192000
+#}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf        
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Focusrite/Scarlett-2i.conf        
2026-01-08 15:28:01.000000000 +0100
@@ -91,12 +91,6 @@
        File "/USB-Audio/Focusrite/${var:Profile}.conf"
 }
 
-If.dhw {
-       Condition { Type AlwaysTrue }
-       True.Define {
-               DirectPlaybackChannels "${var:PlaybackChannels}"
-               DirectCaptureChannels "${var:CaptureChannels}"
-       }
-}
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels="${var:PlaybackChannels}" 
CaptureChannels="${var:CaptureChannels}" }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/GoXLR/GoXLR.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/GoXLR/GoXLR.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/GoXLR/GoXLR.conf  2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/GoXLR/GoXLR.conf  2026-01-08 
15:28:01.000000000 +0100
@@ -35,12 +35,6 @@
        File "/USB-Audio/GoXLR/GoXLR-HiFi.conf"
 }
 
-If.direct {
-       Condition { Type AlwaysTrue }
-       True {
-               Define.DirectPlaybackChannels "${var:PlaybackChannels}"
-               Define.DirectCaptureChannels "${var:CaptureChannels}"
-       }
-}
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels="${var:PlaybackChannels}" 
CaptureChannels="${var:CaptureChannels}" }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/D828.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/D828.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/D828.conf    2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/D828.conf    2026-01-08 
15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/MOTU/D828-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 32    #32 channels via physical outputs
-Define.DirectCaptureChannels 30     #28 channels via physical inputs + 2 
internal loopback inputs
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=32 CaptureChannels=30 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/M2.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/M2.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/M2.conf      2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/M2.conf      2026-01-08 
15:28:01.000000000 +0100
@@ -5,8 +5,6 @@
        File "/USB-Audio/MOTU/M2-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 2
-Define.DirectCaptureChannels 2
-
-Include.dhw.File "/common/direct.conf"
+Include.dhw.File "/common/directm.conf"
 
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=2 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/M4.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/M4.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/M4.conf      2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/M4.conf      2026-01-08 
15:28:01.000000000 +0100
@@ -5,8 +5,6 @@
        File "/USB-Audio/MOTU/M4-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 4
-
-Include.dhw.File "/common/direct.conf"
+Include.dhw.File "/common/directm.conf"
 
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/M6.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/M6.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/M6.conf      2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/M6.conf      2026-01-08 
15:28:01.000000000 +0100
@@ -5,8 +5,6 @@
        File "/USB-Audio/MOTU/M6-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 6
-
-Include.dhw.File "/common/direct.conf"
+Include.dhw.File "/common/directm.conf"
 
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=6 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/UltraLite-mk5.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/UltraLite-mk5.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/MOTU/UltraLite-mk5.conf   
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/MOTU/UltraLite-mk5.conf   
2026-01-08 15:28:01.000000000 +0100
@@ -5,8 +5,6 @@
        File "/USB-Audio/MOTU/UltraLite-mk5-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 22
-Define.DirectCaptureChannels 20
-
-Include.dhw.File "/common/direct.conf"
+Include.dhw.File "/common/directm.conf"
 
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=22 CaptureChannels=20 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf
 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf
--- 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf
 2025-12-19 11:32:00.000000000 +0100
+++ 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1.conf
 2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/NativeInstruments/Traktor-Kontrol-Z1-Mixer.conf"
 }
 
-Define.DirectPlaybackChannels 2
-
-Include.dhw.File "/common/direct.conf"
+Include.dhw.File "/common/directm.conf"
 
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Presonus/Revelator-IO-44.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Presonus/Revelator-IO-44.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Presonus/Revelator-IO-44.conf     
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Presonus/Revelator-IO-44.conf     
2026-01-08 15:28:01.000000000 +0100
@@ -6,7 +6,6 @@
        File "/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 6
-Define.DirectCaptureChannels 8
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=6 CaptureChannels=8 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/RME/Fireface-UCX-II.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/RME/Fireface-UCX-II.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/RME/Fireface-UCX-II.conf  
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/RME/Fireface-UCX-II.conf  
2026-01-08 15:28:01.000000000 +0100
@@ -33,7 +33,6 @@
        File "/USB-Audio/RME/Fireface-UCX-II-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 20
-Define.DirectCaptureChannels 20
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=20 CaptureChannels=20 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/RME/Fireface-UCX.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/RME/Fireface-UCX.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/RME/Fireface-UCX.conf     
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/RME/Fireface-UCX.conf     
2026-01-08 15:28:01.000000000 +0100
@@ -29,7 +29,6 @@
        File "/USB-Audio/RME/Fireface-UCX-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 18
-Define.DirectCaptureChannels 18
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=18 CaptureChannels=18 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/SolidStateLabs/SSL2.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/SolidStateLabs/SSL2.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/SolidStateLabs/SSL2.conf  
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/SolidStateLabs/SSL2.conf  
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/SolidStateLabs/SSL2-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 2
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=2 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf      
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf      
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 4
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=4 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR22C.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR22C.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR22C.conf      
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR22C.conf      
2026-01-08 15:28:01.000000000 +0100
@@ -7,7 +7,7 @@
        Condition {
                Type RegexMatch
                String "${sys-card:device/../bcdDevice}"
-               Match "0[12]??"
+               Match "0[12].."
        }
        True.Define.DirectCaptureChannels 2
 }
@@ -17,4 +17,6 @@
        File "/USB-Audio/Steinberg/UR22C-HiFi.conf"
 }
 
-Include.dhw.File "/common/direct.conf"
+Include.dhw.File "/common/directm.conf"
+
+Macro.0.DirectUseCase { Id="Direct" 
PlaybackChannels="${var:DirectPlaybackChannels}" 
CaptureChannels="${var:DirectCaptureChannels}" }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR22mkII.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR22mkII.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR22mkII.conf   
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR22mkII.conf   
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Steinberg/UR22mkII-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 2
-Define.DirectCaptureChannels 2
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=2 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR24C.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR24C.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR24C.conf      
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR24C.conf      
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Steinberg/UR24C-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 2
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR44.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR44.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/Steinberg/UR44.conf       
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/Steinberg/UR44.conf       
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/Steinberg/UR44-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 4
-Define.DirectCaptureChannels 6
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=6 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/TASCAM/Model12.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/TASCAM/Model12.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/TASCAM/Model12.conf       
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/TASCAM/Model12.conf       
2026-01-08 15:28:01.000000000 +0100
@@ -5,7 +5,6 @@
        File "/USB-Audio/TASCAM/Model12-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 10
-Define.DirectCaptureChannels 12
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=10 CaptureChannels=12 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/UniversalAudio/Volt2.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/UniversalAudio/Volt2.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/USB-Audio/UniversalAudio/Volt2.conf 
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/USB-Audio/UniversalAudio/Volt2.conf 
2026-01-08 15:28:01.000000000 +0100
@@ -1,11 +1,10 @@
-Comment "Universal Audio Volt 2"
+omment "Universal Audio Volt 2"
 
 SectionUseCase."HiFi" {
        Comment "Default"
        File "/USB-Audio/UniversalAudio/Volt2-HiFi.conf"
 }
 
-Define.DirectPlaybackChannels 2
-Define.DirectCaptureChannels 2
+Include.dhw.File "/common/directm.conf"
 
-Include.dhw.File "/common/direct.conf"
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=2 CaptureChannels=2 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/common/direct-verb.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/common/direct-verb.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/common/direct-verb.conf     2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/common/direct-verb.conf     1970-01-01 
01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-SectionDevice."Direct" {
-       Comment "Direct ${CardName}"
-       Value {
-               If.p {
-                       Condition {
-                               Type String
-                               Empty "${var:-DirectPlaybackChannels}"
-                       }
-                       False {
-                               PlaybackPriority 1000
-                               PlaybackChannels "${var:DirectPlaybackChannels}"
-                               PlaybackPCM "hw:${CardId}"
-                       }
-               }
-               If.c {
-                       Condition {
-                               Type String
-                               Empty "${var:-DirectCaptureChannels}"
-                       }
-                       False {
-                               CapturePriority 1000
-                               CaptureChannels "${var:DirectCaptureChannels}"
-                               CapturePCM "hw:${CardId}"
-                       }
-               }
-       }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/common/direct.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/common/direct.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/common/direct.conf  2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/common/direct.conf  1970-01-01 
01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-If.direct {
-       Condition {
-               Type String
-               Empty "${var:-DirectCardName}"
-       }
-       True.Define.DirectCardName "${CardName}"
-}
-
-SectionUseCase."Direct" {
-       Comment "Direct ${var:DirectCardName}"
-       File "/common/direct-verb.conf"
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/alsa-ucm-conf-1.2.15.1/ucm2/common/directm.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/common/directm.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/common/directm.conf 1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/common/directm.conf 2026-01-08 
15:28:01.000000000 +0100
@@ -0,0 +1,77 @@
+#
+# Define direct use case (no channel split or routing changes) macros
+#
+
+#
+# Macro DirectUseCase
+#
+# Arguments:
+#   Id - Use Case identifier (e.g. "Direct" or "Direct1")
+#   [CardName] - optional, default is global CardName
+#   [Comment] - optional, default is compibed from identifier and CardName
+#   [PlaybackChannels] - optional, playback channels or/and
+#   [CaptureChannels] - optional, capture channels
+#   [PlaybackRate] - optional, in Hz
+#   [CaptureRate] - optional, in Hz
+#
+
+DefineMacro.DirectUseCase {
+       If.cardname {
+               Condition {
+                       Type String
+                       Empty "${var:-__CardName}"
+               }
+               True.Define.__CardName "${CardName}"
+       }
+       If.comment {
+               Condition {
+                       Type String
+                       Empty "${var:-__Comment}"
+               }
+               True.Define.__Comment "${var:__Id} ${var:__CardName}"
+       }
+       SectionUseCase."${var:__Id}" {
+               Comment "Direct ${var:__CardName}"
+               Config.SectionDevice."Direct" {
+                       Comment "Direct ${CardName}"
+                       Value {
+                               If.p {
+                                       Condition {
+                                               Type String
+                                               Empty 
"${var:-__PlaybackChannels}"
+                                       }
+                                       False {
+                                               PlaybackPriority 1000
+                                               PlaybackChannels 
"${var:__PlaybackChannels}"
+                                               PlaybackPCM "hw:${CardId}"
+                                       }
+                               }
+                               If.c {
+                                       Condition {
+                                               Type String
+                                               Empty 
"${var:-__CaptureChannels}"
+                                       }
+                                       False {
+                                               CapturePriority 1000
+                                               CaptureChannels 
"${var:__CaptureChannels}"
+                                               CapturePCM "hw:${CardId}"
+                                       }
+                               }
+                       }
+                       If.prate {
+                               Condition {
+                                       Type String
+                                       Empty "${var:-__PlaybackRate}"
+                               }
+                               False.Value.PlaybackRate 
"${var:-__PlaybackRate}"
+                       }
+                       If.crate {
+                               Condition {
+                                       Type String
+                                       Empty "${var:-__CaptureRate}"
+                               }
+                               False.Value.CaptureRate "${var:-__CaptureRate}"
+                       }
+               }
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l43-dmic.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l43-dmic.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l43-dmic.conf     
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l43-dmic.conf     
2026-01-08 15:28:01.000000000 +0100
@@ -13,8 +13,6 @@
        ]
 
        DisableSequence [
-               cset "name='cs42l43 Decimator 3 Switch' 0"
-               cset "name='cs42l43 Decimator 4 Switch' 0"
                cset "name='cs42l43 DP1TX1 Input' 'None'"
                cset "name='cs42l43 DP1TX2 Input' 'None'"
        ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l43.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l43.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l43.conf  2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l43.conf  2026-01-08 
15:28:01.000000000 +0100
@@ -33,7 +33,6 @@
        ]
 
        DisableSequence [
-               cset "name='cs42l43 Decimator 1 Switch' 0"
                cset "name='cs42l43 DP2TX1 Input' 'None'"
                cset "name='cs42l43 DP2TX2 Input' 'None'"
        ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l45-dmic.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l45-dmic.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l45-dmic.conf     
2025-12-19 11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l45-dmic.conf     
2026-01-08 15:28:01.000000000 +0100
@@ -7,10 +7,6 @@
                "Headset"
        ]
 
-       DisableSequence [
-               cset "name='cs42l45 FU 113 Channel Switch' 0"
-       ]
-
        Value {
                CapturePriority 100
                CapturePCM "hw:${CardId},4"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l45.conf 
new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l45.conf
--- old/alsa-ucm-conf-1.2.15.1/ucm2/sof-soundwire/cs42l45.conf  2025-12-19 
11:32:00.000000000 +0100
+++ new/alsa-ucm-conf-1.2.15.2/ucm2/sof-soundwire/cs42l45.conf  2026-01-08 
15:28:01.000000000 +0100
@@ -15,10 +15,6 @@
 SectionDevice."Headset" {
        Comment "Jack Microphone"
 
-       DisableSequence [
-               cset "name='cs42l45 FU 36 Channel Switch' 0"
-       ]
-
        Value {
                CapturePriority 200
                CapturePCM "hw:${CardId},1"

Reply via email to