MetaModule Tag in Rack to identify supported modules

When you have the terminal open type “pip install pyyaml” and then try running the script. I will also update the script with the other URL that @danngreen suggested.

Done. Change pushed to github.

OK, downloaded from the newest Github release.

I already installed the “pip install pyyaml”, but tried it again for good measure. Still get the same ModuleNotFoundError: No module named ‘yaml’ error.

Opening from Python Launcher, “Error: Failed to fetch plugin data: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)>”.

Could be user error but I’m following everything as close as I can.

Thanks for the insight!

I had no certificate complaints when using the requests library (which as far as I know ultimately uses urllib).

yaml_links = {
    'plugins': 'https://metamodule.info/dl/plugins.yml',
    'built_in': 'https://metamodule.info/dl/built_in.yml',
}

datas: List[ProcPluginData] = list()

for y in yaml_links.values():
    r = requests.get(y)
    # print(r.text)
    repo_data = yaml.safe_load(r.text)
    for v in repo_data.values():
        datas.append(process_plugin(v))

On MacOS? I could also try using requests and see if that fixes the cert issue.

That’s on Windows, but I think most Python devs would recommend using requests in general.

And if you’re absolutely sure that no one is actually trying to pull a man-in-the-middle attack and it’s just busted certificate stuff from the OS, could try setting verify to false. But really you shouldn’t need to do that.

This looks to be a common issue, but the work-arounds impact the security of the script and potentially your device, so I will leave that up to you to implement. See python - SSL: CERTIFICATE_VERIFY_FAILED with Python3 - Stack Overflow.
What I will do is create a new script that assumes that you have manually downloaded the two yaml files and that they are in the same directory as the script. Then there will be no issues with HTTP certs. Not sure what working directory the Python Launcher uses, so probably will require that you run the script from the command line. And if you are still getting that error about not finding the yaml import, then just run pip or pip3 in the terminal just before you attempt to execute the script. Note that sometimes the “pip” command is actually mapped to the python 2 runtime while python is mapped to python 3, so it does not “see” the loaded module. Best thing to do to be certain is to explicitly run pip3 and python3. Then you know you are always getting the correct version of python and pip.

1 Like

Created the new script and renamed the scripts again so it is clear where they are importing from. Also added the latest versions of plugins.yml and built_in.yml so the script will run if you just clone the repo, though obviously these will get out of sync with the files on the 4ms site.

Scripts:

  • exportfavoritestojson.py (VCV → json)
  • importfavoritesfromjson.py (json → VCV)
  • resetfavorites.py (remove all VCV favorites)
  • importfavoritesfrom4ms.py (official YAML files from 4ms site → VCV, requires installation of pyyaml library)
  • importfavoritesfromyaml.py (local YAML files → VCV, requires installation of pyyaml library)
2 Likes

Thanks for all your hard work. I am still unable to get this to run grabbing from the 4ms site, tried just about everything. I am pretty sure I have Python 3 installed from Monome stuff. HOWEVER, I was able to download the YAML files, and import them using importfavoritesfromyaml. Thank you! I suppose I’ll just have to keep this updated?

edit: Wow, thanks again. This makes patching in VCV so much easier, knowing what modules work on the Meta.

This is great! Thanks!

Thanks @steveflato. I am a professional software engineer and have fully embraced GitHub Copilot, so really not a lot of work. I do enjoy contributing to making other gearhead’s lives easier.

I have been experimenting with adding the “MetaModule” tag to supported modules, but frankly it doesn’t have much additional utility in the current version of Rack over what the favorites gives you. I know there is a custom build of the free version of Rack that supports the tag, but that is neither a long-term solution, nor one that Pro users can take advantage of (I am one of those). So unless someone specifically wants the tagging I am not going to invest any more time on it. Let me know. Cheers.

Thanks also from here, @thetenofswords just ran importfavoritesfrom4ms.py on a mac and it performed flawlessly first time.

So it sounds like GitHub Copilot is actually helpful, huh? Every time someone tells me they’ve been working with an AI to help code, I always think it seems to suck up a lot of time trying to debug issues. I may have to look into copilot though!

@demcanulty Github Copilot is more than just helpful, it is revolutionary. It is true that it can make subtle errors, but that is usually because you have failed to provide it with the correct prompt (or comment or context). It is particularly good for creating boilerplate code, e.g. “Create a React component that allows the user to select multiple elements from a list, populated from x REST endpoint and save the result to y REST endpoint.” It will grok which React patterns you have used in your file (or files in your project) and then generate the code for you. It is also great for generating regular expressions or implementations of well known algorithms (search, sort, etc.). Give it a try!

Read through this post and did not have any success with getting the favorites isolated down to only show on vcvfree on macOS. Ran into python issues which I resolved, but still having issues with the scripts. Is there no easy way to only isolate the modules available without spending hours building a favorites list?

For us programming novices, can someone recap exactly what steps to do you get this working? Do I need to install python on my Mac?

I have not tried this script but I think the quickest way to install all the MM-supported modules in VCV Rack is:

  • go to the MM plugins page and copy the list of plugins
  • go to the VCV plugins page (not the main library, which lists individual modules, but the plugins page)
  • search for each of the plugins on the list (there’s only 17 since you can skip VCV Fundamentals) and click “Add all”

This has the disadvantage of adding a few modules that haven’t yet made the jump to MM, but it’ll take less than five minutes and get you 95% accuracy without having to mess around with installing Python or anything like that.

1 Like

Thank you for outlining this! Much appreciated ! So, currently, there is no way to visually see which VCV modules are working with MM?

For me, I’ve already downloaded all free VCV Rack plugins.

Oh I see, you’re trying to favorite the modules, not download them. In that case, yeah, you can do them one at a time by hand or get this script working.

If this feels clunky it’s because MM is built to work with VCV Rack but VCV Rack has not been developed to work with MM, so there’s a few pain points like this.

1 Like