La explicación anterior, como todos los símiles (especialmente los de coches) tienen un margen de validez pequeño. Básicamente se trata de entender el concepto de buffer y latencia y su necesidad.
Luego en realidad un PC, una IRQ y un bus son algo bastante más complejo. Sobre todo su gestión.
mou escribió:
Lo que no me acaba de quedar claro es si aún aumentando la latencia en jackd, al ejecutarse en la máquina virtual, afectará al proceso de medición (supongo que durante la ejecución del sweep y su grabación simultánea sería ideal una latencia 0, y aunque no se aprecie a oido, cualquier pequeño retardo afectaría después a la generación de los filtros, con lo que los resultados pueden ser... regulares
).
Ahí cambiamos de nivel. Digamos que en DRCoP estamos en tres niveles:
1- El hardware y su gestión para tener flujos de audio continuos.
2- El software y su gestión para interconectar los programas que usamos y disponer, entre ellos, un intercambio fluido de audio ("buffers" software). Luego comentaré algo al respecto.
3- El sentido (psico)acústico de lo que hacemos con los citados programas. Ahí entramos en el terreno de las medidas, la creación de filtros y su aplicación por convolución. Esta parte es la que no depende del Sistema Operativo.
¿Cuantos retardos tenemos en el proceso de medida? Pues hay uno por cada paso salida a entrada. Contemos:
1- El que va desde que el programa de emisión del sweep envia la señal al gestor jackd. Configurable.
2- El que va desde que jackd envia la señal al controlador de la tarjeta de sonido. Configurable e idéntico al 1.
3- El interno de la tarjeta hasta que el sonido sale al amplificador por salida de línea. Incontrolable por nosotros.
4- El paso de la salida de la tarjeta hasta los altavoces. Intrascendente.
5- El camino (distancia) que hay desde los altavoces hasta el micrófono que recoge la señal.
6- El tiempo de vuelta desde el micrófono hasta la entrada de la tarjeta de sonido. Intrascendente.
7- Retardo interno de la tarjeta de sonido (el ADC, el controlador). Incontrolable.
8- El tiempo que tarda jackd en recoger el sonido entregado por el bus al que se conecta la tarjeta. Configurable e igual al de 1.
9- El tiempo que tarda jackd en pasar la señal al programa que registra lo grabado. Configurable e igual al de 1.
1, 2, 8 y 9 son del nivel 2 (software).
3, 4, 6 y 7 son del nivel 1 (hardware)
5 es de nivel 3 (posición del micrófono adecuado al uso que hacemos de DRCoP).
El método de medida es insensible a los retardos tal cual luego calculamos los filtros. Me explico:
Una medida de retardo cero entre salida/entrada nos producirá (tras el procesado) un impulso con su pico máximo a T/2 exáctamente, siendo T el tamaño del sweep.
A partir de ahí, a la aparición de un retardo t, se alejará el pico del impulso de T/2 exactamente ese retardo. Pero la información del impulso será la misma, puesto que el método de medida (hasta donde nos interesa) es LTI (linear e INVARIANTE CON EL TIEMPO[*]).
Si en el proceso se mide simultaneamente un bucle de salida/entrada de la tarjeta (algún purista pone el bucle en la salida de altavoces del ampli), que no presenta el retardo 5, hay formas de eliminar de la medida acústica todos los retardos menos el 5 y de esta forma poder conocer la distancia altavoz a micrófono (tiempo multiplicado por la velocidad del sonido).
[*] Un proceso LTI es aquel que ante la entrada de una combinación lineal (sumas y multiplicaciones por constantes) de varias señales, produce una salida que es combinación lineal de las salidas producidas por cada señal de entrada individualmente. No hay interferencias entre ellas.
Y que ante el retraso en la entrada de una señal, la salida es idéntica salvo que se retrasa ese mismo tiempo.