One of the larger things I’m trying to solve with my plugin is having complex data containers (i.e. Lists, Vectors) be available to the GUI.
For example, in JUCE’s plugin examples, they have an Arpeggiator plugin that stores the currently played MIDI notes (as integers) in a SortedSet to be able to do the arpeggiation. Imagine there was a custom piano GUI component that would display the currently played notes. How would one do this with AudioProcessorValueTreeState (APVTS)?
So to do the currently played notes GUI, APVTS with the integer SortedSet would be fine? As you said, looking at JUCE’s var definition, it seems containers like list, vectors, and SortedSets are not convertible to var.
I always thought APVTS was intended for parameters that are simple (bool, int, float) (as no example plugin I found uses anything more complex), parameters that are intended to be automated, and parameters that are intended for its state to be saved. If APVTS can’t be used for containers, would passing down the chain of GUI elements a struct containing this information, along with the pointer to APVTS for everything else, be the only option?
Then I could imagine then one could just use a ChangeBroadcaster to notify the piano GUI component that the set/stack has changed, so it can redraw, repaint, etc.