MetaModule Tag in Rack to identify supported modules

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%

“God help us, we’re in the hands of engineers.”

2 Likes

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 :rofl::rofl:. Anyway thanks for your efforts

Amazing. What happens when there’s an update to a module though (via VCV Rack)? Wonder if that json file gets overwritten.

Yep, had the same thought. Luckily, re-running a script to automatically tag all the modules is pretty easy compared to manually re-tagging them all!

1 Like

Wanna share your script? It would be great for this burgeoning community :slight_smile: 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.

1 Like

Or better yet, we can just have @omricohen ask the Rack folks to add the “metamodule” tag :slight_smile: He must have some influence there.

1 Like

“For assistance with your VCV account, feature requests and bug reports”

Done. Sent my request :slight_smile:

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.

** WINDOWS ONLY**

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:

pip install lxml
pip install beautifulsoup4
1 Like

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.

This is awesome, I love a good script!

Can I help by providing the raw plugin manifests so you don’t have to scrape?

Here’s the plugins.yml: https://metamodule.info/dl/plugins.yml

Here’s the built_in.yml: https://metamodule.info/dl/built_in.yml

These will be automatically updated if anything changes (well, they’re in sync with the Plugins page on our site, at least).

The one little bit that’s odd is that the AudibleInstruments => ClonedInstruments. The manifest above uses the CI names. Here’s the mapping:

1 Like

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)

This is awesome thanks! I will create a new script to pick up the latest yml files from those URLs and favorite them in Rack.

1 Like

ooh! Thanks @danngreen ! good call! I made a build of libRack.dll and added a “Metamodule” tag (no longer stealing the “Compressor” tag)

** VCV Rack version 2.5.2 FREE Only! Will not work with Pro! **
Instructions:

  • download libRack.dll
  • Ensure VCV Rack is closed
  • Go to C:\Program Files\VCV\Rack2Free
  • Rename libRack.dll to something else, like libRack_OLD.dll
  • Copy the downloaded libRack.dll to here
  • Open VCV Rack
1 Like

@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.

Ah, ok I think I can fix that.

@danngreen, let me know when you have those yaml files updated and I will finish the script to favorite and tag all the modules in Rack.

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)