Strum's Mental VCV Module Suite to v1?

Hi all! :slight_smile: So I opened an issue to see if there were plans to migrate Strum’s modules and it sounds like would be several weeks away before Strum could get to it if it happens at all.

If anyone is interested in getting the migration started I think Strum would be happy to let them at it :smile:

I am not a coder/developer/programmer/etc otherwise I would happily offer to assist. I will gladly cheer on anyone who does decide to run with it :smiley:


I’ve decided to start this project.

My plan is to:

  1. Update the modules to work with VCV Rack v1.+ one at a time. I haven’t got the spare time to do them all as one big bang release.
  2. Add each completed module to a “rolling release” on GitHub.
  3. When I’ve finished them all see what the logistics are for getting them added to the VCV Library. As I see it, these are Strum’s modules, not mine. I’m just updating them. I’d rather the “ownership” stays with Strum, not me. So if my changes can just be merged with the original repo and then that is added to the Library that would be good for everyone, I think?

I’ve forked Strum’s repository and published the first “rolling release” of the v1 compatible binaries for Linux, Mac and Windows.

Please note that ONLY the Clock Divider is in the release at the moment. I’ll be working on the others over the coming months / weekends / boring commutes. :slight_smile:

Also, these are not official Strum / mental releases. If there are any problems with the new versions, blame me. :smiley:


I’ve added the 8 Way Multiplexer and Binary Decoder modules and fixed a niggle with the indicator LEDs in the Clock Divider module.

You can get the binaries for version 1.0.1 on GitHub.

Remember not all the modules have been made compatible with VCV Rack v1.+ yet. Should have some more to add by Sunday.


All three of those modules are amazing, the mux in particular is a really interesting approach. I didn’t play with this plugin set much in 0.6 so it’s great to be able to explore them now. Thank you for updating them.

1 Like

Hi. Sorry for the slowdown. Picking up again. I’m working on updating the A/B Switches modules at the moment, but would like some feedback.

The module lets you pick which one of two output ports “repeats” the voltage sent to the main input port by using another input to “switch” between them. Positive voltages to the switch port cause the main input to go to output A, whereas negative voltages mean output B. (The module has four or these circuits.)

The module also has an LED button which, from what I can make out, is supposed to let you pick which output is selected regardless of the switch input. I think that’s the aim, but the documentation and code are not clear, as when you press the LED button odd things happen. Sometimes the LED button has priority over the select port, sometimes it doesn’t.

I’m going to keep the original behaviour in the Rack v1 compatible version by default so it doesn’t break any existing patches, but I think I should add some kind of switch which causes the “fixed” versions of the buttons to kick in.

Worth doing? If so, should the control be a switch on the front panel, e.g. “original behaviour” <-- --> “new behaviour”, or a right click menu option? Or not bother? :slight_smile:


I think a button next to the LED might be best but perhaps name it something to denote predictable/non-predictable or certain/uncertain. Then again, it seems like such an obscure and subtle thing to have an option for and I’m not sure why anyone would want that behaviour unless it is something like a Bernoulli gate when the LED button is on (it sounds from your description that it is just buggy rather than usefully random).

Having said that, I have just loaded up 0.6.2c and had a play around with it. It seems to work as I would expect but I think it behaves a bit differently to how you describe. The button (which should be illuminated I think when enabled but isn’t for me) locks the output to B, I can’t for the life of me make it lock to A, so it seems it is not a chooser for locking the output to A or B but a lock just for output B. For me it behaves reliably in this fashion and I don’t get any unpredictability so maybe disregard everything I said in the first paragraph!

I think it would be cool if you could actually choose which output locks, maybe a cycle between off, A, and B. Different coloured LEDs for the two locked states would be good and LED off for when the button is not engaged.

Also, just had a play with the clock module and the run seems to mute the output rather than actually start/stop the clock (maybe all clocks work this way?) because you can catch it in the middle of the gate if you hit run at the right time. It seems to make it sound like the clock is slowing down slightly when it starts if it is plugged in to a hihat or something.

Good idea. I’ll add that.

I’ll look at the clock module in more detail in case that’s a feature not a “bug”. :slight_smile:

Thanks as always for your feedback and encouragement. :smiley_cat:


If you implement the 3-state switch as @TroubledMind suggests, then it looks like backward compatibility could be preserved if you change the button_on array of booleans to an integer array keeping track of the states:
0: CV selects input
1: always send input to B
2: always send input to A

with (2) being the option that is not possible in the 0.6 version.

Thanks for taking on this project! This plugin was one of my favorites and I’m looking forward to being able to use some of the modules again.


Hi. I’ve uploaded v1.0.2 to GitHub. You can download binaries for Linux, Mac and Windows from there. The CHANGELOG lists what I’ve done for this release, and the README has been updated a bit. The documentation is still scrappy as I’m not going to update that much until I finished. :slight_smile:

In this release there are Rack v1 compatible versions of:

  • 8 Way Multiplexer
  • 8 Way Switch (new in v1.0.2)
  • A/B Switches (new in v1.0.2)
  • Binary Decoder
  • Buttons (new in v1.0.2)
  • Clock Divider

I’ve started a project tracking thing for this on GitHub as well, so you can shoulder surf if you want to. :slight_smile:

Six down, twenty to go…

EDIT: Anyone got a preference for which module to convert next? I’m going through them in (mostly) alphabetical order so far, but if someone’s pining for a particular module I’ll bump it up the list. Thanks.


At the ClkDiv the manual reset button seem not to work for me as expected?

1 Like

Tested on OSX and WIN7

G’day folks, it’s Strum here,

@chrtlnghmstr, thanks for starting on this, I was about to get on to it.

We can work together on it and then merge the changes to the existing project on github if you want
I’ve got a few other modules I was going to make another set with as well.

Thanks everyone for the interest in the modules, I’m surprised people are still finding them useful.
Most of them have been made redundant by newer modules or have been cloned and reskinned in other sets.

My computers are old and struggle to do much at all with rack since the .60 release and this has been part of why I haven’t worked on the modules for ages. Anyway I’m back in coding mode now so hopefully I can work with @chrtlnghmstr to get them done in the next couple of weeks.

I know the documentation is a pretty thin but if anyone has questions about how the modules are supposed to work send me a message on here or on the dIscord and i’ll explain it to you.



the 3 state switch idea for the A/B switches sounds like a good idea, that way you can select either output and disable the select input when you are using manual control.

so i’ve migrated the code, it compiles and loads but crashes the browser.

any help would be appreciated.

The module browser draws the Widget but it does not instantiate the Module. I had a lot of module browser crashes when migrating my code, and putting a check in all the draw methods eg: if(module) {...} fixed the crash.

Check out line 344 for an example:

hmmm, it’s crashing with modules that don’t have any draw methods or even any custom gui widgets

i’m going through one by one now to work out which modules are causing the problems.

you have 100% a reference to the module into the widget
you should put a guard around the “module” use in widget constructor

And you can tell this without looking at the code?

Yes he can, I’ve written the same there.

1 Like