Re: RME HDSP+Multiface: Pipewire crackling playback
Masaru Nomiya <[email protected]> Tue, 04 Aug 2026 17:11:49 +0900
| Newsgroups | gmane.linux.audio.users |
|---|---|
| Message-ID | <[email protected]> |
Hello, In the Message; Subject : Re: RME HDSP+Multiface: Pipewire crackling playback Message-ID : <7xrn6clyg6ny7bfpiuv5ioggkjq3naotveoodqthindf344jnr@5borkezlx7fg> Date & Time: Tue, 4 Aug 2026 09:07:26 +0200 [PP] == "Peter P." <peterparker-97jfqw80gc5Wk0Htik3J/[email protected]> has written: PP> * Masaru Nomiya <[email protected]> [2026-08-04 06:05]: PP> [...] PP> > It's an old sound card, so I'm not entirely sure, but how about this? PP> > PP> > 1. Set the clock source to "Internal" in hdspconf PP> > PP> > 2. make 10-rate.conf file in ~/.config/pipewire/pipewire.d.conf PP> > PP> > context.properties = { PP> > default.clock.rate = 48000 PP> > default.clock.allowed-rates = [ 48000 ] PP> > default.clock.force-rate = 48000 PP> > default.clock.quantum = 1024 PP> > } PP> Thanks for this suggestion! Will these config file's contents then PP> affect pipewire as a whole without reference to a specific card? Just to PP> be sure: The settings you propose are identical to the settings I get PP> from pw-metadata already. The sample rate setting in "context.properties" defines the behavior of the entire PipeWire audio graph, and the sound card operates according to that graph's rate. There is a method for configuring it like this, but it is generally unnecessary. "context.objects": [ { "factory": "metadata", "args": { "metadata.name": "my-metadata", "metadata.values": [ { "key": "default.audio.sink", "value": { "name": "YOUR Spind Card" } } ] } } ] Cf. $ cat /proc/asound/cards 0 [HDAMP1 ]: USB-Audio - HD-AMP1 D&M Holdings Inc. HD-AMP1 at usb-0000:0c:00.0-9, high speed [...] PP> However it goes back to crackling mode once the card has gone from the PP> "suspended" state to the "idle" state after playback has ended. How about this? make the file "50-alsa-config.lua" in the ~/.config/wireplumber/main.lua.d alsa_monitor.rules = { { matches = { { { "node.name", "matches", "PACTL" }, }, }, apply_properties = { ["audio.format"] = "VALUE", ["audio.rate"] = 48000, ["audio.allowed-rates"] = "48000", }, Here, you can get PACTL and VALUE b; "cat /proc/asound/"CARD NAME"/pcm0p/sub0/hw_params These are mine: 1. PACTL $ pactl info [...] Default Sink: alsa_output.usb-D_M_Holdings_Inc._HD-AMP1-00.iec958-stereo [...] Here, PACTL is; alsa_output.usb-D_M_Holdings_Inc._HD-AMP1-00.iec958-stereo 2. VALUE $ cat /proc/asound/HDAMP1/pcm0p/sub0/hw_params access: MMAP_INTERLEAVED format: S32_LE subformat: STD channels: 2 rate: 384000 (384000/1) period_size: 512 buffer_size: 4096 In mt case, VALUE is; S32_LE Best Regards. -- ┏━━┓彡 Masaru Nomiya mail-to: nomiya @ ab.auone-net.jp ┃\/彡 ┗━━┛ "To hire for skills, firms will need to implement robust and intentional changes in their hiring practices ― and change is hard." -- Employers don’t practice what they preach on skills-based hiring --