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.
Última actualización