so midi is interesting… is it a WHOLE NOTHER THING to make polyphonic modules work now? Or is that one step away (in a sense, not literally)?
Hi Dan,
I’ve temporarily downgraded from V2.0 to the latest version 1.4.6.
I did notice that patches in version 1.4.6 seem to require less processor power (around 5% less on average). Is that correct?
i too was noticing this a week ago, a few patches that run ok on 1.4.6 cause overload on 2.0. haven’t tested with the latest 2.0 yet though
Yes, that’s the case with v2.0-dev right now, it’s actually about 3% extra due to the raw MIDI feature and the legacy MIDI streams operating at the same time. By disabling the legacy MIDI, patches run ~1% faster Though that would mean some
v1.x patches wouldn’t load, so
It’s around 3% at 48k/64 for a patch that’s not using MIDI. The reason is the legacy MIDI and new MIDI stream running at the same time (it’s due to the data that has to be copied between cores and then parsed for each audio block). Disabling legacy MIDI actually made it run ~1% faster, which is cool, but this is offset if you use MIDI in a patch.
Yes, the FAQ is correct. v1 plugins only run on v1 firmware, and likewise v2 firmware will only load v2 plugins.
We are using semantic versioning: major numbers indicate backwards-incompatible changes to the public API.
Polyphonic cables/modules are just a matter of implementing polyphonic signals on the MM and having the Hub in VCV Rack not ignore them. I’m not sure how much the differences between NEON and other SIMD systems will matter – it remains to be seen how CPU-friendly polyphonic modules will be.
Version 2.0.0-dev-6 is ready. Link in first post updated
New Features:
- Catchup modes. More about this below
- Plugins can access files (this gives support for some sampler modules). Also will be in the next v1.x release.
- Wi-Fi support updated (same as v1.4.6)
Minor stuff
All of these will be in the next v1.x release:
- Wi-Fi status in the info page always shows up
- Add Map popup defaults to OK, not cancel
- Fixed MIDI Gate on Note sometimes sticking high
- Fixed pot values sometimes going slightly below 0
About Catchup Modes
In the system settings Prefs page you can choose one of three “catchup” modes for handling the situation where the virtual knob positions don’t match the physical knob positions:
- Track on Motion: the virtual knob will jump to the position of the physical knob when the physical knob is moved. Then it will track with the physical knob.
- Track on Equal: the virtual knob knob will keep its value until the physical knob is moved to that value. Then it will track with the physical knob.
- Linear Fade: the virtual knob will always respond to the physical knob’s motion, but it will do so in a way that scales the response based on the position of the virtual and physical knobs at the moment the patch (or knobset) is loaded. Turning the physical knob to 0% or 100% will end the linear fade mode and track normally.
System Settings > Prefs lets you pick which mode is currently active (globally). Future firmwares could make this a per-patch or even a per-mapping option, though I’m not sure this would be a good idea. Before you state an opinion, please play with the current way we have it for a few days.
Knobset view displays the current physical position (after being scaled by the mapping min/max) as a line on the central circle that rotates. When the mapping is in catchup mode, the circle indicator on the outer arc is grey. When it’s in tracking mode, it’s white.
Catchup modes are complex when you consider that physical knobs can have multiple maps, each of which can be in a state of “catchup” or “tracking”. Also, modules are allowed to change their own param values, so a mapping could spontaneously move to “catchup” mode without the user changing knobsets or patches. Likewise, it’s possible to control the same knob from multiple knobsets. To make it more complex, mappings can be limited to particular min/max ranges, and params can be marked as “integral” aka “snapEnabled”, meaning the value can only be certain fixed values. So, this means there are some puzzling cases where it’s not clear what do to: for instance how to handle linear fade mode with a knob mapped to a button that can only have values of 0 or 1. I think we chose the most intuitive response to such situations but there are diabolical patches that can be made in which a particular catchup mode will make the patch inoperable.
TODO for this feature:
- Would be nice to be able to see the current mode on the KnobSet page (maybe in how the knob arc or knob hash mark is drawn?)
- Knob Map Edit page still displays the old format for the knob arc.
excellent dan ty much for the hard works here! REALLY look forward to taking catchup mode for a spin in the new year, after all the travels.
Finally had time to try this out. Catchup mode is a fantastic improvement!
One suggestion for that feature: It would be better if the little marks on the knobs that show the physical position of the knob would disappear when the physical knob catches up to the position of the virtual knob, for two reasons: (i) at that point the mark is in the exact same position as the virtual knob, so it’s just interface clutter, and (ii) it would be a helpful little signal that the physical knob is in the right position — I could look at the screen and immediately see “Moving knobs A, C, and D will immediately change the parameter, but knobs B, E, and F need to catch up before they’ll have an effect.”
Dan this is fantastic! Out of interest what is the additional hit on the CPUs for these animated graphical interfaces?
CV Funk too!!
Thanks!
No cpu hit. It runs in the gui thread. So if a module is doing a ton of complex drawing then the worst that happens is the UI gets a little less responsive.
wasn’t expecting this. So good to see the 4ms Meta developing into such an impressive module.
And yeah, CV Funk modules are coming soon…
CV Funk will be a great addition to the 4ms-metaverse. Hopefully with these graphical updates we can persuade Marc and Steve from Mindmeld to port their ShapeMaster (Pro) to the Meta - it’s my favourite VCV module - very graphical but with this great update, it might be possible.
This is fantastic. It would be great if the dynamic visuals could take over the Meta screen where appropriate— it would be cool to see the waveforms or the envelope graph at full size.
With dynamic drawing and file read/write both in progress it feels like the Meta is about to make a huge jump in functionality.
Thanks!
Yes, larger visuals is possible since all the rendering is done with vectors.
So far the limiting factor has been the time it takes the module to generate the draw commands, not the actually rendering (drawing of the frame). The good thing about this is we can draw it at any size and there’s not much difference. The downside is that optimizations would need to happen in the plugin, not in firmware (e.g. not re-drawing the entire frame if nothing changed)
Anyways I want to try out full-screen rendering next once I clean up some rough edges.
Also, BTW these plugins are running as-is with no code modifications. I built a rendering “engine” for nanovg (the vector graphics lib that Rack uses) which renders to LVGL (the graphics lib MetaModule uses) instead of to a GPU.
Back this to: yes, good suggestion!
Bug reports:
(1) The MM froze on a white screen on startup. I restarted the system, and it booted fine the second time, but my catchup mode preference had reverted to the default — I had it set to “Track when equal” but it had reverted to “Track when knob moves.”
(2) After this restart, there’s two knobs in my patch where I can’t change the settings. They’re both Level knobs on VCV Fundamental Mix modules.
(a) They’re both mapped to physical knobs, which have no effect. When I turn those knobs in knob view, the red marker moves with the physical knob, but the virtual knob doesn’t move.
(b) When I try to change them with the encoder using the “Adjust” button, the percentage value displayed on the screen changes, but the knobs don’t move on the panel graphic and the sound isn’t affected.
Using the dev-6 firmware.
What were the virtual knob positions, did they happen to be 0% or 100%?
The setting being reset after a freeze on startup might mean there’s some invalid setting value, which would explain it not picking up. I’ll see if I can reproduce and find the bug here.
Can you share the yml file?
Interesting… but otherwise the patch was running and making sound normally? Could you adjust other (non-mapped) knobs on that module?
What were the virtual knob positions, did they happen to be 0% or 100%?
Yes, they were both at zero.
Can you share the yml file?
After I had this problem I replaced the modules on which the knobs were frozen and then continued patching, so I’m afraid the patch that triggered the problem is lost to history. Here’s a very simple patch that shows what the two frozen mappings looked like, if that’s any help: Dropbox link.
Interesting… but otherwise the patch was running and making sound normally?
As you’ll see if you look at the simplified patch, the two frozen knobs were controlling the output gain; since they were stuck at zero, there was no audio output. But everything else I could see on the screen suggested that the rest of the patch was working normally.
Could you adjust other (non-mapped) knobs on that module?
These were both VCV Fundamental Mix modules — there’s only one knob.