PipeWire config for USB AMP/DAC

i got a Mayflower ARK 2 USB AMP/DAC and the audio formats it supports for USB are 24/96 and 24/48

i just dumped PulseAudio in favor of PipeWire and i’m lost as to how i should config PipeWire to coincide with the AMP/DAC

update: ok, i found where to create the PipeWire config: Troubleshoot crackling in PipeWire

old

in the Pipewire config files missing topic it says “…the config files can be found under /usr/share/pipewire/media-session.d/ which you can copy to your /etc (create the subdirectories if necessary) and then edit according to the arch wiki.”

with PA i could copy /etc/pulse/daemon.conf to ~/.config/pulse and edit the file - can i not do the same with pipewire.conf, or does it have to be copied to /etc?

also i never understood how/where to set the 24 bit part in either the pipewire or pulse config files - can someone help with that?

i was able to use pacmd list-sinks to get info about the card but pacmd is no longer in the repos apparently

I’m not a 100% certain how it should be done, but I believe the relevant settings are

#pulse.default.format = F32 in pipewire-pulse.conf

and

#audio.format = "S16LE" in alsa-monitor.conf

I believe the setting for 24 bit in both cases would be either S24 or S24LE

But you should probably double check to confirm if this is correct and working.

For pulse you can run pactl info and check the default sample specification which will show you what it’s set to. Not sure how to check for alsa/non-pulse tho.

without PA installed pactl still works apparently - here’s the abbreviated info for my AMP/DAC…

$ pactl info
...
Server Name: PulseAudio (on PipeWire 0.3.38)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.usb-Mayflower_Electronics_ARC_AMP_DAC_ARC_AMP_DAC_FFFFFFFEFFFF-00.analog-stereo
Default Source: alsa_input.usb-Mayflower_Electronics_ARC_AMP_DAC_ARC_AMP_DAC_FFFFFFFEFFFF-00.analog-stereo

float32le 2ch 48000Hz - can’t be a spec for the actual AMP/DAC because it supports only 24bit, so i don’t know where that comes from

as per Changing the sample rate in the Arch wiki for pipewire.conf i changed …
default.clock.allowed-rates = [ 48000 ]
to…
default.clock.allowed-rates = [ 44100 48000 ]

for audio.format, that setting exists both in pipewire.conf and alsa-monitor.conf
# audio.format = "S16LE"

should that be changed in just alsa-monitor.conf, or both files and should it be changed to…
audio.format = "S24LE"
…or…
audio.format = "S24_3LE" (got this with cat /proc/asound/DAC/stream0)

I once tried PipeWire and switched back to PulseAudio. Personally, I prefer PulseAudio, or JACK if possible.

PipeWire will resample your stream using its own resample method, and I couldn’t find a way to turn that off as I can do with PulseAudio. Furthermore, the resample method of PipeWire does not seem to be as good as what PulseAudio is capable of.

https://bbs.archlinux.org/viewtopic.php?id=262981
https://forum.manjaro.org/t/howto-troubleshoot-crackling-in-pipewire/82442

@SergeFan - see Sound quality (resampling quality) in arch wiki

@majik Yeah, I saw that before and that is exactly where the problem is. PipeWire’s Spa is not as good as sorx-vhq used by PulseAudio, even you set it to 15. At least I can feel the difference through my DAC. Since PipeWire is still quite new compared to PulseAudio, I think they can improve that and make it suitable for high-quality music in the future.

hehehe the setting to disable resampling was literally in the comment above yours.

@majik in your pactl info the format for pipewire-pulse is still it’s default float32le (f32), if you want to set that to 24 bit you also need to change the setting in pipewire-pulse.conf.

As for the alsa setting, I don’t really know. You should probably try to find out how to check what pipewire and pipewire-alsa are using, there’s certainly some way to check it, then try changing the setting and see if it worked.