I’ve thought about this a lot and understand how much it contradicts the ‘VVVV philosophy’. But let’s fantasise anyway, shall we?
Why not have the ability to make nodes with custom UI? In Beta, there was an option to do something similar (quite successful by the standards of that era, but with its own problems). Remember? Something like Alt+2 or Alt+3. I sometimes used it to create the ability to see some ‘internals’ in the patch, sometimes to display IOBoxes, sometimes even to bring subpatch control to some area of the patch so that I could then control the subpatch.
For example, a similar philosophy is used in Blender Geometry Nodes (the last place I saw it, I’m sure there are other examples). There, you bring the controls into the Blender interface if you export the parameters inside the patch.
If nodes are drawn using Skia, then theoretically it should be possible to create nodes that could draw Skia canvas inside the node area, right? And if so, then it would be possible to create a node with imgui inside this area or even draw something else. That would be really cool! What possibilities for patch management or design! Perhaps there is some other logic, but sometimes you really want to get a slider, a field for changing values without over-patching.
As I write this, I ask myself: why would this be necessary at all? Wouldn’t it negatively affect the compilation of the application into an executable file? It’s a lot of effort, and there are probably more important things. But let’s just imagine, wouldn’t it be cool?
If I understand it correctly and this is what it comes down to - which I can totally sympathize with - then probably the Public Channels and the channel browser are the closest to this already.
You get to adjust values using a UI while patching but you also have tons of other valuable possibilities, like saving/recalling presets, binding to Midi/OSC and more. Just create subchannels for each patch, so its neatly organised. If you have your public channels logic in process nodes than its super easy to even automate the creation of public channels and such.
Actually, I mean something completely different. You might find something similar between public channels (plus the channel browser) and what I’m talking about. But it’s completely different. I’m talking about nodes with a custom UI inside the node — a UI-in-patch.
Keep in mind that a vvvv patch is code that can get compiled. If you introduce UI elements in the patch, they would need to be integrated into the compile step.
So what would happen when you compile the patch? Do they just keep the last setting? Are they internally modifying code, and when compiled, it gets “frozen“ into the app?
Or are they already compiled little programs that then get integrated into the compiled app? So that the UI elements somehow appear in the compiled program and can still interact with the user.
The HDE kind of gives us that already, but you click the node to do it rather than the IObox. But I agree it would be nice to be able to change the look of an IOBox, Say, selecting which channels a texture shows or how often the preview updates. In Fuse it could be the number of dimensions of a Noise or the Min/Max of a gpu value.
I also agree that it would be good to just look at a patch and get more insight into what’s going on
Honestly I’m against setting up IO Boxes that way because it produces a lot of props, however this should produce a patchable UI element, with user up to decide what he want’s from logic…
The question is that it needs kind of stable canvas api, witch I suspect and utter mess currently…
Perhaps it would be beneficial to have some sort of Sandbox for working with IOBoxes or creating widgets. It seems as though I am lacking the experience of Beta, where I could quickly create tables in which I could view data, some sort of visualisations, subpatch control via the subpatch interface, and not just via pins.
Perhaps this could be solved with something like Context or, by the way, simply by implementing an operation in a process or object.
But that’s why I’m saying it would be great to let your imagination run free, to fantasise about what it might look like, what solutions could provide it.