Wednesday, March 3, 2010

PulseAudio: diagnosi di problemi col volume

In un recente blog post, Lennart Poettering spiega una delle feature aggiunte a PulseAudio in Fedora 11 (i volumi-flat) e in quali condizioni possa creare problemi su (apparentemente) semplici operazioni come la regolazione del volume.

Con i volumi flat, i numerosi elementi del mixer esposti da ALSA sono integrati in un unico slider che mantenga il massimo della granularità e del range disponibile nell'hardware ma al contempo li estenda via software in modo che in tutti i sistemi lo slider abbia le stesse proprietà.

Ad esempio, se un certo hardware supporta un range limitato di volume (capita per esempio che molti speaker USB non si possano silenziare completamente via hardware) oppure ha una limitata granularità (alcuni slider hanno solo 8 livelli) o magari non si può regolare il volume del singolo canale (molte schede hanno un solo slider per tutti canali) allora PulseAudio tenta di utilizzare gli altri slider nella pipeline per compensare la mancanza, eventualmente implementando via software tutto quello che non è possibile ottenere dall'hardware. Vedi il wiki di PulseAudio per una spiegazione più dettagliata.

Ora, l'algoritmo che viene utilizzato dipende dal fatto che siano conosciuti i possibili valori assunti (fattori di attenuazione, di solito espressi in dB) dai controlli di volume hardware. Purtroppo, per alcune schede, ALSA non è in grado di fornire valori affidabili: il risultato finale è che, per tali schede, muovendo lentamente lo slider il volume procede a "salti", cambia in maniera strana, oppure non  cambia proprio (e magari solo in alcuni intervalli...)

In queste condizioni la logica dei volumi flat non funziona più, col risultato che aggiungendo uno stream (per esempio un suono di sistema) ad un altro già attivo (per esempio un mp3) può provocare la variazione del volume di quest'ultimo.

Ovviamente, la scarsa qualità dei valori dB riportati da ALSA non è un problema nuovo, ma PulseAudio è in effetti la prima applicazione che dipende dalla correttezza di questi dati per funzionare.

Concludendo, in caso abbiate esperienza di sintomi come quelli descritti, Lennart raccomanda di seguire le istruzioni sul Wiki di PulseAudio che spiegano come verificare se il problema effettivamente esiste sulla vostra scheda e come produrre i dati necessari per poter sistemare il driver.