## Analyse

### Transient-detectie

Een van de doelen van de app is om er voor te zorgen dat als je niet midden tussen van je speakers zit, het wel te laten lijken alsof je in het midden zit door van een van de speakers het geluid te vertragen. Dit wordt gedaan door op beide speakers apart meerdere transients af te spelen en het verschil in response te meten en dat als vertraging toe te passen op de speaker met de kleinste response tijd.

Een transient wordt gedefinieerd als een korte harde toon die wordt weergegeven als een piek in een waveform grafiek. Voor het detecteren van een transient kan je niet zomaar de hoogste piek namen in je dataset omdat dat niet perse een korte harde toon is. Hiervoor moet je wat breder kijken dan per sample.

### Frequentieresponsanalyse

Een van de onderdelen van de analyse die binnen de applicatie plaatsvindt, is de frequentie-responsanalyse. Bij deze analyse wordt bepaald in welke mate bepaalde frequenties aanwezig zijn binnen een gegeven geluidsfragment. In het geval van de applicatie moet bepaald worden of iedere frequentie door de even luid wordt waargenomen op de plek van analyse.

Voor het testen van de frequentie-respons van alle frequenties zijn meerdere methoden. Hierbij kan gebruik gemaakt worden van witte ruis. Wanneer witte ruis gebruikt wordt, wordt deze afgespeeld en tegelijkertijd opgenomen. Deze techniek is gestoeld op het principe dat in witte ruis theoretisch gezien iedere frequentie even sterk aanwezig is. Als er dus in de opname een frequentie sterker of minder sterkt voorkomt, kan gesteld worden dat dit een gevolg is van de omgeving of het reproductiemedium.

Voor het daadwerkelijke manipuleren is gekozen om gebruik te maken van convolutie. Binnen de applicatie is convolutie bruikbaar als geluidssignalen gezien worden als functies. Neem bijvoorbeeld de onderstaande vergelijking: $$f(x) \ast g(x) = h(x)$$ Hier is \(f(x)\) het oorspronkelijke geluidsignaal en \(h(x)\) het signaal dat de luisteraar opvangt. \(g(x)\) is een vervorming die door de omgeving en het reproductiemedium ontstaat en deze laat signaal \(h(x)\) van \(f(x)\) afwijken. Om dit te voorkomen kan een convolutie worden toegepast op het oorspronkelijke signaal \(f(x)\) en de inverse van \(g(x)\). Dit is geïllustreerd in onderstaande vergelijking. $$f(x) \ast g(x)^{-1} = \hat{h}(x)$$ Gesteld kan worden dat deze \(\hat{h}(x)\) dichter bij \(f(x)\) ligt dan \(h(x)\), ergo: $$f(x) \approx \hat{h}(x)$$ \noindent De \(g(x)^{-1}\) is binnen de applicatie de filter-kernel welke tijdens analyse verkregen wordt. Volgens het volgende algoritme vindt de convolutie plaats van het oorspronkelijke signaal en de filter-kernel:

## FAQ

### Werkt dit echt?

Meestal wel - alleen moet u niet verwachten dit te kunnen laten werken met speakers van 5 euro.

### Op welke devices werkt dit?

Dit is getest op devices die android 8.0 runnen.

### Support available?

Stuur een mail naar Chris of Robin

### Updates?

Nooit.

### Known bugs

A lot

### Waarom zo tryhard

-