Mayor Sample Rate menor latencia?

  • 1
Deloferro
#1 por Deloferro el 24/08/2017
Un mayor valor en la tasa de muestreo (sample rates) da como resultado menos latencia bajo el mismo tamaño de memoria intermedia (buffer size). Por ejemplo si tienes el buffer configurado a 256 samples, la latencia con el sample rate a 88.2Khz será la mitad que la producida por un sample rate de 44.1kHz. Según eso un mayor sample rate permite un buffer más reducido conservando la misma cantidad de latencia. O sea si quieres latencia ultra baja métele mayor sample rate. El caso es que para eso necesitas una muy buena interfaz USB.

Alguien me explica esto? Entiendo que si a mayor sample rate se necesita mayores recursos para el procesamiento de la señal y por tanto el buffer se carga igual o con más muestras porque en ese caso debería tener menos latencia?

Gracias.
Subir
teniente_powell
vagar
#3 por vagar el 25/08/2017
Deloferro escribió:

Alguien me explica esto? Entiendo que si a mayor sample rate se necesita mayores recursos para el procesamiento de la señal y por tanto el buffer se carga igual o con más muestras porque en ese caso debería tener menos latencia?


Porque una cosa es la latencia bruta y otra la latencia fiable. Reducir la latencia bruta es muy sencillo, basta con disminuir el tamaño del buffer y/o aumentar la frecuencia de muestreo. Pero ambas acciones aumentan la probabilidad de que la máquina no pueda procesar la información de forma síncrona, produciendo sobrecargas de buffer que se traducen en chasquidos o sonido entrecortado.

De lo que se trata es de encontrar el equilibrio latencia/carga apropiado a las características del hardware y del tipo de trabajo que se esté utilizando (no hace faltan latencias menores de 20 ms para postproceso, por ejemplo).
Subir
robinette
#4 por robinette el 28/08/2017
#3
No has aclarado su duda. Has explicado otra cosa relacionada... pero no lo que preguntaba cachondo. :D
Subir
vagar
#5 por vagar el 28/08/2017
#4

Todo puede ser, el autor de la pregunta no se ha manifestado al respecto, gracias por tu aporte. ¿Tú cómo interpretas la duda y qué respuesta le das?
Subir
robinette
#6 por robinette el 28/08/2017
vagar escribió:
¿Tú cómo interpretas la duda y qué respuesta le das?

La duda la interpreto tal y como anuncia el título del hilo... "Mayor Sample Rate menor latencia?" (es la pregunta).

En principio Deloferro se percata de lo siguiente...
Deloferro escribió:
Por ejemplo si tienes el buffer configurado a 256 samples, la latencia con el sample rate a 88.2Khz será la mitad que la producida por un sample rate de 44.1kHz. Según eso un mayor sample rate permite un buffer más reducido conservando la misma cantidad de latencia.

... pero a la hora de discurrir correctamente sobre su "hallazgo" equivoca la resolución de su planteamiento al decir...
Deloferro escribió:
O sea si quieres latencia ultra baja métele mayor sample rate. El caso es que para eso necesitas una muy buena interfaz USB.

... lo cual no tiene nada que ver con el sample rate.


Pero donde realmente "patina" es al hacer la pregunta final donde confunde tamaños de buffer diferentes para diferentes frecuencias de muestreo.
Deloferro escribió:
Entiendo que si a mayor sample rate se necesita mayores recursos para el procesamiento de la señal y por tanto el buffer se carga igual o con más muestras porque en ese caso debería tener menos latencia?

No se carga con más muestras. El buffer determina el número de muestras. Si tienes un buffer de 256 muestras, éstas serán invariables aunque tengas 44.1kHz ó 96kHz. Lo único que a 96kHz ese número de muestras están más próximas entre ellas (mayor frecuencia) y por lo tanto se emplea menor tiempo (latencia) en llenar el buffer.
Y si... emplea menor tiempo (latencia) en llenar el buffer, pero ese menor tiempo también es el que tiene la CPU para hacer su trabajo.
Si le quitas tiempo a la CPU para realizar sus tareas también le restas la posibilidad de llevarlas a cabo por llevar más carga.
Si a eso le sumas que el audio está a 96kHz (mayor frecuencia, mayor tamaño de archivo) la carga a la que le sometes a la CPU le impide más fácilmente que no pueda procesarla correctamente y, con ello, te devuelve el audio con cortes, drops, clicks y ese tipo de artificios por lo que, para evitarlos, te obliga a subir el tamaño del buffer (y con ello la latencia).
Para el colmo te das cuenta de que acabas obteniendo mayor latencia que habiendo trabajado a 44.1. :D

Por eso te digo que tu respuesta, siendo válida porque lo que dices en ella es correcto, no es sin embargo del todo válida porque no respondes a la duda que planteaba Deloferro del por qué hay menos latencia a igual tamaño de buffer trabajando a mayores frecuencias de muestreo.

Un saludo.
Subir
teniente_powell
#7 por teniente_powell el 28/08/2017
#6 La frecuencia de muestreo sí importa, y mucho. Del artículo cuyo enlace he puesto antes:

R.Sendra escribió:
La latencia se suele medir en muestras (samples). Así, si sabemos que los convertidores de nuestro equipo presentan una latencia de 512 samples, podemos saber que, en el mejor de los casos, el retardo será de 0,023 s (multiplicamos por 2 esos 512 samples -entrada y salida- y dividimos el resultado por la frecuencia de muestreo que se utilice; por ejemplo, 44,1 kHz). 0,023 s o 23 ms


A mayor frecuencia, menor latencia.

Lo mejor de Hispasonic no son los foros sino sus artículos de cabecera.
Subir
vagar
#8 por vagar el 28/08/2017
robinette escribió:
no respondes a la duda que planteaba Deloferro del por qué hay menos latencia a igual tamaño de buffer


Es debatible:

vagar escribió:
Reducir la latencia bruta es muy sencillo, basta con disminuir el tamaño del buffer y/o aumentar la frecuencia de muestreo.


Podría haber añadido que la latencia bruta depende de la duración del audio contenido en el buffer, que es t = L / Fs , donde L es la longitud del buffer en cuadros (muestras por canal por segundo) y Fs la frecuencia de muestreo. Y si me pongo técnico, unas cuantas cosas más, como en el artículo que publiqué en linuxaudio.org junto a Robin Gareus:

https://wiki.linuxaudio.org/wiki/jack_latency_tests

Pero vamos, que la confusión del compañero es habitual y se debe a no entender la diferencia entre latencia bruta y latencia fiable. Se puede explicar de forma más extensa, pero la base del problema es ésa, en mi opinión.
Subir
robinette
#9 por robinette el 28/08/2017
teniente_powell escribió:
#6 La frecuencia de muestreo sí importa, y mucho. Del artículo cuyo enlace he puesto antes:

R.Sendra escribió:
La latencia se suele medir en muestras (samples). Así, si sabemos que los convertidores de nuestro equipo presentan una latencia de 512 samples, podemos saber que, en el mejor de los casos, el retardo será de 0,023 s (multiplicamos por 2 esos 512 samples -entrada y salida- y dividimos el resultado por la frecuencia de muestreo que se utilice; por ejemplo, 44,1 kHz). 0,023 s o 23 ms

Es exactamente lo mismo que he dicho yo. Lee bien mi intervención. ;)


En lo único que he mencionado que no tiene nada que ver con el sample rate es lo siguiente:
robinette escribió:
Deloferro escribió:
O sea si quieres latencia ultra baja métele mayor sample rate. El caso es que para eso necesitas una muy buena interfaz USB.

... lo cual no tiene nada que ver con el sample rate.

Como verás me refiero a que no tiene nada que ver la calidad de la tarjeta con el conseguir que a mayor frecuencia tenga menores latencias.
No depende de la tarjeta simplemente. :D

Un saludo.
Subir
robinette
#10 por robinette el 28/08/2017
vagar escribió:
Es debatible:

Probablemente... aunque no tengo duda de lo leído. :D


vagar escribió:
Podría haber añadido que...

Podrías haber añadido lo que te de la gana, y si ese añadido responde a la duda de Deloferro bienvenido sea. Pero pienso que no ha sido el caso (en mi opinión claro está... aunque sea debatible :D ).
No me malinterpretes, que no quiero decir que no lo tengas claro (que sé que o tienes clarísimol), solo que no lo has expuesto aquí.
Simplemente eso.

Un saludo.
Subir
robinette
#11 por robinette el 28/08/2017
Pero bueno... lo suyo es no enredar más y pasar página sobre el "offtopic".
Cuando lo lea Deloferro ya comentará si le siguen quedando dudas o no al respecto.

Esperemos que no. :D

Un saludo.
Subir
Plodustol Pegalups
#12 por Plodustol Pegalups el 28/08/2017
teniente_powell escribió:
A mayor frecuencia, menor latencia.
:shock: En realidad, a efectos prácticos, es justo lo contrario.
Cuanto mayor sea la frecuencia de muestreo más muestras hay que procesar cada milisegundo. Si duplicas la frecuencia duplicas la carga de trabajo del procesador y por consiguiente duplicas también la latencia o tiempo necesario para poder tener un flujo constante de audio sin cortes ni chasquidos.

Ya lo ha explicado Vagar perfectamente en #3 .
Subir
1
pedro
#13 por pedro el 28/08/2017
Pues, lo logico es eso. No podia entender lo contrario
Subir
teniente_powell
#14 por teniente_powell el 29/08/2017
#12 Efectivamente, ya lo ha explicado vagar. Y hablaba de "probabilidad", no de que esté ocurriendo. Si nos mantenemos dentro de los márgenes en que el driver ASIO no sature, es una simple cuestión matemática:

latencia.jpg

Si doblo la frecuencia de muestreo, disminuyo a la mitad la latencia, porque ésta se mide en segundos. El procesador, efectivamente, trabaja el doble, pero no demos por supuesto que va a saturar. El mismo resultado obtengo si mantengo la frecuencia de muestreo y pongo a la mitad el tamaño del buffer. No tiene por qué saturar. ¿Trabaja el procesador el doble? Sí. ¿Y tengo la mitad de latencia? También sí. La razón está en esa fórmula. Es la pregunta que hacía Deloferro.
,
Deloferro escribió:
Alguien me explica esto? Entiendo que si a mayor sample rate se necesita mayores recursos para el procesamiento de la señal y por tanto el buffer se carga igual o con más muestras porque en ese caso debería tener menos latencia?


Y mi respuesta ha sido que leyera el artículo de Ramón Sendra. Ahí lo explica.

La razón es que Deloferro cree que porque doblemos la frecuencia de muestreo, se está doblando el tamaño del buffer. Y no, el tamaño del buffer no se dobla. Tú defines un tamaño de buffer y una frecuencia de muestreo, y la latencia sale por cálculo. Yo trabajo con Reaper (y antes con Cubase). Tengo varios drivers ASIO: Yamaha Steinberg ASIO, ASIO4ALL, Akiyama ASIO y el Generic Low Latency ASIO. En cualquiera de ellos defines el tamaño del buffer, y en el DAW (Reaper, Cubase, .... el que sea) defines la frecuencia de muestreo. La latencia sale por cálculo.
Subir
rod_zero
#15 por rod_zero el 29/08/2017
robinette escribió:

Como verás me refiero a que no tiene nada que ver la calidad de la tarjeta con el conseguir que a mayor frecuencia tenga menores latencias.
No depende de la tarjeta simplemente. :D


No depende de la tarjeta en si, depende de los drivers de audio que se use,

En esto de la latencia tenemos en realidad 3 variables:

1.- CPU (los recursos disponibles)
2.- La demanda de recursos (tamaño del buffer y frecuencia de muestreo, número de pistas o instrumento a hacer usado).
3.- La administración de los recursos (driver).

En mac el tercero no es problema por que core audio da prioridad al procesaimiento de audio y va tan bien como se puede. En windows no, el procesamiento de audio no es prioridad para el sistema en windows y para volverlo prioridad se inventaron los drivers ASIO. Por ello la importancia de una interface con buenos drivers.

En teoria una maquina con buen CPU debería alcanzar latencia baja con un sample rate y buffer size apropiado, pero se presentan los chasquidos e interrupciones constantemente por que Windows no le da prioridad al audio. Es hasta que el driver ASIO corrige esto que se puede realmente usar la computadora con menor latencia.

Y bueno una interface con buenos drivers tampoco puede por si sola bajar la latencia, necesita un buen CPU.
Subir

Hilos similares

Respuesta rápida

Regístrate o para poder postear en este hilo