Juce – MVC with custom XY Pad component from Trond Lossius on Vimeo.
After two failed attempt, the third attempt succeeded.
This is a fairly simple plugin, and is mostly meant as a study (étude) into a specific programming problem when developing plugins in C++ with the Juce framework. The plugin controls gain and pan. ValueTreeState enables model-view-control separation, and as compared to an earlier study, it expands by implementing a custom component in the form of a two-dimensional control pad that controls gain as well as pan.
In figuring this out, I have drawn extensively on YouTube tutorials by Akash Murthy and Florian Mrugalla, and not least source code for the IEM ambisonic plugins. From the latter, I have in particular studied code for the SpherePanner component and the ProbeDecoder plugin.
This brings me one step further towards implementing DBAP as a VST plugin. That is itself a study towards porting Ambisonic Toolkit higher-order functionalities from SuperCollider to plugins. I hope to be able to embark on that journey later this year.