PipeDuck
Ducking audio automatico per PipeWire. Nato da un fastidio, arrivato alla v1.2.0.
- Cliente
- Progetto personale
- Ruolo
- Creatore, tutto
- Anno
- 2026
- Stato
- Rilasciato
Prove
- v1.2.0
- Release · ott 2026
- 29
- Funzioni di test · 431 asserzioni
- 4
- Job di build · matrice compilatore × GUI
- 86
- File tracciati · ~368 KB di C++
L’apertura
Ogni chiamata inizia allo stesso modo: qualcuno parla, la musica è troppo alta, cerchi il cursore del volume e perdi la prima frase. Gli strumenti esistenti abbassano troppo o tornano al massimo come se niente fosse. Volevo qualcosa che si comportasse come una mano sul fader: giù veloce, su morbido, e solo quando serve.
La partita di mezzo
PipeDuck è una riscrittura in C++20 di pw-duck con priorità diverse. Si iscrive a libpulse una volta sola e reagisce agli eventi degli stream invece di fare polling su pactl. Le dissolvenze sono rampe smoothstep guidate dal tick di controllo, così una nuova voce interrompe subito il ritorno. Il routing passa da un sink virtuale temporaneo ripristinato in automatico — e se qualcosa fallisce il sink resta vivo invece di uccidere l’audio delle applicazioni. Sopra il daemon: tray StatusNotifier con stato live, tuner GTK4, tuner da terminale e CLI.
Il finale
La 1.2.0 è taggata, licenza MIT, compilata dalla CI a ogni commit su gcc e clang con la GUI attiva e disattivata, e gira sulla mia macchina da prima che avesse un nome. La parte interessante non è mai stato il DSP: era rendere sicuro toccare lo stato del routing audio.
1.2.0 rilasciata · MIT · 29 funzioni di test in CI