A formula that morphes between scales

I have an idea to make a mathematical formula, where you change a number to morph between musical modes. For example if x = 1, it would be major pentatonic mode and when you slide that number to 2 you get a minor pentatonic and so on. It doesn’t have to be a specific scale that exists, just a tuning that evokes emotion somehow. The important thing is that it is done by a formula – as simple as possible, and that it can morph between different scales (existing or nonexisting). Has this been done? Any ideas?

Are you talking about integers of floats ?

You say morph, which sort of implies that you’re considering floats (at least for the “control” part) but scales as you mean here are basically defined using integers (unless you’re talking about absolute frequencies in hertz…).

What you mean is a quantizer that has an extra input (the control one) that is used to select the scale, but not using a pre-existing list ?

I think it should all be float numbers
Basically im looking for some kind of formula that gives me a list of frequencies (of 5 to 7 till next octave etc), that you can alter with a single float number, so that the ratios between the frequencies shifts in a way that resembles scales… Dont know if that makes enough sense, still trying to figure out what exactly im trying to do…

I like this tangentially related (+ fun) bit from the world of Max MSP:

Peter Castine: [expr ($i1*12+$i2)/7+$i3] will map chromatic MIDI values ($i1) to a diatonic scale. Use $i2 to select a different church mode (0->Lochrian, 1->Lydian, 2->Aeolian, etc). $i3 transposes. I always thought that was cute.

thanks! that sounds like something i was looking for!

The max modal object library is worth checking out. All the maths is exposed and very usable.


That library would be sweet if ported to other places like Supercollider or PD or even Arduino.

in case this is of use for you (edit: and i understood correctly)– here’s an small abstraction for max/msp: https://pastebin.com/unZspbL0

it’s based on simple list interpolation (vexpr ((($f2-$f1)*$f3)+$f1) @scalarmode 1) where each position of a list is interpolated with the same position of another list

  • $f1 is (each position) your first list / scale
  • $f2 is (each position) your second list / scale
  • $f3 (0. - 1.) is the degree of interpolation between (each position of) $f1 and $f2

I’m not sure why this thread ended up showing up in my Suggested Topics in another section, but it seems like an appropriate thread to post a link to James Tenney’s paper On “crystal growth” in harmonic space:

Does something like a “crystal growth” harmonic module exist yet?