Como funciona la latencia haptica

La pila de latencia.
Por que el software de
bass shaker es lento.

Las pruebas de la comunidad miden consistentemente 140-200ms de latencia de extremo a extremo en el software estandar de bass shaker para sim racing, en multiples tarjetas de sonido y configuraciones de hardware. Esta pagina recorre cada capa responsable, con cifras documentadas donde estan disponibles y claramente señaladas donde no.

Explicacion Arquitectura de audio 12 min de lectura
En esta guia

Cada paso
suma latencia.

La retroalimentacion haptica es una cadena desde el evento del juego hasta el movimiento fisico del shaker. En el software haptico estandar, tres capas dominan el retardo total. Ninguna capa es catastrofica por si sola. El problema es que se acumulan.

Alcance y precision

La cifra de 140-200ms proviene de mediciones de la comunidad en mas de 7 configuraciones de tarjetas de sonido. Las cifras capa por capa a continuacion estan documentadas o calculadas a partir de fuentes tecnicas publicas. Donde las cifras son estimaciones o derivadas de primeros principios, se indica en linea.

Motor del simulador (iRacing, ACC, AC)
El juego calcula la fisica y hace los datos disponibles
~0ms
↓ bucle de sondeo de telemetria
Bucle de telemetria del software de bass shaker
El software busca datos nuevos hasta 60 veces por segundo
0 – 16.7ms
↓ procesa efectos y envia al motor de audio
Motor de audio de proposito general
El audio se almacena en buffers internos grandes antes de la salida
~50ms prom.
↓ mezclador de audio de Windows
Windows WASAPI modo compartido
El SO mezcla el audio de todas las aplicaciones antes de la salida al hardware
>20ms piso
↓ tarjeta de sonido, amplificador, shakers
Interfaz de audio, amplificador, shakers
Conversion de hardware: insignificante en contexto
~1-3ms

Total medido: 140-200ms.[1]

16.7ms por tick.
Cada tick.

Antes de que se sintetice cualquier audio, el software de bass shaker necesita saber que algo sucedio en el simulador. La mayoria del software de bass shaker usa un modelo de sondeo: comprueba si hay datos nuevos con un temporizador fijo, procesa efectos y escribe la salida de audio.

La tasa de actualizacion de propiedades del software estandar de bass shaker funciona hasta 60Hz.[2] A 60Hz, una comprobacion se ejecuta cada 16.7ms. Un evento que llega inmediatamente despues de que una comprobacion acaba de ejecutarse esperara los 16.7ms completos hasta la siguiente antes de activar cualquier salida haptica. En promedio, esto añade ~8ms de tiempo de espera.

Esto es distinto de la propia tasa de telemetria del juego. iRacing escribe en memoria compartida (una region de la RAM de tu PC donde el juego publica telemetria en vivo) a 360Hz mediante sub-muestras. ACC y AC escriben una instantanea una vez por cuadro renderizado, tipicamente 60-240Hz dependiendo de tus FPS. En cualquier caso, el cuello de botella es el software de bass shaker leyendo los datos, no el simulador produciendolos.

Comparacion con Track Impulse

Track Impulse lee la memoria compartida de iRacing usando un modelo basado en eventos. No hay bucle de sondeo. El motor se despierta en el instante en que se escribe nueva telemetria, tipicamente en menos de 1ms del tick de fisica del juego.

Buffers grandes,
por diseño.

Antes de que el sonido llegue a tus altavoces o shakers, pasa por un motor de audio: software que mezcla, almacena en buffer y procesa el audio. El software estandar de bass shaker usa un motor de audio de proposito general diseñado para bandas sonoras de juegos y audio cinematico. Estos motores priorizan la estabilidad sobre la velocidad y usan buffers internos grandes para prevenir cortes de audio.

Los registros de errores del software estandar de bass shaker muestran llamadas de inicializacion de audio consistentes con FMOD, un motor de audio ampliamente usado.[3] La documentacion oficial de la API de FMOD indica que su configuracion de buffer interno por defecto encola el audio a traves de 4 bloques de ~21ms cada uno. Asi se ve en numeros:

Formula de latencia de FMOD (de la documentacion oficial de la API de FMOD)
// FMOD System::setDSPBufferSize defaults
bufferlength = 1024    // samples per block
numbuffers   = 4       // blocks in the ring buffer
samplerate   = 48000   // Hz

block_ms     = 1024 / 48000 * 1000        // = 21.33ms per block
avg_latency  = (4 - 1.5) * 21.33          // = ~53ms average latency

La documentacion de FMOD confirma la formula de latencia como (numbuffers - 1.5) x blocksize, que da aproximadamente 53ms de latencia promedio del mezclador con la configuracion por defecto, antes de que se aplique cualquier sobrecarga de audio del sistema operativo.[3]

Advertencia

No podemos confirmar la configuracion exacta usada por ninguna aplicacion haptica de terceros; el tamaño del buffer y el numero de bloques pueden diferir de los valores por defecto de FMOD. Las cifras anteriores ilustran la categoria del problema, no necesariamente la contribucion precisa en ningun producto especifico. El total de 140-200ms es una medicion de la comunidad, no un calculo a partir de estas cifras por capa.

El mezclador del SO
siempre tiene un coste.

WASAPI (Windows Audio Session API) es como la mayoria de las aplicaciones de Windows envian audio a tu tarjeta de sonido. En modo compartido, el modo por defecto usado por la mayoria de aplicaciones, Windows enruta el audio de multiples apps a traves de un mezclador central antes de que nada llegue a tu hardware. Este paso de mezcla añade retardo que no puedes eliminar cambiando la configuracion del buffer.

Las pruebas independientes usando FlexASIO muestran consistentemente que el modo compartido de WASAPI produce una latencia superior a 20ms independientemente del tamaño del buffer.[4] Este es un piso impuesto por Windows, no un parametro configurable.

¿No puede Windows solucionar esto?

Microsoft añadio una opcion de audio de baja latencia en Windows 10/11 que teoricamente puede reducir esto hasta 1.3ms. Sin embargo, tanto la aplicacion como el controlador de tu tarjeta de sonido deben soportarlo especificamente. El software estandar de bass shaker no lo usa.[5]

Directo al hardware.
Sin mezclador del SO.

ASIO (Audio Stream Input/Output) fue desarrollado por Steinberg especificamente para resolver el problema de latencia de audio de Windows en la produccion musical en tiempo real. Su diferencia arquitectonica clave: evita por completo el mezclador de audio de Windows y se comunica directamente con el controlador de tu tarjeta de sonido.

Propiedad
WASAPI compartido
WASAPI exclusivo
ASIO (controlador nativo)
Latencia practica minima
>20ms piso
~4-10ms
~1.3ms
Mezcla del SO Windows
Si, todas las apps mezcladas
No
No, directo al hardware
Modelo de callback
Gestionado por el SO
Gestionado por el SO
Directo desde el hardware

A 64 muestras / 48kHz (una configuracion tipica de ASIO), la latencia de salida de audio es 64 / 48000 x 1000 = 1.33ms. Esta es la cifra que Track Impulse puede alcanzar con un buffer ASIO de 64 muestras.

Construido para minimizar
cada capa.

Track Impulse aborda cada capa de la pila directamente:

1

Telemetria del simulador: basada en eventos

En lugar de comprobar datos nuevos con un temporizador, Track Impulse escucha directamente: el juego notifica al motor en el instante en que hay nueva telemetria disponible. Sin retardo de sondeo. iRacing entrega sub-muestras a 360Hz (multiples instantaneas de fisica empaquetadas en cada cuadro) a traves de este metodo. ACC y AC entregan una instantanea por cuadro renderizado, por lo que la frescura de la telemetria escala con tus FPS.

2

Motor de efectos

Cuatro motores de efectos independientes (uno por esquina del coche) procesan velocidad de amortiguador, tono de vibracion, velocidad de rueda y RPM simultaneamente. Cuando el simulador empaqueta multiples actualizaciones de fisica en un solo cuadro, todas se procesan en secuencia. <1ms de tiempo de procesamiento.

3

Salida de audio ASIO

La salida via ASIO evita por completo la pila de audio de Windows. 1.3ms de latencia de salida de audio. Sin middleware de audio de proposito general, sin sobrecarga del modo compartido de WASAPI, sin mezcla del SO.

4

Interfaz de audio, amplificador, shakers

Funciona con cualquier interfaz de audio compatible con ASIO. LF, RF, LR, RR mapeados independientemente. ~1ms de sobrecarga de hardware. Total: tan bajo como 2ms de extremo a extremo.

Latencia de extremo a extremo por simulador

La latencia total depende de la tasa de telemetria del simulador y la estructura de cuadros. La salida ASIO y la sobrecarga de hardware (~2.3ms combinados) son constantes en todos los simuladores; la variable es la antiguedad de la telemetria.

Simulador
Rango de extremo a extremo
Tasa de telemetria
A 200 km/h
iRacing
5-19ms
Sub-muestra 360Hz
Menos de 1 metro
ACC
2-9ms
Instantanea por cuadro
Menos de 0.5 metros
AC
2-9ms
Instantanea por cuadro
Menos de 0.5 metros

El modelo de sub-muestras a 360Hz de iRacing significa que los datos mas recientes en cualquier cuadro dado tienen solo 2.78ms de antiguedad en el momento de entrega; los mas antiguos tienen 16.67ms. Con ~1.3ms de salida ASIO y ~1ms de sobrecarga de hardware, el rango completo es 5-19ms. ACC y AC usan una instantanea por cuadro: el juego escribe una actualizacion de telemetria por cada cuadro que dibuja en pantalla. A 144 FPS el intervalo entre cuadros es 6.9ms, asi que con ~2.3ms de sobrecarga de la pila el rango es 2-9ms. Mayor FPS entrega telemetria mas fresca; a 60 FPS el rango se amplia a ~2-19ms.

Fuentes y notas
  1. 140-200ms medidos en mas de 7 tarjetas de sonido: Foro de SimHub, "Usage of low latency audio driver"
  2. Tasa de actualizacion de propiedades de SimHub a 60Hz: Overtake.gg, discusion sobre perfil ShakeIt AM ("SimHub maximum refresh rate is 60Hz")
  3. Valores por defecto de buffer de FMOD y formula de latencia: FMOD Engine API, documentacion de System::setDSPBufferSize. Uso de FMOD visible en registros de errores del software haptico ("Disposing FMOD output / Allocating FMOD output").
  4. Piso de >20ms del modo compartido de WASAPI independientemente del tamaño del buffer: FlexASIO GitHub issue #55
  5. Microsoft IAudioClient3 y WASAPI de baja latencia en Windows 10/11: Microsoft Learn, Low Latency Audio (Windows drivers)

Descarga Track Impulse gratis

Instala Track Impulse, el software de bass shaker de baja latencia construido para cerrar esta brecha, junto a cualquier configuracion haptica existente y compara directamente. Gratis durante la beta. Sin tarjeta de credito. Configurado en menos de 10 minutos.