Menghilangkan Desis Speaker Aktif di Debian Sid

Telah hampir tiga tahun saya menggunakan pelantang (speaker) aktif Edifier R1280T untuk mengalunkan suara dari komputer di rumah. Penampilannya sederhana namun dengan kemampuan menghasilkan suara yang luar biasa.
So I’m quite satisfied…

Namun setelah beberapa waktu terakhir kembali intensif menggunakan Windows, saya menyadari bahwa speaker ini sangat senyap walau tidak sedang memainkan audio. Beda dengan di Debian Sid yang jika speaker iddle maka akan terdengar desis (hiss) yang cukup kentara.

Dulu saya tidak terlalu menghiraukan desis ini karena, AFAIK, penguat suara (amplifier) memang biasa mengeluarkan derau walau sedang tidak mengolah sinyal. Istilah teknisnya adalah SNR, signal-to-noise ratio. Semakin tinggi SNR maka semakin bagus amplifier tersebut.
Edifier R1280T dulu saya beli tidak sampai satu juta rupiah, jadi saya anggap ia speaker aktif kelas low-end yang wajar memiliki SNR rendah.

Namun mengapa di Windows desis ini tidak terdengar?

Ternyata karena di Linux, PulseAudio mematikan saluran (sink?) audio output jika ia tidak mengindera isyarat audio. Ini dilakukan demi menghemat penggunaan daya.
Karena Edifier tidak mendapat catu sinyal dari phone out akhirnya malah menguatkan derau (noise) yang dipungut oleh kabel dan komponen pasif di bagian input amplifier-nya. Maka timbullah desis.

Pada laptop penghematan daya ini mungkin masuk akal, namun karena sistem yang saya gunakan adalah desktop maka penghematan dirasa tidak sepadan dengan akibat yang timbul.

Jadi solusi untuk menghilangkan desis speaker ketika tidak sedang memainkan audio di Debian Sid adalah dengan terus menyalakan playback devices sink.
Begini caranya:

  • Buka berkas /etc/pulse/default.pa
    sudo nano /etc/pulse/default.pa
    
  • Beri komentar pada baris
    load-module module-suspend-on-idle
    

    Menjadi

    # load-module module-suspend-on-idle
    
  • Matikan dan kemudian hidupkan ulang PulseAudio
    pulseaudio -k
    pulseaudio --start
    

    Atau menggunakan perintah:

    systemctl restart --user pulseaudio
    

Tambahan per 07 Januari 2024

Debian Sid kini sudah menggunakan PipeWire, jadi trik PulseAudio di atas tidak lagi mujarab.

Sekarang begini caranya:

  • Sunting berkas /usr/share/wireplumber/main.lua.d/50-alsa-config.lua

    sudo nano /usr/share/wireplumber/main.lua.d/50-alsa-config.lua
    
  • Kita matikan suspend timeout yang semula 5 detik dengan cara mengubah baris berisi:

          --["session.suspend-timeout-seconds"] = 5,  -- 0 disables suspend
    

    Menjadi:

          ["session.suspend-timeout-seconds"] = 0,  -- default: 5, 0 disables suspend
    
  • Restart WirePlumber

    systemctl --user restart wireplumber