Ma quando provate una distribution Linux la fate un minimo di regolazione su period_time, buffer_time e nrpacks?!
Ma quando provate una distribution Linux la fate un minimo di regolazione su period_time, buffer_time e nrpacks?!
No. Le mie conoscenze Linux sono pari a zero ... anche se proprio smanettandoci per l'audio vorrei aumentarle, anzi se c'e' in giro qualche puntatore che descrive processi e tuning me lo guardo volentieri magari durante le ferie, periodo durante il quale vorrei provare MPD ...
@Audiodan, per i miei amati portatili, sto aspettando di poter provare ad alimentare il portatile con uno stabilizzato serio e questo credo che sia "the last tuning", una volta provato questo, se trovo qualcuno che mi fa un case che somigli a quello di un Wadia, magari mi ci metto a costruire una macchina che non sia un portatile ...
Un cordiale saluto, Massimiliano
Intanto guardati questo case , che ho montato proprio l'altro giorno ed è davvero molto bello e non costosissimo
SilverStone Technology Co., Ltd.- GD07
che ha, tra l'altro, tutto lo spazio che si vuole per implementare una alimentazione lineare all'interno del case.
Non sarà Wadia ma si inserisce in qualsiasi impianto senza sfigurare.
Bibo, tu stai studiando da Linuxiano......dicci la verità!
Ma se è così, dal momento che ai Venusiani (Dr. Spock) venivano le orecchie a punta, ai Linuxiani cosa succede?
Non è poi tanto difficile, basta fare una ricerca Google con "linux usb audio nrpacks"
In pratica con Linux si può regolare la latenza del controller USB e alleviare il peso sulla CPU, cioè le chiamate IRQ vengono ridotte al minimo attraverso buffer più grandi. Quindi, l'applicazione audio processa un bel po' di dati ogni qual volta le viene richiesto.
Il parametro nrpacks appartiene al modulo snd-usb-audio e corrisponde ai pacchetti, cioè i blocchi di dati audio, spediti ogni 1ms. Questo corrisponde a quanti ms di audio il controller USB processa senza l'aiuto della CPU. Normalmente snd-usb-audio è già settato su nrpacks=1 che corrisponde ad un elevato numero di IRQs. Settando nrpacks=20 (cioè 20 ms di dati), si hanno 50 IRQ/sec; settando nrpacks=100, si hanno 10 IRQ/sec.
Il parametro period_time corrisponde a quanti dati in microsecondi l'applicazione trasferisce al driver in in un'unica chiamata, cioè quante volte chiama il driver. A differenza delle schede PCI dove corrisponde al periodo IRQ, siccome lo stack USB utilizza il double buffering, il period time e l'IRQ time sono circa indipendenti. In pratica, il periodo dell'USB IRQ corrisponde a circa il valore minimo di nrpacks e period time. Per valori elevati (nrpacks > 100, period oltre 1/2 secondo) bisogna trovare la giusta combinazione di nrpacks e period time per evitare xruns (under/over-runs).
Ad esempio:
- nrpacks=100, period time=2 sec -> 10 IRQ/sec, che è praticamente niente per il kernel
- nrpacks=1000, period time=2 sec -> una sacco di xruns
- nrpacks=1000, period time=0.7 sec -> appena 3 IRQ/sec
Siccome gli IRQ in modalità kernel hanno buona priorità, è meglio ottimizzare più in favore dello spazio minimo dell'applicazione che della frequenza IRQ.
Questo con Linux è verificabile e configurabile a seconda del tipo di files mandati all'USB (16/44 o 24/96 o...).
PS: mi sembrava ci fosse un'inesattezza, allora sono andato a controllare
Le specifiche USB 2.0 dividono il frame da 1-millisecond per 8, quindi le spedizioni avvengono ogni 125-microsecondi, e possono trasportare transazioni multiple verso destinazioni multiple. I dati max per transazione sono 3 KB.
Ultima modifica di bibo01 : 18-07-2013 a 10:34
Sto iniziando a fare i primi passi con Tiny Core Linux + Deadbeef.
Ieri al primo tentativo sono riuscito subito ad avere playback a 44/48. Qualche problema con SRC upsampling.
Comunque, nei prossimi giorni vedo di preparare una versione di TinyCore per USB pendrive già pronta con le varie applicazioni necessarie, così chiunque potrà fare una prova sul proprio sistema (se la propria scheda audio int o ext è supportata da ALSA).
Quando pronta, aprirò un thread apposito con Guida.
Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)