Linux-Audio.org
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.
Chiudi i Widgets
Cerca
 
 

Risultati per:
 


Rechercher Ricerca avanzata

Cambia lingua
installato per sbaglio dssi-vst

Mar Ott 01, 2013 1:58 pm Da Tumbao

Sono appena arrivato su Linux Audio. org
COMPLIMENTI!

Stavo seguendo la bellissima guida di Senbee e ho combinato subito un guaio.

Invece che dare …

[ Lettura completa ]

Commenti: 4

[News] Pronta la nuova guida sulla produzione musicale!

Sab Mag 12, 2012 9:11 am Da Senbee

Ho finalmente riscritto la mia guida sulla produzione musicale su Ubuntu. Per migliorarla o per discutere gli argomenti trattati siete invitati a …

[ Lettura completa ]

Commenti: 20

Mag 2024
LunMarMerGioVenSabDom
  12345
6789101112
13141516171819
20212223242526
2728293031  

Calendario Calendario

Ultimi argomenti attivi
» vst di piano
[GUIDA] Come spingere al limite jackD  EmptyGio Apr 02, 2020 1:56 pm Da ivoermejo

» rimuovere tracce obsolete
[GUIDA] Come spingere al limite jackD  EmptyGio Giu 13, 2019 11:43 am Da Steeler

» Carla non riesco a caricare plugins .dll
[GUIDA] Come spingere al limite jackD  EmptyMer Ott 03, 2018 12:07 pm Da Stan

» jack e molteplici schede audio
[GUIDA] Come spingere al limite jackD  EmptyGio Mag 24, 2018 6:52 am Da snake150582

» Saffire pro 24 dsp, Ubuntu Studio 16.04, Jack
[GUIDA] Come spingere al limite jackD  EmptyMar Feb 13, 2018 6:43 am Da end117

» Chi siamo, dove andiamo?
[GUIDA] Come spingere al limite jackD  EmptyLun Mar 27, 2017 5:26 am Da franki

» Ingen
[GUIDA] Come spingere al limite jackD  EmptyLun Mar 27, 2017 5:16 am Da franki

» RME Multiface Nuendo Audiolink 96 + PCI + PCMCIA II & Cable + Original Box
[GUIDA] Come spingere al limite jackD  EmptyMar Ago 23, 2016 8:03 pm Da touchstyle

» ancora un softsynth ...
[GUIDA] Come spingere al limite jackD  EmptyMar Mag 31, 2016 5:29 pm Da franki

I postatori più attivi del mese
Nessun utente


[GUIDA] Come spingere al limite jackD

5 partecipanti

Andare in basso

[GUIDA] Come spingere al limite jackD  Empty [GUIDA] Come spingere al limite jackD

Messaggio  as91 Mer Mag 28, 2014 3:26 am

Grazie alla nuova formula che ho ricavato dagli studi sul server jackd (http://www.linux-audio.org/t786-guida-spiegazione-impostazioni-jackd-parte2-latenza)

Codice:
(frame per perdiodo)*periodi;  ovvero (frame per periodo)*(1 periodo + 1 buffer)=(frame per periodo)*[1 periodo + (periodi per buffer)]

Ho fatto nuovi studi che hanno portato a risultati carini. Ecco i risultati:

N.B.: riporto solo le impostazioni minime che non hanno portato xRun

L'impostazione con i frame di latenza minori e maggiori sono state:



fr/per

fr/sec

per/buff

lt_frame

lt_ms

lt_buff

Xrun 1 min

DSP

16

48

6

112

2,3333333333

2

0(0)

10,00%

64

192

6

512

2,6666666667

2

0(0)

6,00%

L'impostazione con i ms di latenza minori e maggiori sono state:



fr/per

fr/sec

per/buff

lt_frame

lt_ms

lt_buff

Xrun 1 min

DSP

32

192

6

224

1,1666666667

1

0(0)

20,00%

16

48

6

128

2,6666666667

2

0(0)

12,00%

L'impostazione con i carichi DSP minori e maggiori sono state:



fr/per

fr/sec

per/buff

lt_frame

lt_ms

lt_buff

Xrun 1 min

DSP

64

192

6

512

2,6666666667

1

0(0)

6,00%

16

192

24

416

2,1666666667

2

0(0)

28,00%

LEGENDA:
-fr/per: frame per periodo
-fr/sec: frame per secondo
-per/buff: periodi per buffer
-lt_frame: latenza totale in frame (esclusa la latenza di sistema ELL - "extraloop latency")
-lt_ms: latenza totale in millisecondi (esclusa la latenza di sistema ELL - "extraloop latency")
-lt_buff: tempo di riempimento di un buffer (il valore indicato da jackD)
-Xrun 1 min: numero di xRun dopo un minuto di test
-DSP: carico DSP

Da questi valori deduciamo subito che suddividendo il lavoro del server in più periodi, si ha un aumento del carico DSP che però non porta un aumento del numero di xRun.

La latenza in ms è data dalla (latenza in frame) / (frame per secondo).

La latenza in frame è data dalla formula espressa all'inizio dell'articolo.

Ovviamente la latenza in ms è deducibile direttamente dal valore in ms indicato da jackD trmite la formula:
Codice:
LT_jack * (1+1/n)

Con n = periodi per buffer.
Difatti, essendo la latenza di jackD il tempo di un buffer - avendo in entrata una latenza di 1 periodo e in uscita di un buffer (vedi il mio articolo linkato in alto), si ha il tempo del buffer in uscita sommato al buffer in entrata. Quello in entrata non è completo ma equivalente al valore inverso dei periodi per buffer (1/n).

Algebricamente:
Codice:
frame=(frame per periodo)*[1 periodo + (periodi per buffer)];
ms=frame/(frame per secondo);
LT_jackd=(frame per periodo)*(periodi per buffer)/(frame per secondo) =>
ms=frame*LT_jackd/[(frame per periodo)*(periodi per buffer)] =
(frame per periodo)*[1 periodo + (periodi per buffer)]*LT_jackd/[(frame per periodo)*(periodi per buffer)] =
[1 periodo + (periodi per buffer)]*LT_jackd/[(periodi per buffer)] =
[(1 periodo)/(periodi per buffer) + 1]*LT_jackd =
(1+1/n)*LT_jack


Questi risultati sono molto utili soprattutto per le schede USB, in quanto il driver di jackd aggiunge una latenza di un periodo alla latenza complessiva: aumentando il numero di periodi per buffer possiamo diminuire la latenza portando i frame per periodo a valori bassissimi come 16 o 32. Con questi valori non si ha un aumento superiore di 0.67ms.

Inoltre vorrei far notare che la latenza massima in ms corrisponde a 2.67 ms, con 2ms di latenza di buffer (quella di jackd) e 12% di carico DSP. La latenza minima raggiungibile - per il mio sistema, è di 2.53 ms, con 1ms di buffer, 64 192000 3.

L'altro valore per 1ms di buffer corrispondeva a 2.7ms con 32 96000 3

Vorrei aggiungere che questi due valori - che sono gli unici che mi portano una latenza minore di 3ms, sono inutilizzabili per più di 5 minuti sul mio sistema, mentre tutte queste impostazioni sono stabili:


Codice:
f/p f/s p/b lt_fr lt_ms lt_bf Xr DSP

64 192 6 448 2,3333333333 2 0(0) 10,00%
32 192 12 416 2,1666666667 2 0(0) 19,00%
16 192 24 400 2,0833333333 2 0(0) 23,00%
32 192 6 224 1,1666666667 1 0(0) 20,00%
32 96 6 224 2,3333333333 2 0(5) 10,00%
16 96 12 208 2,1666666667 2 0(0) 20,00%
16 48 6 112 2,3333333333 2 0(0) 10,00%

f/p: frame per periodo
f/s: frame per secondo
p/b: periodi per buffer
lt_fr: latenza in frame
lt_ms: latenza in ms
lt_bf: latenza di un buffer
Xr: numero di xRun
DSP: carico DSP medio

EDIT: vorrei farvi notare un caso particolare:
Codice:
32   192   3   128   0,6666666667   0,5   0(8138)   22,00%

questo non lo commento!
as91
as91
Moderatore
Moderatore

Messaggi : 473
Punti : 568
Data d'iscrizione : 05.02.14

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  Rael Mer Mag 28, 2014 7:43 am

Complimenti!! Che trattato di ingegneria!!!
Rael
Rael
Admin
Admin

Messaggi : 1086
Punti : 1442
Data d'iscrizione : 02.05.12
Età : 61
Località : Boffalora d'Adda

http://webross.altervista.org

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  as91 Mer Mag 28, 2014 12:24 pm

Ora vediamo di farti partire jackd e poi vediamo quanto possiamo spingerlo!

Penso che questo sia un grande passo avanti per chi utilizza linux per le applicazioni live, inoltre i valori in ms che ho espresso nel post sono assoluti, questo vuol dire che che comprendono la riproduzione e la registrazione.

In riproduzione si hanno rispettivamente questi valori:
-1,1666666667ms
-1,0833333334ms
-1,0416666667ms
-0,5833333334ms
-1,1666666667ms
-1,0833333334ms
-1,1666666667ms

e il caso speciale:
-0,3333333334ms
as91
as91
Moderatore
Moderatore

Messaggi : 473
Punti : 568
Data d'iscrizione : 05.02.14

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  as91 Mer Mag 28, 2014 2:31 pm

EDIT: piccolo errore mio: jackd divide il lavoro tra porte in entrata (capture) e porte in uscita (plyback) con un rapporto 1/n. Questo vuol dire che si crea una latenza in entrata di un periodo e in uscita di un buffer.

In frame:
(frame per periodo)*[1 periodo + (periodi per buffer)] =
-capture = (frame per periodo) * (1 periodo)
-playback = (frame per periodo) * (periodi per buffer)

Es.: con 16 frame per periodo, 6 periodi per buffer:
-capture = 16 * 1 = 16 frame
-playback = 16 * 6 = 96 frame
-tot = 16 + 96 = 112 frame

In ms si ha LT_jack * (1+1/n) =
-capture = LT_jackd * 1/n
-playback = Ltjackd * 1

Es.:
-capture = 2 * 1 = 0.333ms
-playback = 2 * 1/6 = 2 ms
-tot = 2.33 ms

Ricordiamo che la latenza indicata da jackd indica la latenza di buffer, quindi per trovare la latenza di un periodo dobbiamo trovare l'inverso del valore di periodi per buffer:
Codice:
n=periodi per buffer;
Lt_jackd=tempo di un buffer;
Tempo di un buffer = (tempo di un periodo) * (periodi per buffer) =>
Tempo di un periodo = (tempo di un buffer) / (periodi per buffer) =>
tempo di un periodo = Lt_jackd / n
as91
as91
Moderatore
Moderatore

Messaggi : 473
Punti : 568
Data d'iscrizione : 05.02.14

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  Steeler Mer Mag 28, 2014 5:22 pm

Steeler
Steeler
Baby Tux
Baby Tux

Messaggi : 554
Punti : 679
Data d'iscrizione : 03.05.12
Età : 40
Località : UK

https://sites.google.com/site/as91linuxsite/home

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  as91 Mer Mag 28, 2014 5:30 pm

cincin riesci ad aggiungere anche l'ultimo post?

as91 ha scritto:
Penso che questo sia un grande passo avanti per chi utilizza linux per le applicazioni live, inoltre i valori in ms che ho espresso nel sono assoluti, questo vuol dire che che comprendono sia la latenza in riproduzione e che quella in registrazione, infatti - come spiegato nell'altra guida, jackd divide il lavoro tra porte in entrata (capture) e porte in uscita (plyback) con un rapporto 1/n. Questo vuol dire che si crea una latenza in entrata di un periodo e in uscita di un buffer.

In frame:
(frame per periodo)*[1 periodo + (periodi per buffer)] =
-capture = (frame per periodo) * (1 periodo)
-playback = (frame per periodo) * (periodi per buffer)

Es.: con 16 frame per periodo, 6 periodi per buffer:
-capture = 16 * 1 = 16 frame
-playback = 16 * 6 = 96 frame
-tot = 16 + 96 = 112 frame

In ms si ha  LT_jack * (1+1/n) =
-capture = LT_jackd * 1/n
-playback = Ltjackd * 1

Es.:
-capture = 2 * 1 = 0.333ms
-playback = 2 * 1/6 = 2 ms
-tot = 2.33 ms

Ricordiamo che la latenza indicata da jackd indica la latenza di buffer, quindi per trovare la latenza di un periodo dobbiamo trovare l'inverso del valore di periodi per buffer:

Codice:
n=periodi per buffer;
Lt_jackd=tempo di un buffer;
Tempo di un buffer = (tempo di un periodo) * (periodi per buffer) =>
Tempo di un periodo = (tempo di un buffer) / (periodi per buffer) =>
tempo di un periodo = Lt_jackd / n
as91
as91
Moderatore
Moderatore

Messaggi : 473
Punti : 568
Data d'iscrizione : 05.02.14

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  Steeler Mer Mag 28, 2014 6:04 pm

done
Steeler
Steeler
Baby Tux
Baby Tux

Messaggi : 554
Punti : 679
Data d'iscrizione : 03.05.12
Età : 40
Località : UK

https://sites.google.com/site/as91linuxsite/home

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  touchstyle Sab Mag 31, 2014 8:44 pm

Interessante.
Hai validato i dati calcolati con delle misure?

Ciao,
Touch.
touchstyle
touchstyle
Moderatore
Moderatore

Messaggi : 335
Punti : 421
Data d'iscrizione : 06.05.12
Età : 45

http://www.touchstyle.it

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  as91 Dom Giu 01, 2014 1:55 pm

i dati sono tutti ricavati da misure, la formula è empirica, non calcolata, ovviamente è solo la latenza di jackd, al più si deve aggiungere quella di sistema.

La latenza che non dipende da jackd si suddivide equamente tra porte in ingresso ed in uscita (date le conoscenze attuali). Si hanno quindi 2 casi:
- scheda PCI, latenza fissa in base al sistema, solitamente sotto i 50 frame => a 44100 hz sono 1.13 ms da dividere in ingresso e in uscita (a 1:1 - 0.56 ms).
-scheda USB, latenza variabile in base alle impostazioni: il driver di jackd aggiunge della latenza pari ad un periodo alla latenza nominale di sistema. O di 24 ms, in base a quale sia il minore. Giocando con frame per periodo e periodi per buffer si può mantenere un valore di frame basso, limitando la latenza di sistema.

Per le schede firewire non ho dati da analizzare...

EDIT: comunque le formule e i perchè sono spiegati nel link all'inizio del post (precedente mio articolo)
as91
as91
Moderatore
Moderatore

Messaggi : 473
Punti : 568
Data d'iscrizione : 05.02.14

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  Babbo Natale Dom Giu 22, 2014 4:56 pm

Dunque se ho capito bene questi sono i valori che spingono la latenza a livelli estremamente bassi:

Codice:


f/p f/s p/b lt_fr lt_ms lt_bf Xr DSP
64 192 6 448 2,3333333333 2 0(0) 10,00%
32 192 12 416 2,1666666667 2 0(0) 19,00%
16 192 24 400 2,0833333333 2 0(0) 23,00%
32 192 6 224 1,1666666667 1 0(0) 20,00%
32 96 6 224 2,3333333333 2 0(5) 10,00%
16 96 12 208 2,1666666667 2 0(0) 20,00%
16 48 6 112 2,3333333333 2 0(0) 10,00%

Il mio sistema non regge valori di fotogrammi/periodo uguali o inferiori a 64, come potrei utilizzare i dati indicati in questa tabella? E' più per curiosità che lo chiedo, con 128 f/p, campionamento 192000 e 3 periodi/buffer (e kernel rt) ho un sistema parecchio stabile a 2ms di latenza e praticamente zero x-run
Babbo Natale
Babbo Natale
Baby Tux
Baby Tux

Messaggi : 330
Punti : 427
Data d'iscrizione : 21.05.13
Località : Lapponia

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  as91 Lun Giu 23, 2014 11:43 am

In effetti tu hai trovato il compromesso migliore: con quelle impostazioni hai 2.66 ms di latenza totale, mentre portando i frame a 64 e i periodi per buffer a 6 scenderesti a 2.33 ms, che non sarebbe un guadagno conveniente.

Queste indicazioni valgono per quando non riesci a scendere così tanto e/o se puoi scendere sotto i 64 frame
as91
as91
Moderatore
Moderatore

Messaggi : 473
Punti : 568
Data d'iscrizione : 05.02.14

Torna in alto Andare in basso

[GUIDA] Come spingere al limite jackD  Empty Re: [GUIDA] Come spingere al limite jackD

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.