Skip to content

Pipewire/Pulseaudio Channel Mapping Incomplete #398

Open
@redger-au

Description

Audio passed from pipewire to Camilladsp.

  • Camilladsp sends both Centre and LFE from source to a single output channel ie. sending audio to either Centre or LFE wind up on the same Cammiladsp output channel
  • Camilladsp sends both RR and RL from source to a single output channel ie. sending audio to either Centre or LFE wind up on the same Cammiladsp output channel

The problem occurs when a player writes to a Pipewire virtual sink- either Loopback or Null sink ... and then Camilladsp reads from either the ".monitor" of the sink or from Loopback source ie.

  • player --> pipewire null-sink --> pipewire null-sink.monitor --> camilladsp --> alsa dac
  • player --> pipewire loopback-sink --> pipewire loopback-sink.monitor --> camilladsp --> alsa dac
  • player --> pipewire loopback-sink --> pipewire loopback-src --> camilladsp --> alsa dac

when the sink is defined to have 6 channels and pipewire-pulse default sink set as one of the above graphs AND alsa default is set to pulseaudio then using speaker-test results in

  • FC and LFE both winding up on camilladsp output channel 2
  • RL and RL both winding up on camilladsp output channel 5

Speaker-test does not exhibit the same issue when wireplumber is used to bind the sink direct to the dac ie. when

  • player --> loopback-sink --> loopback-sink.monitor --> pipewire-dac (same dac as above but controlled by pipewire not alsa direct)

In this case speaker test outputs audio "correctly" ie. output channels are mapped correctly to input channels

System Info ... both on Intel x86_64

  • Kubuntu v 24.10 kernel 6.11.0-14-generic

  • Camilladsp (installed using the nifty install scripts) v 3.0.2

  • Pipewire v 1.2.4

  • Wireplumber v 0.5.6

  • qpwgraph v 0.7.2

  • Kubuntu v 24.04 kernel 6.8.0-53-generic

  • Camilladsp v 2.0.3

  • Pipewire v 1.0.5

  • Wireplumber v 0.4.17

  • qpwgraph v 0.6.1

Config

description: 'Pipewire Null Sink test '
devices:
adjust_period: null
capture:
channels: 6
device: RE-null-sink.monitor
format: FLOAT32LE
labels:
- null
- null
- null
- null
- null
- null
type: Pulse
capture_samplerate: null
chunksize: 1024
enable_rate_adjust: null
multithreaded: null
playback:
channels: 6
device: plughw:CARD=X3,DEV=0
format: S24LE3
type: Alsa
queuelimit: null
rate_measure_interval: null
resampler:
profile: Balanced
type: AsyncSinc
samplerate: 48000
silence_threshold: null
silence_timeout: null
stop_on_rate_change: null
target_level: null
volume_limit: null
volume_ramp_time: null
worker_threads: null
filters: {}
mixers:
nullsink_8in:
channels:
in: 6
out: 6
description: null
labels:
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
mapping:
- dest: 0
mute: false
sources:
- channel: 0
gain: 0
inverted: false
mute: false
scale: dB
- dest: 1
mute: false
sources:
- channel: 1
gain: 0
inverted: false
mute: false
scale: dB
- dest: 2
mute: false
sources:
- channel: 2
gain: 0
inverted: false
mute: false
scale: dB
- dest: 3
mute: false
sources:
- channel: 3
gain: 0
inverted: false
mute: false
scale: dB
- dest: 4
mute: false
sources:
- channel: 4
gain: 0
inverted: false
mute: false
scale: dB
- dest: 5
mute: false
sources:
- channel: 5
gain: 0
inverted: false
mute: false
scale: dB
pipeline:

  • bypassed: null
    description: null
    name: nullsink_8in
    type: Mixer
    processors: {}
    title: null

For some reason I'm unable to attach files, but I see nothing useful in the log (no erros). I can attach log info inline if that will help

Logs
run camilladsp with debug logging (-v). If it's short, paste it directly here, otherwise attach it as a separate file.

Activity

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

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions