Onderdeel van De stappen tot een immersive digital audio twin
Wat is een zaal auditief?
Een ruimte reageert op geluid dat erin weerklinkt. Geluid is energie die tegen een vaste snelheid reist door de ruimte en zal botsen op de oppervlakken in de ruimte. De energie wordt geabsorbeerd en/of gereflecteerd. Die reflecties zijn kettingreacties die blijven doorlopen tot de energie opgebruikt is. Het geluid dooft uit.
Met zo’n formulering denk je misschien dat we een ruimte volledig fysich gaan modelleren met complexe wiskunde, om zo algoritmisch te benaderen hoe de ruimte zou reageren op geluid.
Er worden zeker zo’n soort systemen gebouwd, maar eerlijk gezegd staan we met zo’n benadering nog niet ver genoeg dat het echt een overtuigende kopie van de ruimte is – laat staan ook nog eens immersive en performant is. We hebben bij PXL-Musi Research helaas ook niet de middelen om een volledige modelling engine uit te bouwen met zo’n complexe wiskunde.
Er is al wel decennialang een gevestigde waarde: een impulse response maken en die gebruiken in een convolution engine.
We gebruiken een specifiek geluidssignaal genaamd een sinus-sweep. Dat is een doorlopende sinusfrequentie die gaandeweg stijgt in toonhoogte.
Je speelt dat geluid af door een luidspreker in de ruimte en neemt het resultaat op. In de opname zit de sweep en de reactie van de ruimte erop, wat via deconvolutie omgezet kan worden naar een impulse response. Je haalt de sweep uit de opname en houdt enkel de respons van de ruimte over. Die respons wordt dan gealigneerd in de tijd (samengedrukt) zodat alle frequenties tegelijk starten in plaats van na elkaar. Het klinkt bijna als een geweerschot.
Via convolutie kan je dan nieuwe geluiden door de impulse response sturen, wat dan klinkt alsof je het door de virtuele ruimte stuurt. Klinkt simpel genoeg, toch?
Hoe capteer je een zaal auditief?
We weten nu hoe convolutie werkt, maar hoe doen we dat dan in immersive?
We wilden een resultaat dat zowel via luidsprekers als koptelefoon zou werken. Daarom beslisten we om een microfoonsetup te nemen die 1-op-1 gekoppeld is aan bepaalde speakers. Specifiek een 5.0.4: links voor, center voor, rechts voor, links achter, rechts achter, linksboven voor, rechtsboven voor, linksboven achter, rechtsboven achter (L-C-R-Ls-Rs-Ltf-Rtf-Ltr-Rtr). Vele immersive systemen kunnen channel-based naar binaural omzetten, dus een logische keuze.
Andere systemen zoals ambisonic werken ook voor luidsprekers en koptelefoon, maar omdat alle capsules bij ambisonic op hetzelfde punt zitten mis je tijdverschillen tussen de capsules. In het verleden hebben we al ondervonden dat die tijdsverschillen cruciaal zijn voor een indruk van ruimte.
Omtrent keuze van microfoons, plaatsing, directiviteit en meer zijn er allerlei benaderingen. Wij hebben nog geen ultieme setup gevonden. Omnidirectionele microfoons zijn sowieso belangrijk, omdat die de lage frequenties goed kunnen opnemen. Maar cardio en hypercardio microfoons kunnen ook van meerwaarde zijn omdat ze juist heel gericht geluid opvangen en dus een groter onderling contrast creƫren. Verder onderzoek is nodig!
Omdat we niet genoeg luidsprekers hadden voor elke microfoon, zetten we 1 luidspreker op 9 posities, zodat elke microfoon zeker 1 sweep specifiek ernaar gericht kon capteren. Dat is voor onze workflow in immersive een noodzakelijk minimum. Hou er ook rekening mee dat de luidspreker zoveel mogelijk op dezelfde afstand blijft. Indien dat onmogelijk is (zoals in de hoogte), probeer dan vooral consequent te zijn binnen de links-rechts koppels.
Meer weter over wat nu wel en niet belangrijk is qua geluiden voor een impulse response? Lees het hier.
Hoe verwerk je die captatie?
Deconvolutie zoals het beschreven is kan je doen in allerlei omgevingen. Wij gebruikten Reaper ReaVerb om de impulse response .WAV-bestanden te genereren.
Die bestanden kan je dan in een convolutietool inladen, zodat je geluid door de impulse responses kan sturen. Op die manier krijg je een simulatie van de ruimte.
Helaas zijn er niet veel tools die convolutie in immersive doen. Er zijn dikwijls beperkingen, meestal zijn ze enkel te gebruiken met impulse responses van de fabrikant. We wilden bovendien een simulatie van hoe geluid zich doorheen de ruimte verspreidt afhankelijk van de positionering van de bron (we noemen het simpelweg ‘crosstalk’).
Binnen de beperkingen van onderzoek leek het voor ons bij PXL-Music Research logisch om in te zetten op de omgeving die wij en de geluidstechnieker die zou mixen voor een digital twin kent. Dus zagen we weinig andere opties dan zelf een immersive convolution tool te maken in ‘plugin’-vorm.
Deze plugin zou de simulatie van de ruimte voor zich nemen en werken in omgevingen met VST-, AudioUnit- of AAX-ondersteuning. Daarmee dek je de lading van DAWs, maar even goed scripting-omgevingen zoals Max, dsp-systemen zoals van Fourier Audio en meer.
We hebben een proof of concept gemaakt van een plugin, die we zelfs live tijdens concerten in onze use case in de AB Club hebben gebruikt. Er is ook vraag van studenten op PXL-Music om de plugin te gebruiken voor hun eigen onderzoeksprojecten.
Het hele traject van concept tot proof of concept is te complex om volledig uit te leggen, omdat de C++-programmeertaal vereiste voorkennis is. We hebben daarin enorm gesteund op het software framework JUCE, specifiek bedoeld voor ontwikkeling van audiosoftware.
JUCE biedt een abstractie/omkadering aan zodat je platform-onafhankelijk kan ontwikkelen. Je kan vooral focussen op de signaalverwerking en de user interface, zonder teveel rekening te moeten houden met alle verschillen tussen VST, AudioUnits, AAX, Windows en Mac.
Hoe gaan we verder naar een afgewerkte audio twin? Lees hier verder.