ok, ok… Dr. Malcolm is right… manually editing json is silly
Parsing the 4ms metamodule page and automatically updating all the plugin.json files
That… I can get behind.
Parsing supported modules for Airwin2Rack...
Parsing supported modules for Bogaudio...
Parsing supported modules for ChowDSP...
Parsing supported modules for CountModula...
Parsing supported modules for Fundamental...
Parsing supported modules for Geodesics...
Parsing supported modules for NANOModules...
Parsing supported modules for OrangeLine...
Parsing supported modules for Valley...
Parsing supported modules for kocmoc...
Parsing supported modules for 4msCompany...
Parsing supported modules for AudibleInstruments...
Parsing supported modules for Befaco...
Parsing supported modules for HetrickCV...
Parsing supported modules for NonlinearCircuits...
Parsing supported modules for Valley...
Parsing supported modules for eightfold...
Updating 4msCompany plugin.json...
Updating AudibleInstruments plugin.json...
Updating Befaco plugin.json...
Updating Fundamental plugin.json...
Updating NonlinearCircuits plugin.json...
Updating OrangeLine plugin.json...
Done!
… There’s some caveats here that it didn’t manage to update the AudibleInstruments module tags because 4ms uses different names for them on their website than what’s in plugin.json, and I haven’t downloaded all the plugins yet, so I haven’t tested it 100%
I see now, i never took the time to fully understand the effort needed to actually tag them all, too busy playing the damn thing . Anyway thanks for your efforts
Wanna share your script? It would be great for this burgeoning community If not I am happy to write a python script to do this. I will have it either favorite the supported modules or add the “metamodule” tag or both.
Unfortunately the Plugins page on the 4MS site is not populated in a way that makes it convenient to scrape for the names of the supported modules. If anyone has gone to the trouble to favorite all the supported modules in Rack, can you share your config files?
And the module names on the web page do not correspond with their names in Rack unfortunately. Some vendors prepend their name to the module name and some don’t. This would be a very messy and fragile script. Really think the only pragmatic solution here is going to have to come from changes to Rack. I will be frank and say that the clunkiness of keeping track of which modules are supported (and which of the optional modules you have uploaded to the device!) while working in Rack is the biggest con of the Metamodule right now. We obviously need a MetaModule tag, but we also need a custom tag to identify if we have the plugin for the module on our device. I have suggested that Rack add a custom tagging feature and they acknowledged my suggestion, but who knows when they will get around to it.
The zip includes a cached version of the metamodule plugins page (see below), and a script (tag_metamodules.py) to parse it and pull out all the module slugs… could probably be improved to also try matching the module name as well…
To update the list of plugins in the future:
I went to MetaModule | Plugins and manually clicked each plugin button to expand the list of modules and then saved the html from chrome’s inspector pane to MetaModules.html. There’s probably a much smarter way to scrape the website without manually clicking buttons, but this works for now…
oh… you’ll also need to pip install a couple modules to run the script:
For those of you who don’t want to go through the tedious process of tagging the MetaModule supported modules as favorites, here is a link to a repo with a script that will do it for you… on Windows. I went through the process of favoriting all the modules that are currently supported (as listed on the 4MS site), and then wrote a script that exports my favorites to a json file (may be useful for other reasons). Then wrote a second script that reverses that process and imports the favorites from the json file. The script names should be self-explanatory. Note that I don’t delete any other favorites you may have added. I will add another script shortly that also adds the “MetaModule” tag to the modules listed in the json file (will borrow from @mattlongest). Super simple, but may save you an hour or so of ctrl-clicking. https://github.com/gregornoriskin/4MS-MetaModule-Scripts
All you need to do is run setfavoritemodulesinrack.py in the same folder as you have favoriteModules.json. The script will automatically generate the path to the VCV Rack settings.json file so it can be run from any folder. Let me know if you run into issues or I have missed a module.
For the Free version, well, it’s open source, so we can just compile a new version. Way more stable than editing a binary. I could work on that (but I won’t be keeping it updated with every Rack release, and I’m still committed to keeping MetaModule 100% compatible with the regular mainstream Rack program). It would be handy to demonstrate to a wider audience as a proof-of-concept whether using a tag like this is the best solution.
For Pro:… I would highly recommend checking if the licensing and terms/conditions of the Pro version are ok with modifying the binary (and posting instructions for that)
@danngreen, small problem. Unfortunately the names you have in the YAML files don’t match the names of the modules in Rack, and unfortunately for inconsistent reasons. Bigaudio prepends their company name to every module name, e.g. Bogaudio “AD” is actually named “Bogaudio-AD”, and CountModular removes all the spaces from the display names, e.g. “Analogue Shift Register” is internally named “AnalogueShiftRegister.” Of course I can special case all these conventions but it is going to quickly get unwieldy, given that I would also have to rename the Audible Instruments modules.
Sorry, for the delay, should have it by the end of the day. We’re making it so plugins will report the list of VCV module slugs they include, and the display name for each (the former will be used for this script, and the latter used for the website)