Lowest and highest depressed note on a polyphonic channel

I would like to determine the lowest and highest note depressed on a polyphonic channel. I’ve looked at CountModula’s PMM, but it doesn’t have a gate input to restrict its processing to live notes. Is there a module that does this, or will I need to write one? Application: latch a chord with a poly S/H (maybe fed to an arp), and walk it around using the bottom or top note.

Vult Leakage can “latch” a poly signal (just one such), and then Aria Salavtrice’s Spleet can split the signal and sort it, from which you can get the top and bottom notes, from 8 or fewer channels anyway.

1 Like

I think you’re missing the key detail. Assume I have MIDI-CV set to polyphony 4 and hooked to my MIDI keyboard. Let’s say I play a Gmaj7 in root position and release G. MIDI-CV will still be sending out G on one of the channels. You’ll still see the G as the lowest though the B is the lowest depressed at the moment. The key thing is that the set of notes to be searched should be only the notes held at the moment. In this case only B, D, and F# are still down, so I want to see B as the lowest once the G is released. This is a very simple utility to implement, but I’m not sure it exists in a straightforward manner.

It is possible, but involves a lot of modules. The switch is inserting a B8 into all channels which are not pressed. so if one note is pressed it will always be lower in the min-logic-module. The other way with inserting a C1 is working for finding the pressed highest note. Using a comparator to check if the lowest note is < B8 will then give you the possibility to gate a signal or trigger. I have not checked all polyphony modes on Midi-CV but this is working with “Reset”.

  • mo

Hmm… I guess what I’m trying to get at is something like chord latch on the Roland Junos. This should be a simple module to code up though. This sort of thing really shouldn’t involve that much hair when patching. Let me brain storm a moment. The input would consist of the gate and V/Oct from the MIDI. Latching would remember the gates and the chord transposed to C. Now, all you need is to sum a last note priority MIDI with all the remembered poly voltages.

1 Like

Hm, do you have a link to that functionality?`Maybe a manual? All I could find is “chord memory”.

We’re talking decades ago. So no. I have an idea how to implement this latch though. The key thing is to transpose the chord so the lowest note corresponds to V/Oct = 0. Now, you can transpose the chord in an intuitive way by just adding a last note priority note to everything remembered.

Like so?

I mean the transpose part

Ah forget it, now every note would be C4… Ah no, it won’t…

No. Please stop trying to be clever. This is about keyboard performance ergonomics. Look. I feel very strongly that the job of a module is to reduce the distance between what is in a musician’s head and its realization. It’s not about be clever with patch cables; it’s about being intuitively clear. I think this functionality should be provided by a single module rather than many modules and some spaghetti.

Oh I agree. But please never tell me again to try to stop being clever. I am here because you started a discussion, I try to follow you to understand what you would like to achieve. And modular is all about clever patching if there is no other way (yet). Have fun.

  • mo

My orientation is decidedly east coast. Modular is a way of getting at beautiful timbres, and making beautiful instruments. Once that is done, then the music begins when I’m actually playing the instrument I’ve made.

Let me be very direct here. As far as constructing performance instruments, if a simple solution to ergonomics matters doesn’t exist, then in effect no solution exists. It’s not about being clever; it’s about making music. All else is distraction.

Oh I really do not care what you are trying to do with VCV and what your approach to VCV / modular is. But I do care about the most arrogant sentence I read on this forum yet. So again, have fun, sorry for wasting your time.


When you lead someone in a direction that is far afield from where he is trying to go, maybe it shouldn’t be surprising that he might express a degree of frustration. If you see that as arrogance, then that is on you. Let’s not continue this. What I had hoped for was an efficient solution to a musical problem. I’d have better spent my time simply coding it up.

Working concept: CLatch latches a chord and gates on a pair of poly inputs and transposes it and presents the remembered gates based on input from a pair of mono inputs. The chord is stored with the lowest note transposed to V/Oct 0, so you’d get the chord you initially latched if you play the same lowest note. The key thing is it’s completely not complicated to understand or use, and actually the code itself isn’t very difficult. I may need to move things around to accommodate some labels.

1 Like

Did you ever release this module? If not, could I have a look at the code and have a go myself?

I’ve never sought a place in the library, but you can get my sources from their repository at: GitHub - caoliver/CAOplugs: Some simple utility plug-ins for VCV Rack 1.foo