DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

65
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

Transcript of DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

Page 1: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 2: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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/

Page 3: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 4: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 5: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 6: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 7: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 8: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 9: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 10: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 11: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 12: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 13: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 14: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 15: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 16: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 17: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 18: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 19: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 20: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 21: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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]

Page 22: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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].

Page 23: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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].

Page 24: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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)

Page 25: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 26: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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).

Page 27: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 28: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 29: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 30: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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].

Page 31: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 32: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 33: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 34: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 35: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 36: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 37: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 38: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 39: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 40: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 41: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 42: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 43: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 44: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 45: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 46: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 47: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 48: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 49: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 50: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 51: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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.

Page 52: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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 ,

Page 53: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 54: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 55: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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 ]

Page 56: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

;-------------------------------------------------

Page 57: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 58: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 59: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 60: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 61: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 62: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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

Page 63: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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 >

Page 64: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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:

Page 65: DESARROLLO DE ALGORITMO PARA LA IMPLEMENTACIÓN DE …

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?