[ubuntu-it] Sound Device

Danilo Raineri raidan77 a tin.it
Sab 8 Apr 2006 11:53:18 BST


Il giorno sab, 08/04/2006 alle 11.55 +0200, Fabrizio Nicosia ha scritto:
> Ho un problema con Skype, se sto vedendo un video con YouTube o sento
> una canzone con Rhythmbox e poi cerco di avviare una conversazione con
> Skype mi dice che c'è un problema audio, se chiudo o Rhy o YouTube e
> riavvio skype poi posso fare la conversazione. come posso risolvere? 

Se la tua scheda audio, in questa lista:

http://www.alsa-project.org/alsa-doc/index.php?vendor=All#matrix

non ha la capacità [3] (Hardware mixing supported, cioè la capacità di
riprodurre più suoni contemporaneamente) non c'è un modo semplice per
risolvere il problema.

Ci sono due differenti librerie (a cui corrispondono chiamate del
kernel) che una applicazione può utilizzare quando riproduce suoni sotto
linux: OSS e ALSA.

ALSA è in grado di fare il mixing via software (con un plugin, dmix, che
su Ubuntu è abilitato di default); Rhytmbox usa Gstreamer (che a quanto
ne so si appoggia di default ad ALSA, anche se supporta anche OSS),
quindi è in grado di riprodurre suoni contemporaneamente ad altre
applicazioni che usino ALSA. Youtube usa il plugin Flash, che a quanto
ne so si appoggia ad OSS. Lo stesso fa Skype. Nota che su un kernel (e
con una distribuzione) recente, probabilmente usi comunque ALSA anche
quando l'applicazione fa chiamate ad OSS, perché è prevista
un'emulazione software.

Nella mia esperienza, tuttavia, l'emulazione OSS non va d'accordo con il
software mixing di ALSA: si riesce agevolmente a riprodurre
contemporaneamente suoni da sorgenti ALSA multiple ed una OSS emulata,
ma non da più OSS emulate: costoro bloccano /dev/dsp. Si ottiene
qualcosa in più usando un wrapper: il pacchetto alsa-oss fornisce il
comando "aoss" che carica i programmi che usano OSS in modo da forzarli
a non bloccare il device. In pratica, si premette da terminale "aoss" al
nome del programma da lanciare (ad esempio, "aoss firefox"). Funziona
quasi sempre.


In tutto questo discorso, Skype è probabilmente il caso più spinoso
perché usa anche nomi di device immutabili dal programma (!), quindi se
hai schede sonore e/o microfoni multipli devi usare strani wrapper che
"dirottino" un device su un altro. Inutile dire che il trucchetto di
usare aoss non funziona, e che se qualcun altro prova a toccare /dev/dsp
per qualsiasi motivo Skype si lamenta a non finire e cessa di funzionare
correttamente.

Se ti sembra un casino... sì, lo è: trovo che la complessità del
software mixing in Linux sia al momento desolante, a causa non tanto del
numero di layer che vengono coinvolti (ALSA/OSS, esd/Gstreamer/arts) ma
del fatto che le applicazioni (soprattutto quelle di terze parti) non
stanno dietro alle evoluzioni delle librerie, e si ostinano bovinamente
ad aprire in scrittura /dev/dsp (ed analoghi) provocando problemi a
catena a chi ha più schede sonore o a chi ha schede sonore che non
supportano l'hardware mixing (e nella fascia consumer sono la maggior
parte, ahimé).

Se qualcuno ha qualcosa da aggiungere e da correggere nel mio discorso è
ben accetto: confesso che anche io non ho le idee chiarissime su alcuni
dei meccanismi di cui ho parlato, e la documentazione in rete mi sembra
un po' dispersiva :-)


-- 
Danilo Raineri, raidan77 a tin.it
GPG Key ID: BADA83BD




More information about the ubuntu-it mailing list