Vincent
16 supporters
Credit where credit is due

Credit where credit is due

Dec 09, 2022

So, creating Localizer took relatively little time. This is because of the great free tools already available. In this post I'll elaborate a bit on what I used to create Localizer.

It all started when I was playing with a sort of 'ray tracer' for audio, and wanted to recreate an audio scene as if you where actually there. For this I needed some model of an ear. Luckely I found great Ear models from http://audiogroup.web.th-koeln.de, which did extensive research on this. Now the audio tracer is a nice idea, but took up too much time. I thought, why not convert at least the directional filter in a plugin. This was the birth of Localizer.

From the files provided audiogroup at TH Köln I extracted 180 x 5 filters. The three filters depend on the distance from the source to the target (5), and for each distance there are 180 filters, one per degree (180...359 is mirrored from the 0...179). I wrote some code to modify the filters to have 0 delay, as Localizer adds its own delay. For this I used Python (https://www.python.org/) with Numpy (https://numpy.org/) and Scipy (https://scipy.org/), exporting all the filters to C++ arrays. So, thanks to the Python community!

Now for creating a plugin. I could start from scratch, but who would do that? So I 'ran into' Projucer and the JUCE library (https://juce.com/). This thing allowed me to focus on writing the audio processing code and not all the duct tape required to support VST and AU. There is a lot of out of the box stuff here, and it allowed me to quickly prototype the plugin.

However, JUCE's standard GUI components are not very good looking. Now, I'm not claiming Localizer looks very good. I'm just a half-baked image tinkerer. But at least I could give it some more esthetics. So, for creating the front panel I've been using Inkscape (https://inkscape.org/). Which is great for Vector imaging. Also the labels of the knobs are Inkscape, so I can quicky make new ones. However, Inkscape does not do buttons very well.

So, the final tool I used is jknobman (https://www.g200kg.com/jp/software/knobman.html) which seems no longer maintained, but still works pretty well. This allowed me to create knobs, and it was quite easy to integrate them into the JUCE GUI.

So, thanks everyone who did all this work, I could have not done it without you 🍻!

Enjoy this post?

Buy Vincent a coffee

More from Vincent