Autore Topic: Guida generale per l'audio su Linux (in particolare su KDE e Chakra) [Incompleta  (Letto 3126 volte)

Offline mrcaptainspoon

  • *
  • Post: 24
  • Reputazione: 3
    • Mostra profilo
Attenzione: La guida è incompleta in quanto l'autore è "scomparso" dal forum


Comincio a scrivere questa guida nella speranza di chiarirmi il funzionamento dell'audio in Linux così da poter imparare a gestire una volta e per tutte le mie periferiche audio. Ho deciso di postarla pubblicamente per fornire anche agli altri utenti del forum uno spunto per poter configurare i loro aggeggi. Ovviamente quest'impresa non riuscirò a finirla in una sola giornata, ho intenzione di scrivere a più riprese aggiungendo (appena avrò un po' di tempo libero) le parti mancanti. Quando il lavoro sarà considerato ultimato o comunque fruibile, cancellerò queste righe introduttive e toglierò dal titolo del topic la dicitura [work in progress].
(spero di non metterci anni  ::) )

Comunque, vi avviso che non sono un esperto di audio linux e quindi, non mancherò dal commettere errori e strafalcioni  Se per il futuro vogliamo avere un riferimento valido, il vostro aiuto è fondamentale sia per quanto riguarda le correzioni e le segnalazioni, sia per quanto riguarda i consigli.

Mi sto accorgendo che la documentazione in giro è frammentata e spesso scorretta e soggettiva. Siccome non ho avuto esperienza diretta con tutte le cose di cui andrò a parlare non sempre riesco a distinguere queste sfumature. Quando scriverò qualcosa che ho la sensazione che potrebbe essere scorretto, lo evidenzierò in verde (come ho fatto con questo testo).
Per le correzioni scrivetemi in PM altrimenti poi non si capisce più un accidente ;D (tanto poi vi cito nella guida ;))



GUIDA GENERALE PER L'AUDIO SU LINUX
ED IN PARTICOLARE PER KDE4 E CHAKRA

SEZ.1. Uno sguardo d'insieme
Non ci sono storie: "Per far funzionare Linux a dovere è necessario configurarlo e per configurarlo è necessario capire come funziona.".
Le potenzialità del nostro pinguino sono infinite ma se non lo si configura è come pretendere di andare a correre una gara con una formula1 non settata...le conseguenze di tanta intraprendenza si tradurrebbero in una facile vittoria delle utilitarie. :o
Nelle varie sezioni a seguire, tenterò innanzitutto di spiegare in maniera rapida la logica con cui viene gestito l'audio su un moderno sistema Linux, presenterò i maggiori attori di questo sistema e ne spiegherò sinteticamente il ruolo, poi procederò con l'analisi e la modifica dei settaggi "standard" ed infine proseguiremo con dei settaggi personalizzati. Negli ultimi paragrafi parlerò di soluzioni particolari. Per maggiori dettagli alla fine del tutto vi fornirò altri dei link dai quali potrete attingere ulteriori aspetti non inclusi in questa guida informazioni.
La realtà è un po' più complessa di quella che andrò a presentare ma, per i nostri fini, ci accontenteremo di qualche semplificazione.

1.1 Udev:
All'origine del funzionamento di ogni periferica su Linux c'è Udev ossia un gestore di dispositivi del kernel.
Senza tanti paroloni, Udev si occupa di associare ad ogni periferica rilevata dal kernel uno o più particolari file (device file) che vengono posizionati in /dev e poi presi in considerazione da altri componenti del sistema.
Il funzionamento schematico di Udev è a dir poco semplice:
Una periferica viene collegata al sistema --> Udev le associa un file speciale in /dev
Una periferica viene scollegata dal sistema --> Udev la disassocia un file speciale in /dev

Le periferiche audio del nostro sistema Chakra sono periferiche a tutti gli effetti e pertanto anche loro vengono mappate da udev in /dev.
Nota: Prima di Udev si utilizzava devfs.

1.2 ALSA:
Semplificando al massimo, ALSA, è un componente software integrato nel kernel che si occupa di fornire delle funzioni avanzate per gestire l'hardware delle periferiche audio e sopperisce ad una "mancanza" di Udev nella gestione dei device file.
Udev, come già detto in precedenza, si occupa di creare i device file per le periferiche collegate al sistema ma se esistono più periferiche dello stesso tipo non è in grado di riconoscerle e pertanto crea e rimuove i device file associandoli a periferiche ogni volta diverse.
Per capirci facciamo un esempio:
-colleghiamo 3 schede audio esterne A, B, C al sistema --> udev crea tre device file 1,2,3 associandoli come segue: 1=A, 2=B, 3=C.
-scolleghiamo le schede audio B e C. --> Udev disassocia due device file facendo restare solo 1=A.
-ricolleghiamo la scheda audio C --> Udev associa un altro device file ed abbiamo 1=A, 2=C.
In questo esempio alla periferica C inizialmente era associato il device file 3 e alla fine si trova associato il device file 2....
Siccome le configurazioni e le personalizzazioni non riguardano direttamente l'hardware ma i suoi device file questo scambio è un problema! E' su questo problema che interviene ALSA creando delle associazioni fisse tra device file e hardware che poi passa ad Udev permettendogli di non confondere i device file.
In sintesi ALSA è il componente software che realmente fornisce le funzionalità audio e MIDI al nostro sistema e lo fa attraverso opportuni "driver" che inserisce nel kernel che permettono al sistema di comunicare in maniera univoca con ogni periferica audio individuata.
Nb ALSA nasce per sostituire il vecchio sistema OSSv2 (che all'epoca oramai non era al passo coi tempi) visto che OSSv3 era stato sviluppato come closed source. Oggi che OSSv4 è tornato open source è divenuto nuovamente un concorrente di ALSA. [segnalazione di JMC]. Poichè su Chakra utilizziamo ALSA, non approfondisco oltre ma, a scopo di cultura personale, invito voi a farlo in quanto la questione di OSSv4 è estremamente interessante ;).


1.3 HAL (e DeviceKit):
HAL è uno strato di astrazione hardware.
In parole povere HAL si occupa di fare da tramite tra le periferiche rilevate da Udev, rappresentate dai device file, ed i software veri e propri che ne fanno uso. L'utilizzo di HAL non è un obbligo per le applicazioni ma sfruttarlo semplifica molte cose: non c'è bisogno che ogni software sia in grado di dialogare con ogni tipo di periferica esistente ma può semplicemente inviare una richiesta ad HAL che la gestisce e poi si occupa di ritradurla al richiedente. (Ovviamente vale anche viceversa, l'hardware non deve per forza sapere a quale software deve notificare alcuni eventi ma passa la notifica ad HAL che poi si occupa di inoltrarla al software appropriato.)
In sintesi HAL è un intermediario che semplifica l'interazione tra diverse periferiche e diversi software favorendo la portabilità delle applicazioni su sistemi hardware differenti.
Nota: siccome HAL è un sistema eccessivamente monolitico lo si è suddiviso in più moduli con il progetto DeviceKit come seguenza a tutto questo, di recente HAL è stato deprecato. Oggi molti sistemi, compreso Chakra, utilizzano componenti software basate sui moduli DeviceKit [segnalazione di JMC]. Il concetto di astrazione hardware resta comunque lo stesso solo che il lavoro sporco, invece che essere gestito da HAL, è gestito dai corrispettivi moduli.
**se dovessero tornare utili ai fini audio poi aggiungerò un paio di righe sulle componenti DeviceKit utilizzate da Chakra**

1.4 PULSEAUDIO:
PULSEAUDIO si può definire come un'instradatore e controllore di flussi audio. Non fa niente che non possa fare ALSA (difatti non è indispensabile utilizzarlo) ma semplifica (o complica, a seconda dei punti di vista :p ) la gestione dei flussi audio (sia agli utenti che agli sviluppatori di software). In merito all'installazione di PULSEAUDIO ci sono diverse correnti di pensiero...c'è chi preferisce utilizzare esclusivamente ALSA e chi decide di appoggiarsi anche su PULSEAUDIO. Alle volte, qualcuno installa PULSEAUDIO per semplificare dei problemi che ha con i file di configurazione di ALSA o con PHONON e alle volte qualcuno lo disinstalla preferendo configurarsi ALSA (e scaricando però tutto il lavoro ai chipset hardware).
Sintentizzando il suo funzionamento è più o meno il seguente:
-Pulseaudio crea un dispositivo virtuale che viene reso disponibile ad ALSA.
-Ogni volta che un'applicazione genera un flusso audio, questo, viene passato ad ALSA, che lo inserisce nel dispositivo virtuale.
- Il dispositivo virtuale viene preso in gestione da PULSEAUDIO che (eventualmente) lo elabora secondo i suoi file di configurazione e lo rinvia ad ALSA per spedirlo infine alla vera periferica audio di destinazione secondo i file di configurazione di ALSA.
(Ovviamente il discorso vale anche al contrario nel caso in cui il flusso audio sia generato da un input nella scheda audio e debba finire in un'applicazione).
Se non hai capito nulla di quello che ho detto non preoccuparti...
Sappi che PULSEAUDIO è in pratica un supervisore e instradatore dei flussi audio e che il vantaggio nell'utilizzarlo sta nel fatto di poter controllare singolarmente e contemporaneamente tutti i flussi audio in transito nel sistema apportando eventualmente qualche elaborazione.

1.5 PHONON:
Phonon è un altro intermediario ed in particolare è un intermediario per le applicazioni multimediali basate su Qt/KDE.
Come al solito, per farla breve, Phonon mette a disposizione delle applicazioni Qt/KDE una serie di funzioni base ("stop", "play", "forward" ecc.) e la capacità di indirizzare in maniera molto semplice il flusso audio da una periferica all'altra a seconda delle situazioni. Le funzionalità base tornano utili ai programmatori mentre il reindirizzamento dei flussi audio in ingresso ed in uscita torna utile agli utenti finali che possono organizzare il tutto come meglio credono attraverso l'interfaccia grafica di Phonon.
A quanto pare in alcuni casi Phonon fallisce nel forwarding audio e diventa assolutamente necessario installare e configurare PULSEAUDIO che prende in gestione tutti i flussi audio di Phonon e poi li passa ad ALSA.

1.6 I BACKEND AUDIO
**work in progress**

1.7 ALTRI COMPONENTI
velocissima panoramica di moduli aggiuntivi "minori" jack, ladspa, dssi, lv2 ecc.
**work in progress**

1.8 SINTESI:
Vogliamo riassumere i meccanismi audio di Linux ancora più sinteticamente?
UDEV tramite i "device file" crea una lista di dispositivi dinamica non associata in maniera univoca all'hardware.
ALSA fornisce dei "driver" per la gestione dell'hardware audio, interagisce con Udev per permettere al sistema di identificare in maniera univoca le periferiche audio e fornisce alcune funzioni di controllo sull'insieme dei flussi audio (quali il mix virtuale o, se supportato dall'hardware, "fisico").
HAL (o i suoi derivati DeviceKit) si occupa di fare da traduttore tra le domande e le richieste tra software ed hardware ed ovviamente interagisce con la lista creata da Udev.
PULSEAUDIO intercetta tutti i flussi audio in transito sul sistema per poi rielaborarli e ridirigerli alle applicazioni e alle schede audio tramite ALSA.
PHONON offre funzionalità di base ai programmi Qt/KDE (di modo che i programmatori non debbano reinventare ogni volta l'acqua calda) e tramite l'interfaccia grafica permette agli utenti una veloce gestione dei flussi audio a seconda dei software utilizzati e a seconda delle situazioni.
Se il nostro audio non funziona allora qualcosa si è inceppato in questa catena e molto probabilmente i file di configurazione non permettono il riconoscimento di componenti e periferiche oppure non permettono il corretto scambio di informazioni con gli altri livelli software.

SEZ.2. Uno sguardo "introspettivo"...
Consci dell'esistenza dei diversi componenti software proseguiamo dando un'occhiata a quello che viene riconosciuto e configurato nel nostro sistema. Sarà da questo primo sguardo che riusciremo a capire se le nostre periferiche vengono riconosciute a dovere e se i diversi strati software comunicano a dovere tra di loro.

2.1 COSA VEDE ALSA:
Sfruttiamo il programma aplay e cominciamo a dare un'occhiata alle periferiche audio viste da ALSA:
Codice: [Seleziona]
aplay -l
**work in progress**
« Ultima modifica: 11 Febbraio 2013 ore 19:06 da andreazube »
Il cucchiaio non esiste.

Offline dongongo

  • *
  • Post: 445
  • Reputazione: 16
    • Mostra profilo
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #1 il: 19 Aprile 2012 ore 21:27 »
Complimenti! Ottima idea!! Io ho sempre avuto grattacapi con l'audio, e una guida mi ci voleva proprio.. Intanto ti ringrazio per l'idea. Ti ringrazierò nuovamente a guida ultimata... ;D
(mi piacerebbe aiutarti, ma davvero non so dove mettere le mani, e battere il capo >:()



Offline jmc

  • *
  • Post: 1354
  • Reputazione: 95
    • Mostra profilo
    • The Chakra Project
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #2 il: 19 Aprile 2012 ore 22:26 »
In verità ti sbagli, non è che ci sia stato un "tentativo" di spacchettare HAL, anzi, HAL è deprecato in favore dei progetti che lo hanno sostituito (Udev, Upower, etc...).

Offline jmc

  • *
  • Post: 1354
  • Reputazione: 95
    • Mostra profilo
    • The Chakra Project
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #3 il: 19 Aprile 2012 ore 22:33 »
Altra nota: ALSA ha rimpiazzato OSSv2 nel kernel perché OSSv3 era closed source; ora che OSSv4 è diventato nuovamente open source, anche se non è tornato nel kernel, è utilizzabile al posto di ALSA senza bisogno di acquistare licenze apposite. (Dall'ultima frase del paragrafo su ALSA si capiva il contrario, e cioè che OSS fosse morto.)

Offline mrcaptainspoon

  • *
  • Post: 24
  • Reputazione: 3
    • Mostra profilo
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #4 il: 19 Aprile 2012 ore 22:45 »
Grazie JMC sistemo subito!
Ti chiedo se puoi darmi ulteriori informazioni però!  ;)
Riferendoci ad HAL, per caso, sai segnalarmi se Chakra usa componenti DeviceKit?
E per quanto riguarda OSSv4, sai segnalarmi se ha delle applicazioni low latency che vi si appoggiano (tipo Jack per ALSA intendo) e se è compatibile con PULSEAUDIO? Te lo chiedo perchè nelle sezioni successive, dopo quelle sulla configurazione dei dispositivi, mi sarebbe piaciuto parlare delle applicazioni low latency per poter suonare su Linux.
« Ultima modifica: 19 Aprile 2012 ore 23:17 da mrcaptainspoon »
Il cucchiaio non esiste.

xesmo

Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #5 il: 19 Aprile 2012 ore 22:48 »
sarà la volta buona che riesco far andare il microfono ?  >:( se si ti faccio un monumento,e se fai la guida in PDF (io sono pigro) giuro che vado in chiesa (e dal battesimo che non entro) e ti accendo una candelina  ;D

intanto Grazie
« Ultima modifica: 19 Aprile 2012 ore 22:50 da Ciro »

Offline mrcaptainspoon

  • *
  • Post: 24
  • Reputazione: 3
    • Mostra profilo
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #6 il: 19 Aprile 2012 ore 23:16 »
Promessa la guida in pdf ;D
Il cucchiaio non esiste.

Offline jmc

  • *
  • Post: 1354
  • Reputazione: 95
    • Mostra profilo
    • The Chakra Project
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #7 il: 19 Aprile 2012 ore 23:52 »
Riferendoci ad HAL, per caso, sai segnalarmi se Chakra usa componenti DeviceKit?

Certamente: KDE non usa più HAL da quando è stato deprecato (quindi da più di un anno) ed usa invece i suoi corrispettivi. Ad esempio, PowerDevil si basa su Upower, e PartitionManager (parzialmente) su Udisks. Anche Chakra sta lavorando per far usare Udisks a Tribe.

E per quanto riguarda OSSv4, sai segnalarmi se ha delle applicazioni low latency che vi si appoggiano (tipo Jack per ALSA intendo) e se è compatibile con PULSEAUDIO? Te lo chiedo perchè nelle sezioni successive, dopo quelle sulla configurazione dei dispositivi, mi sarebbe piaciuto parlare delle applicazioni low latency per poter suonare su Linux.

Non ti saprei rispondere nello specifico delle applicazioni audio a bassa latenza, visto che non ne faccio uso, ma posso dirti che molte applicazioni funzionano nativamente anche con OSS dal momento che, ti ricordo, ALSA è una prerogativa del kernel Linux, mentre numerose applicazioni che utilizziamo quotidianamente sono fatte per funzionare anche su altri sistemi Unix (i vari BSD, per esempio). Se si vuole far sì che l'applicazione funzioni anche su quei sistemi, l'unica possibilità è di usare le API di OSS, per cui il supporto ad OSS anche in ambiente Linux viene gratuito.

OSSv4 è compatibile con PulseAudio? Sì... abbastanza. Purtroppo PulseAudio con OSSv4 ti impone alcune limitazioni; ad esempio, avevo configurato OSSv4 per lavorare a 192khz (la risoluzione che trovi nei dischi Blu-Ray, per intenderci) sulla mia scheda audio, e credevo di aver detto lo stesso anche a PulseAudio, il quale però sembra avere dei problemi da questo punto di vista. Nello specifico, riuscivo a sentire correttamente i suoni passanti per PulseAudio, ma pare che le registrazioni avvenissero ancora a 44.1khz. Visto che Skype usa PulseAudio, la cosa si è tradotta nel fatto che dall'altro lato mi sentivano come se avessi appena inalato elio...
In realtà con OSSv4 PulseAudio diventa totalmente superfluo, visto che il mixing è effettuato, in maniera trasparente e con controlli separati per ogni applicazione, direttamente nel modulo del kernel.

Offline senso42

  • *
  • Post: 580
  • Reputazione: -4
    • Mostra profilo
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #8 il: 20 Aprile 2012 ore 11:36 »
La cosa incredibile è che la mattina appena accendo la prima volta il pc, l'audio non va, è muto il computer. Poi o riavvio, anche più di una volta purtroppo, o spengo e si risistema senza fare niente.
Questo è sistematico, senza installare o modificare niente, ogni mattina questa storia  ???.
E' un difetto di Chakra che non riesco a capire. Vi capita mai?
« Ultima modifica: 20 Aprile 2012 ore 11:38 da senso42 »

Offline jmc

  • *
  • Post: 1354
  • Reputazione: 95
    • Mostra profilo
    • The Chakra Project
Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #9 il: 20 Aprile 2012 ore 16:38 »
È dovuto quasi sicuramente al fatto che hai più "dispositivi audio" (di input e/o output che siano), e viene abilitato l'uno o l'altro a seconda dell'ordine con cui questi vengono riconosciuti. Ad Udev non è possibile imporre un ordine specifico, se non al limite imponendo l'ordine dei moduli del kernel da abilitare tramite blacklisting e aggiunta degli stessi in /etc/rc.conf. L'alternativa "facile" è di usare PulseAudio per scegliere il dispositivo da usare di default (a prescindere dall'ordine con cui questo viene abilitato all'avvio).

giannifur

Re:[WORK IN PROGRESS] L'audio su Linux (e in particolare su KDE e CHAKRA)
« Risposta #10 il: 20 Aprile 2012 ore 21:13 »
Ho avuto problemi alla prima installazione,poi all'aggiornamento a kde4.8.0 si è risolto tutto ora da un paio di giorni mi si è riproposto lo stesso problema solo nel pc fisso con hda intell alc662!Nel portatile tutto ok!La cosa è molto fastidiosa specie quando uso file multimediali e you tube,spero in una risoluzione grazie della guida!

Opss mi sono accorto che, grazie a questa guida, non ho installato pulseaudio,che mi era stato suggerito appena arrivato a chakra!La settimana scorsa ho dovuto reinstallare perchè ho fatto pulizia delle varie partizioni che avevo nell'hard disk e me ne ero scordato,comunque ora ho la mia chakra completamente padrona del pc e audio funzionante!Non si smette mai di imparare!
« Ultima modifica: 21 Aprile 2012 ore 05:27 da giannifur »

Offline mrcaptainspoon

  • *
  • Post: 24
  • Reputazione: 3
    • Mostra profilo
@Giannifur:
Ciao, siccome ho avuto (ed ho) un problema simile al tuo, vorrei capire se si tratta della stessa faccenda.
In pratica ti funzionava l'audio del sistema (suoni avvio, errore, spegnimento) ma non ti funzionava quello del browser e quello dei file multimediali aperti con Amarok o con il lettore standard di Chakra?

Attualmente anch'io ho aggirato il problema installando PULSEAUDIO ma avendo capito dove era il problema, a mio avviso, questa di PULSEAUDIO non è una soluzione ma solo una toppa poco elegante al problema....ci sto ancora lavorando per risolverlo (e per eventualmnete trattare la cosa nella guida) e vorrei quindi capire quanto questa cosa è frequente tra gli utenti.
« Ultima modifica: 30 Aprile 2012 ore 15:38 da mrcaptainspoon »
Il cucchiaio non esiste.

giannifur

Si comfermo non mi funzionava l'audio sul browser e l'audio su vlc,mentre i suoni di avvio funzionavano,dopo aver installato pulseaudio tutto si è risolto!

Offline mrcaptainspoon

  • *
  • Post: 24
  • Reputazione: 3
    • Mostra profilo
Che browser utilizzavi? e per caso, hai fatto caso al comportamento di Phonon?
Per caso ad ogni accensione ti diceva (o ti dice ancora) che avevi collegato/scollegato delle periferiche audio anche se non avevi fatto nulla?
ps usi più periferiche audio? E se vai in Phonon, quante periferiche ti rileva?
grazie per la pazienza Giannifur  ;)
« Ultima modifica: 30 Aprile 2012 ore 15:39 da mrcaptainspoon »
Il cucchiaio non esiste.

giannifur

Il browser è firefox le periferiche sono l'audio del monitor il microfono della webcam (logitecjh)solo che prima phonom mi chiedeva di disattivare periferiche che secondo lui non funzionavano ma che in realtà erano sempre le stesse (alc662 default e altre che non ricordo bene e comunque sempre ripetute nella scaletta)mentre ora se apro phonon ora ho solo audio interno stereo analogico e webcam e miccrofono,il tutto funzionante e a me quanto basta per il momento!

 

Template by Homey | Sito ufficiale | Disclaimer