how to make a musically effective quantizer

Hello, i have a semi-working prototype of a quantizer that will map to the chords you play in it. the scale will change when you play a chord, so it only needs to get updated then. however, the quantizer has multiple notes repeating, like say you play an Ab and a Bb in the key of C major, it wouldn’t be ideal to map both notes to A. how do i get as few repeating notes as possible when quantizing? currently i’m using a naive approach of whenever a note is played, linearly search through the scale to find the closest note. i know this is not the most efficient quantizing method but i didn’t understand the approach used in the vcv quantizer. here is the source for anyone interested: Plurm/chordscalequantizer.cpp at master · terrytheplatypus/Plurm · GitHub

2 Likes

Quantizers are not trivial. Although the VCV Quantizer algorithm is a bit tedious to understand, it is a good approach and I suggest taking the time to understand how it works.

I would love to use your chord quantizer when you get it finished. I have created a number of similar approaches using multiple modules to quantize to a chord “scale” with good results. It would be nice to have a single module that could handle this, I think… I usually feed my chords into some type of sequential switch and then do all sorts of arpeggiations and ostinatos, etc. by sequencing the switch. Quantizing to a chord would behave quite differently but would still be very interesting and useful to me.

1 Like

As I remember things, a key part of the VCV Quantizer is that it does a two direction search, from below and from above in pitch.

I still think this would be a very useful module. Yesterday and today i worked on a patch to duplicate a chord scale quantizer functionality. It took me 63 modules to accomplish that! Most of them were comparator modules. The end result though was very pleasing when fed chords from my Meander module.

By the way, my patch jumps through a lot of hoops to build a dynamic poly scale that can be sent to the Grande Quant module which understands poly scales.

good to hear you’re interested, that motivates me more to work on it. for my module, the idea is to map a chord to a diatonic scale, so for example if the chord input is c e g it could quantize to either the c, f, or g major scales, so it will randomly pick one of those. you can see in the source that i have a scoring idea to select the scales that best fit the chord.

1 Like

Ah, I was afraid that I might be misunderstanding what you are trying to do. I will have to rethink what I have said.

So, how would your poly quantizer differ from other poly quantizers for Rack? I.E., Grande Quant poly quantizer takes scale and root inputs to configure the quantizer. I usually just supply the poly scale to Grande Quant and do not send a root input. Grande also has their “Scale” module which generates a poly scale based on the preset scale type you select. But you cannot select the root or “key” for the scale, but you can select the root in Quant.

Thanks for setting me straight on what you want to accomplish.

my idea differs from the existing quantizers because the idea here is to guess the right diatonic scale based on a chord that is passed in, but a given chord can fit in multiple diatonic scales. to my understanding, grande quant, will only quantize to the notes you pass in, while my thing would “fill in the blanks”. so if i pass in D1 F1 A1 C1, that will then quantize to either C major or F major. the octaves are stripped from the chord notes when determining the scale, so C1 E1 G1 is treated the same as E1 G1 C2.

1 Like

Oh, okay, these are key changes or modulations. I really do not know much about that, but I am interested. Will you stochastically change the key for the melody upon each chord change? I.E., you will quantize the melody to the new scale? So, you are not limiting your changes to whole step and half step modulations? Or are you modulating between relative major and minor keys and their scales only?

Obviously, I am out of my depth in this topic, but I am very interested. I am always looking for modules that can musically mangle my Meander module chords and melody in interesting ways.

yes, for each new chord, if there are two or more scales that fit equally well for a given chord, it would pick randomly between them. i guess it would be better to maintain the previous scale, if possible. there’s no limit to the modulation as it can go from any diatonic scale to any other diatonic scale.

1 Like

Thanks for explaining. Interesting. I can imagine having a parameter that controls the maximum number of whole or half step modulations. Actually, I can imagine a 1st order Markov chain that would define the probability of transitions from one key to any other. Of course what you are planning sounds like it will be interesting. It might have a very jazzy feel to it where the key is changing by large, unexpected number of steps.

Looking forward to seeing it. :grinning:

I’m wondering if you should have a “capture” trigger input to diferentiate between setting the scale to use and then using the quantizer to quantize the incoming notes to the selected scale?

not sure what you mean but for my use case i would just want any chord notes changed to trigger changing the scale.