Skip to content

Instantly share code, notes, and snippets.

@tiran
Last active March 25, 2024 07:32
Show Gist options
  • Save tiran/ec4f25d29da557bf0c8325295162da05 to your computer and use it in GitHub Desktop.
Save tiran/ec4f25d29da557bf0c8325295162da05 to your computer and use it in GitHub Desktop.
Audient iD4 with pipewire: split mic and DI inputs into separate streams

UPDATE

The workaround is no longer needed with recent alsa-ucm, e.g. alsa-ucm-1.2.11-2.fc39. Just configure the device to use Default Alsa Profile instead of Pro.

old workaround

  • cp /usr/share/pipewire/media-session.d/media-session.conf ~/.config/pipewire/media-session.d/
  • add loopback modules to context.modules section
  • configure interface to use Pro Audio profile
  • systemctl restart --user pipewire.service pipewire-pulse.service
context.modules = [
    ...
    {   name = libpipewire-module-loopback
        args = {
            node.name = "audient_id4_mic"
            node.description = "Audient iD4 Mic (Pro Audio)"
            capture.props = {
                # audio.position = [ FL ]
                # node.target = "alsa_input.usb-Audient_iD4-00.analog-stereo"
                # node.target = "alsa_input.usb-Audient_iD4-00.iec958-stereo"
                audio.position = [ AUX0 ]
                node.target = "alsa_input.usb-Audient_iD4-00.pro-input-0"
                node.passive = true
                stream.dont-remix = true
            }
            playback.props = {
                media.class = "Audio/Source"
                audio.position = [ MONO ]
            }
        }
    }
    {   name = libpipewire-module-loopback
        args = {
            node.name = "audient_id4_di"
            node.description = "Audient iD4 DI (Pro Audio)"
            capture.props = {
                # audio.position = [ FR ]
                # node.target = "alsa_input.usb-Audient_iD4-00.analog-stereo"
                # node.target = "alsa_input.usb-Audient_iD4-00.iec958-stereo"
                audio.position = [ AUX1 ]
                node.target = "alsa_input.usb-Audient_iD4-00.pro-input-0"
                node.passive = true
                stream.dont-remix = true
            }
            playback.props = {
                media.class = "Audio/Source"
                audio.position = [ MONO ]
            }
        }
    }
]

Sources:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment