JW Plugins on MM?

I was looking at this section:

Notice that you must give the path to the plugin.json file that the Rack-SDK requires. This file is read by the MetaModule in order to get the brand name and slug.

  1. Create a plugin-mm.json file. Read more about this file here. You can just use a blank file to get started.

touch plugin-mm.json

So that error is saying it can’t copy the plugin.json file into the temporary directory it’s using to create the plugin .mmplugin file.

When it says ā€œCreating plugin at ā€¦ā€ that means it’s attempting to create the plugin (I see how that wording is confusing and sounds like it already created the plugin). But then it hits an error and won’t actually make the plugin file.

What’s failing is that it can’t copy the plugin.json file from ā€˜ā€¦/Rack/plugins/JW-Modules/’ to the temporary directory which is in ā€˜/Users/jeremy/vcv/JWMeta/build/JWMeta’.
My first guess is the path to the plugin.json is wrong. I would first try specifying a full path instead of a relative path. You can use the cmake variable ${CMAKE_CURRENT_LIST_DIR} as a starter. Something like:

create_plugin(
    SOURCE_LIB      JWMeta
    PLUGIN_NAME     JW-Modules     #see my comments below
    PLUGIN_JSON     ${CMAKE_CURRENT_LIST_DIR}/../Rack/plugins/JW-Modules/plugin.json


Above I filled in the path for PLUGIN_JSON with a full path, but I’m just guessing what it should be. The variable CMAKE_CURRENT_LIST_DIR will changed to the full path to the CMakeLists.txt file, so make the path relative to that.

Less likely (but possible–I just helped someone else with this exact issue) is that the file permissions for either the source or dest got messed up (e.g. accidentally ran sudo to build something)

Also, I see the use of JWMeta. That’s OK to use as the cmake library name, but in the PLUGIN_NAME field of create_plugin() you need to specify the VCV Rack brand slug for your plugin. I’m guessing it’s not really JWMeta? If not, then change it to what VCV uses for the brand slug. You can change the display name in the plugin-mm.json file, but you have to have the slug match what VCV uses or else when people create patches in VCV with your modules, the MetaModule won’t know to look in your plugin for those modules.

got it thanks! now it creates the plugin at /Users/jeremy/vcv/metamodule-plugins/JW-Modules.mmplugin

What are my next steps? I know some of my modules will either have to be modified or excluded. Like for example clicking on NoteSeq in a drawing to add a cell won’t work but clicking randomize should work. But how do I test things out? My actual meta module hardware should be coming today.

There is a MM simulator:

6 Likes

Looks like you are making progress!!!

super awesome really excited to try these modules out!!

Awesome! Looks like you figured out external plugins in the simulator, too. Not all things work there, it’s primarily a UI simulator (but usually audio/CV signals work too).

Next steps… Once your hardware is up and running, then running the modules on it will give you a sense of the CPU loads and if you need to do any optimizations for the 32-bit architecture. (keep in mind there are two cores, and the % number shown is the % load of a single core).
Also just going through the modules, testing them out to make sure they behave the same on VCV as on MM (or at least document any differences). You can do some of that on the simulator by putting .yml files in the patches/ dir.

Looking nice!

7 Likes
10 Likes

Holy cow. I’m old enough to remember when virtual modules in the MM couldn’t do their own graphics.

5 Likes

Those are looking good! :+1:

One of my modules AbcdSeq freezes the hardware module. Its the only one with a text box so I am wondering if you think thats it?

Could be? Make sure you have the ttf font in the assets/ dir if you’re using a custom font. If you try to use a font but it’s not loaded, then it could crash.
I fixed a bug recently where using the fallback font in Rack was making it crash (because until recently that font was not present on hardware).

I tried pulling the latest code for the sdk and also updated the firmware to v2.0.0-dev-12.10-rc2. It looks like vcv does the below and I tried copying that font into my assets at /assets and /assets/fonts but nothing changed.

LedDisplayTextField::LedDisplayTextField() {
	fontPath = asset::system("res/fonts/ShareTechMono-Regular.ttf");

still freezes right after loading and running a patch.

I can also share code or the plugin, whatever will help debug this. Is there a log?

I am on v2.0.0-dev 12.12. I got a sequence to play but it still locks up. The fact that it locks up while the sequence is playing leads me to believe this has something to do with the graphics. Perhaps @danngreen can test it.
JW ABCD TEST.yml (9.6 KB)

here is JWModules.mmplugin (with some bugs)

https://www.dropbox.com/scl/fi/isu1yr28rlvwre89rbx3h/JWModules.mmplugin?rlkey=q5rzkcywd88l9oukezsivvd7b&dl=0

3 Likes

excellent! XYpad is working and looking great on mm so far (pairing well with 4ms slew)

Thanks I’ll give that a try.

There’s the log output via some header pins on the back of the unit. You need a UART to USB cable to view it: