Would anybody be interested in testing out a new module called “Solim” that I’ve created, and is ready to be beta-tested. Because I noticed that I was often using a combination of modules in my patches to get chord inversions that allowed smooth transitions between the chords in a chord sequence, I decided to take a look at writing a single module dedicated to that functionality. And while developing the Module, I had a couple of additional functional ideas, which resulted in a number of optional expander modules that can be used to modify its behaviour.
Update 2025/02/01: Updated links to Beta release v2.0.0-dev-prerelease-001 and added link to simple demonstration patch on Patchstorage
Update 2025/02/10: Updated binaries link to the general release section on github iso specific release version
Thank you! I’ve updated the original post with the addition of a link to a patch on Patchstorage that shows some of some very basic usages of the module. I’ve also updated the other links to point to the v2.0.0-dev-prerelease-001 beta release version that I created for it.
Played around with the module a bit myself yesterday, and ended up with this result, utilizing Solim in all three voices that are playing: https://youtube.com/shorts/FgAEwLFBdqQ
I do plan to also create a tutorial video for Solim, but it will take a while to come up with a good tutorial patch, and then record and edit it all
Added a new set of modules to the Beta yesterday that allow “variable multi polyphonic to polyphonic conversion” signal processing: the Polyphonic Input (P-I) and Polyphonic Output (P-O) modules
Reasoning behind the creation of the modules:
I’m working on another module right now where it would be handy to be able to distribute the channels of one or more polyphonic inputs over a different combination of monophonic or polyphonic outputs. For the Solim module above, this could also be handy when it is processing multiple inputs, and you want to have multiple polyphonic signals to modulate different CV inputs. While this is possible by chaining multiple merge & split modules, each merge module only having one polyphonic output means you’ll end up needing a lot of them if there are multiple targets you want to modulate/control.
I had a look through the VCV Rack library, but I didn’t immediately see another merge/split module (with a relatively limited footprint) that matched what I was looking for (although there are a LOT of modules that are tagged with “Polyphonic”, so I stopped looking after about 10 pages).
So I decided to create my own interpretation of this functionality: the Pi-Po set of modules:
On the Polyphonic Input module, you connect your monophonic or polyphonic inputs (a LED display shows how many channels there are). All input channels end up in a single “pool” of input values, and when you place a Polyphonic Output module to the right of the input module, you can redistribute those channels over the different outputs, with a dial next to each output port specifying how many channels should be assigned to it. If more inputs are needed, an additional P-I module can be added to the left, and adding an additional P-O module to the right will add additional outputs (modules are processed from the middle outwards, so inputs from right to left and outputs from left to right)
And since a video says more than a written manual, I also create a patch-from-scratch tutorial that demonstrates some ways to the different modules and expanders: https://www.youtube.com/watch?v=bFnPbz3OmdE
P-I and P-O are an interesting take on providing flexible polyphonic merge, split, and channel routing capabilities. They largely overlap with Venom Multi Merge and Multi Split, but with an entirely different interface and workflow.
Yes, reading through the manual, I see some familiar concepts in there I like the approach of drawing the red lines to show the flow of the voltages!
I did look through the first five or so pages on the VCV Library with the “Polyphonic” tag selected (there’s a lot of modules with that tag though…), but I didn’t check manual pages to see if there were additional menu settings to control the flow, I just looked if there were additional controls on the UI, and didn’t immediately find one that did what I was looking for.
I wrote Pi-Po mainly because I’m currently working on a sequencer with 8 polyphonic outputs, where it will be possible to freely configure what the different channels on the different ports represent and contain. So in a really complex sequence, you might end up with 128 total channels that might have to be distributed in different ways across different polyphonic signals. Which is why I made the output part (and subsequently also the input part) chainable to allow for as many outputs (and inputs) as needed in one chain of modules.
Started based on a module idea that was brought up on Discord, a new module is now available as part of the not-things plugin: the Polyphonic Same and Different (P-SD) module.
It accepts two polyphonic input signals, compare the voltages on their channels, and will send them to three outputs:
An output that will contain the voltages that only appear in the first input (A-B)
An output that will contain the voltages that appear in both inputs (A&B)
An output that will contain the voltages that only appear in the second input (B-A)
A tolerance knob (0-1V) can be used to specify how much two voltages are allowed to differ while still being considered “equal”
A switch allows the operational mode to be specified:
Voltage mode: the voltages are compared as-is
Note mode: the voltages are compared as 1V/oct values without taking the octave information into account (i.e. only the decimal parts of the voltages are compared)
Thank you for ‘Solim’, this is a great module! Just a couple of small ideas:
While looking at the manual, I noticed that the module can actually process polyphonic signals, too. Would it be possible to add a ‘Polyphonic’ tag to its entry in the VCV Library?
Another thing I’ve noticed is that values cannot be set by note names, such as ‘C5’. Would this be possible to make setting the notes easier?
When I initially added the tags, I assumed that the “polyphonic” tag was reserved for modules whose only/main functionality was to do polyphonic manipulations (like the PI-PO modules). I later found a post that clarifies that it actually means “can handle/create polyphonic signals”, so I can indeed add that tag to Solim in future releases
The entering of values is actually handled by VCV Rack itself, since I’m using the standard controls. But it turns out that a more convenient way of entering notes as voltages has been added since VCV Rack release 2.6.1: on https://github.com/VCVRack/Rack/blob/v2/CHANGELOG.md#261-2025-03-14, the 5th item shows that you can let VCV automatically convert notes into voltage values by adding a v after the note name (C4v , A#5v , Gb0v, etc).
Ahh, I had forgotten about the ‘v’ method, it works nicely with Solim.
What confuses me with the ‘v’ method is that for some modules, for example VCOs (e.g. VCV VCO, Bogaudio VCO) and filters (VCV VCF, MI Liquid Filter) the ‘v’ is actually not required.
I know that this is not related to your module, but does anyone know why the ‘v’ is necessary for some and not for other modules?
EDIT: I think I get the idea: With VCOs and VCFs, it is a ‘frequency’ parameter that is being manipulated. So, is ‘frequency’ different from other parameters in this regard?
It appears that I don’t fully understand Solim’s polyphony: When feeding in a polyphonic signal with 8 channels, the ‘Upper Lim’ knob does not seem to respond anymore and always shows C4. When feeding in 7 channels, all seems to be fine. Is this intended or a bug?
You actually understood the polyphony correctly, and have found a bug It did indeed only occur when providing 8 or more channels, resulting in a write outside of an array (which then overwrites the Upper Lim value). I’ve created a fix for this in v2.0.2, and submitted that for inclusion in the VCV Rack library.
For the “include v” vs “don’t include v”, it’s indeed the difference between “frequency” (expressed in Hz) and “notes” (expressed in 1V/Oct). Frequency is used for actual audio signals (which is why that is used on VCOs and VCFs), and the 1V/Oct standard is used to express notes (comparable to how you would write them on a music score). Solim is targeted at usage with notes, which is why it uses the 1V/Oct standard for its inputs.
And VCV Rack doesn’t know the exact meaning of the knobs, so you have to tell it which system you want it to use to translate the note name into a numeric value.
If you type ‘C4’ as value for a knob, it’s indeed a frequency, so VCV Rack translates it to the audio frequency of that note: 261.63 (Hertz) (and c3 to 130.81, c5 to 523.25, a4 to 440, etc.). But if you type ‘c4v’ as value for a knob, VCV Rack will translate it as a 1V/Oct value, so c4v is 0 (Volts) (and c3v is -1, c5v is 1, a4v to 0.75 etc.)