Skip to content

v0.2.0

Latest

Choose a tag to compare

@rizukirr rizukirr released this 15 Jun 10:11
62f489f

This release adds out-of-the-box microphone noise suppression using RNNoise, switches audio controls to be fully PipeWire-native (dropping the pavucontrol GUI dependency), and documents microphone troubleshooting in the FAQ.

After a fresh install, the denoised microphone is set as the default input, so apps that follow the system default (Microsoft Teams, Discord, etc.) get clean audio automatically — no manual configuration.


Added

  • RNNoise microphone denoising.
    • New package noise-suppression-for-voice (official repo) provides the RNNoise LADSPA plugin.
    • New PipeWire filter-chain config ~/.config/pipewire/pipewire.conf.d/99-input-denoising.conf creates a virtual "Noise Suppressed Source" mic. It is device-agnostic (no hardware pinning), so it is portable across machines, and uses flags = [ nofail ] so PipeWire still starts normally if the plugin is ever missing.
    • install.sh gained setup_microphone_denoising(), which — after PipeWire is up — waits for the virtual node to appear and sets it as the default microphone via wpctl. The choice is persisted by WirePlumber and survives reboots. The step degrades gracefully (skips with a hint) if the plugin or node is not present.

Changed

  • Audio controls are now PipeWire-native. Removed the pavucontrol GUI dependency from packages.txt. The Waybar audio-icon click now uses wpctl set-mute instead of launching pavucontrol. Volume scroll and mic controls already used wpctl, so audio management no longer requires any extra GUI package.

Fixed

  • Waybar duplicate key. The pulseaudio module had two on-click entries; the second silently overrode the first. The audio-icon click now reliably toggles mute via wpctl.
  • windows.lua formatting cleanup.

Documentation

  • New FAQ section: "Microphone sounds noisy / hissy on calls (RNNoise noise suppression)." Covers:
    • How to switch the active mic (wpctl status / wpctl set-default).
    • Tuning aggressiveness via the "VAD Threshold (%)" knob and reloading PipeWire.
    • The clipping vs. noise distinction: distorted/clipping audio is caused by an over-driven hardware capture gain (RNNoise cannot fix a clipped signal) — fix it in alsamixer (lower Capture / Mic Boost) and persist with sudo alsactl store.
    • The Bluetooth caveat: BT headset mics only work in the low-quality HSP/HFP profile, so prefer a wired/built-in mic for input and keep the headset on A2DP for output.
    • The portal restart tip: after restarting PipeWire, also restart the portals (systemctl --user restart xdg-desktop-portal xdg-desktop-portal-hyprland) or screen sharing can break until they reconnect.

Upgrade notes

  • Hiss / steady background noise is removed automatically once the denoised source is the default.
  • Clipping / distortion is not auto-fixed — it is a per-machine hardware capture-gain issue. See the new FAQ entry (alsamixer + sudo alsactl store).
  • Existing installs picking up this change without a full reinstall:
    sudo pacman -S noise-suppression-for-voice
    cp -r .config/pipewire ~/.config/                 # from the hyprsimple repo
    systemctl --user restart pipewire pipewire-pulse wireplumber
    wpctl status                                       # find "Noise Suppressed Source" ID
    wpctl set-default <ID>                             # make it the default mic
    pavucontrol is no longer installed by hyprsimple; if you still want the GUI, install it manually with sudo pacman -S pavucontrol.

Full changelog: v0.1.1...v0.2.0