Announcing Firmware v2.2.0, which brings a much-awaited feature: Polyphonic cables!
You can now send polyphonic signals over cables, in the same way that you do it in VCV Rack. In this firmware version, the maximum number of voices per cable is 4.
We’ve also updated most of the 4ms modules to support polyphony.
Many changes to the way built-in MIDI mappings work have improved, too.
Highly recommended to update your 4ms VCV plugin to v2.2.0, also (it’s already in the VCV Library).
New Features
Support polyphonic cables, with a maximum of 4 voices per cable
VCV-ported modules will usually “just work” with a max of 4 voices.
Native plugin support (CoreProcessorPoly base class)
Full support for cables with summed input nodes, splits, poly->mono conversions, etc with poly cables.
Poly cables are drawn thicker in the Patch View
Add built-in MIDI support for 4-voice polyphony per cable
Max 8 voices using 2 poly cables (each poly MIDI cable can be voices 1-4 or voices 5-8)
Can set the MIDI poly number directly in the Patch Info dialog box (default is Auto = auto-detect based on cables in the patch)
Modules
4ms CoreModules:
Update most 4ms modules to use polyphony. Some modules that aren’t updated will likely never be made poly (because they are inherently a mono module, or due to memory usage concerns)
RackCore:
Add RackCore Sum, Merge, and Split modules for poly support.
Improvements and Fixes
Fix New Panel Cable showing outputs for a connected module input by @gabrielroth
Fix cable node list on ModuleView page and Jack Maps page
Fix MIDI voice allocations
Fix MIDI SysEx tx and rx (and all large transfers)
We’re making a few videos showcasing poly right now.
In most cases though it “just works” if you make a poly patch in VCV and then bring it over to MM.
For starting with MM, the easiest way to use poly is to add a MIDI Map for Poly Pitch and another for Poly Gate to a typical voice (Pitch into VCO V/oct, gate into ADSR trigger)
For doing it on the MM without MIDI, you can use the Merge and Split modules in the RackCore brand (or in the Fundamental plugin) to combine multiple signals into a single poly signal that you then run into a poly-capable module.
Hey Bobby - what type of tutorial would you like to see? I’d be happy to make one if there’s some things that are confusing.
Polyphony in VCV rack is a single cable that can carry up to 8 signals. In MetaModule this is limited to 4 signals due to CPU limitations. This means a single VCO, a single VCF, and a single VCA can replace 4 of each of those modules simply by patching them as if they were a monosynth. Polyphony extends beyond basic modules and in MetaModule this type of support is offered for many different modules. It allows you to condense complex patches into much smaller form factors and theoretically also improves the CPU usage in some scenarios depending on the code inside the plugin.
If the code uses SIMD instructions then it can process 4 polyphonic channels in nearly the same time as it would take to process 1 channel without SIMD.
Thanks Ross, I figured it out with some tutos from Omri. But there is so much things related on the VCV polyphony and not much tutos that if ever there is one for the Metamodule, I will certainly look at it and I’m sure I’m not the only one that think that is a little bit cryptic. Thanks again!
Yeah you’d need two 4-voice paths.
The limits in v2.x firmware are:
Cables can only carry 4 voices max (or, said another way, jacks can only output max 4 voices)
Built-in MIDI mappings can keep track of max 8 voices. E.g. when you create a MIDI mapping from within the MetaModule you can choose a poly voice 1-8 to assign to it. This doesn’t have anything to do with using the RackCore MIDI modules or 3rd party MIDI modules.
I’m getting some unexpected behaviour using this new firmware… before I post a bug report can someone confirm this is the intended behaviour / how to get round it…
I have 2 midi sequencer tracks playing a total of 5 sounds on the MM:
Track 1 sends notes C1, C#1, D1, D#1 on midi channels 2~4, and is sent to 4ms kick, snare and hi-hat (closed / open) module using gate on that particular note.
Track 2 sends midi note 1 and V/Oct to Cloned Instruments Plaits on midi channel 5.
Whenever the kick and plaits play a note at the same time only 1 is heard. If I mute one of the tracks all notes are present. It’s as if poly mode is working but affecting both channel 2 and 5 at the same time. I thought polyphony is supposed to be restricted per channel? Am I not understanding something here?
This has only occurred since updating - on the last firmware everything was working as expected with no stolen notes.
Hope that’s enough info to go on. Let me know if there are are more tests or anything I can do to help reproduce if, thanks.
Sorry - correction. It’s not just the kick note that steals the plaits notes, its any of the notes on channels 2~4 - kick, snare, hi-hat closed or open. I should point out that all the percussion sounds work even if played on the same note, so it only seems to be affecting “midi note 1” on Plaits, midi channel 5
Are you using the RackCore MIDI > CV modules in the Meta? Each of those has a channel setting, have you checked that those are correct? It sounds like they might be set to “Omni,” i.e. all channels.
Thanks for the detailed report.
To confirm what you mean by “midi note 1”, you mean the MIDI mapping for the Plaits set to poly channel #1 (not poly channel #1-4)?
If that’s the case (poly chan 1), then check the Patch Info dialog (info icon in the button bar) and set the poly channel number to 1. That was recently added and might be why it works in the earlier firmware.
Ok, I found a bug here happening if a MIDI controller sends the same note on two different channels, interleaving the Note On and Note Off messages. I don’t see why it would work on the earlier poly firmware, but that one had a different bug in the poly decoding section that prevented some notes from getting stolen, and you might just be getting lucky in the order the MIDI controller sends out the notes.
In any case, try this patched firmware: https://github.com/4ms/metamodule/releases/download/firmware-v2.2.1-rc3/metamodule-firmware-v2.2.1-rc3-firmware-assets.zip