Avoiding Muddy Low Notes in a Chord?

I’ve been working on a generative piano solo using the Spitfire LABS Soft Piano and a S&H to change chords on Aaron Static’s DiatonicCV. I have it up and running, but I’d like to avoid certain low notes. On each clock pulse, the chord is being played down an octave. Sometimes these sound great, but sometimes the notes are too close to each other and get a bit muddy.

What would be the best way to mute notes that are too near one another? Heres a link to the patch if you want to poke around (and help me improve it) and an example of a problem chord.

One more question I had while working: Is there a module that can show what notes on keyboard match voltages coming from a polyphonic cable? I could only find the Four-View to see what notes were coming from the DiatonicCV and I would love to see all the notes I am playing including the octaves. It seems like a doable idea, but if it exists I haven’t found the right keywords to search for it. Thanks!

1 Like

Pianoid works fine with this. It has polyphony. Btw, you can scroll the keyboard to check the low and high range too. I think they should make the UI more obvious

2 Likes

That’s exactly what I was looking for. Thanks!

2 Likes

I am not sure about the first thing though, the one that about “to mute notes that are too near one another”. I don’t know if there are modules dedicated to do that. Maybe there are. I would do something like… voltage subtraction to check the interval. If it’s 5th or octave, that’s okay, if not - send a trigger to mute one of the signals somehow, maybe inverted ADSR+VCA. It looks a bit ghetto, I think there would be someone with the perfect solution in two hours though, haha

1 Like

No worries! You nailed the second question. I already added Pianoid and I’m really enjoying watching it play. Usually, when I post, @Squinky responds with a module he’s already made that’s exactly what I was looking for. I’m always amazed how helpful everyone is here.

4 Likes

Orchestrators call this the low interval limit. Figuring out a way to encode it would be really neat. This little article contains a list of the lowest frequency each interval can be played at:

3 Likes

You can use fence to set a lower limit on notes. Your issue is that closer intervals sound dense below a certain pitch. I can envision a simple algorithm that a module could use with chords. Step through chord notes below a limit, C2 or whatever, lowest to highest, and eliminate the higher note when they’re less than a 4th higher.

That will sound right. But it’s more complicated to handle the general case with overlapping notes that don’t trigger together. Like it could suppress triggers and cv change below a limit if it’s too close.

It’s the kind of thing that’s hard to build with existing modules, but not a huge lift if you’re coding it in C++.

And remember, sometimes broken or wrong code can sometimes produce interesting results too.

I don’t have VCV Host. So I can’t dig into this. But it’s very clever what you are doing. I wish I understood it better.