|
Página: Fecha: 31 de octubre de 2002 |
Código: |
Fichero: DETNEAV_44v1.DOC |
|
IAC INSTRUMENTACIÓN |
|
DETNEAV_44v1.DOC |
31 de octubre de 2002 |
|
PROYECTO / DESTINO:
|
TÍTULO: |
|
Nombre |
Función |
Mathieu Nedelec |
Becario |
|
|
|
|
|
|
Control |
Nombre |
Función |
Revisado por: |
Haresh Chulani |
Ingeniero electrónico |
Aprobado por: |
|
|
Autorizado por: |
|
|
Versión |
Fecha |
Resumen Modificación |
1 |
31-oct-02 |
Primera Versión |
|
|
|
|
|
|
Este informe explica el desarrollo del programa de emisión y grabación de sonidos para el proyecto “espacio acústico virtual”. Este programa sirve en el dispositivo de medidas de la HRTF (head related function transfer) que está en el ITC (Santa Cruz). Vamos a ver el dispositivo, las posibilidades de la placa de sonido, el programa y las diferentes opciones que tenemos a nuestra disposición. El objetivo es medir la HRTF, entonces vamos a ver la manera de conseguirla.
CUADRO DE AUTORES 2
CUADRO DE CONTROL 2
historia del documento 2
RESUMEN 3
TABLA DE CONTENIDO 4
Lista de abreviaturas 5
1. INTRODUCCIÓN 6
2. DIPOSITIVO DE PRUEBAS UTILIZADO 7
3. PLACA DE SONIDO 8
4. PROGRAMA PARA EL MODO PUNCH-IN 9
4.1 FRONT PANEL 9
4.2 DIAGRAMA 10
4.2.1 Configuración del sistema de reproducción y de grabación de sonidos. 10
4.2.2 Tratamiento de las datos grabados (retraso, longitud) 11
4.2.3 Registro de los archivos 12
4.3 RESULTADOS 13
5. PROGRAMA EN MODO LOCK TO PLAYBACK 14
5.1 FRONT PANEL 14
5.2 DIAGRAMA 15
5.2.1 Configuración del sistema de reproducción y de grabación de sonidos. 15
5.2.2 Tratamiento de las datos grabados (retraso, longitud) 16
5.2.3 Registro de los archivos 17
5.3 RESULTADOS 18
6. COMPARACION DE LOS DOS MODOS 19
7. MEDIDA DE LA HRTF 20
ANEXOS 21
EAV |
Espacio Acústico Virtual |
HRTF |
Head Related Function Transfer |
Maria de los Angeles Malfaz Vazquez ha desarrollado el software de control de sistema de medidas de HRTFS para el proyecto EAVII. Se desarrolló bajo el entorno Labview 6.0, paquete profesional (Professional Development System).
No tuvo tiempo de realizar el control de la placa PCI de audio (CardDeluxe de Digital Audio Labs). Se puede obtener mas información en www.digitalaudio.com.
Ese documento presenta mi trabajo sobre ese parte del software.
Se debe hacer un Instrumento virtual (función de Labview) que se podrá integrar en el programa de María. El objetivo es emitir un sonido y al mismo tiempo grabar con micrófonos miniatura (situados en las orejas). No se debe tener retraso entre la emisión y la grabación, sino el debido a la distancia entre el altavoz y los micrófonos.
Vamos a ver que la placa de sonido tiene dos modos de grabación (“Punch-In” y “Lock to Playback”). Se ha desarrollado un instrumento virtual para los dos modos.
El
set-up de laboratorio solo permite trabajar con 1 micrófono
cada vez, y por tanto 1 canal de la CardDeluxe. Para el modo de
operación de 2 canales, se ha probado el programa, pero 1 de
los canales solo adquiere ruido electrónico.
Para entrar en la configuración de la placa de sonido CardDeluxe, se debe ir en el panel de control, después en el icono Multimedia, en los dispositivos, dispositivos de audio y en cardDeluxe(configuración).
P ara que el sonido que entra en los micrófonos
no sale sobre el altavoz, se debe bajar el nivel de “Analog Input” en el “Analog Output Mixer” hasta
“-INF dB”.
En el primer programa, utilizamos el modo
P unch-in, es el modo predefinido.
P ara sincronizar la grabación y la emisión,
Se debe elegir el Record mode :
“Lock to playback”, es lo que vamos a utilizar en el segundo programa.
E l “Instrumento Virtual” que he desarrollado se llama “play&record.VI”.
Las entradas:
El fichero que va a salir en el altavoz (1 file path).
Los ficheros donde van a ser grabados las medidas (2 file paths).
La distancia (en metros) entre el altavoz y los micrófonos (1 integer).
El modo de grabación (1 o 2 micrófonos & derecha o izquierda) (2 boolean).
El dispositivo del laboratorio no permitía grabar con los dos micrófonos, entonces hemos creado un modo 1 micrófono. Cuando ese modo esta activo, se debe elegir el derecho o el izquierdo.
Las salidas:
El retraso corregido (en mseg.) (1 integer).
Es el retraso entre la ejecución de los órdenes de grabación y emisión. Este retraso se elimina de la grabación, de manera que el único retraso que permanece es el debido a la distancia física entre el altavoz y micrófonos.
Validación de la grabación, que indica si ésta ha sido correcta (1 boolean).
Indica que los ficheros han sido grabados.
El diagrama se divide en 3 secuencias:
Las funciones de sonidos bajo Labview funcionan en línea.
Sound INPUT:
P rimero se debe configurar el modo de grabación (Estéreo, Rate = 44100, 16 bits) y el tamaño del buffer (Si Config). Cogemos para nuestra aplicación un buffer de 10000 bytes, que son 2500 muestras de 16 bits por canal. Iterando 7 veces dentro de un bucle, y rellenando el buffer en cada iteración, obtenemos ,397 seg. de grabación. Despues, empezamos la grabación (Si Start), y las datos se guardan en una variable matricia (Si Read). El bucle contiene “shift registers” ( ) , permite reentrar la salida en la entrada (a cada nueva bucle). Así, cada vez que el buffer se llena, hacemos una nueva bucle, y el contenido del nuevo buffer se agrega al anterior.
Sound OUTPUT:
Recuperamos la forma de onda del archivo “Mls16kpk.wav” (Wav File), y podemos configurar el modo de reproducción (So Config) (Mono, Rate = 44100, 16 bits). La configuración se pasa en una secuencia para que “Si Start” y “So Start” empiecen en el mismo momento. “So wait” permite esperar que todo el archivo sea leido.
“Si Clear” y “So Clear” permiten borrar todos las datos que no sirven.
D
iagrama
0 [0...2]
Primero, se debe separar los dos canales del sonido estéreo. Después, con la función de correlación cruzada, tenemos el retraso de cada canal. Si es en modo 2 micrófonos, cogemos el retraso más pequeño. Se añade el retraso debido a la distancia entre el altavoz y los micrófonos. Se cortan los archivos a la misma longitud que el sonido de salida (0.341 seg.).
Entrada modo 1 / 2 micrófonos: TRUE : 2 micrófonos. (el otro modo no importa)
FALSE : 1 micrófono.
Entrada modo izquierda / derecha: TRUE : izquierda.
(solo en modo 1 micrófono) FALSE : derecha.
Diagrama 1 [0...2]
Se pueden guardar los sonidos en los archivos que se han entrado.
La salida “OK ?” indica que la grabación no ha tenido problema.
OK?: TRUE : todo ha ido bien.
FALSE : hay un problema
Diagrama 2 [0...2]
Ese programa funciona pero tiene unos problemas. El retraso debido al software no es siempre el mismo, entonces debemos entrar la distancia entre el altavoz y los micrófonos y después cortar la forma de onda correctamente. El tratamiento de la grabación (correlación cruzada, etc.. ) tiene también un tiempo de ejecución bastante importante. Hay un otro modo en la placa de sonido (“Lock to playback”), quien permite sincronizar la grabación y la reproducción del sonido. Vamos a ver ahora ese nuevo programa.
El “Instrumento Virtual” que he desarrollado se llama “play&record.VI”.
Las entradas:
El fichero que va a salir en el altavoz (1 file path).
Los ficheros donde van a ser grabados las medidas (2 file paths).
Las salidas:
Validación de la grabación, que indica si ésta ha sido correcta (1 boolean).
Indica que los ficheros están grabados.
El diagrama se divide en 3 secuencias:
Primero se debe configurar el modo de grabación (Estéreo, Rate = 44100, 16 bits) y el tamaño del buffer (Si Config). Cogemos para nuestra aplicación un buffer de 65830 (0.373 seg. de grabacíon).
Recuperamos la forma de onda del archivo “Mls16kpk.wav” (Wav File), y podemos configurar el modo de reproducción (So Config) (Mono, Rate = 44100, 16 bits).
La placa de sonido tiene un modo “Lock to playback” que permite sincronizar la emisión y la grabación. Se pide primero de reproducir el sonido y cuando se ordena la grabación, la reproducción empieza con un retraso constante de 73 muestras (1,6 ms). Entonces, en ese modo, el sonido no se reproduce si no pedimos despues de grabar.
“So wait” permite esperar que todo el archivo sea leído.
“Si Read” envía los datos grabados en una matriz.
“Si Clear” y “So Clear” permiten borrar todos las datos que no sirven.
D iagrama 0 [0...2]
Si añadimos una función de espera en ese secuencia (entre el orden de reproducir y el orden de grabar), el retraso no cambia (siempre 73 muestras).
Primero, se debe separar los dos canales del sonido estéreo.
Tenemos un retraso constante de 73 muestras.
Se puede cortar los archivos a la misma longitud que el sonido de salida (0.341 seg.) y corregir el retraso.
Diagrama 1 [0...2]
Se pueden guardar los sonidos en los archivos que se han entrado.
La salida “OK ?” indica que la grabación no ha tenido problema.
OK?: TRUE : todo ha ido bien.
FALSE : hay un problema
Diagrama 2 [0...2]
Con ese programa, hemos resuelto el problema del retraso(con el modo “lock to playback”). También, no se necesita entrar la distancia entre el altavoz y los micrófonos, lo que sería una obligación de más en el programa, de recibir las coordenadas y de calcular la distancia.
He probado los dos modos en la sala de medida del Instituto tecnológico de Canarias. Los dos programas dan prácticamente la misma forma de onda. Solo podemos ver una pequeña diferencia de amplitud debida al ruido.
Sobre el tiempo de ejecución, el programa para el modo “lock to playback” esta mas rápido. En efecto, el programa para el modo “punch in” hace correlaciones cruzadas y otras operaciones. El segundo problema es la necesidad de entrar la distancia entre el altavoz y los micrófonos mientras que en el modo “lock to playback”, tenemos un retraso constante que podemos corregir fácilmente.
Por eso, el programa “lock to playback” esta el mas adaptado a nuestra aplicación. Solo falta integrar lo en el programa de María.
Podemos ver que los dos programas en misma condición dan al misma función de transferencia. Se puede ver como tener la en la pagina siguiente.
PUNCH-IN : LOCK TO PLAYBACK :
Con el archivo grabado, se puede calcular la función de transferencia del sistema.
Utilizamos para nuestras medidas el fichero mls16kpk.wav, ese fichero corresponde al fichero mlbs.wav filtrado.
R(t) h(t) = mlbs y(t)
La procedimiento para obtener la funcion de transferencia bajo MatLab es el siguiente :
El fichero grabado se llama medida.wav por ejemplo
>> [mls,n] = readsim(‘C:huron\measure\mls0116k.sim) recuperamos la forma de onda de mls0116k.sim
>> wav2raw(medida.wav) transformamos en .raw medida.wav
>> medida = readraw2(‘medida.raw’,1,16,1) recuperamos la forma de onda de medida.raw
>
2^14-1
>> plotmag(h,44100) podemos representar
>>shg la función de transferenci
DETNEAV_044V1.doc |
El informe |
PLAY&RECORD1.vi |
Programa en modo “punch-in” |
PLAY&RECORD2.vi |
Programa en modo “lock to playback” |
Mls16kpk.wav |
Fichero utilizado para hacer las medidas |
11 COMPUTATIONAL STATISTICAL INFERENCE R SOFTWARE POSSIBILITIES
2 ESTIMACIÓN DE ESFUERZO EN DESARROLLO DE SOFTWARE 4
2 POCKETPC (HANDHELD) CON GPS Y 2 LICENCIAS SOFTWARE
Tags: emisión y, la emisión, software, sonidos, emisión, grabación, sistema