An idea for visualizing expanders, and the modules they expand

First of all I have yet to develop any expander, however many of the modules I create (or at least plan to create) either starts in an Evernote-document, or in InkScape if I have a more solid idea of what I want to do, and I have some ideas for some modules and expanders for them. The Expaners I am thinking about are very simple, and they are VERY generic in nature (I have multiple expanders I plan to use with multiple devices). These expanders can be as simply as a small 2HP modules with 8 knobs, 8 buttons, 8 trigger/gate inputs and so on. So perhaps this idea, is probably because of this generic behaviour.

The “problem with expanders” and the modules you can expand, is that this is not “documented”. Looking in the browser or looking at the modules you can’t see which “fit together”. If you have an expander that is named somewhat like the module it is expanding it’s less of an issue. But in my case with 5 VERY generic expanders, that can in some case expand each other, or at least expand multiple other modules it WILL be a fustration for users. Also I don’t like that putting an expander next to a module, that module (if it “knows” the expander) is automatic “expanded” (they are “linked” together). So I guess people in some cases delibratly have to make a 1HP “space” in the rack, or separate them by a “Blank” to prevent them from “linking” (e.g. if a device can both work on its own, or be used to expand another module).

I’m still VERY new to the VCV framework and C++, however I think this is possible. My idea was to put small “icons” on the left/right-side of the modules. In my moch-up panels in InkScape, I’ve put a small “chain”-icons next to my logo in the bottom of the pannel. The idea is that this icon can have 3 stages:

  • “Broken chain”, gray: Indicate the module can be linked to an expander, but there are not expander next to it at the moment (so nothing to “link” to).
  • “Whole chain”, gray (perhaps red): This module “can” be linked to the module next to it, but link is disabled.
  • “Whole chain”, green: This module IS linked to/expanded by the module next to it.

By default the modules should “auto-link” (like they do today), but I would like to add a “Link-mode” context menu-item, where the user can choose between: “Auto”, “Disabled”, “Disable Left-link”, “Disable Right-link”. Also I would like these “link”-icons to have a tool-tip to inform the user which expanders can be used (and perhaps what they will do). This way new users to these modules can quickly see which modules can be used as expanders, and if the modules can be expanded or not (e.g. I would only use this chain-icon in expanders, and/or modules that can be expanded).

An example bellow. The two left-most modules can link to other modules, however as they both have a broke-chain icon, they can’t link to each other. The two middle modules can- and are- linked together (green chain-icon). One of them expanding the other (I don’t see the need to illustrate who the “expander” and who is the “expanded”). The two right-most modules “could” link to each other (as the chain-icon is not broken) but as the chain-icon is not green, they are currently not linked. Hence the user must have chosen to disable “auto link” in the context menu. Perhaps the right most device can both be used as an expander, or the user want it to expand the module on its right-side, but not the module on its left side !?

VcvRackLinkIcons

Outside the visual icon which would be up to each developer (how it should look, or if they want to do something like that at all), however I would like if the VCV framework gave deveopers some way or “describring” wich of their modules “can” be linked to which other of their expanders (e.g. via the plugin.json file, just referencing the slug’s of the modules it can link with). That way VCV Rack could at run-time generate a context-menu to let users quickly add/link an expander without having to upen the browser and search for it. So either inserting a module or an expander you can simply right-click it, and from the context-menu choose which other module to create/insert in the rack on its left/right-side. E.g. a menu-item like: “Add left-expander”->“Expander X”, “Expander Y”. Just opening the context-menu the user can see whether the module can be expanded or not, and if so, but which modules/epanders.

The framework exists, check here:

Some modules, also, include that context menu, check Impromptu’s Clocked, its source is available under the GPL.

Impromptu’s Four-View can act as both an stand-alone module AND an expander.

1 Like

I like how the Carla expanders do it:

3 Likes

The docs for manifest (Plugin Manifest - VCV Rack Manual) say that Expanders should include the “Expander” tag in their manifest. In the Browser, pick “Expander” under Tags. Tags appear under Info in the module’s right click menu. If you filter by Brand, you’ll get an even shorter list of the ones that are related (although cross-brand expanders exist).

A well-designed module will mention what module(s) an expander expands in its description, so that it shows up in the hover text of the browser. Most expanders do this, often saying “”… <something something> expander for <main module>"

2 Likes

At some point I added little lights to the edges of my modules/expanders. These line up where expanders are compatible, and they don’t line up for incompatible expanders. They light up when the module and expander know about each other.

I think consistent visual cue within your plugin design (as you suggest with your chain icon) is a good idea.

2 Likes

I may have abused the concept of expanders for my use case. But it works. Red: not connected; yellow: connected but something ain’t right; green: things a-ok.

1 Like