Vedo molte affermazioni secondo cui Jack è più veloce di Pulse e ha meno latenza. Com'è così? Perché Pulse si definisce leggero e Jack lo chiama grasso? Qualcuno potrebbe abbattere gli interni di questi due demoni per un laico?
Vedo molte affermazioni secondo cui Jack è più veloce di Pulse e ha meno latenza. Com'è così? Perché Pulse si definisce leggero e Jack lo chiama grasso? Qualcuno potrebbe abbattere gli interni di questi due demoni per un laico?
Risposte:
Jack richiede all'utente, l'utente competente, di configurare il server per determinare la latenza di elaborazione più bassa possibile per la propria macchina. (La latenza di elaborazione è il tempo impiegato dal server per spostare i dati da / verso le applicazioni client e quindi inviare / ricevere il successivo "blocco" di campioni audio all'esterno del sistema.) Jack consegnerà quei blocchi di dati audio in tempo, oppure fallirà e ti darà un buffer underrun (a volte chiamato "dropout", o pop e click). Se Jack ottiene costantemente underrun, il tuo compito è riavviare il server con impostazioni diverse o modificare qualcosa nelle applicazioni client per renderle più efficienti in modo da poter rispettare le scadenze audio. Poiché le impostazioni del tuo server si applicano in modo uniforme a tutti i client, Jack è abbastanza utile per instradare l'audio tra più applicazioni audio e ottenere risultati prevedibili . (Cioè, è come collegare "jack" a vari componenti audio.)
Pulse è progettato per ridurre al minimo il numero di interruzioni dell'audio a causa del mancato rispetto da parte del server di una scadenza per l'invio / la ricezione dell'audio all'esterno del sistema. Apparentemente tenta di farlo scegliendo un buffer di grandi dimensioni per le applicazioni client che non richiedono una bassa latenza di elaborazione , quindi "iniettando" campioni in quel buffer per le applicazioni client che hanno una scadenza prima. Se tenta di iniettare campioni così presto da non rispettare una scadenza e causare un superamento, Pulse aumenterà automaticamente il minor tempo possibile e consentirà a un client di inviare un aggiornamento audio al server. I documenti Pulse dichiarano esplicitamente che una latenza ultra bassa, ad esempio meno di 10 ms di latenza di elaborazione- non è un obiettivo di design. Dato che Linux stesso (e probabilmente il tuo hardware) non è stato progettato per la programmazione in tempo reale dell'audio, sarei propenso a crederci.
In termini di configurazione dell'utente, Pulse è "leggero". (Si potrebbe dire che Pulse ha una bassa latenza di configurazione , qualcosa che sfortunatamente molte app di Linux Audio sembrano ignorare.) In termini di complessità sottostante rispetto a Jack, Pulse è "grasso".
Per ottenere una risposta definitiva su quale è più veloce, devi solo ottenere un dispositivo di loopback e misurare la latenza di andata e ritorno sul tuo sistema per conoscere la verità. La latenza di andata e ritorno è il tempo impiegato dal sistema per elaborare l'audio e ricevere ciò che è stato elaborato nel sistema. Ci sono tutorial online che spiegano come farlo sotto Linux. Questo ti darà un'idea di ciò che stai effettivamente cercando, ovvero la latenza percepita - il tempo necessario dal momento in cui attivi un evento (ad esempio, strimpellando le corde di una chitarra) al momento in cui senti il suono per la prima volta che risulta (ad esempio, sentire l'accordo della chitarra).
Infine, tieni presente che sia Pulse che Jack sono in cima ad ALSA sulla maggior parte delle distribuzioni GNU / Linux. So che stai solo chiedendo di Jack vs. Pulse. Ma se stai utilizzando una singola applicazione audio che può connettersi direttamente ad ALSA, non è immaginabile che l'aggiunta di Pulse o Jack ti riduca una latenza percepita inferiore rispetto a ALSA da sola. In tal senso, sia Pulse che Jack sono "grassi".
TLDR; Il solo ALSA è il più veloce, Jack è utile per concatenare più applicazioni audio e Pulse è probabilmente il più facile da usare quando non ti interessa la latenza ultra bassa. Ignora qualsiasi documentazione o discussione che utilizzi il termine latenza senza spiegare che tipo di latenza si intende. (Sfortunatamente, sia i documenti ufficiali di Jack che i post sul blog di Lennart su Pulse rientrano in questa categoria.)
Nota : potrebbero esserci casi limite in cui si desidera utilizzare una singola applicazione audio e ha un'interfaccia ALSA scadente e un'interfaccia Jack decente. In tal caso, l'utilizzo di Jack potrebbe ridurre la latenza. Ma se stiamo parlando di app progettate per ridurre al minimo la latenza, questi casi dovrebbero essere rari. Ma collegare un dispositivo di loopback e testare la mia ipotesi!
In realtà sono simili nell'essere server audio . JACK è progettato per una risposta in tempo reale / a bassa latenza, richiesta da soluzioni audio di livello professionale. PulseAudio è più mirato al desktop generale (dove si applicano esigenze meno rigide). La PA sembra essere più pesante di JACK - essere più complessa provoca più spese generali. Alla fine entrambi usano ALSA per un vero output. Con PA, i dati vengono spesso instradati da ALSA (output dell'applicazione) a PA (elaborazione) ad ALSA (output), che ovviamente è più lento della rotta JACK-ALSA. D'altra parte è trasparente per le applicazioni che non possono utilizzarlo in modo nativo, poiché presenta loro una scheda audio virtuale con un'interfaccia ALSA.
In ogni caso, a meno che tu non intenda produrre musica o non riesca a vivere senza il controllo del volume per applicazione (o inoltrare l'audio a un'altra macchina sulla rete), il semplice ALSA andrà bene, con un sovraccarico minore. Alcuni driver possono eseguire il mixaggio hardware e, in caso contrario, ALSA può mixare tramite un plug-in (probabilmente non è scattante come JACK, ma l'uso "normale" dovrebbe essere ok).
Jack è per le applicazioni che richiedono una bassa latenza, ad es. Enginering / creazione audio per musicisti, produttori di video, ecc
Pulse è per le normali applicazioni desktop (non aspettarti una bassa latenza)
alsa
e oss
outputAlsa userspace layer (non un driver) fa il minimo (latenza tra [*])
Nella maggior parte dei casi Pulse è la scelta migliore per gli utenti desktop regolari. Jack è la scelta migliore per musicisti, ecc.
Non è davvero una questione di "vs". A prima vista possiamo vedere che sono entrambi "Sound Server". Quindi, forse, concludere che bisogna semplicemente scegliere tra di loro. Non è così. Confronta, ad esempio, una videocamera e una videocamera FLIR, entrambe sono videocamere. Ma non si "sceglie" solo tra di loro. Servono ruoli molto diversi, quei ruoli possono essere complimenti, ma non sono in alcun modo competitivi. Uno ha bisogno di jack, o uno ha bisogno di impulsi, o uno potrebbe aver bisogno di entrambi. La scelta è guidata dal dominio problematico, non da funzionalità come la latenza specifica.
Per quanto riguarda "FAT" vs. no, il termine è usato in troppi modi per essere veramente significativo. Ma, generalmente, il termine FAT usato quando l'applicazione "fa tutto per te", più o meno. "Leggero" tende a farti caricare tutta la fucntionallity che desideri, possibilmente scegliendo da un pallet di opzioni e scartando il resto. Pulse è un programma "big blob" al quale si danno alcuni parametri e, praticamente, si avvia. Ne hai bisogno o no, una grande quantità di funzionalità viene caricata quando inizi l'impulso. Jack è un programma piccolo e inutile da solo, su cui incollare un numero qualsiasi di plugin, programmi, ecc. Per costruire ciò che vuoi. I programmatori tendono a vedere il mondo dal lato delle risorse della macchina.
Quindi, pulse è un server a latenza variabile e jack è a latenza fissa. Questi sono i loro domini problematici specifici. Se stai solo guardando la TV o ascolti musica su una rete, sicuramente vuoi il polso. Se stai provando a suonare musica elettronica dal vivo, avrai sicuramente bisogno di Jack. Se stai guardando la TV e stai eseguendo pesanti elaborazioni sui flussi audio, avrai sicuramente bisogno di entrambi.