Non-EDO generators

Some tuning systems divide the octave into logarithmically equal divisions. They're called EDOs and we looked at them extensively in the last post. In particular, we found out which EDO-generating tuning systems keep the primitive rank-2 intervals 

(P1 m2 M2 m3 M3 P4 P5 m6 M6 m7 M7 P8)

in the same order as 12-TET. Lots of non-EDO tuning systems also keep the primitive rank-2 intervals in the same order as 12-TET, and we saw some of those in the last post also. For example, Pythagorean tuning defined by 

t(P8) = 2 and t(P5) = 3/2 

has the 12-TET order and so does quarter-comma mean tone, defined by 

t(P8) = 2 and t(M3) = 5/4

.

In this post we're going to look more closely at non-EDO tuning systems, and again, like in the last post, only tuning systems that have pure octaves, i.e. t(P8) = 2. If you make a pure octave tuning system by tuning the perfect fifth, P5, there's a small range of values for t(P5) above and below 3/2 that all have the 12-TET order over primitives. Here are the bounds I've found numerically:

t(P5) 12-TET range: {1.48599428913694842479985328671, 1.515716566510398082347259801306}

The low range limit is 2^(4/7) and the high range limit is 2^(3/5).

In short, a pure octave tuning system defined by a choice of t(P5) will have the 12-TET order over primitive intervals

(P1, m2, M2, m3, M3, P4, P5, m6, M6, m7, M7, P8) 

if

2^(4/7) < t(P5) < 2^(3/5)

.

In fact, the range limits for every interval I've looked at come from 5-EDO and 7-EDO frequency ratios, although I had to fix several bugs in my code before I was sure that the EDO limits were exact and not approximate:

d1: [2^(-1/5), 2^(0/7)]
d2: [2^(-1/5), 2^(1/7)]
m2: [2^(0/5), 2^(1/7)]
A1: [2^(0/7), 2^(1/5)]
d3: [2^(0/5), 2^(2/7)]
M2: [2^(1/7), 2^(1/5)]
A2: [2^(1/7), 2^(2/5)]
m3: [2^(1/5), 2^(2/7)]
d4: [2^(1/5), 2^(3/7)]
M3: [2^(2/7), 2^(2/5)]
A3: [2^(2/7), 2^(3/5)]
P4: [2^(2/5), 2^(3/7)]
d5: [2^(2/5), 2^(4/7)]
d6: [2^(2/5), 2^(5/7)]
A4: [2^(3/7), 2^(3/5)]
P5: [2^(4/7), 2^(3/5)]
A5: [2^(4/7), 2^(4/5)]
m6: [2^(3/5), 2^(5/7)]
d7: [2^(3/5), 2^(6/7)]
M6: [2^(5/7), 2^(4/5)]
A6: [2^(5/7), 2^(5/5)]
m7: [2^(4/5), 2^(6/7)]
d8: [2^(4/5), 2^(7/7)]
A7: [2^(6/7), 2^(6/5)]
M7: [2^(6/7), 2^(5/5)]

.

You can see that every interval has a unique range, and every interval has both a 5-EDO range limit and a 7-EDO range limit.

Here's a nice little bit of structure: the low range limit of one interval times the high range limit of its octave complement is always 2. For example, M2 and m7 are octave complements; here are the ranges they can be tuned to in order to produce tuning systems with the 12-TET primitive order:

M2: [2^(1/7), 2^(1/5)]
m7: [2^(4/5), 2^(6/7)]

and just as the intervals sum to give an octave P8, the frequency ratios multiply to give the pure ratio for the octave, t(P8) = 2/1:

2^(1/7) * 2^(6/7) = 2
2^(1/5) * 2^(4/5) = 2

.

Why are we getting terms from 5-EDO and 7-EDO as range limits? 

Here's a rough argument for the presence of the 5-EDOs terms: The value of t(P8) is fixed to 2 in all of these tuning systems. Since t(M7) is less than t(P8) in 12-TET, any pure octave tuning system with the same ordering over primitive intervals as 12 TET will have to have t(M7) < 2, and the value for a basis interval which causes M7 = P8 will be out of range.

Let's look at a specific pure octave tuning system with M2 as the second basis interval besides P8. What's the largest value of t(M2) for which t(M7) is less than t(P8) = 2? Well, the frequency ratio for M7 in this tuning system will be

t(M7) = t(M2)^x * (tP8)^y

where

x = (d*m - c*n) / (a*d - b*c)
y = (a*n - b*m) / (a*d - b*c)

and where

(a, b) = (2, 1) # M2
(c, d) = (12, 7) # P8
(m, n) = (11, 6) # M7

.

Through substitutions this becomes:

t(M7) = t(M2)^(5/2) * 2^(1/2)

.

The right side equals 2 when 

t(M2) = 2^(1/5)

so any value of t(M2) a bit less than 2^(1/5) will put M7 and P8 in the 12-TET ordering. My guess is that all the 5-EDO terms in the range limits are ultimately telling us that we're snuggling up to a value where M7 = P8. Note, I haven't actually explained why 2^(1/5) should be an *upper* limit for t(M2), but only why it might be a limit at all. Still, it's a start.

I think a similar argument explains the origin of 7-EDO terms in the range limits; namely, 7-EDO equates major and minor intervals, such as m2 = M2, so if we get too close to it when tuning our basis vector, then we lose the inequality {m2 < M2} that we have in 12-TET.

Here are the nitty gritty details. Let's start with a pure octave tuning system that has the minor third, m3, as its other basis vector, why not, and we'll find the value of t(m3) for which m2 = M2. 

We'll need these:

m2 = (1, 1)
M2 = (2, 1)
m3 = (3, 2)
P8 = (12, 7)

.

For the frequency ratio of m2 in a pure octave tuning system based on m3, we have

t(m2) = t(m3)^x * (2)^y

where

(x, y) = (5/3, -1/3)

.

For the frequency ratio of M2 in a pure octave tuning system based on m3, we have

t(M2) = t(m3)^x * (2)^y

where

(x, y) = (-2/3, 1/3)

.

The two frequency ratio expressions are equal 

t(m3)^(5/3) * (2)^(-1/3) = t(m3)^(-2/3) * (2)^(1/3)

when

t(m3) = 2^(2/7)

.

So we see a 7-EDO frequency ratio for t(m3) equates m2 and M2, and I suspect that all of the 7-EDO range limits are ultimately telling us that we're snuggling up to a value where the minor-nths equal the major-nths.

A 3Brown1Blue-style animation of the intervals moving on the number line as the value of a basis vector changes would be cool, no? Maybe one day.

I think these range limits are quite nice for exploring tuning systems. I don't know much about septimal tuning systems, but if I wanted to play around with them, I might just pick, oh, M3 to use as a basis interval and then search for small fractions in M3's range

M3: [2^(2/7), 2^(2/5)]

. I'd then find 9/7 as a good candidate for t(M3) and check how it sounds in a rank-2 pure octave tuning system. A tuned value of 11/9ths would be a good one to try if I want to hear unidecimal frequency ratios that have an 11 among their factors, with 14/11 as a close second choice. And if I wanted to go up to 13-limit for M3, I'd probably start with 13/10 or 16/13. And I came up with all of those ratios just from having the range limits, and not really doing any clever thinking. I love being able to find weird specific numbers that look random to the casual observer but which are determined by simple considerations, like 12-TET ordering over primitive intervals; it feels powerful. It feels like the sort of trick that might lead people to remark about me, "That man is friends with all the rational numbers."

The octave-complement structure of the range limits was quite nice, but there's way more structure to them:

One of the range limits for an interval will be a 7-EDO term of the form 2^(b/7), where b is just the d2 component of the interval (a, b) in the (A1, d2) basis. This d2 value also happens to be the ordinal minus one, e.g. (d3, m3, M3, and A3) all have 2^(2/7) as one of their range limits because 3 -1 = 2.

What about the 5-EDO terms in the range limits? Their forms are just as regular as the 7-EDO terms and almost as simple. If we're looking at the range for an interval (a, b) expressed in the (A1, d2) basis, the 5-EDO term is 2^((a - b) / 5). For example,. one of M6's range limits is 2^(4/5) because M6 = (9, 5) in the (A1, d2) basis and 9 - 5 = 4.

Putting it all together: If you make a pure octave tuning system by tuning a basis interval (a, b), then the range of values of t((a, b)) that preserves the 12-TET ordering will fall between 2^(b/7) and 2^((a - b)/ 5), and the term with the smaller numerical value will be the low limit of the range. 

It also happens to be the case that the 7-EDO term is the low range limit for augmented intervals and major intervals and P5, while the 5-EDO term is the low range limit for diminished intervals, minor intervals, and P4. The 7-EDO term and the 5-EDO term are equal if the interval is P1 or P8 (and equal to 1 and 2, respectively).

How does this new criterion for 12-TET ordering over primitive intervals relate to the one from the last post, namely that an EDO generated by tempering out an interval (a, b),

t((a, b)) = 1

will have the 12-TET ordering over primitive intervals when a < b and b is positive? The two are quite compatible, I'm happy to say.

If a < b, then {a - b < 0}. If {a - b < 0} then 2^((a - b)/ 5) is less than one. On the other hand, if b is positive, then 2^(b/7) is greater than 1. Thus t((a, b)) = 1 is always in range if a < b and b > 0. And in fact, we can extend the argument to a <= b, allowing for the case where a = b, so that {a - b = 0}, so that {2^((a - b)/ 5) = 1}, and then {1} will still be in range. That way we can also include 5-EDOs as being well-ordered. Also, if we allow b >= 0 instead of b > 0, then the upper limit can be exactly 1, and we get 7-EDOs back in the mix. Although 5-EDOs and 7-EDOs collapse some of the distinctions of 12-TET, so they don't really have the same order, but they also don't reverse the order at any point. They're fairly well-behaved.

-

I didn't know where to put this in the post, so I guess it's a postscript. The logarithmic middle of the range for P5 is not exactly the just 3/2 = 1.5 but rather 

sqrt(2^(4/7) * 2^(3/5)) = 2^(41/70) = 1.50078...

and I think it would be funny to make a song that secretly and imperceptibly used that frequency ratio for perfect fifths. The straightforward way to do that is to use the 70-EDO generated by tempering out dddddddddd8, which is (2, 7) in the (A1, 2) basis. Hilarious prank on any Pythagorean friends you may have.

No comments:

Post a Comment