Just (JI) Intervals in V/oct

No, I was just reminiscing. I do think it would be interesting to have a CV mapper that could map any +/-10V input to any arbitrary step in a +/-10V output. Maybe MindMeld Shapemaster will do that. I’ll have to check.

I was mainly getting frustrated because the numerical values in a 1v/oct system don’t correspond to the values in a 1200 cents/octave system. For any note that you want to tune to a non-equal-tempered pitch, you have to know the desired pitch in cents and then do an arithmetical conversion to translate that to a 1.000 per octave value.

You can let VCV do the math when keying in a parameter value. For example, if you want to enter 1500 cents for a parameter that is expecting V/Oct, then just enter 1500/1200

2 Likes

My BASICally module has several presets that implement quantizers in BASICally’s language. If you’re comfortable computing the v/oct values once and put them in the code, that can work. Not the simplest path to a quantizers, but very flexible.

The cent conversion isn’t necessary fyi! If you know the ratio, you can just type “log2(ratio)” and you’ll get the right voltage offset for it.

Cents are useful for other things though. And just in case you’re not already aware of this treasure, well here it is: xen-calc?

Type in a ratio, you get the cents value (and lots of other info). Type in something like “350c” and you get that cent value (so you can look for nearest ratios etc). It’s super useful.

2 Likes

Wow, I never knew this! Thanks!

Yes, Andrew added log2() support in response to a post of mine from over 2 years ago

1 Like

Fantastic thank you Dave! This will save alot of time :smile:

Yes, you’re right. My modules are not well documented, and the Harmonizer module lacks documentation at all. Why is this so? Because foremost I make my modules for my own needs, and I give them away for free and open source.

Back to the topic:

My Harmonizer module does exactly this. It generates up to 16 v/oct equivalents of different just intonation intervals. But it is not a quantizer (otherwise I would have named it Quantizer :wink:). My module takes a monophonic input (or 0 Volts if there’s no input) and outputs polyphonic pitch values. This is great for generating just-intonation-chords, and my module is loosely inspired by the Doepfer A113 Subharmonic Generator.

If you want to quantize a pitch-CV-signal, my Harmonizer module might not be the best choice.

2 Likes

You’re welcome!

And thanks to both of you. It’s a super useful feature for us JI-brained folks. :upside_down_face:

I made a quick video showing one way how my Harmonizer module can be used for melodic sequencing:

just intonation blues - sequencing with the ahornberg harmonizer.vcv (8.5 KB)

Another more chordal variation, using a trigger sequencer and the polyphonic output of the Harmonizer:

just intonation blues II.vcv (9.1 KB)

1 Like

Teletype has a JI operator that calculates a V/oct value for an interval from a ratio. CV 1 JI 6 5 in live mode will set the first CV output to that ratio over 0V. With a little scripting you can do algorithmic sequencing (as demonstrated below) or custom quantization strategies; you could also involve the pattern buffers to do direct manual sequencing with ratios.

teletype ji demo.vcv (9.0 KB)

Ahornberg Harmonizer does the job.

But it is possible to just use a normal sequencer and put the specific voltages into it.

The main problem with all of this are software-sided floating point inaccuracies, which you can hardly avoid.

If you are interested in the math to calculate the needed voltage for the sequencer, it goes like this:

Let f0 be the starting frequency from which you want to derive the nth harmonic and mth subharmonic, which leads to your new frequency f. Then:

f = f0 * (n/m)^k , where n,m,k should be whole numbers.

Getting from frequency to voltage:

v = log2(f / 261.625)

Which leads to the final expression:

v = v0 + k * (log2(n) - log2(m))

You can also chain this like in 5-Limit JI:

f = f0 * (3/2)^x * (5/4)^y * 2^z

v = v0 + x * (log2(3) - 1) + y * (log2(5) - 2) + z

So in essence you only need 1 module where you can put n,m,k and v0 into and chain copies of this module with different n,m,k.

I coded such a module, but its not public and looks potato.

Maybe @Ahornberg has the motivation to make something real.

2 Likes

No, I will not make such a module because there are at least 3 modules where you can enter mathematic formulas:

There’s also a software named Scala Scala Home Page that one can use to create microtonal scales. This so-called scala-files or scl-files can then be loaded in to severeal VCV modules, e.g. this one:

Please read the whole thread because there are already lots of modules shown that could be used for your purpose.

2 Likes

There are some presets included with Basically that are quantizers. Pull one in, modify a few array values in the code, and it’ll quantize the more approximate values you dial into whatever sequencer you use into the values you entered.

2 Likes

With a few lines of code, I think BASICALLY will do the job. You’ll forgive me if I digress, but I wanted to take this opportunity to thank Mr. Mahlen Morris for his extraordinary BASICally. (My only regret about this: I sometimes feel “cramped” with “only” six outputs. But I’m probably being too greedy…)

3 Likes

You can use several BASICally-modules and you can duplicate the code from one to all others by using my CPP-module:

1 Like

@gabtiorbi I’m truly thrilled to hear you are enjoying it!

I sometimes feel “cramped” with “only” six outputs.

Me too! I suspect that making the INn and OUTn ports polyphonic (e.g., OUT1[2] = foo) is the best answer to that. But, that raises some slightly nervous-making questions about how to iterate over all of the channels in an INn.

Since I’m thinking about it, I’ll discuss it on the BASICally thread.

BASICally now can read and write polyphonic signals, and so it now technically has 96 outputs :slight_smile:

3 Likes

The additional features truly expand BASICally’s capabilities. Now having polyphonic INx and OUTx ports takes the module to a level of power limited only by the user’s imagination. For me, Basically is truly THE module. Thank you so much for your investment, which is all about one thing: our enjoyment.

1 Like