VCVRack: development

a thread for discussions / questions related to hacking VCVRack and developing plugins for it

useful links:

https://vcvrack.com
https://community.vcvrack.com
https://github.com/VCVRack
https://vcvrack.com/manual/PluginDevelopmentTutorial.html
https://github.com/jeremywen/JW-Modules/wiki/Dev-FAQ-for-VCV-Rack
https://github.com/squinkylabs/SquinkyVCV/blob/master/docs/efficient-plugins.md

other threads:
VCVRack virtual modular synthesizer
WW+MP+ES in VCVRack

13 Likes

made the OP a wiki so that anybody can edit/add links.

first question: what’s the best practice for measurement units? the panel manual says SVG files should use mm, not pixels, and source generated with helper.py uses mm2px function:

ddOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(84.497, 110)), module, Test::OUTPUT4_OUTPUT));

what are some considerations for choosing one over the other?

1 Like

I get the impression you don’t really have a choice? Has to be mm?

yeah the post (and the plugin dev manual) talks about using mm when designing panels, but i wasn’t sure if it applies to code as well. from what i can tell it does expect mm to be used, including nvg stuff, but then why does it convert to pixels (using mm2px) when creating inputs/outputs etc? i thought maybe it’s because these functions haven’t been converted to use mm but then even vcvrack’s own set of plugins has examples of both using same functions without pixel conversion and with conversion. it could be that not everything has been updated yet but that’s why i want to find some concrete info. i’ll ask on the vcvrack forum as well.

1 Like

does anyone know why they removed the favorites section from the module selector? like if theres a post or specific reason?

i’m strongly considering readding the feature myself because its kind of mind boggling why they removed it just because they changed to a system with pictures of the modules.

Relevant GitHub issue:

thank you. i thought it would be like this :confused: guess i have to make a whole seperate fork lmao. because of the main developers personal use case lmao.

edit: i am still new to open source software uhhh diplomacy? is it worth it to make a really good case for it and submit an issue again or a pull request to try to integrate whatever i come up with into the main branch. i personally think the favorites feature is invaluable, even if your favorites are changing all the time…

It’s a conversation. You can make your case (or better yet, a pull request) and Andrew can take it or leave it. He’s a very direct communicator, so whatever happens, it won’t be vague.

1 Like

added a couple of super useful links (big thanks to Jeremy Wentworth and Squinky Labs for creating these):

https://github.com/jeremywen/JW-Modules/wiki/Dev-FAQ-for-VCV-Rack
https://github.com/squinkylabs/SquinkyVCV/blob/master/docs/efficient-plugins.md

and some quick tips from personal experience:

  • output voltage needs to be set each time process is called, not only when a CV changes - if you don’t set it, it’ll go back to 0

  • if you use helper.py to generate code from svg file and some components are off or not shown, check if you grouped them - grouping messes with coordinates

So uhhh… crow in vcv ? Il leave that here. We are all thinking it

Continuing from VCVRack virtual modular synthesizer

I wanted to specify the location of the screws to match the original panel. Perhaps a bit OCD, but I’m relatively sure it’s possible?

you can change the location in the code easily but if you want to take advantage of the helper script just use a different component type to get coordinates generated for you and then replace the components with screw components in the code.

and helper is a python script so adding support for new component types should be very easy. i modified it so that it generates code using my own custom components, this way i don’t have to update each time i update the panel.

1 Like

Hey @zebra, what are your thoughts on having a Softcut module in VCV? I’m thinking that @andrew’s work on porting it to Max should be helpful.

2 Likes

sure. i would do some work to factor the core functionality into a separate repo (static lib target.) there are a number of improvements coming into the upstream (norns) version and i don’t want to have to manually sync them.

fwiw i’ve also run the thing on teensy3.

4 Likes

Has anyone run through the plugin dev tutorial lately? I just did on Mac w/ 1.1.6, using the Rack-SDK method instead of compiling Rack.

There’s a step about adding the module to plugin.cpp & plugin.hpp that’s in the output from the helper.py script, but otherwise the tutorial seems solid. That said, I’ve compiled and installed the tutorial module but it’s not showing up in the Rack module browser.

Is there an issue with the tutorial? Do I need to do something to Rack to trigger a re-scan of the available modules?

EDIT: Fixed. I had installed a bad build (before I found that extra bit in the helper.py output) and it was creating a namespace collision. NOTE: Logs are helpful. ~/Documents/Rack/log.txt if you’re looking.

EDIT2: I’ll submit a doc PR to add that helper.py bit.

1 Like

Great, thanks! I think I want to tackle that then after I get farther along with the Nonlinear Circuits port.

This might be worth starting a separate thread, but I’m thinking that it might be fun to start a Lines Community VCV Plugin, with VCV module ports of a lot of the tools created here that would work well with “hardware” interfaces. Some ideas (and tagging for opinions):

  • Softcut
  • @andrew’s dirge, enueg, etc.
  • @rodrigo’s TPV saturators
  • @dan_derks Less Concepts. Maybe Cranes would work as a module? (Side note: I’m already porting Let’s Splosh as part of the NLC bundle)
  • Some type of opcode sequencer, like @Olivier’s Dunes or @tehn’s Spacetime.
  • Mini Meadowphysics. Skip the whole Grids interface and instead have countdown triggers with individual clock inputs normalled to a master clock input.

This would be an open repo to encourage collaboration on features, graphic design, etc. Thoughts?

5 Likes

well in the realm of digital modular stuff I’m vaguely planning on focusing efforts on BEAP-style modules in max (as an extension of the prosody ideas)

don’t think I’ll personally be interested in VCV Dev as I’m not a huge fan of the format (max, if far from perfect, feels like it has a lot more potential for this community in particular)

maybe I’m getting off-track tho