MiRack compatibility

interesting to note that i was able to import a mirack patch into the web version of cardinal vcv and it loaded/worked just fine - all wires in tact, all knobs at the correct position. i tried this experiment using this simple mirack patch that contains only bog/valley -

loaded into cardinal live/chrome (windows 11):

so i don’t know, maybe that’s just a bit easier than having to install vcv .6/1.0 as i mentioned above. there’s only a few that mirack has in @RockySmalls list above that cardinal doesn’t have:
geodesics
squinky
stellare

yeah, so the vcv (and plugin) code base includes ‘upgrading’ patches, and its ‘non-trivial’, as its incremental. e.g. it can go 1.0 → 1.1 → 1.2 → 2.0, ie. the upgrade steps are incremental, so given cardinal is built on that code, it ‘should work’

as I stated above, thats why this approach is better / more compatible (with versioning) than trying to do it outside of the vcv code base. esp. as these ‘upgrades’ are only detailed 'in code.

thats the issue with stuff that ‘seems simple/not hard’ the devil is always in the detail.

So if I’m reading this correctly, I can save a miRack patch, open it in Cardinal, and then save and export that into MM?

i wish! you have to go mirack → cardinal → vcv2(so you can use the hub there to export to yml).

if you try to go straight mirack ->. vcv2 you will lose the cables. annoying.

here’s hoping the 4ms line gets added to cardinal at some point so we can export ymls straight from there (although i’m guessing that won’t work so well via cardinal web version)

I made a small command line utility that does the MiRack(old VCV Rack) → VCV2 conversion (hopefully) without missing cables. I tested it with MiRack on MacOS to latest VCV Rack 2, but there could still be issues. If you find an issue, please send the files as well and a description of the problem.

Binaries and source code are provided for Windows, Linux, MacOS both x64 and ARM for all OS.

edit: v1.01 contains flag that adds MetaModule automatically if --mm is passed to the command line.

1 Like

awesome!! look forward to trying this out!

edit: works good so far! of course i’m noticing a lot of modules missing as mirack contains ones that vcv2 simply(and certainly mm) does not have (i.e. lindenburg filters, which aren’t free in vcv2) to be expected given the disparity of these versions of vcv

1 Like

Yes, unfortunately missing modules are expected due to varying availability. I would like to address that later by adding an opt-in conversion option for modules and parameters when a close (~1:1) match exists.

I released a new version that allows bidirectional conversion from/to MiRack with new source and target formats planned. There are a few small bugs for MiRack target due to differences between how MiRack and VCV v0.6/2 handles audio I/O modules, but I plan to fix them soon. MiRack uses separate audio in and out while VCV uses a shared audio interface, so I have to merge/split during conversion.

1 Like

This is exceptionally awesome .. I suppose the remaining question is if it’s possible to go straight from .mrk to .yml .. as I’m still missing a computer that can run vcv .. I was also wondering if that might make it simpler as the amount of missing modules on Meta that you would have to exclude and the replacement suggestions would be much less?

Of course I am new to all this and prob don’t know what I’m talking about. Seems like a big leap forward though.. hats off

It’s possible to go from mrk to yml, but mapping inputs, outputs and knobs will be an issue without creating some sort of logic and I’m not sure how to implement that in a user-friendly way. It’s relatively easy to do from the technology side, but much harder from a UI/UX perspective unless I create an editor.

Handling plugin definitions from all hosts is something that I have thought about and have an idea how to implement, but not sure how much work it is without checking how they work. It’s easy when there is something like a json that I can directly parse, but harder if it’s a repository with submodules. It should also update automatically without me releasing a new version every time. Also doable but might require some maintenance.

Nevertheless, both features are planned, but first a GUI and some bug fixes. :slight_smile:

1 Like

just a thought…

typically mirack you always have a L/R output(or input?) hooked up to whatever stereo output/input modules mirack uses. during conversion could those be automatically assigned to outs 1/2 and cv (non gate) ins 1/2 on the mm?

or at the very least, if the script simply converted the mrk direct to yml, without out any outs/ins auto assigned on mm, one could still just hook all that up themselves manually once they put the yml on the mm :slight_smile:

obvs knob mappings are something someone can fairly easily do manually after getting it on the mm.. unless somehow you made the script convert midi cc assignments from mirack into knob assignments (one would just have to set it up in mirack the way they wanted it to assign in mm) - but perhaps that is just too cryptic of a method

I have to check the MetaModule yml structure before I know for certain, but both seems possible given that MiRack mapping already works similarly.

As for plugin/module availability I already have a working scraper script that collects all available modules for Cardinal, MiRack, MetaModule (including CPU usage for various block sizes) and VCV Rack. The tedious task is mapping module names across all platforms where there isn’t a 1:1 match.