I love using
off to create cannons with transposition, but often feel frustrated because I can only do this with absolute intervals, and unless I choose my notes very carefully, the only safe intervals to use are octaves
I’d love to be able to do step-wise transposition, for example, have a part that is a third higher, but have that third be major or minor depending on where it lands in the scale.
What I’ve been trying to do is to create a function that effectively undoes
scale, applies some numerical function to those values, then reapplies
scale to the modified values. So it might syntactically look like this:
d1 $ off 0.25 (underscale “dorian” (+ 2)) $ n (scale “dorian” “0 2 1 3”) # s “supervibe”
where under the hood
underscale name f = scale name . f . undoScale name
Of course I realize that this (currently imaginary)
undoScale function would need to somehow handle values that are not part of the output of its corresponding
scale function. But some arbitrary yet consistent way of handling this, like rounding down to the nearest matching step, should work.
Does anyone have any thoughts on how to approach this? I’m frankly stuck on getting even a list of the scale intervals to operate on. If I had that I could probably figure out some (admittedly hacky) way of doing this.