Audio Binaural

Cómo configurar la espacialización binaural en tiempo real

Este ejemplo muestra cómo aplicar una base de datos HRTF para lograr espacialización binaural, creando un entorno 3D donde la posición del oyente y la fuente determinan el resultado. La base de datos también puede ser cargada de manera asíncrona.

// Configurar el grafo para renderizado
let context = Assembler(rendering: .live).createAudioGraph()

// Configurar una fuente de audio (Renderer) a partir de un archivo local
let url = URL(fileURLWithPath: "/path/to/source.wav")
let source = FileRenderer(contentsOf: url)

// Configurar la base de datos a partir una ubicación local
let url = URL(fileURLWithPath: "/path/to/database")
let database = BinauralDatabase(location: url, sampleRate: databaseSampleRate)
let _ = database.loadSynchronously()

// Configurar un espacializador binaural y parámetros
let destination = Binaural(database: database)
destination.position = .init(x: 0, y: 0, z: 0)
context.listener.up = Vector3<Float64>(x: 0, y: 1.0, z: 0)
context.listener.position = Vector3<Float64>(x: 0.0, y: 0.0, z: 0.0)
context.listener.forward = Vector3<Float64>(x: 0, y: 0, z: -1.0)

// Configurar la conexión de los nodos
try context.connect(source: source, to: destination)
try context.connect(source: destination, to: context.destination)
source.play(after: 0)

El siguiente video muestra el código de ejemplo en acción y su procesamiento en tiempo real.

Para obtener una descripción completa de cada clase, método y propiedad mencionada en esta sección, consultá la documentación oficial de la API, donde encontrarás referencias detalladas, parámetros disponibles y ejemplos adicionales de uso.

Última actualización