MadEnvel
Member
- Joined
- Aug 23, 2024
- Messages
- 9
- Likes
- 18
@alpha_logic thanks for the write-up. I'd honestly never thought of PipeWire as a way to get bit-perfect - I always just went around it with ALSA directly on a Pi. Your post made me curious, so I built a little tool that checks a PipeWire setup for the usual bit-perfect blockers (rate switching, volume, resampling, EasyEffects, etc.) and can apply the fixes, with an off to undo.
Built with AI help and then tested by hand for a good while. It's safe by default — check is read-only, all changes are removable drop-in configs, and the one genuinely loud action (raising the sink to 100%) is opt-in behind --set-volume. Works well on my laptop, though that's locked to 48 kHz so I couldn't try it on a real multi-rate USB DAC — would love reports from anyone who can. The --dedicated-sink mode was inspired by @PurpaSmart 's bash script.
https://github.com/madenvel/pipewire-bitperfect
Built with AI help and then tested by hand for a good while. It's safe by default — check is read-only, all changes are removable drop-in configs, and the one genuinely loud action (raising the sink to 100%) is opt-in behind --set-volume. Works well on my laptop, though that's locked to 48 kHz so I couldn't try it on a real multi-rate USB DAC — would love reports from anyone who can. The --dedicated-sink mode was inspired by @PurpaSmart 's bash script.
https://github.com/madenvel/pipewire-bitperfect
curl -fLo bitperfect.py https://raw.githubusercontent.com/madenvel/pipewire-bitperfect/main/bitperfect.py && chmod +x bitperfect.py