This post is to discuss possible usability-related changes to VVVV, spawned off of this thread: https://discourse.vvvv.org/.
VVVV’s user interface and general structure is minimalist as a matter of principle. This itself is a good thing (to me, anyway). However, there are a number of changes and additions which could be made to improve the usability of the application, particularly with regard to editing patches. Many of these have been discussed in scattered posts and comments on the forum, so this thread can be a place to bring them all together in one place for discussion.
Categories:
- Configurability
- Patch/asset management
- Patching shortcuts
- General UI enhancements
Configurability
This sort of thing is an important part of how I use development tools in general. In some ways you can currently do this sort of thing by putting nodes in your root patch an tweaking their pin values (such as VVVV (VVVV) and the other nodes in that category). However, this is somewhat limited, and doesn’t work well if you use separate root patches for different projects.
- Configurable keyboard shortcuts. This tends to be fairly simple to implement, but can provide users with a much greater sense of control over the application. This will also allow users confused by some of the non-traditional keyboard shortcuts (ctrl+N = new node browser?) to change them to fit their own expectations.
- Configurable defaults for newly created nodes, including things like setting default pin values and default visibility of pins (I usually don’t need the _ Epsilon_ pin of = (Value) ), etc.
Patch/asset management
Almost all of the work that I do in VVVV is organized into projects. These are usually each stored in their own directory, with a single “main” patch and a bunch of modules, data files, effects, etc. Adding some basic file management features, and direct support for the concept of “projects” would make this all much easier. The ProjectExplorer (VVVV) node is definitely a step in the right direction, but it is focused on effects and plugin/visual studio projects.
- {new} Collect files / save project. You could address the issue of dynamically loaded assets by having a project file where you explicitly define which files/directories are part of the project. That way you could just say “include everything in awesomeimages/”.
Patching stuff
- Some sort of UI for a customizable list of common snippets of patches
** {new} QuickNodes appears to provide this functionality in a basic sense (and I really need to start using that). It would be nice to be able to provide it with more than just a list of node names, and to be able to have it include groups of nodes. For example, inserting a RandomSpread hooked up to an LFO, etc. Maybe that could be accomplished by telling QuickNodes that an entry in its list is to have a modules contents inserted and not just a node that references the module.
** {new} It may be possible to implement this in a patch using the windows Clipboard nodes. - Node linking shortcuts, such as “connect the first output of the selected node on top to the first input of each of the selected nodes on the bottom”, and so on. Users of Max/MSP may be familiar with the Max Toolbox (http://code.google.com/p/maxtoolbox/), which implements many of these sort of behaviors.
- more configuration of the application in general… maybe including the ability to enable/disable window close buttons, etc
- {new} Anonymous (within another patch) sub-patches. My person approach to this tends to be to use namespacing like myproject.scene1.calculations.v4p for modules that are only used within the myproject.scene1.v4p patch (I tend to use non-standard naming conventions for my project-specific stuff, which also helps differentiate it from shared modules).
- {new} Pull the selected nodes into a sub-patch or module without breaking their connections to other things… this could be implemented for normal file-based modules by popping open a save dialog for the sub-module when you do it.
-
{new} Grouping nodes.
** Yes. We need this… or at least some way to visually indicate it like the panel idea. Having the nodes actually be stuck with each other would be much more useful than just having a colored panel behind an area of a patch. (but having both features would be even better!)
** see also: https://discourse.vvvv.org/t/8412
** possibly other kinds of visual cues to indicate groupings - {new} Ctrl+tabbing in full-screen to show renderers etc while editing in fullscreen mode (may currently be possible using ctrl+T to stay on top, etc)
General UI enhancements
- Zooming (which I know supposedly exists, but I’ve never seen it work)… possibly with ctrl+mouse wheel? … or configurable?
- Specialized, persistent non-patch windows, menus, etc. I have customized the root patch that I use to always have a Inspektor (VVVV) on the top right of my screen, and a log display patch that I made (which is somewhat buggy) on the bottom right. If the project/file management window discussed were added, I would probably want to have one of those open almost all the time as well. The current concept of “everything visible is either a patch or a detached render” is really really useful when running patches/performing, but not so much when editing.
- IOBox label transparency / configurability (show on top vs bottom, etc)
- Panels with borders and background colors that can be placed in patches to visually group together areas of a large patch.
- {new} Larger (or configurable?) mouse snapping area for selecting/connecting links/pins.
- {new} Optional snapping of node placement to a grid. I really like to have this option in any kind of diagramming/patching software.
So, that’s just what I’ve come up with and what I’ve encountered in the forums, but there’s probably a lot more. The past few releases have been focused on the performance and reliability of the engine, and the addition of new nodes, etc. This has been excellent. Perhaps the next releases can take a break from optimization to make some of these improvements.