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 !?
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.