desarrollo de algoritmo para la implementaciÓn de …
TRANSCRIPT
Desarrollo de un plugin para implementación de audio espacial en proyectos musicales y
audiovisuales
Angélica Londoño Borja, [email protected]
Thomas Viana Alzate, [email protected]
Proyecto presentado para optar al título de Ingeniero de Sonido
Asesor: Diego Mauricio Murillo Gómez, Ph.D. in Sound and Vibration.
Universidad de San Buenaventura Colombia
Facultad de Ingenierías
Ingeniería de Sonido
Medellín
2018
Citar/How to cite [1] Referencia/Reference [1] A. Londoño Borja y T. Viana Alzate, "Desarrollo de un plugin para la
implementación de audio espacial en proyectos musicales y audiovisuales", Trabajo
Estilo/Style: IEEE(2014)
de grado Ingeniería de Sonido, Universidad de San Buenaventura Medellín, Facultad de Ingenierías, 2018.
Grupo de investigación: Semillero en Acústica y Procesamiento de Audio (SIAPA). Línea de investigación: Audio Espacial y Entornos Virtuales.
Bibliotecas Universidad de San Buenaventura
• Biblioteca Fray Alberto Montealegre OFM - Bogotá.
• Biblioteca Fray Arturo Calle Restrepo OFM - Medellín, Bello, Armenia, Ibagué.
• Departamento de Biblioteca - Cali.
• Biblioteca Central Fray Antonio de Marchena – Cartagena.
Universidad de San Buenaventura Colombia
Universidad de San Buenaventura Colombia - http://www.usb.edu.co/ Bogotá - http://www.usbbog.edu.co Medellín - http://www.usbmed.edu.co Cali - http://www.usbcali.edu.co Cartagena - http://www.usbctg.edu.co Editorial Bonaventuriana - http://www.editorialbonaventuriana.usb.edu.co/ Revistas - http://revistas.usb.edu.co/
Dedicatorias
Este trabajo quisiera dedicarlo a mis padres por el apoyo incondicional y por siempre
querer lo mejor para mi. A mi novia Karina Madrid por su gran paciencia y comprensión.
A mi compañera y amiga Angelica Londoño quien ha hecho de estos cinco años como si
fueran veinte, ¡QUÉ ETERNIDAD!. Y por último, a cada una de las personas que hicieron
parte de este proceso que culmina.
Thomas Viana Alzate
Dedicado a mis padres, quienes me enseñaron que con responsabilidad, disciplina y voluntad,
puedo lograr lo que me proponga y que al hacerlo con pasión sólo puedo obtener buenos
resultados. A mis hermanos por hacer mi vida más divertida. A mi amado Daniel porque
su recuerdo me fortalece. Y finalmente, a Thomas Viana por enseñarme cómo ser la mejor
secretaria de todas.
Angélica Londoño Borja
Agradecimientos conjutos
Agradecemos en primer lugar a nuestro asesor Diego Murillo por habernos guiado en este
proceso, por compartir con nosotros su gran conocimiento y experiencia, por su gran
sentido del humor y su confianza. Agradecemos al docente Mateo Yepes por su disposición
y acompañamiento y por ayudarnos a encontrar soluciones en el desarrollo del código. A
Ricardo y Lopera por enseñarnos a enfrentar los problemas de forma autónoma. A Johnny
Caprini por su acompañamiento en el diseño de la interfaz gráfica. A Claudia por sus
orientación en el desarrollo metodológico del proyecto. Y por último y no menos importante,
a todos nuestros compañeros, principalmente a Jose y Sarita por su incondicional amistad
y compañía.
TABLA DE CONTENIDO
RESUMEN…………………………………………………………………………………………10
ABSTRACT……………………………………………………………………………………..….11
I. INTRODUCCIÓN..…………………………………………………………………………….12
II. PLANTEAMIENTO DEL PROBLEMA……………………………………………………..13
A. Antecedentes………………………………………………………………………............13
1) Ambisonics………......................................................................................................13
2) Vector Base Amplitude Panning (VBAP)……………………………………...15
3) Head Related Transfer Function (HRTF)……………………………………... ..16
4) Realidad virtual y 3D audio plugins……………………………………………….17
III. JUSTIFICACIÓN…………………………………………………………………………….19
IV. OBJETIVOS……………………………………………………………………………...20
A. Objetivo General……………………………………………………………………….....20
B. Objetivos Específicos……………………………………………………………………...20
V. MARCO TEÓRICO………………...………………………………………………………....21
A. Percepción espacial del sonido……………………………………………………….........21
1) Localización en el plano horizontal (azimuth)……………………………….....22
2) Localización en el plano vertical (elevación)…………………………………...22
3) Percepción de la distancia………………………………………………………23
a) Ley de la inversa del cuadrado…………………………………………….23
B. Respuesta al impulso………………………………………………………………….......23
1) Reverberación…………………………………………………………………….24
2) Acústica geométrica……………………………………………………………...25
C. Head Related Transfer Function (HRTF)………………………………………………….26
D. Sistemas de sonido espacial……………………………………………………………….26
1) Sistemas binaurales…………………………………………………………………27
DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL... 6
E. Convolución…………………………………………………………………………….....27
1) Convolución en tiempo real: Método Overlap-save…………………………….28
F. Metodología de prototipos………………………………………………………………...29
VI. DESARROLLO……………………………………………………………………………….31
A. Simulación de recintos en CATT-Acoustic………………………………………………..31
B. Exportación de HRTFs………………………………………………………………………33
C. Metodología de desarrollo de software……………………………………………………..33
1) Análisis……………………………………………………………………………...34
2) Diseño……………………………………………………………………………….35
a) Casos de uso………………………………………………………………..35
3) Implementación……………………………………………………………………...39
a) Desarrollo de código en Cabbage/cSound………………………………….39
b) Interfaz gráfica de usuario…………………………………………………44
4) Validación……………………………………………………………………….45
a) Prueba del sistema…………………………………………………………45
b) Prueba de aceptación de usuario…………………………………………..46
VII. CONCLUSIONES…………………………………………………………………………..49
REFERENCIAS……………………………………………………………………………………50
ANEXOS…………………………………………………………………………………………..52
LISTA DE TABLAS
Tabla I. Respuestas al impulso……………………………………………...……………………..32
Tabla II. Descripción y requerimientos del proyecto…………………………………………...35
Tabla III. Descripción de los casos de uso………………………………………………………..37
Tabla IV. Continuación Descripción de los casos de uso………………………………………..38
LISTA DE FIGURAS
Fig. 1. Convolución entre dos señales…………………………………………………………....28
Fig. 2. Método de convolución Overlap-save…………………………………………………...29
Fig. 3. Etapas de desarrollo del plugin…………………………………………………………..31
Fig. 4. Ubicación de fuente (A0) y emisor (01) en el Salón 1…………………………………..32
Fig. 5. Ubicación de fuente (A0) y emisor (01) en el Salón 2………………………………......33
Fig. 6. Fases de la metodología propuesta………………………………………………….........34
Fig. 7. Diagrama de casos d uso…………………………………………………………….........36
Fig. 8. Diagrama de bloques del flujo de señal……………………………………………….....39
Fig. 9. Prototipo 1……………………………………………………………………………...........40
Fig. 10. Prototipo 2………………………………………………………………………………….41
Fig. 11. Prototipo 3…………………………………………………………………………….........42
Fig. 12. Prototipo 4.………………………………………………………………………................43
Fig. 13. Prototipo 5.…………………………………………………………………………………44
Fig. 14. Interfaz gráfica de usuario.……………………………………………………………….45
Fig. 15. Consumo de CPU del plugin.……………………………………………………………46
LISTA DE ABREVIACIONES
VR Virtual Reality
IR Impulse Response
HRTF Head-Related Transfer Function
VBAP Vector Base Amplitude Panning
SDAP Source Distance-Based Amplitude Panning
ITD Interaural Time Diference
ILD Interaural Level Diference
SPL Sound Preasure Level
RT Reverberation Time
FFT Fast Fourier Transform
IFFT Inverse Fast Fourier Transform
HRIR Head-Related Impulse Response
SOFA Spatially Oriented Format for Acoustics
DAW Digital Audio Workstation
GUI Gaphical User Interface
RESUMEN
La implementación de métodos de espacialización y rotación de campo sonoro están
siendo ampliamente utilizados para el desarrollo de contenido audiovisual y musical. Los
desarrolladores y fabricantes de este tipo de tecnología permiten a los usuarios espacializar
o bien, recrear un archivo de audio en un recinto mediante la convolución de respuestas al
impulso dadas por los mismos proveedores limitando así a los usuarios de poder recrear
un recinto específico de interés con determinadas caracteristicas acústicas.
En consecuencia, se propone el desarrollo de una herramienta que permita espacializar
y recrear un archivo de audio en un recinto dándole la libertad a el usuario de cargar
cualquier respuesta al impulso. Dicha herramienta consiste en un plugin tipo .VST el cual
espacializa mediante HRTF. El proceso de espacialización también contempla la pérdida
de nivel por distancia y la convolución en tiempo-real con una respuesta al impulso con el
objetivo de ubicar un archivo de audio en el espacio tridimensional recreado en un recinto
específico. Permite controlar el nivel de entrada y de salida de la señal, ángulo de azimuth
y elevación y control de influencia de la respuesta al impulso sobre la señal de audio. El
desarrollo de esta herramienta se realizó en el lenguaje de programación cSound en el
entorno de desarrollo Cabbage.
Como resultado de esta investigación se obtuvo un plugin en formato .VST con interfaz
gráfica de usuario que permite el control y automatización de los parámetros anteriormente
citados.
Palabras clave: Audio inmersivo, Espacialización, HRTFs, Campo sonoro, Reproducción
binaural
ABSTRACT
The implementation of spatialization and sound field rotation methods, is being widely
used in the development of musical and audiovisual content. The developers of this type
of technology allow the users to spatialize or recreate an audio file in a room by means of
convolution with impulse responses given by the providers, limiting the users to have the
possibility to recreate a specific room of interest with determinate acoustics characteristics.
In consequence, it is proposed the development of a tool that allows the user to do both
things, to spatialize such as to recreate an audio file in a room, giving him the freedom to
load any impulse response. This tool consist in a .VST plugin that spatializes by means
HRTFs. The process of spatialization also contemplates the loss of level by distance and
the real-time convolution with an impulse response with the objective of locate an audio
file in the tri-dimensional space recreated in a specific room. It also allows to control the
input and output level of the signal, the azimuth and elevation angles and the influence of
the impulse response. The development of this tool was done in the programming language
cSound in the development environment Cabbage.
As result of this research, it was obtained a .VST plugin with graphical user interface that
allows the control and automation of its parameters.
Keywords: Inmersive audio, Spatialisation, HRTFs, Sound field, Binaural.
I. INTRODUCCIÓN
En la actualidad hay un acelerado crecimiento en la industria multimedia, la cual busca
incansablemente desarrollar formatos de reproducción visual y auditiva que le permitan
al usuario tener una experiencia inmersiva. Todo lo relacionado con el audio espacial se
convierte en un tema atractivo para muchos amantes de los videojuegos y el contenido
social mediático.
En vista de esta tendencia, empresas como Facebook se preocupan por desarrollar her-
ramientas como Spatial Workstation que le permiten a las personas recrear entornos
virtuales con audio espacial. Por otro lado, en cuanto a los sistemas de reproducción
utilizados, la tecnología binaural ha permitido llevar experiencias inmersivas con el simple
uso de auriculares, el cual es un sistema reproducción comercial y de fácil acceso para la
personas.
Con este proyecto se pretende desarrollar un algoritmo basado en HRTFs que permita
espacializar archivos de audio con miras al desarrollo de contenido social mediático y
proyectos audiovisuales y musicales en general.
En este proyecto se implementó una metodología de prototipos. Inicialmente se da toda
la base teórica del proyecto, se establecen los requerimientos generales y se definen los
controles y casos de uso. Luego se implementan los prototipos mediante un proceso de
análisis, diseño, evaluación y modificación. Finalmente se entrega un plugin funcional tipo
.VST el cual ha sido validado.
II. PLANTEAMIENTO DEL PROBLEMA
Con el paso de los años se busca constantemente mejorar la experiencia, tanto visual
como auditiva, al ver videos o películas. También la industria musical y publicitaria han
implementado diferentes métodos para lograr que los espectadores se sientan “inmersos”
con sus nuevos productos. Es por eso que el audio 3D o inmersivo se ha convertido en una
opción atractiva para los medios que buscan brindar una mejor resolución de la información
espacial.
Existen sistemas de reproducción como el DOLBY Atmos (más de 34 altavoces) que logra
brindar una experiencia inmersiva en películas en formatos 2D y 3D [1]. Sin embargo, estos
sistemas tan complejos y costosos no están al alcance de cualquier persona en cualquier
momento. El 51.7% de la población mundial tiene acceso a internet y lo utiliza por medio
de sus computadoras, tablets o smartphones para entretenerse con diferentes tipos de
proyectos audiovisuales [2]. Por esta razón, se busca simplificar el método de reproducción
a un sistema binaural que recrea la misma sensación de espacialidad y para el cual solo se
requieren audífonos.
El problema radica en que actualmente no existen herramientas libres para espacializar o
que permitan realizar convolución con respuestas al impulso propias. Las herramientas
disponibles limitan al usuario a respuestas al impulso proporcionadas por cada proveedor.
A. Antecedentes
En la actualidad se han desarrollado diferentes métodos para la espacialización de sonidos
con el fin de generar una sensación de inmersión sonora para diferentes aplicaciones de
proyectos musicales y audiovisuales. Entre estos métodos se encuentran Ambisonics,
basado en la síntesis del campo acústico, VBAP, basado en paneo y HRTF, basado en
síntesis binaural.
Empresas como Facebook, Two Big Ears, GenAudio, Impulsonic, VisiSonics, Oculus y Wave
Arts han creado múltiples herramientas de audio 3D a partir de los métodos mencionados,
las cuales son ampliamente utilizadas en la industria multimedia.
1) Ambisonics
La variación angular de un conjunto ortogonal de soluciones de la ecuación de Laplace puede
ser representado mediante funciones armónicas conocidas como armónicos esféricos[3], las
14 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
c
∞ n
n
n
n n
n 4π (n + |m|)! n
cuales proporcionan también un medio adecuado para describir deformaciones en una
superficie esférica por lo cual pueden utilizarse para representar la forma angular de las
funciones de las ondas.
Ambisonics se basa en la descripción del campo sonoro por medio de armónicos esféricos
los cuales hacen parte de la solución o representan la parte de la solución angular de una
ecuación diferencial o de Laplace.
En coordenadas esféricas (r, θ, ϕ), la solución a la ecuación de onda puede ser escrita en
términos de funciones esféricas de Bessel y armónicos esféricos. Cuando todas las fuentes
se encuentran fuera de la región de interés, la variación espacial del campo sonoro a una
frecuencia espacial k = ω , donde ces la velocidad del sonido, la presión en el punto r es
reconstruida como [4]
p(r, θ, ϕ, k) = Σ Σ
Am(k) jn(kr) Y m(θ, ϕ), (1)
donde jn(x) es la función esférica de Bessel de primer orden y los armónicos esféricos están
definidos como
Y m(θ, ϕ) =
‚., (2n + 1) (n − |m|)!
P |m|(cos θ) eimϕ, (2)
donde P m(·) está asociada a la función de Legendre y i = √−1. Cada armónico esférico
es el producto escalado de un término de elevación P m(cos θ) y un término de azimuth
eimϕ [4].
Ambisonics es un método de grabación y reproducción de audio 3D que se basa en la
reconstrucción del campo sonoro como una descomposición en términos de armónicos
esféricos. Esta representación facilita que la producción del sonido espacial sea "indepen-
diente" del sistema de reproducción. La adaptación al sistema de reproducción deseado
(altavoces o auriculares) se consigue utilizando el decodificador adecuado. Frank, Zotter y
Sontacchi, ofrecen una visión general del estado de la técnica en Ambisonics, incluyendo
la producción de contenido utilizando el arreglo principal de micrófonos Ambisonics o el
paneo de fuentes virtuales, efectos espaciales y reproducción en altavoces y auriculares [5].
Expresan que el software para toda la cadena de producción está disponible como una
suite .VST para estaciones de trabajo de audio digital. Frank expone el funcionamiento de
ambix y mcfx los cuales le proveen al usuario un fácil acceso a las técnicas Ambisonics
para que las puedan emplear para crear, manipular y reproducir grabaciones Ambisonics
en diferentes resolucion espaciales [6] . Otra de las librerías disponibles para este propósito
es la O3A CORE VST, que posee un conjunto de herramientas que proporcionan todos
n=0
n=0 m=−n
15 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
los elementos básicos para producir mezclas 3D Ambisonic de orden superior (High Order
Ambisonic HOA).
La espacialización con Ambisonics se basa en la premisa de que las ondas sonoras que emite
cualquier fuente pueden ser descritas utilizando armónicos esféricos. Esta descomposición
se basa en una serie infinita de coeficientes como se muestra en la ecuación1. Sin embargo,
para hacer el método implementable se requiere el truncamiento de la serie a un orden
específico. El B-Format es un formato que correcponde a los primeros coeficientes, el
mismo consta de una señal omnidireccional y tres dipolos ortogonales correspondientes a
los ejes cartesianos. Esta configuración hace referencia a un primer orden; para un orden
mayor se supone el aumento de los componentes espaciales, reduciendo así el patrón de
respuesta direccional y redefiniendo la localización [4].
El número de componentes direccionales para el B-Format es de (N + 1)2, donde N es el
orden deseado.
Para reproducir el formato codificado, se hace la recomposición teniendo en cuenta
la posición exacta de cada altavoz. Si bien, en teoría el número de altavoces y su
posición pueden ser configurados libremente, la práctica demuestra que son preferibles
las configuraciones simétricas utilizando al menos la cantidad de altavoces como de
componentes en el B-Format[4].
2) Vector Base Amplitude Panning (VBAP)
A diferencia de sistemas como Ambisonics, donde la posición de los altavoces está organi-
zada, el sistema de Vector Base Amplitude Panning propone una mejora natural donde
el sistema de posicionamiento de una fuente sonora virtual sea independiente del arreglo
de altavoces y pueda producir fuentes sonoras virtuales con una precisión máxima con
la configuración de altavoces actual. Este aproximamiento permite el uso de un número
ilimitado de altavoces con una ubicación bi o tri-dimensional arbitraria alrededor del
oyente. Los altavoces deben estar equidistantes al oyente y se asume un ambiente anecoico.
Los sonidos, tanto estacionarios como móviles, pueden ubicarse en cualquier dirección
dentro del campo sonoro extendido por los altavoces[7].
El método de paneo de amplitud en VBAP es reformulado con vectores y bases de vectores,
puesto que el uso de éstos hace que los métodos de paneo sean computacionalmente más
eficientes.
Para sonido surround 3D, es más común utilizar el método tridimensional de paneo de
amplitud en el cual una configuración típica estereofónica (dos canales) se extiende con un
tercer altavoz posicionado arbitrariamente a la misma distancia a la que los otros altavoces
están del oyente. La fuente virtual puede aparecer dentro del triángulo formado por los
16 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
tres altavoces los cuales están impulsados por señales eléctricas coherentes con amplitudes
diferentes[7].
En 2016, Wong y Kim expusieron un nuevo algoritmo para sonido surround 3D utilizando
el mismo principio de VBAP [8]. El algoritmo Source-Distance Based Amplitude Panning
(SDAP) ofrece un nuevo acercamiento para determinar la cantidad de ganancia para
altavoces distribuidos en un espacio tridimensional. Su método se basa en utilizar regiones
triangulares no superpuestas creadas por las ubicaciones conocidas de arreglos de tres
altavoces al igual que en la implementación 3D de VBAP, pero a diferencia de éste,
compara la ubicación del vector de paneo con la superficie formada por la región triangular
y utiliza coordenadas bariétricas para determinar las amplitudes de los respectivos altavoces.
Además, SDAP elimina la posibilidad de amplitudes negativas que podrían aparecer en
VBAP.
3) Head Related Transfer Function (HRTF)
Las HRTFs describen matemáticamente el efecto combinado del pabellón auricular, cabeza
y torso sobre los sonidos procedentes de una determinada posición espacial. Dependen en
gran medida de la anatomía de cada persona y son por lo tanto diferentes para cada sujeto.
Los autores Aussal, Alouges y Katz, establecieron que las HRTFs varían mucho de persona
a persona, lo que representa un problema importante en la calidad de la reproducción
de fuentes espaciales en auriculares. Como cada individuo es morfológicamente diferente,
estas funciones son particularmente difíciles de trasponer a otros individuos sin artefactos
audibles. Como el retardo de tiempo interaural (ITD) juega un papel predominante en
la ubicación azimutal, se centraron en la personalización de esta señal. Utilizaron las
mediciones HRTFs obtenidas para una cabeza KEMAR simulada y medida en esfera
completa con una resolución de 5º, algo que no es fácilmente posible en individuos reales.
La parte espectral de la HRTF y el ITD se separaron. Esto permitió la combinación
relativamente independiente de las contribuciones del torso y la cabeza. El error en la
interpolación y recreación del componente espectral se analizó como una función de orden
modal a través de submuestreo del conjunto de datos. También se evaluó un método para
sintetizar el ITD utilizando datos morfológicos individuales y una base de datos de HRTF
externa. La coincidencia de dataset entre las cuadrículas de medición también se logró
mediante la interpolación de armónicos esféricos y se evaluó de nuevo el efecto del orden
modal [9].
La personalización de las HRTFs mejora de manera significativa la externalización y la
espacialización en la escucha a través de audífonos, pero como la medición precisa de una
HRTF individual es complicada y requiere de mucho tiempo, se ha generado un mayor
interés en la adquisición de la HRTF basada en simulación. El principal desafío en las
17 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
simulaciones es la falta de métodos fáciles y simples para generar geometría tridimensional
de la cabeza y el pabellón de la oreja y por otro lado, la solución numérica de la ecuación
de onda 3D es computacionalmente muy demandante. Huttunen y Vanne introducen un
método que combina una adquisición precisa de las geometrías 3D, una solución eficiente
de la ecuación de onda y la distribución de HRTFs estandarizadas para utilizar HRTFs
personalizadas en múltiples aplicaciones [10].
4) Realidad virtual y 3D audio plugins
En la realidad virtual (VR), los servicios de video 360 proporcionados a través HMD (Head
Mounted Displays) o teléfonos inteligentes son ampliamente utilizados. A pesar de que el
punto de vista del usuario cambia perfectamente, los sonidos a través de los auriculares
se fijan incluso cuando las imágenes cambian en correspondencia con el movimiento de
la cabeza del usuario en muchos servicios de videos en 360 [11]. En el año 2016, Kenta
Niwa, Daisuke Ochi, entre otros, estudiaron la tecnología de inmersión acústica que se
logra generando sonidos binaurales correspondientes a los movimientos de la cabeza del
usuario y crearon un método que se compone de una mejora de la ubicación angular de la
fuente utilizando señales de observación de array, codificación de audio multicanal basada
en MPEG-4 Audio Lossless Coding (ALS) y síntesis biauricular de señales mejoradas
utilizando HRTFs. En este trabajo se construyó un sistema en tiempo real basado en
teléfonos inteligentes para streaming y visualización de video 360 incluyendo inmersión
acústica y fue evaluado a través de pruebas subjetivas [12].
En la actualidad, empresas como Facebook vienen desarrollando herramientas que permiten
rotar el campo sonoro para aplicaciones interactivas como videos en formato 360. Face-
book 360 Spatial Workstation es un DAW para videos VR (Virtual Reality) y 360 que
soporta varios efectos de distancia y modelado de ambientes. Sin embargo, debe tenerse
en cuenta que aunque las dimensiones de la sala virtual se pueden especificar utilizando
este sistema, esto se utiliza únicamente para derivar los retrasos de tiempo apropiados
para cinco reflexiones. Estas reflexiones se reproducen únicamente en el canal W de la
señal B-Format y, por lo tanto, no se mantiene la directividad correcta, lo cual representa
un problema para aplicaciones de juegos VR y videos 360, dando por entendido que el
enfoque de esta herramienta está orientado a la producción musical más que a aplicaciones
interactivas[13].
3Dception, desarrollado por Two Big Ears, apoyado por Ambisonics, cuenta con carac-
terísticas como modelado de salas, delay en los tiempos de arribo basados en la distancia y
simulación del recinto [14]. Por su parte, AstoundSound, de GenAudio se diferencia por
contar con espacialización para múltiples configuraciones de salida (audífonos y altavoces
en configuración stereo y surround) y su capacidad de hacer crossfade entre los sonidos
18 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
espacializados y no espacializados [15]. Phonon 3D [16] y RealSpace 3D Audio [17],
presentados por Impulsonic y VisiSonics respectivamente, realizan la espacialización us-
ando algoritmos con HRTF y síntesis binaural al igual que Panorama [18] de Wave Arts,
con la diferencia de que este último se destaca por implementar también modelado de
reflexiones tempranas, efecto de atenuación por distancia, efecto doppler, entre otros.
Oculus desarrolló su propia suite de plugins para audio 3D, Oculus Audio SDK, para los
cuales implementa tanto Ambisonics como espacialización basada en HRTFs y modelado
de salas [19].
En vista de que tanto Ambisonics como VBAP o SDAP, son sistemas que requieren de una
gran cantidad de altavoces para lograr una sensación sonora envolvente, este trabajo aplica
el método de HRTFs para utilizar síntesis binaural y así reducir el sistema de reproducción
al uso de audífonos.
Los actuales desarrollos relacionados con la espacialización de audio limitan al usuario a
usar respuestas al impulso proporcionadas por cada desarrollador. Este trabajo consiste en
una herramienta libre que permita realizar convolución con respuestas al impulso propias.
III. JUSTIFICACIÓN
La habilidad de los humanos para darle sentido al entorno e interactuar con él, depende
fuertemente de tener conciencia de la espacialidad. La escucha es uno de los elementos
que juega un importante papel en este proceso. El audio espacial permite, mediante
herramientas tecnológicas y procesos matemáticos, recrear un entorno sonoro virtual
espacializando archivos de audio en el espacio tridimensional.
Con este proyecto se pretende afianzar los conceptos y principios de funcionamiento de la
implementación de HRTFs para la espacialización de señales audio y llevarlo a aplicaciones
que permitan vivenciar experiencias acústicamente inmersivas.
A pesar de que los armónicos esféricos constituyen una buena técnica en cuanto a la recon-
strucción y rotación del campo sonoro, las HRTFs ofrecen mayor facilidad y versatilidad
en la implementación en cuanto al direccionamiento de las fuentes sonoras.
La diferencia del plugin que se desarrolla en este proyecto con los que existen en el mercado,
es que brindará al usuario la posibilidad de recrear el sonido en el recinto que desee teniendo
la respuesta al impulso de éste. El proyecto demuestra el fortalecimiento del tema de
audio espacial en la Facultad de Ingeniería y abre camino para que en trabajos futuros se
puedan realizar mejoras.
IV. OBJETIVOS
A. Objetivo General
Desarrollar un plugin tipo .VST que permita el procesamiento de audio espacial para
proyectos musicales y audiovisuales.
B. Objetivos Específicos
• Desarrollar un algoritmo en cSound que permita espacializar un archivo de audio en
términos de azimuth, elevación y distancia.
• Implementar el algoritmo en un plugin tipo .VST que posibilite el procesamiento de
audio espacial.
• Validar la metodología propuesta mediante el desarrollo de un prototipo funcional.
V. MARCO TEÓRICO
Los seres humanos, al igual que casi todos los animales, oyen en tres dimensiones y son
capaces de localizar con precisión las fuentes de dónde provienen los sonidos que los rodean.
Esto ha sido necesario a lo largo de su existencia para su supervivencia, ya que a lo largo
de su evolución como especie ha sido necesario localizar los peligros que los acechan, como
animales que los podrían cazar o al contrario, los que ellos pueden cazar [20].
La localización de los sonidos está a cargo de la combinación del cuerpo, oídos y cerebro,
los cuales decodifican un conjunto de complejos estímulos simultáneos y extrapola una
posición en el espacio para las fuentes.
La ingeniería de sonido se dedica a reproducir de forma artificial estas sensaciones para
diversas aplicaciones.
El objetivo de un sistema de reproducción de sonido espacial es trasladar las sensaciones que
se tienen en un entorno, recinto o lugar original de escucha a un entorno de reproducción,
ya sean auriculares, altavoces o sistemas similares; es decir, copiar una sensación para
reproducirla en otro momento y en otro lugar [20].
El sonido espacial puede estar aplicado en el cine, en la música, en la realidad virtual
para complementar la imagen 3D y tener una sensación de inmersión más avanzada,
videoconferencias para tener una sensación de presencia, control de dispositivos a distancia,
publicidad, etc.
A. Percepción espacial del sonido
Los oídos son el mecanismo fundamental de audición para localizar los sonidos en tres
dimensiones, pero no son los únicos; solamente con los oídos no sería posible localizar con
precisión los sonidos en el espacio. Otro mecanismo importante es la cabeza, la esfera que
está entre los oídos, la cual es considerada como un obstáculo porque produce efecto de
difracción; la morfología de las orejas y las reflexiones generadas por los hombros también
juegan un papel importante. El cerebro integra toda esta información y determina la
dirección de donde proviene el sonido de la fuente. [21]
22 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
1) Localización en el plano horizontal (azimuth)
La localización en el plano horizontal hace referencia a si una fuente está más a la derecha
o más a la izquierda del plano central.
Cuando una onda que llega a la cabeza con un ángulo α, tarda más en llegar a un oído
que a otro. Esta diferencia se denomina diferencia interaural de tiempo (ITD, por
sus siglas en inglés), la cual es interpretada por el cerebro como una diferencia de fase en
función de la frecuencia. Este parámetro se calcula como [21].
r π π
IT D = c
(α + sin α) , − 2
≤ α ≤ 2
, (3)
donde r es el radio de la cabeza y c la velocidad del sonido. El ángulo α representa el
eje azimutal y es tomado en ese rango puesto que si se toma la circunferencia completa,
podría haber fuentes simétricas respecto al plano interaural el cual separa la cabeza entre
la parte delantera y trasera cruzando los oídos, y producirían el mismo ITD.
Como este parámetro no es suficiente para aportar la información necesaria sobre el plano
horizontal existe también la diferencia interaural de intensidad o nivel (IID-ILD).
Si una fuente se encuentra más hacia la izquierda, ésta no sólo llega antes al oído izquierdo
sino que llega con mayor nivel.
A bajas frecuencias la cabeza no produce sombra acústica ya que su tamaño es pequeño
comparado con la longitud de onda de éstas. A mayor frecuencia, la cabeza significará un
obstáculo mayor aumentando así el efecto sombra. Por tanto, a mayor frecuencia, mayor
atenuación por difracción.
2) Localización en el plano vertical (elevación)
Si bien con los parámetros anteriores, se puede localizar una fuente en el plano horizontal,
es necesario identificar si la fuente se encuentra por encima o debajo de éste plano, es
decir, en el plano vertical. Para ésto existe la oreja, la cual produce un efecto de filtrado
(micro rebotes debido a los pliegues en ella) en altas frecuencias dependiente de la dirección
de llegada del sonido. Las reflexiones producidas por el hombro también producen una
alteración a frecuencias bajas [21].
23 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
r1
3) Percepción de la distancia
En esta sección intervienen factores como la intensidad, atenuación en altas frecuencias y
la relación entre el sonido directo y el sonido reverberante.
Los sonidos que llegan de una distancia más lejana llegan más atenuados, por lo tanto,
cuando el cerebro percibe un sonido con bajo nivel, puede “pensar” que está lejos, aunque
no necesariamente sea así puesto que hay fuentes cercanas con bajo nivel.
También, mientras mayor es la distancia, las frecuencias altas sufren una mayor atenuación,
y como el cerebro distingue la composición frecuencial aproximada de los sonidos más
comunes, es capaz de relacionar la pérdida de éstas frecuencias con la lejanía de la fuente.
La relación entre sonido directo y sonido reverberante es aplicado solo a espacios interiores
o recintos cerrados ya que la reverberación es causada por las reflexiones del sonido en las
paredes y/o superficies de éstos. Si el sonido directo tiene mayor nivel que el reverberante,
implica que la fuente está más cerca del receptor [20].
a) Ley de la inversa del cuadrado
El nivel de presión sonora es inversamente proporcional al cuadrado de la distancia. En
otras palabras, cada vez que se duplica la distancia el nivel de presión sonora es atenuado
en 6 dB.
La ecuación4permite calcular la atenuación en función de la distancia.
SP L = 20 log
. r2 Σ
, (4)
donde r1 es la distancia de referencia (generalmente 1m) y r2 es la distancia a la cual se
le quiere calcular la atenuación.
B. Respuesta al impulso
En términos generales, la respuesta al impulso de un sistema es la señal obtenida en la salida
después de excitar la entrada con un impulso de corta duración, es decir, por un impulso
de Dirac. La respuesta al impulso en el dominio del tiempo muestra el sonido directo
seguido de las reflexiones tempranas y de la cola reverberante que decae exponencialmente
en un recinto [22].
24 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
Todas las propiedades de un sistema de transmisión lineal están contenidas en su respuesta
al impulso o, alternativamente, en su función de transferencia, que es la transformada Z
de la respuesta al impulso. Puesto que un recinto puede ser considerado como un sistema
de transmisión acústica, la respuesta al impulso proporciona una descripción completa
de los cambios que experimenta una señal de sonido cuando viaja de un punto a otro del
recinto y ofrece una amplia descripción en términos de parámetros acústicos que pueden
derivarse de ella [23].
Los parámetros relacionados con los efectos espaciales o direccionales pueden basarse
en la "respuesta al impulso binaural" capturada en ambos oídos de un oyente o de una
cabeza simulada. La determinación de la respuesta al impulso es una de las tareas más
fundamentales en la acústica experimental de salas. Requiere estándares de alta calidad
para todos los componentes de medición, los cuales deben estar libres de distorsiones
lineales o no lineales incluyendo cambios de fase [23].
1) Reverberación
La reverberación se define como la persistencia del sonido en un recinto cuando la fuente
que lo produce cesa de emitir súbitamente. Para cuantificar este fenómeno se define el
tiempo de reverberación (RT) que se define como el tiempo que transcurre desde que el
foco emisor se detiene hasta el momento en que el nivel de presión sonora (SPL) cae 60 dB
con respecto a su valor inicial. Un recinto con un RT grande se denomina “vivo”, mientras
que si el tiempo de reverberación es pequeño recibe el nombre de recinto “apagado”. El
RT está definido por la ecuación5[24].
RT60 = 0.16 V
A
, (5)
donde, V es el volumen de la sala, en metros cúbicos y A es la absorción de la sala, que
puede ser definida por Sabine o por Eyring, en metros cuadrados Sabine.
El tiempo de reverberación de la ecuación5se realiza para cada banda, sea por octava o
por tercio de octava. Para obtener un valor de tiempo de reverberación representativo de
la sala, se puede calcular el tiempo de reverberación medio como el promedio aritmético
entre el tiempo de reverberación de las bandas de 500 Hz y 1 kHz, como se muestra en la
ecuación6[24].
RTmid = RT500 + RT1000
2 .
La absorción de un material propuesta por Sabine, está definida por la ecuación7.
(6)
25 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
A = Sα, (7)
donde, S es la superficie del material, en metros cuadrados y α es el coeficiente de absorción
del material.
2) Acústica geométrica
Las dos principales maneras para modelar la acústica de una sala son la basada en la
solución numérica de la ecuación de onda y las suposiciones de acústica geométrica. La
primera provee resultados más precisos, pero demanda mayor carga computacional, por lo
cual son más utilizadas las técnicas basadas en acústica geométrica, puesto que son más
óptimas (aunque menos precisas). En éstas técnicas, se dejan a un lado las propiedades
de las ondas y se asume que el sonido se propaga en forma de rayos. Esta suposición
es válida para frecuencias altas, donde la longitud de onda es pequeña comparada con
las dimensiones de las superficies y el espacio en general. Como a bajas frecuencias las
propiedades de las ondas juegan un rol mayor, los errores en los resultados aumentan. [25]
Las principales técnicas utilizadas en acústica geométrica son:
• Método de fuente-imagen: En este método, la fuente es reflejada contra todas
las superficies del modelo, resultando así una serie de fuente-imágenes, las cuales
vuelven a ser reflejadas una y otra vez dependiendo del orden que se desee en la
simulación, y luego se traza un camino directo entre cada una de éstas y el o los
receptores. Esta técnica es exacta para incidencia de ondas esféricas en una superficie
rígida en recintos rectangulares.
• Trazado de rayos (Ray tracing): El principio de este método se basa en emitir
rayos de una fuente sonora en direcciones aleatorias, reflejarlos contra las superficies
y registrar los que llegan al receptor. En esta técnica, es necesario que los receptores
sean volumétricos para poder capturar los rayos, lo que en algunos casos, puede
implicar errores en el proceso de cálculo.
• Trazado de haces (Beam tracing): Su principio es similar al del método anterior,
con la diferencia de que en lugar de rayos, se asumen objetos volumétricos (conos
o pirámides) para la propagación del sonido, los cuales pueden ser detectados por
receptores puntuales.
26 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
C. Head Related Transfer Function (HRTF)
La HRTF (Head Related Transfer Function) representa todos los aspectos direccionales
que intervienen en la percepción del sonido (diferencias de tiempo y efectos de difracción).
Depende del ángulo de azimut ϕ, el ángulo de elevación θ y la frecuencia ω. El efecto
de distancia no se incluye en esta función puesto que se asume que la fuente está lo
suficientemente lejos para que la onda que llegue sea plana, por lo tanto para este efecto
solo es necesario aplicar atenuación en función de la distancia [26].
La HRTF se mide a una distancia específica de la cabeza para obtener una presión concreta.
Al disponer de esta función, se puede obtener la HRIR (Head Related Impulse Response) y
se relacionan con la transformada de Fourier. Para medirla directamente se pueden utilizar
cualquiera de los métodos para la obtención de la respuesta al impulso [27].
Como el ser humano tiene dos oídos diferentes y su cuerpo no es exactamente simétrico,
se dispone de una HRTF para cada uno de ellos. También hay una para cada persona, es
decir, es única, debido a que la morfología de cada ser humano es diferente (separación
entre oídos, tamaño de las orejas, tamaño de la cabeza) [26].
D. Sistemas de sonido espacial
Existen diferentes formas de lograr una inmersión acústica, por lo tanto existen diferentes
variables al momento de elegir entre alguno de los métodos [28].
• Aplicación: Cine, música, realidad virtual.
• Complejidad y presupuesto: Hardware (computadores, DSP), número de canales
digitales de audio independientes, número de altavoces.
• Tamaño de la audiencia: Individual, múltiple (hogar, cine, conciertos).
• Precisión: Sistemas realistas (alta precisión), sistemas de espectáculos (baja pre-
cisión, pero gran sensación).
La clasificación de los sistemas orientada al método psicoacústico es:
• Sistemas binaurales: Basado en la HRTF. Grabación binaural o síntesis binaural.
• Sistemas basados en panning: Estéreo, Sistemas de sonido envolvente (Surround),
Vector Base Amplitude Panning (VBAP).
• Sistemas de síntesis del campo acústico: Ambisonics, Wave-Field Synthesis
(WFS).
27 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
1) Sistemas binaurales
El objetivo de estos sistemas es que la señal que llega a los oídos del oyente sea lo más
exacta a la señal que percibirían si estuviesen en el lugar donde se encuentra la fuente
verdadera y que el oyente experimente una correcta percepción espacial. Para realizar
una grabación binaural se utiliza un maniquí acústico (cabeza artificial genérica) lo más
parecido a una persona, el cual tiene un micrófono en el lugar donde iría cada uno de
los canales auditivos. Muchas empresas comercializan el maniquí acústico que tratan de
imitar el modelo de audición humana, entre los más reconocidos se encuentran HSM II de
Head Acoustics, KEMAR de G.R.A.S y KU100 de Neumann. Estos modelos proporcionan
dos señales, derecho e izquierdo. También existen micrófonos binaurales en caso de que
se quiera grabar a una persona real. Para llevar a cabo una grabación binaural, se sitúa
el maniquí o la persona en un lugar y se graba durante un tiempo. La grabación debe
ser completamente estática (no puede haber movimiento) y el producto final no admite
postproducción [29].
Otro método para obtener sonido binaural es mediante la síntesis binaural, en la cual se
utiliza un banco de HRTF, el cual contiene información espacial en todas las direcciones
del espacio o esfera alrededor del oyente. Si se tienen estos filtros para cada una de las
direcciones, se puede obtener cómo oiría una persona una señal específica. La síntesis
binaural sí admite movimiento, puesto que se pueden ubicar las diferentes fuentes en el
espacio mediante postproducción. En aplicaciones como videojuegos o realidad virtual, se
puede utilizar en tiempo real ya que admite tracking de la cabeza del sujeto; cuando la
cabeza se mueve, las fuentes “están moviéndose en dirección opuesta” [29].
E. Convolución
La convolución es una operación matemática formal, así como la multiplicación, la adición
y la integración. La adición toma dos números y produce un tercer número, mientras
que la convolución toma dos señales y produce una tercera señal. En sistemas lineales, la
convolución se utiliza para describir la relación entre tres señales de interés: la señal de
entrada, la respuesta al impulso y la señal de salida [30].
Si se conoce la respuesta al impulso de un sistema, entonces se puede calcular la salida
para cualquier posible señal de entrada. La convolución de un archivo de audio anecoico
con la respuesta al impulso (IR) de un recinto, permite recrear la reproducción del archivo
anecoico dentro del recinto [30].
De acuerdo con el teorema de convolución, si se tiene la representación en el dominio
de la frecuencia de la señal de entrada y la respuesta al impulso, todo lo que se tiene
28 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
que hacer es multiplicarlas, lo que disminuye exponencialmente el número de operaciones
requeridas para realizar la convolución. Para implementar esta operación es necesario
calcular la transformada rápida de Fourier (FFT) de la señal de entrada y del kernell
del filtro, multiplicar las señales en el dominio de la frecuencia y finalmente calcular la
transformada inversa para obtener la señal filtrada como se muestra en la Figura1[30].
1) Convolución en tiempo real: Método Overlap-save
En este método se define una señal de entrada x(n) de N muestras y una respuesta al
impulso h(n) de M muestras. Se establece el tamaño L en número de muestras de los
bloques de datos sobre los cuales se realiza el procesamiento mediante la ecuación8.
N = L + M − 1 (8)
Es necesario aplicar un zero padding de L − 1 muestras a la respuesta al impulso; es
decir, agregar L − 1 muestras de ceros a la respuesta al impulso con el fin de tener
el mismo tamaño en muestras del bloque de datos y poder aplicar una DFT (Discrete
Fourier Transform) para pasar del dominio del tiempo al dominio de la frecuencia. Esta
transformada de la respuesta al impulso es almacenada para realizar la convolución [31].
Se aplica un zero padding de tamaño M − 1 muestras al comienzo del primer bloque de L
muestras de la señal de entrada obteniedo una señal con el mismo tamaño del bloque de
datos. Para el caso de los demás bloques se concatenan las últimas M − 1 muestras del
bloque anterior en lugar de realizar zero padding [31].
Luego se realiza una DFT de cada bloque obtenido y se hace una multiplicación punto a
punto entre las transformadas de la señal de entrada y la respuesta al impulso almacenada,
lo cual se expresa de la siguiente manera:
Fig. 1 . Convolución entre dos señales.
29 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
Ym (l) = Xm(l)H(l), l = 0, 1, ..., N − 1 (9)
Siendo Ym (l) el bloque de datos en el dominio de la frecuencia, m es el índice del bloque
de datos y l es el índice de las frecuencias discretas. Xm (l) y H(l) son la señal de entrada
y la respuesta al impulso respectivamente expresadas en el dominio de la frecuencia [31].
Finalmente se realiza la transformada inversa de Fourier IFFT sobre el bloque de datos
Ym (l) para pasarlo al dominio del tiempo nuevamente. El método establece que para
evitar distorsión en la señal convolucionada, se descartan las primeras M − 1 muestras,
quedando entonces un vector y(n) de tamaño N muestras en el dominio del tiempo como
señal de salida [31].
En la Figura2se muestra mediante un diagrama el método de overlap-save.
F. Metodología de prototipos
Para el desarrollo de este proyecto se implementa la metodología de desarrollo de software
basada en prototipos, la cual permite que todo el sistema, o algunas de sus partes, se
Fig. 2 . Método de convolución Overlap-save.
30 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
construyan rápidamente para comprender con facilidad y aclarar ciertos aspectos en los
que se aseguren que el desarrollador, el usuario y el cliente estén de acuerdo en lo que se
necesita así como también la solución que se propone para dicha necesidad y de esta forma
minimizar el riesgo y la incertidumbre en el desarrollo [32].
Este modelo se encarga del desarrollo de diseños para que estos sean analizados y prescindir
de ellos a medida que se adhieran nuevas especificaciones. Es ideal para medir el alcance
del producto, pero no se asegura su uso real.
Este modelo principalmente se aplica cuando un cliente define un conjunto de objetivos
generales para el software a desarrollarse sin delimitar detalladamente los requisitos de
entrada, procesamiento y salida; es decir, cuando el responsable no está seguro de la
eficacia de un algoritmo, de la adaptabilidad del sistema o de la forma en que interactúa
el usuario y el programa. Este modelo se encarga principalmente de ayudar al ingeniero y
al cliente a entender de mejor manera cuál será el resultado de la construcción cuando los
requisitos estén satisfechos [32].
VI. DESARROLLO
En el desarrollo del proyecto identifican cuatro etapas, como ilustra en la Figura3.
Inicialmente se llevan a cabo dos tareas simultáneas relacionadas con la simulación de
recintos y exportación de HRTFs, datos necesarios para el posterior desarrollo del código
en el software Cabage; y finalmente el diseño de la interface gráfica del plugin.
A. Simulación de recintos en CATT-Acoustic
Se llevaron a cabo las simulaciones en el software CATT-Acoustic el cual implementa
la técnica de acústica geométrica basada en cone tracing, para obtener las respuestas al
impulso monofónicas que el usuario tendrá a disposición para recrear el sonido en entornos
con diferentes tiempos de reverberación.
Con base en los requerimientos especificados para el plugin, éste debe tener la posibilidad
de poder elegir entre diferentes respuestas al impulso monofónicas dependiendo de las
características del recinto a recrear. Los tiempos de reverberación de los recintos que se
plantearon para esta función fueron de 0.5, 1.0, 1.5 y 2.0 segundos.
Inicialmente se construyeron dos recintos (salón 1 y salón 2) en AutoCad con la misma
forma pero con volúmenes diferentes. El recinto con menor volumen (60 m3) sería utilizado
para obtener los dos tiempos de reverberación más bajos y el recinto con mayor volumen
(90 m3) para los tiempos de reverberación restantes como se muestra en la TablaI .Cada
recinto tendrá el mismo material asignado a todas las superficies. Una vez conociendo el
volumen y el área superficial de los recintos, se procedió a realizar el cálculo del coeficiente
medio de absorción por medio de las ecuaciones (4.3) y (4.5).
Fig. 3 . Etapas de desarrollo del plugin.
32 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
TABLA I. RESPUESTAS AL IMPULSO.
Recinto [m3] α IR RTmid[s]
Salón 1 60 0.18 Sala 1 0.5 0.09 Sala 2 1.0
Salón 2 90 0.07 Sala 3 1.5 0.05 Sala 4 2.0
Primero se importó el Salón 1 en CATT y se asignó el coeficiente de absorción calculado
a la superficie para obtener el primer tiempo de reverberación. La fuente y el receptor
se ubicaron como se muestra en la Figura4, teniendo en cuenta el método de ingeniería
planteado en el estándar ISO 3382-2:2008 [33], de manera que el punto de medición se
ubicó a más de 1 m de las paredes y del suelo. Se procedió a realizar la simulación en
TUCT con la siguiente configuración: Longer calculation (el algoritmo más robusto),
detailed auralization, el número de rayos/conos asignado fue de 80000 y para la longitud del
ecograma/respuesta al impulso se adicionó 0.5 segundos al valor tiempo de reverberación
esperado. Luego se exportó la respuesta al impulso monofónica generada por el software
la cual se nombró Sala 1.
Una vez obtenida la primera respuesta al impulso, se modificó el coeficiente de absorción
de las superficies del Salón 1 para obtener el segundo tiempo de reverberación y se realizó
la simulación con la misma configuración descrita anteriormente. De esta manera, se
obtuvo la segunda respuesta al impulso monofónica nombrada como Sala 2.
El procedimiento se repitió para el Salón 2, obteniendo así las respuestas al impulso
denominadas Sala 3 y Sala 4. La ubicación de la fuente y el receptor en este recinto se
Fig. 4 . Ubicación de fuente (A0) y emisor (01) en el Salón 1
33 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
muestra en la Figura5. Los coeficientes de absorción respectivos a cada sala se encuentran
en la TablaI .
B. Exportación de HRTFs
Para exportar las HRTFs, se hizo uso del banco FHK suministrado por SOFA (Spatially
Oriented Format for Acoustics), el cual contiene las HRTFs de la dummy-head Neumann
K100 proporcionadas por Fachhochschule Köln [34].
Inicialmente se estableció que la resolución de ángulos con la que se trabajaría sería de
10º [35] por lo que se crearon dos vectores que representan la información de azimuth y
elevación. El primero varía de -180º a 180º, mientras el segundo tiene un rango que va
de -80º a 80º. Se creó una matriz con los vectores anteriormente descritos y un vector
de índices que los correlaciona. Una vez creada la matriz, ésta se importó en el código
suministrado por SOFA para proceder a la exportación de los datos.
C. Metodología de desarrollo de software
El proyecto comprende el desarrollo de un algoritmo en cSound que permite espacializar
archivos de audio en proyectos musicales y audiovisuales. Se implementa la metodología de
diseño de software “modelo de prototipos”, la cual se aplica principalmente cuando se tiene
definido un conjunto de objetivos generales sin delimitar detalladamente los requisitos de
Fig. 5 . Ubicación de fuente (A0) y emisor (01) en el Salón 2.
34 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
entrada, procesamiento y salida. En la Figura6se presentan las fases de la metodología
propuesta.
1) Análisis
El plugin 3DX Spatializer es una herramienta que le permite al usuario especificar la
orientación de procedencia de archivos de audio y recrearlos en un recinto determinado
mediante la convolución con una respuesta al impulso. Además de tener estas opciones, el
usuario tiene la posibilidad de determinar la distancia a la cual se desea ubicar el archivo
de audio, modificar el nivel de entrada y salida de la señal y automatizar parámetros.
En la TablaII .se especifican los requerimientos de diseño y una descripción del proyecto.
Fig. 6 . Fases de la metodología propuesta.
35 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
TABLA II. DESCRIPCIÓN Y REQUERIMIENTOS DEL PROYECTO.
PROYECTO VST 3DX Spatializer
DESCRIPCIÓN El proyecto tiene como objetivo espacializar archivos de audio en el espacio tridimensional recreándolos en un recinto deseado mediante la convolución con una respuesta al impulso que el usuario puede cargar.
REQUERIMIENTOS
R1 Debe ser un software tipo plugin con formato .VST. R2 Posibilidad de cargar diferentes respuestas al impulso
monofónicas. R3 Posibilidad de controlar la influencia de la respuesta al
impulso sobre el archivo de audio. R4 Posibilidad de controlar la distancia virtual del archivo
de audio. R5 Posibilidad de controlar el nivel de entrada y salida de
la señal. R6 Posibilidad de orientar el archivo de audio en cualquier
dirección del espacio tridimensional. R7 Procesamiento en tiempo real de la espacialización. R8 Posibilidad de automatizar parámetros.
2) Diseño
a) Casos de uso
Determinando la relación entre el usuario y el sistema, se hace una representación de los
casos de uso con la funcionalidad completa. El diagrama de casos de uso define el conjunto
de funcionalidades afines que el sistema debe cumplir para satisfacer los requerimientos de
diseño. Este conjuntos de funcionalidades son representados por los casos de uso, como se
muestra en la Figura7.
36 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
En las TablasIII .yIV .se hace una descripción detallada de cada uno de los casos de
uso y subcasos de uso operados por el usuario, y se hace referencia a los requerimientos
consignados en la TablaII ., con los cuales tiene relación.
Fig. 7 . Diagrama de casos de uso.
37 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
TABLA III. DESCRIPCIÓN DE LOS CASOS DE USO.
3DX Spatializer
DESCRIPCIÓN DE CASOS DE USO
Nombre: Cargar plugin en el DAW
Actor: Usuario
Función: Permitir el funcionamiento del plugin en el DAW.
Descripción: El usuario debe cargar el plugin tipo VST en un canal de audio en
el DAW.
Referencia: De requerimientos: R1
Nombre: Cargar IR, Elegir IR
Actor: Usuario
Función: Permitir elegir una respuesta al impulso para cargar al plugin.
Descripción: Una vez se decide cargar la respuesta al impulso (IR), el usuario
puede elegir entre diferentes IR monofónicas (Sala 1, Sala 2, Sala 3,
Sala 4, Capilla).
Referencia: De requerimientos: R2, R7
Nombre: Ajustar DRY/WET
Actor: Usuario
Función: Controlar la influencia de la IR sobre el archivo de audio.
Descripción: El usuario puede determinar, mediante un control DRY/WET, qué
tan “seco” o “mojado” va a estar el audio procesado. Entendiendo
por “seco” el archivo de audio sin influencia de la IR, y por “mojado”
el archivo completamente influenciado por la IR.
Referencia: De requerimientos: R3, R7
Nombre: Ajustar distancia
Actor: Usuario
Función: Controlar la distancia a la que se desea ubicar el archivo de audio.
Descripción: El usuario puede determinar mediante este control la lejanía, o bien,
la cercanía del archivo de audio en el espacio.
Referencia: De requerimientos: R4, R7
Nombre: Ajustar nivel de entrada
Actor: Usuario
Función: Controlar el nivel de entrada.
Descripción: El usuario puede determinar el nivel de entrada de la señal antes de
ser procesada.
Referencia: De requerimientos: R5
38 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
TABLA IV. CONTINUACIÓN DESCRIPCIÓN DE LOS CASOS DE USO.
3DX Spatializer
DESCRIPCIÓN DE CASOS DE USO
Nombre: Definir ángulo de elevación.
Actor: Usuario
Función: Determinar el ángulo de elevación del archivo de audio.
Descripción: El usuario puede especificar el ángulo de elevación en un rango
de -80º a 80º, dependiendo de la orientación del archivo de audio
deseada en el eje de elevación. Entendiendo -80º como el punto más
bajo y 80º como el más alto.
Referencia: De requerimientos: R6, R7
Nombre: Definir ángulo azimuth.
Actor: Usuario
Función: Determinar el ángulo azimuth del archivo de audio.
Descripción: El usuario puede especificar el ángulo azimuth en un rango de -180º
a 180º, dependiendo de la orientación del archivo de audio deseada
en el eje cenital. Entendiendo ángulos negativos como la parte
izquierda de la cabeza y los ángulos positivos como la derecha.
Referencia: De requerimientos: R6, R7
Nombre: Ajustar nivel de salida
Actor: Usuario
Función: Controlar el nivel de salida.
Descripción: El usuario puede determinar el nivel de la señal luego de ser proce-
sada.
Referencia: De requerimientos: R5, R7
Nombre: Automatización
Actor: Usuario
Función: Permitir la automatización de parámetros.
Descripción: El usuario tiene la posibilidad de automatizar cada uno de los
parámetros variables del plugin directamente desde el DAW.
Referencia: De requerimientos: R8, R7
Nombre: Automatización, Seleccionar parámetros.
Actor: Usuario
Función: Determinar los parámetros a automatizar.
Descripción: El usuario debe especificar en el DAW cada uno de los parámetros
que desee automatizar.
Referencia: De requerimientos: R8, R7
39 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
3) Implementación
Con el propósito de satisfacer cada uno de los requerimientos, antes de comenzar a
desarrollar el código en el entorno de programación de Cabbage, se define el flujo de
señal mediante un diagrama de bloques. La señal de audio entra al plugin y, en primera
instancia, se ve afectada por un control de nivel antes de ser procesada; luego, una vez
el usuario carga una respuesta al impulso, esta señal de audio es convolucionada con
dicha respuesta al impulso. Se establece un control DRY/WET que permite hacer una
mezcla entre el archivo de audio sin convolucionar y el resultado de la convolución, para
así determinar la influencia que se tiene de la respuesta al impulso sobre el archivo de
audio. Luego se realiza la convolución con las HRTFs determinadas por la coordenada que
especifique el usuario mediante los controles de azimuth y elevación. Finalmente la señal
de audio es afectada por un control de distancia basado en la ley del inverso cuadrado y
por un control de nivel de salida, como se observa en la Figura8.
a) Desarrollo de código en Cabbage/cSound
Una vez se tienen las respuestas al impulso y las HRTFs, se procede a realizar el desarrollo
del algoritmo que permite la espacialización de los archivos de audio en diferentes recintos
a una resolución de 10º. Este codigo se realizó en Cabbage usando el lenguaje de
programación propio de cSound, del cual, en un principio, no se tenía conocimiento alguno.
Fig. 8 . Diagrama de bloques del flujo de señal.
40 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
A lo largo del desarrollo y debido a la metodología implementada, se realizaron diferentes
versiones o prototipos del plugin hasta llegar a el prototipo final.
Inicialmente, como se observa en la Figura9, en el primer prototipo se comienza por
interiorizar el lenguaje de programación, cargando un archivo de audio y una respuesta al
impulso para realizar una convolución entre ambos. Adicionalmente se implementó un
control de nivel.
Luego, para el segundo prototipo, además de la convolución del archivo de audio con la
respuesta al impulso, se implementó una segunda convolución del resultado de la anterior
con una HRTF que se carga usando un botón (Load HRTF), y finalmente se logra reproducir
la espacialización del archivo de audio mediante otro botón (Play Spatialization). En la
Figura10se observa el prototipo 2.
Fig. 9 . Prototipo 1.
41 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
Para el tercer prototipo el objetivo fue lograr cagar mediante un botón no solo una HRTF,
sino una carpeta con varias HRTFs (inicialmente cuatro de prueba) y lograr cambiar de
una convolución a otra mediante un selector. Sumado a ésto, para este tercer prototipo ya
se logra implementar un control de distancia basado en la ley del inverso cuadrado. En la
Figura11se observa el prototipo 3.
Fig. 10 . Prototipo 2.
42 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
A pesar de los logros alcanzados, el problema a solucionar en el cuarto prototipo radicaba
en que al cambiar de una convolución a otra usando el selector, el archivo de audio
cargado comenzaba desde el principio. Para solucionar este problema se procedió a hacer
la implementación del plugin en el DAW Reaper para no tener que cargar el archivo de
audio al plugin, sino que éste leyera un archivo directamente cargado sobre un canal del
DAW. Debido a que se trabajó con un opcode (función de csound) de convolución que
trabaja en tiempo real, y teniendo presente todas las consideraciones de este proceso, se
logra que el cambio de una convolución a otra no afecte la continuidad en la reproducción
del archivo de audio.
Con el objetivo de permitirle al usuario definir la cantidad de reverberación que aporta el
recinto, se crea una función DRY/WET (seco/mojado), la cual permite hacer una mezcla
entre el sonido sin ser convolucionado con la respuesta al impulso y el resultado de la
convolución. En la Figura12se observa el prototipo 4.
Fig. 11 . Prototipo 3.
43 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
Finalmente, había dos problemas por solucionar para alcanzar el prototipo final. El
primero consistía en anular los “clicks” que se generaban al cambiar de una convolución
a otra, y el segundo en crear dos comandos, uno de azimuth y otro de elevación, que
permitieran determinar la coordenada de procedencia del archivo de audio. Para solucionar
el problema de los “clicks” se buscó la forma de implementar un crossfade para el paso de
una convolución a otra.
En el lenguaje de programación utilizado se trabaja por instrumentos, cada uno con una
función específica. Inicialmente, el orden de las tareas que se llevaban a cabo luego de
cambiar la coordenada era el siguiente: primero, se activaba un instrumento que actualiza
la HRTF relacionada a la nueva coordenada y luego se activaba otro instrumento que
reproduce la convolución con la nueva HRTF. Debido a que el “click” se generaba cuando
se activaba el instrumento encargado de reproducir la convolución, fue indispensable crear
otro instrumento encargado de reproducir la convolución con la nueva HRTF sin afectar
el anterior para poder implementar el crossfade entre ambos instrumentos sin tener que
pausarlos o activarlos de nuevo. De esta forma, el nuevo orden de tareas es el siguiente:
primero, al cambiar la coordenada, se carga la nueva HRTF en el segundo instrumento,
luego se activa una rampa en fade out para el instrumento que venía sonando y finalmente
se activa una nueva rampa en fade in para el segundo instrumento. Al cambiar nuevamente
la coordenada se realiza el mismo proceso pero ahora el que era el primer instrumento se
convierte en el segundo y se lleva a cabo el mismo proceso. Esto permite tener una debida
transición entre los diferentes pasos por las HRTFs correspondientes a las coordenadas
seleccionadas por el usuario.
Fig. 12 . Prototipo 4.
44 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
Por otro lado, para solucionar la necesidad de relacionar los comandos de coordenadas
con los archivos de HRTF correspondientes a cada una, se crearon tres vectores, uno con
índices del 1 al 612 (cantidad de archivos en la carpeta de HRTFs), otro con los ángulos
de azimuth y el tercero con los ángulos de elevación teniendo en cuenta la convención en
la cual se encontraban ordenados en la carpeta. Luego se establecieron condicionales que
permitieran relacionar ambos ángulos con el índice pertinente a la posición en el arreglo
de HRTFs para llamar el archivo correspondiente a la coordenada especificada.
En adición a lo anterior, se logró cargar automáticamente la carpeta que contiene todos
los archivos HRTF sin necesidad de cargarlo mediante un botón como en las versiones
anteriores. Y a su vez se implementó el control del nivel de entrada y salida de la señal en
el plugin. En la Figura13se observa el prototipo 5.
En el Anexo A se encuentra el código correspondiente al prototipo final del plugin.
Una vez se tiene el prototipo final y completamente funcional, se procede al diseño de la
interfaz gráfica.
b) Interfaz gráfica de usuario
Para el diseño de la interfaz gráfica se implementa un fondo diseñado en el software
PhotoShop y se hace uso del software Inkscape para el diseño de los archivos en formato
.svg (Scalable Vector Graphics) que, como sus siglas lo indican, son gráficos vectoriales
Fig. 13 . Prototipo 5.
45 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
escalables que permiten ser implementados como controles rotables en la interfaz gráfica
del plugin para variar parámetros como azimuth, elevación y DRY/WET.
En la Figura14se muestra la interfaz gráfica de usuario GUI (Graphical User Interface)
del plugin 3DX Spatializer.
4) Validación
a) Prueba del sistema
La prueba se realizó en un computador MacBook Pro con procesador Intel Core i5 de
dos núcleos a una frecuencia de 3.1 GHz, memoria RAM de 8GB con una frecuencia de
trabajo de 2133 MHz.
El plugin tipo VST está desarrollado exclusivamente para macOS. Se realizó una valoración
del plugin en términos de consumo de CPU, para lo cual se cargó en un canal del DAW
Reaper y se analizó el consumo de CPI el cual fue de 3.2% en promedio como se observa
en la Figura15.
Fig. 14 . Interfaz gráfica de usuario.
46 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
b) Prueba de aceptación de usuario
Se realizó una prueba de aceptación de usuario diseñada siguiendo las recomendaciones
del estándar de la National Bureau Standards (NBS) Special Publication 500-136 con
el objetivo del desarrollo de validar el cumplimiento de los requerimientos de diseño del
software desarrollado.
• Información general de la prueba
El tipo de prueba a ejecutar es de “Caja cerrada” dado los encuestados tienen
conocimiento del resultado de funcionamiento esperado pero no conocen el fun-
cionamiento interno del software a profundidad.
• Desarrollo de la prueba
–Resumen: Con el objetivo de reconocer la aceptación del software por parte
de diferentes usuarios, se realiza una encuesta con preguntas concretas rela-
cionadas a los requerimientos de funcionamiento de éste. La prueba manual del
funcionamiento del software se realizará en actividad con el DAW Reaper.
–Organización y recursos: El horario para la realización de la prueba será
acordado con cada usuario evaluado. Es requerido un computador con el DAW
Reaper y el software previamente instalados, el cual será suministrado por el
evaluador.
–Procedimiento: Una vez terminado el plan de prueba de aceptación de usuario
debe revisarse en conjunto con el asesor del trabajo de grado.
Fig. 15 C. onsumo de CPU del plugin.
47 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
De acuerdo con lo establecido en la norma IEEE729, tal como lo determina la
NBS Special Publication 500-136, antes de ejecutar la prueba con los usuarios,
se realizará una por parte de los desarrolladores para garantizar que el plugin
funcione correctamente. Una vez verificado el debido funcionamiento y la
posibilidad de ejecutar la prueba, se procederá a dar una introducción y se
comenzará con la realización de la misma.
• Ejecución de la prueba
–Diseño de la encuesta: En el Anexo B se encuentra la encuesta diseñada
bajo las recomendaciones de la NBS Special Publication.
–Condiciones de inicio : Se debe informar al encuestado acerca del proced-
imiento y objetivos de la prueba. Es indispensable que el software esté correc-
tamente instalado en el computador en el que se va a realizar la prueba y que
el encuestado acepte las condiciones establecidas.
–Condiciones de finalización: La prueba finaliza una vez el usuario ha re-
spondido la totalidad de preguntas de la encuesta.
–Población utilizada: La prueba se realizó a diez personas de las cuales ocho
son docentes del programa al cual se vincula este trabajo de grado y dos son
estudiantes de último semestre pertenecientes al mismo programa.
• Resultados de la prueba de aceptación: Los resultados obtenidos después de
la realización de la prueba fueron los siguientes:
– 100% de los encuestados estuvieron de acuerdo con que el formato del plugin es
.VST.
– 100% estuvieron de acuerdo con que otorga la posibilidad de cargar diferentes
respuestas al impulso monofónicas.
– 100% afirmaron que el plugin permite controlar la influencia de la respuesta al
impulso sobre el archivo de audio mediante el control DRY/WET.
– 90% de los encuestados acordaron que el software evaluado ofrece la posibilidad
de alejar virtualmente el archivo de audio. El otro 10% argumentan que no solo
basta con controlar la atenuación por distancia, sino que se podrían considerar
filtros por absorción del aire y cambios en cuanto a las reflexiones del recinto,
lo cual computacionalmente implicaría cargar un tren de respuestas al impulso
convirtiéndose en un plugin computacionalmente muy pesado y robusto.
– 90% estuvieron de acuerdo con que el plugin permite orientar el archivo de audio
hacia cualquier dirección de un espacio tridimensional. El otro 10% estuvieron
dudosos en cuanto a algunos ángulos de procedencia entendiendo que el método
de espacialización puede presentar inconsistencias dependiendo de la morfología
48 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
de la persona dado que el banco de HRTFs utilizado corresponde a la respuesta
de una cabeza genérica.
– 100% de los encuestados consideraron que el software realiza la espacialización
del archivo de audio en tiempo real.
– 100% aceptaron el desarrollo del software, indicando y verificando que cumple
con las funciones para el cual está diseñado.
Todos los usuarios encuestados estuvieron satisfechos con la interfaz de usuario.
VII. CONCLUSIONES
• El plugin desarrollado cumple con todos los requerimientos de diseño establecidos. Es
un plugin tipo .VST que permite la espacialización de archivos de audio en términos
de azimut, elevación y distancia en tiempo-real, y la posibilidad de recrearlos en
recintos con diferentes características acústicas.
• La metodología de prototipos fue apropiada para el desarrollo del proyecto, debido a
que permite ir trabajando uno a uno los requerimientos, desde un prototipo de partida
básico hasta el prototipo final totalmente funcional. Ésto a medida que se lograba
entender el lenguaje de programación del entorno de desarrollo Cabbage/cSound.
• Luego de haber realizado las pruebas de aceptación de usuario se concluye que si bien
el método de espacialización implementando de HRTFs permite definir la orientación
de un archivo de audio, sin embargo el nivel de inmersividad puede variar de acuerdo
a la compatibilidad que exista entre el usuario y las HRTFs genéricas.
• El opcode de convolución utilizado permite trabajar con cualquier respuesta al
impulso independiente de su tamaño en muestras, debido a que implementa el
método overlap-save para convolución en tiempo real, el cual trabaja por bloques de
datos, anulando así la dependencia de un tamaño de buffer específico.
REFERENCIAS
[1] DOLBY, Dolby Atmos® Home Theater Installation Guidelines, July 2017.
[2] “World internet users and 2017 population stats.” Available: http://www.internetworldstats.com/stats.htm, 2017.
[3]E. G. Williams, Fourier Acoustics. Academic Press, 1999.
[4] M. A. Poletti, “Three-dimensional surround sound systems based on spherical har- monics,” JAES, November, 2005.
[5] M. Frank, F. Zotter, and A. Sontacchi, “Producing 3d audio in ambisonics,” in Proceedings of the 57th International Conference: The Future of Audio Entertainment Technology – Cinema, Television and the Internet, Hollywood, 2015.
[6] M. Frank, “Plugin suite for mastering the production and playback in surround sound and ambisonics,” in Proceedings of the 136th AES Convention, Berlin, 2014.
[7] V. Pukki, “Virtual sound source positioning using vector base amplitud panning,” JAES, June, 1997.
[8] M. Frank, “Source-distance based panning algorithm for 3d surround sound,” in Proceedings of the 141th AES Convention, Los Angeles, 2016.
[9] M. Aussal, F. Alouges, and B. Katz, “Hrtf interpolation and itd personalization for binaural synthesis using spherical harmonics,” in Proceedings of the UK 25th AES Conference: Spatial Audio in Today’s 3D World, Heslington, 2012.
[10] M. Frank, “Source-distance based panning algorithm for 3d surround sound,” in Proceedings of the 141th AES Convention, Los Angeles, 2016.
[11] E. Bates and F. Boland, “Spatial music, virtual reality, and 360 media,” in Proceedings of the 2016 AES International Conference on Audio for Virtual and Augmented Reality, Los Angeles, 2016.
[12] K. Niwa, D. Ochi, A. Kameda, Y. Kamamoto, and T. Moriya, “Smartphone-based 360° video streaming/viewing system including acoustic immersion,” in Proceedings of the 141st AES Convention, Los Angeles, 2016.
[13] “Facebook 360 spatial workstation.” Available: https://facebook360.fb.com/spatial- workstation/, 2017.
[14]“3dception by two big ears.” Available: http://spatworks.twobigears.com/, 2017.
[15]“Astoundsound by genaudio.” Available: http://www.astoundholdings.com/, 2017.
[16] “Phonon 3d by impulsonic.” Available: https://uploadvr.com/valve-acquires-3d-audio- company-impulsonic/, 2017.
[17]“Real space 3d audio by visisonics.” Available: http://realspace3daudio.com/, 2017.
[18]Wave Arts, Inc, Wave Arts Power Suite 5, May 2015.
[19]“Oculus audio sdk.” Available: https://developer.oculus.com/documentation, 2017.
DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL... 51
[20]F. Rumsey, Spatial Audio. Oxford: Focal Press, 2001.
[21]D. M. Howard and J. A. S. Angus, Acoustics and Psychoacoustics. Routledge, 2017.
[22]A. Carrión, Diseño Acústico de Espacios Arquitectónicos. UPC, 1998.
[23] J. S. Abel and D. Berners, “Mus424/ee367d: Signal processing techniques for digital audio effects.” Unpublished Course Notes, CCRMA, Stanford University, 2004.
[24]L. Beranek, Acoustics. American Institute of Physics, 1986.
[25] L. Savioja and P. Savensson, “Overview of geometrical room acoustic modeling techniques,” JAES, 2015.
[26] J. Blauert, Spatial Hearing - The Psychophysics of Human Sound Localization. MA: MIT press, Cambridge, 1997.
[27] G. Stan and J. Embrechts, “Comparison of different impulse response measurement techniques,” JAES, 2002.
[28]T. Holman, Sound for Film and Television. Focal Press, Boston, 2002.
[29]H. Møller, Fundamentals of Binaural Technology. Applied Acoustics, 1992.
[30]A. Oppenheim and R. Schafer, Discrete-Time Signal Processing. Pearson, 1989.
[31] J. G. Proakis and D. G. Manolakis, Digital Signal Processing: Principles, Algorithms and Applications. Prentince Hall, 1996.
[32]R. Pressman, Ingeniería del Software - Un enfoque práctico. McGRAW-HILL, 2010.
[33] ISO, ISO 3382-2 Acoustics - Measurement of room acoustic parameters. International standard ISO, first ed., 2008.
[34] “Sofa conventions.” Available: https://www.sofaconventions.org/mediawiki/index.php/Files.
[35] J. Breebar, F. Nater, and A. Kolhrausch, “Spectral an spatial parameter resolution requeriments for parametric, filter-bank-based hrtf processing,” JAES, 2015.
A. Código del plugin en Cabbaje/cSound
< C ab b ag eIn clu d es >
rslid er . svg
B a ck g ro u n d . png
</ C ab b ag eIn clu d es >
< Cabbage >
form cap tio n ("3 DX S p a tia liz er ") size (615 , 400) , p lu g in ID ("
def1 ")
image bounds (0 , 0 , 615 , 400) , file (" In terfaz G rafica /
B a ck g ro u n d . png ")
so u n d filer bounds (196 , 52 , 226 , 85) , id en tch a n n el (" S o u n d Id en t
") , ta b le b a ck g ro u n d co lo u r (0 ,0 ,0 ,0) , ta b leco n fig ( -1) , ta b
len u m b er ( -1) , colour (144 , 28 , 28 , 255) , fo n tco lo u r (77 ,
62 , 62 , 0)
h slid er bounds (184 , 196 , 255 , 35) ch an n el (" D istan ce ") range
(1 , 30 , 1 , 1 , 0.001) colour (236 , 236 , 236 , 255) tex tco lo u r
(7 , 7 , 7 , 255) tra ck erco lo u r (144 , 28 , 28 , 255) alpha (0.97)
fileb u tto n bounds (256 , 145 , 109 , 20) ch an n el (" L o ad F ile ") text
(" L O A D I R ", "L O A D I R ") p o p u late ("" , "") colour
:0(48 , 48 , 48 , 255) colour :1(41 , 41 , 41 , 0) fo n tco lo u r
:0(103 , 103 , 103 , 255) fo n tco lo u r :1(103 , 103 , 103 , 255)
rslid er bounds (330 , 250 , 96 , 96) ch an n el (" A zim u th ") range
( -180 , 180 , 0 , 1 , 10) colour (255 , 255 , 255 , 0)
o u tlin eco lo u r (159 , 104 , 104 , 0) tra ck erco lo u r (123 , 123 ,
123 , 0) in crem en t (10) im g file (" Slider ", " rslid er . svg ")
rslid er bounds (190 , 250 , 96 , 96) ch an n el (" E lev a tio n ") range
( -80 , 80 , 0 , 1 , 10) colour (0 , 0 , 0 , 255) o u tlin eco lo u r
(159 , 104 , 104 , 0) tra ck erco lo u r (115 , 115 , 115 , 0)
in crem en t (10) im g file (" Slider ", " rslid er . svg ")
rslid er bounds (487 , 68 , 67 , 66) ch an n el (" Mix ") range (0 , 1 ,
0.25 , 1 , 0.001) colour (106 , 13 , 13 , 255) o u tlin eco lo u r (79 ,
53 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
79 , 79 , 0) tra ck erco lo u r (0 , 0 , 0 , 0) im g file (" Slider ", "
rslid er . svg ")
v slid er bounds (48 , 180 , 83 , 135) ch an n el (" Input ") range (0 , 1 ,
0.7 , 1 , 0.001) tex tco lo u r (111 , 111 , 111 , 255)
tra ck erco lo u r (144 , 28 , 28 , 255) colour (236 , 236 , 236 , 255)
v slid er bounds (480 , 180 , 83 , 135) ch an n el (" Output ") range (0 ,
1 , 0.7 , 1 , 0.001) tex tco lo u r (111 , 111 , 111 , 255)
tra ck erco lo u r (144 , 28 , 28 , 255) colour (236 , 236 , 236 , 255)
</ Cabbage >
< C so u n d S y n th esiz er >
< CsOptions >
- dm0 -n
</ CsOptions >
< CsInstrumen ts >
; In itia liz e the global v a riab les .
sr = 44100
ksm ps = 32
nchnls = 2
0 dbfs = 1
g S IR n am e init ""
g S HRTF init ""
g iIm p u lse ftgen 1 ,0 ,2 , -2 ,0
giHRTF ftgen 2 ,0 ,4 , -2 ,0
g iH R T F 2 ftgen 2 ,0 ,4 , -2 ,0
g S S a m p le P a th init ""
g k R ead y init 0
g k F ad e1 init 1
g k F ad e2 init 0
gi_ Idx [] g en array 0 , 611 ; 0 1 2 3 ...
gi_ Azi [] init 612 ; 0 0 0 0 ...
gi_ Ele [] init 612 ; -80 -70 -60 -50 ...
k Power init 0
54 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
instr 1
g S IR n am e = "/ Users / th o m a sv ia n a / D o cu m en ts / Thomas Viana /
U n iv ersid a d / P ro y ecto de Grado / IRs / dish . wav "
g S IR n a m e2 chnget " L o ad F ile " g
k D ista n ce chnget " D istan ce "
g k L ev el = 1/ g k D ista n ce g
k In L ev el chnget " Input " g k O
u tL ev el chnget " Output "
iAzi chnget " A zim u th "
kAzi chnget " A zim u th "
iEle chnget " E lev atio n "
kEle chnget " E lev atio n "
kCnt init 0
;-------------------------------------------------
; A Z IM U T H
iIndex = 0
while iIndex < 17 do
gi_ Azi [ iIndex ] = 0
gi_ Azi [ iIndex + 17] = 10
gi_ Azi [ iIndex + 34] = 20
gi_ Azi [ iIndex + 51] = 30
gi_ Azi [ iIndex + 68] = 40
gi_ Azi [ iIndex + 85] = 50
gi_ Azi [ iIndex + 102] = 60
gi_ Azi [ iIndex + 119] = 70
gi_ Azi [ iIndex + 136] = 80
gi_ Azi [ iIndex + 153] = 90
gi_ Azi [ iIndex + 170] = 100
gi_ Azi [ iIndex + 187] = 110
gi_ Azi [ iIndex + 204] = 120
gi_ Azi [ iIndex + 221] = 130
gi_ Azi [ iIndex + 238] = 140
gi_ Azi [ iIndex + 255] = 150
gi_ Azi [ iIndex + 272] = 160
gi_ Azi [ iIndex + 289] = 170
gi_ Azi [ iIndex + 306] = 180
gi_ Azi [ iIndex + 323] = -170
55 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
gi_ Azi [ iIndex + 340] = -160
gi_ Azi [ iIndex + 357] = -150
gi_ Azi [ iIndex + 374] = -140
gi_ Azi [ iIndex + 391] = -130
gi_ Azi [ iIndex + 408] = -120
gi_ Azi [ iIndex + 425] = -110
gi_ Azi [ iIndex + 442] = -100
gi_ Azi [ iIndex + 459] = -90
gi_ Azi [ iIndex + 476] = -79
gi_ Azi [ iIndex + 493] = -69
gi_ Azi [ iIndex + 510] = -59
gi_ Azi [ iIndex + 527] = -50
gi_ Azi [ iIndex + 544] = -40
gi_ Azi [ iIndex + 561] = -30
gi_ Azi [ iIndex + 578] = -20
gi_ Azi [ iIndex + 595] = -10
iIndex += 1
od
;-------------------------------------------------
; E L E V A T IO N
iArr [] g en array -80 , 80 , 10
iIndex = 0
while iIndex < 17 do
gi_ Ele [ iIndex ] = iArr [ iIndex ]
gi_ Ele [ iIndex + 17] = iArr [ iIndex ]
gi_ Ele [ iIndex + 34] = iArr [ iIndex ]
gi_ Ele [ iIndex + 51] = iArr [ iIndex ]
gi_ Ele [ iIndex + 68] = iArr [ iIndex ]
gi_ Ele [ iIndex + 85] = iArr [ iIndex ]
gi_ Ele [ iIndex + 102] = iArr [ iIndex ]
gi_ Ele [ iIndex + 119] = iArr [ iIndex ]
gi_ Ele [ iIndex + 136] = iArr [ iIndex ]
gi_ Ele [ iIndex + 153] = iArr [ iIndex ]
gi_ Ele [ iIndex + 170] = iArr [ iIndex ]
gi_ Ele [ iIndex + 187] = iArr [ iIndex ]
gi_ Ele [ iIndex + 204] = iArr [ iIndex ]
56 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
gi_ Ele [ iIndex + 221] = iArr [ iIndex ]
gi_ Ele [ iIndex + 238] = iArr [ iIndex ]
gi_ Ele [ iIndex + 255] = iArr [ iIndex ]
gi_ Ele [ iIndex + 272] = iArr [ iIndex ]
gi_ Ele [ iIndex + 289] = iArr [ iIndex ]
gi_ Ele [ iIndex + 306] = iArr [ iIndex ]
gi_ Ele [ iIndex + 323] = iArr [ iIndex ]
gi_ Ele [ iIndex + 340] = iArr [ iIndex ]
gi_ Ele [ iIndex + 357] = iArr [ iIndex ]
gi_ Ele [ iIndex + 374] = iArr [ iIndex ]
gi_ Ele [ iIndex + 391] = iArr [ iIndex ]
gi_ Ele [ iIndex + 408] = iArr [ iIndex ]
gi_ Ele [ iIndex + 425] = iArr [ iIndex ]
gi_ Ele [ iIndex + 442] = iArr [ iIndex ]
gi_ Ele [ iIndex + 459] = iArr [ iIndex ]
gi_ Ele [ iIndex + 476] = iArr [ iIndex ]
gi_ Ele [ iIndex + 493] = iArr [ iIndex ]
gi_ Ele [ iIndex + 510] = iArr [ iIndex ]
gi_ Ele [ iIndex + 527] = iArr [ iIndex ]
gi_ Ele [ iIndex + 544] = iArr [ iIndex ]
gi_ Ele [ iIndex + 561] = iArr [ iIndex ]
gi_ Ele [ iIndex + 578] = iArr [ iIndex ]
gi_ Ele [ iIndex + 595] = iArr [ iIndex ]
iIndex += 1
od
;-------------------------------------------------
k N ew F ile T rg ch an g ed g S IR n am e2 ; If a
new file is loaded g en erate a trig g er
if k N ew F ile T rg ==1 then ;
If a new file has been loaded ...
event "i", 101 ,0 ,0
event "i", 1001 , 0 , 0.1 ; Call
in stru m en t to update sam ple sto rag e fu n ctio n table
endif
;-------------------------------------------------
57 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
k N ew F ile T rg 2 ch an g ed kAzi
if k N ew F ile T rg 2 ==1 then
if kCnt == 0 then
event "i", 103 , 0 , 0
event "i", 3 , 0 , -1
event "i", " Fades ", 0 , 1 , 0
else event "i", 102 , 0 , 0
event "i", 2 , 0 , -1
event "i", " Fades ", 0 , 1 , 1
endif
kCnt += 1
if kCnt == 2 then
kCnt = 0
endif
endif
k N ew F ile T rg 3 ch an g ed kEle
if k N ew F ile T rg 3 ==1 then
if kCnt == 0 then
event "i", 103 , 0 , 0
event "i", 3 , 0 , -1
event "i", " Fades ", 0 , 1 , 0
else event "i", 102 , 0 , 0
event "i", 2 , 0 , -1
event "i", " Fades ", 0 , 1 , 1
endif
kCnt += 1
if kCnt == 2 then
kCnt = 0
endif
endif
;-------------------------------------------------
if ch an g ed ( g S IR n am e2 ) ==1 then
S M essa g e2 sp rin tfk " file (\" s \") ", g S IR n am e2
chnset SMessage2 , " S o u n d Id en t "
endif
58 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
;-------------------------------------------------
endin instr
Init
g S IR n am e = " IRs / Sala 3. wav "
g iIm p u lse ftgen 1 ,0 ,0 ,1 , gSIRname ,0 ,0 ,0 S
M essa g e2 sp rin tfk " file (\" s \") ", g S IR n am e
chnset SMessage2 , " S o u n d Id en t "
puts SMessage2 , 1
prints " L o ad in g files to fu n ctio n tables "
iF irstT a b le N u m b e r = 10
S F ilep ath = " S am p les /"
kTrig = 1 ; using k - rate v ersio n b ecau se of bug with i -
rate v ersio n
g k N u m T a b les ftsa m p leb a n k SFilepath , iF irstT ab leN u m b er ,
kTrig , 0 , 4 , 1
g S F iles [ ] d irecto ry SFilepath , ". wav "
giHRTF ftgen 2 ,0 ,0 ,1 , g S F iles [0] ,0 ,0 ,0
endin
instr 2
kmix chnget " Mix "
k D elay O S init 0
ainL , ainR ins ; Read
stereo audio input
ain Mix sum ainL , ainR
;-------------------------------------------------
itab = g iIm p u lse
iplen = 1024
aL , aR ftconv ainMix , itab , iplen
59 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
adelL delay ainL , abs (( iplen / sr )+ i( k D elay O S ))
; Delay the input sound a cco rd in g to the buffer
size
adelR delay ainR , abs (( iplen / sr )+ i( k D elay O S ))
; Delay the input sound a cco rd in g to the
buffer size
;-------------------------------------------------
; DRY / WET
aMixL ntrpol adelL * g k In L ev el *0.8 , aL *0.2* gkInLevel ,
kmix
aMixR ntrpol adelR * g k In L ev el *0.8 , aR *0.2* gkInLevel ,
kmix
;-------------------------------------------------
ain C o n v sum aMixL , aMixR
itab2 = giHRTF
aSptz1L , a S p tz1R ftconv ainConv , itab2 , iplen
outs a S p tz1L * g k F ad e1 * g k L ev el * g k O u tL ev el *0.2 , a S p tz1R *
g k F ad e1 * g k L ev el * g k O u tL ev el *0.2
endin
instr 3
kmix chnget " Mix "
k D elay O S init 0
ainL , ainR ins ; Read
stereo audio input
ain Mix sum ainL , ainR
;-------------------------------------------------
itab = g iIm p u lse
iplen = 1024
60 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
aL , aR ftconv ainMix , itab , iplen
adelL delay ainL , abs (( iplen / sr )+ i( k D elay O S ))
; Delay the input sound a cco rd in g to the buffer size
adelR delay ainR , abs (( iplen / sr )+ i( k D elay O S ))
; Delay the input sound a cco rd in g to the buffer size
;-------------------------------------------------
; DRY / WET
aMixL ntrpol adelL * g k In L ev el *0.8 , aL *0.2* gkInLevel ,
kmix
aMixR ntrpol adelR * g k In L ev el *0.8 , aR *0.2* gkInLevel ,
kmix
;-------------------------------------------------
ain C o n v sum aMixL , aMixR
itab3 = g iH R T F 2
aSptz2L , a S p tz2R ftconv ainConv , itab3 , iplen
outs a S p tz2L * g k F ad e2 * g k L ev el * g k O u tL ev el *0.2 , a S p tz2R *
g k F ad e2 * g k L ev el * g k O u tL ev el *0.2
endin
; When user has selected folder , load them into fu n ctio n
tables
instr 1001
iF irstT a b le N u m b e r = 10
S F ilep ath = " S am p les /"
kTrig = 1 ; using k - rate v ersio n b ecau se of bug with i -
rate v ersio n
g k N u m T a b les ftsa m p leb a n k SFilepath , iF irstT ab leN u m b er ,
kTrig , 0 , 4 , 1
g S F iles [ ] d irecto ry SFilepath , ". wav "
giHRTF ftgen 2 ,0 ,0 ,1 , g S F iles [0] ,0 ,0 ,0 k
Power = 1
endin
61 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
instr 101 ; Load IR
g iIm p u lse ftgen 1 ,0 ,0 ,1 , gSIRname2 ,0 ,0 ,0
endin
instr 102 ; Load HRTF 1
iAzi chnget " A zim u th "
iEle chnget " E lev atio n "
iAzi = int ( iAzi )
iAzi = - iAzi
if iAzi == -180 then
iAzi = 180
endif
iA zi_ S u p = iAzi + 5
iA zi_ In f = iAzi - 5
if iEle > 79 && iEle < 81 then
iEle = 80
endif
iCnt = 0
until iCnt == 612 do
if iA zi_ In f <= gi_ Azi [ iCnt ] && iA zi_ S u p > gi_ Azi [ iCnt ]
&& iEle == gi_Ele [ iCnt ] then
ipos = gi_Idx [ iCnt ]
print ipos
prints " Azi [ d ] = d \ n \ n ", gi_Azi [ iCnt ]
giHRTF ftgen 2 ,0 ,0 ,1 , g S F iles [ ipos ] ,0 ,0 ,0
SMssg sp rin tf " file (\" s \") ", g S F iles [ ipos ]
ichnls = ftch n ls ( giHRTF )
puts SMssg , 1
endif
62 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
iCnt += 1
od
endin
instr 103 ; Load HRTF 2
iAzi chnget " A zim u th "
iEle chnget " E lev atio n "
iAzi = int ( iAzi )
iAzi = - iAzi
if iAzi == -180 then
iAzi = 180
endif
iA zi_ S u p = iAzi + 5
iA zi_ In f = iAzi - 5
iCnt = 0
until iCnt == 612 do
if iA zi_ In f <= gi_ Azi [ iCnt ] && iA zi_ S u p > gi_ Azi [ iCnt ]
&& iEle == gi_Ele [ iCnt ] then
ipos = gi_Idx [ iCnt ]
print ipos
prints " Azi [ d ] = d \ n \ n ", gi_Azi [ iCnt ]
g iH R T F 2 ftgen 2 ,0 ,0 ,1 , g S F iles [ ipos ] ,0 ,0 ,0
SMssg sp rin tf " file (\" s \") ", g S F iles [ ipos ]
ichnls = ftch n ls ( giHRTF )
puts SMssg , 1
endif
iCnt += 1
od
endin
63 DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL...
instr Fades
if p4 == 1 then
g k F ad e1 line 0 , p3 , 1
g k F ad e2 line 1 , p3 , 0
else g k F ad e1 line 1 , p3 , 0
g k F ad e2 line 0 , p3 , 1
endif
endin
</ CsInstru ments >
< CsScore >
i1 0 [6 0 *6 0 *2 4 *7 ]
i2 0 [6 0 *6 0 *2 4 *7 ]
i3 0 [6 0 *6 0 *2 4 *7 ]
i" Init " 0 0.1
</ CsScore >
</ C so u n d S y n th esizer >
B. Encuesta para la pueba de aceptación de usuario
Prueba de aceptación de software para el trabajo de grado “DESARROLLO DE AL-
GORITMO PARA IMPLEMENTACIÓN DE AUDIO ESPACIAL EN PROYECTOS
AUDIOVISUALES”.
A continuación se presenta una prueba de aceptación de usuario diseñada siguiendo las
recomendaciones del estándar de la National Bureau Standards (NBS) Special Publication
500-136. El objetivo del desarrollo de esta prueba es la validación del cumplimiento de
los requerimientos de diseño del software desarrollado. El carácter de la prueba no es
obligatorio. Deben ser respondidas todas las preguntas. Requiere disponibilidad de tiempo
máximo de 10 minutos y no presenta ningún riesgo considerado. Se requiere de una
justificación clara en caso de responder de manera negativa alguna pregunta.
Declaro que he leído y he sido informado del objetivo de la prueba, sus riesgos y consid-
eraciones.
Realizo esta prueba a voluntad y doy permiso de utilizar la información aquí consignada
para fines académicos del trabajo de grado “DESARROLLO DE ALGORITMO PARA
IMPLEMENTACIÓN DE AUDIO ESPACIAL EN PROYECTOS AUDIOVISUALES”
Firma:
Nombre completo:
C.C:
DESARROLLO DE UN PLUGIN PARA LA IMPLEMENTACIÓN DE AUDIO ESPACIAL... 65
Antes de comenzar, verifique junto con el encuestador, que el software haya sido cargado
correctamente en el DAW. Se realizarán preguntas concretas con respecto al funcionamiento
del software, orientadas a la verificación de los requerimientos de diseño propuestos.
1.¿Es el software evaluado, un software tipo plugin en formato .VST?
Sí No
¿Es otro formato?, ¿cuál?.
2. ¿El software le otorga la posibilidad de cargar diferentes respuestas al impulso
monofónicas?
Sí No
¿Por qué no?
3. ¿El software le permite controlar la influencia de la respuesta al impulso sobre el
archivo de audio?
Sí No
¿Por qué no?
4. ¿Considera que el software evaluado ofrece la posibilidad de alejar virtualmente el
archivo de audio?
Sí No
¿Por qué no?.
5. ¿Piensa usted que el software permite orientar el archivo de audio hacia cualquier
dirección de un espacio tridimensional?
Sí No
¿Por qué no?
6. ¿Considera que el software realiza la espacialización del archivo de audio en tiempo
real?
Sí No
¿Por qué no?
7. Teniendo en cuenta la anterior evaluación, ¿acepta usted el desarrollo del software,
indicando y verificando que cumple con las funciones para el cual está diseñado? Sí
No
¿Por qué no?