Meantone Counterpoint

I've talked a little bit on this blog about microtonal counterpoint, but my theories and my programs for composing it aren't very far along. Indeed, even just for regular counterpoint in 12-TET, I've never written a program that gets all the way up to fourth-species Fuxian counterpoint, to say nothing of florid or imitative counterpoint. I have a long way to go. But microtonal counterpoint is important to me and I'm going to re-devote myself to the project. Right here.

:: Contrapuntal Motion

When two simultaneously sounding voices each move by their own melodic intervals to new notes, the discipline of counterpoint classifies the relative motion in terms of the relative sizes of the melodic intervals and whether the voices cross. These contrapuntal motions are one of the most important things in counterpoint.

This is already a challenge for the theory of microtonal counterpoint, because intervals in one microtonal tuning system won't be the same size as intervals in another. There isn't, in full generality, a fact of the matter as to which of two intervals is larger, including whether an interval is larger than P1. In my post Orders of Modified Musical Intervals, I wrote about how if we assume that we're writing for tuning systems that preserve the order of natural intervals found in 12-TET, then that assumption induces a partial order over all rank-2 intervals. We could consult this partial order for composing and arranging; with it, we have some guarantees about relative interval size, and maybe we could constrain ourselves to writing with respect to those guarantees.

I'm proud of that post, and I stand by it in theory, but I'd also like an easier way to compose than consulting that partial order graph. My new plan is to compose for rank-2 tuning systems in which P1 < d2 < A1. I'll call this the meantone constraint. This constraint is true of the meantone tuning systems, and of 31-EDO, and of any other rank-2 pure octave syntonic tuning system that tunes P5 to a value between 2^(10/17) and 2^(13/22). It's a good family to work in. Also, for higher-rank tuning systems, the meantone constraint holds in Lilley's 5-limit just intonation tuning system, and in all three of the septimal extensions I've considered to Lilley's 5-limit system. The meantone constraint does not hold true in Pythagorean tuning or in 19-EDO; indeed, of the five families of once-modified interval orders that I identified in the Orders Of Musical Intervals post, only one family has A1 and d2 larger than P1. This assumption certainly isn't universal - but it's our starting point for this blog post. By tuning the octave purely, t(P8) = 2, and by also tuning one of the intervals below to a value below, we can get a few different famous members of the Meantone family of tuning systems:

t(m3) = 6/5  # Third-comma meantone
t(M3) = 5/4  # Quarter-comma meantone
t(A4) = 45/32  # Sixth-comma meantone
t(dddd3) = 1/1  # 31-EDO

.

Given the meantone constraint, it's fairly easy to compare the size of most simple rank-2 intervals. First, we represent intervals in the (A1, d2) basis, as we have done so often in the past. Here are some familiar intervals in (A1, d2) for reference, specifically ordered here according to quarter-comma meantone tuning:

P1 : (0, 0)
AA0 : (1, -1)
d2 : (0, 1)
A1 : (1, 0)
m2 : (1, 1)
AA1 : (2, 0)
dd3 : (1, 2)
M2 : (2, 1)
d3 : (2, 2)
A2 : (3, 1)
m3 : (3, 2)
AA2 : (4, 1)
dd4 : (3, 3)
M3 : (4, 2)
d4 : (4, 3)
A3 : (5, 2)
P4 : (5, 3)
AA3 : (6, 2)
dd5 : (5, 4)
A4 : (6, 3)
d5 : (6, 4)
AA4 : (7, 3)
dd6 : (6, 5)
P5 : (7, 4)
d6 : (7, 5)
A5 : (8, 4)
m6 : (8, 5)
AA5 : (9, 4)
dd7 : (8, 6)
M6 : (9, 5)
d7 : (9, 6)
A6 : (10, 5)
m7 : (10, 6)
AA6 : (11, 5)
dd8 : (10, 7)
M7 : (11, 6)
d8 : (11, 7)
A7 : (12, 6)
dd9 : (11, 8)
P8 : (12, 7)
.
To compare two intervals, first, subtract interval2 from interval1. If the components of the difference vector are both zero, then the intervals under comparison are the same. Otherwise, if the components of the difference vector are both non-positive, then interval2 is larger. If the components are both non-negative, then interval1 is larger. Both of those facts follow from A1 > P1 and d2 > P1. 

When the components of the difference vector have different signs, we can still sometimes make a judgement, since we also know that A1 > d2. If the A1 component of the difference vector is negative and d2 is positive and A1 is >= d2 in magnitude, then the interval2 is larger. If the A1 component is positive and the d2 component is negative and A1 is >= d2 in magnitude, then interval1 is larger. It's only when the components have mixed signs and abs(d2) > abs(A1) that there's ambiguity. And I think I can compose around that ambiguity.

This produces a new partial order - one that's much less partial than before. It's so close to total that it's basically a straight line and my nice Graphviz image of the graph was just too tall to post here, so you get text:
P1
AA0 >< d2
A1
m2
AA1 >< dd3
M2
d3
A2
m3
AA2 >< dd4
M3
d4
A3
P4
AA3 >< dd5
A4
d5
AA4 > < dd6
P5
d6
A5
m6
AA5 >< dd7
M6
d7
A6
m7
AA6 >< dd8
M7
d8
A7 >< dd9
P8
Here each line is smaller than the one below it, and >< means "incomparable". In summary, we can put all of the natural and once modified intervals into a total order, and twice modified intervals can basically be placed in the order, except occasionally you won't be able to compare a twice diminished interval against a twice augmented interval, and also there are incompatibilities between A7 >< dd9 and AA0 >< d2, but whatever. These constraints seem totally fine to me. I'm capable of composing music where I'm not allowed to use a melodic interval of a AA6 simultaneously with a melodic interval of a dd8. That's not even a little bit of a problem.

A fun side note: In 31-EDO, the intervals I list as incomparable above are actually equivalent, e.g. A7 and dd9 are both tuned to 2^(30/31), while AA4 and dd6 are both tuned to 2^(17/31).

How about a code snippet in python for comparing meantone intervals. It's not great code - there's some duplicated stuff, particularly the stuff that I should move into the Interval class - but it works. It's kind of funny to me that once upon a time, to compare intervals, I would just take the difference of midi notes. I think I've come a long way.

I think that solves contrapuntal motion - or it gives you the tools to solve it, anyway. Maybe I should spell it out though, since I'll be coding it anyway. Suppose we have voices called v1(t) and v2(t), and further, assume that v2 should always be above v1. If the harmonic interval {v2(t) - v1(t)}, is less than P1 at any time t, then v2 has crossed below v1. That's our first type of contrapuntal motion, and it's bad. I suppose technically the crossing motion exists at the point where the harmonic interval goes from being > P1 to being < P1, or back again when the harmonic interval goes from being < P1 to being > P1. But I'm not going to cross the voices, so it doesn't matter much where it technically happens - it's just not going to happen.

All of the other contrapuntal motions assume non-crossing. Once we've established non-crossing, then we don't need the harmonic intervals anymore to classify the motion, we just need the melodic intervals, e.g. {v2(t + 1) - v2(t)}. If melodic intervals in v1 and v2 sampled between two times (t) and (t+1) are both larger than P1, or both smaller than P1, or both equal to P1, then the motion is called "direct". If the motion is direct and the intervals are the same, then the motion is "parallel". If the motion is direct and the intervals differ, then the motion is "similar". If motion is not direct, we have two more options: If one melodic interval is equal to P1 and one is not, then we have oblique motion. If the motion is not direct and neither melodic interval is equal to P1, so that one melodic interval is larger than P1 and one is smaller, then the motion is contrary. Here's a hierarchy that's also a decision tree, sort of.


* crossing_motion: some harmonic interval < P1
* non_crossing_motion:
* direct_motion: (v1_mel = v2_mel) or (v1_mel > P1 and v2_mel > P1) or (v1_mel < P1 and v1_mel < P1)
* parallel_motion: v1_mel = v2_mel
* similar_motion
* indirect_motion
* oblique_motion: (v1_mel = P1 or v2_mel = P1)
* contrary_motion
.
That's the tersest way that I know to write it. If you've got a better way, I'm interested to see it.

I think I could write counterpoint purely in interval space, but let's talk about converting to pitch space anyway. That's what musicians like to read. Intervals and pitches exist in one-to-one correspondence - it's only when we tune them to frequency ratios and frequencies that we lose information. A pitch consists of a letter name, a group of symbols called an accidental, and finally an octave. If you don't include the octave, then you instead have a pitch class. The easiest way to convert intervals to pitches is to pick a pitch origin, like natural C in octave 1, or C1 for brevity. Then we can associate the interval "P5" to "C1 + P5", which is G1. To calculate the pitch name for an interval {i} over C1, first initialize a counter, octave_counter = 1. If the interval {i.d2 >= P8.d2}, then substract P8 from {i} and add 1 to the octave_counter. Keep doing that until {i.d2 < P8.d2}. Alternatively, if at the start you had {i.d2 < P1.d2}, then add an octave and substract 1 from the octave counter. Keep doing that until {0 <= i.d2 < 7}. Now the value of the octave_counter is the octave of the original pitch. Nice. Actually, we could probably do it all in one step with some modular arithmetic, like in python, for {i.d2 = 15}, we can do divmod(i.d2, P8.d2), which returns (2, 1), where the first component is the octave of the pitch and the second component is the new value of i.d2 after we've added or substracted octaves. Then we still need to adjust {i.A1} like as if we'd added or substracted octaves, e.g. {i.A1 = i.A1 - (P8.A1 * 2)} in this case.

Next we can get the letter name of the pitch by taking the {i.d2}th element of the array "CDEFGAB", counting from zero, so that {i.d2 = 0} will give us a letter name of C and {i.d2 = 4} will give us a letter name of "G". It happens to be that i.d2 will be one less than the interval's ordinal, so that i.d2 = 4 means we have some kind of a fifth interval. To get the accidental of the pitch for {i}, we need to compare {i.A1} to the A1 of the natural pitch with the same letter name. This is just as easy as finding the letter name: now we take the {i.d2}th element of the array [0, 2, 4, 5, 7, 9, 11]. For example, the G natural over C1 has an A1 of 7. This 7 also happens to also be the number of division in 12-EDO between G1 and C1, although we won't be working in 12-EDO. Now the accidental degree of the pitch can be found as {accidental_degree = i.A1 - A1_for_natural}. If the accidental_degree = 0, then we have a natural pitch and we usually don't write in any accidental. If the accidental_degree > 0, then the accidental is a sharp symbol repeated {accidental_degree} number of times. If accidental_degree < 0, then the accidental is a flat symbol repeated {accidental degree} number of times.

I've talked a lot in the past about how to tune frequency ratios, such as t(P8) = 2/1. Now that we're mapping intervals (above a pitch origin) to pitches, the only thing we need in order to tune pitches to frequencies (rather than frequency ratios) is a frequency for the pitch origin. You could do a little math and choose C1 so that A4 has a frequency of 440 hz or 432 hz or anything else, but as long as we're breaking/improving 12-EDO, why not break/improve the pitch origin also? I'm fond of Sauveur Pitch, in which all the natural Cs are tuned exactly to integer powers of 2 hz, starting with C-4 at 1 hz, and giving us our first clearly audible pitch at t(C1) = 32 hz. That's how I'll be fixing my pitch space. You're welcome to do something else. In comparison, C1 in 12-TET centered on an A4 of 440 hz has a frequency of 440 * 2^(-9/12) / 8, which is about 32.7 hz. Not too far off. Centering your pitch space on t(C1) = 32 hz, I think there's a range of about 44 cents that A4 can fall in, depending on the tuning system you use, and they're all flat compared to 440, which isn't a huge surprise since 32 hz is flat relative to 32.7 hz.

Honestly, I also like the system where A4 is set to 440, because an A1 around 55 hz is the lowest piano pitch that I can sing with force, and having an integer frequency for that point is pretty cool, and also apparently "the lowest note that one of your number can sing shall be called A natural" might historically have been how church monks would tune their choirs before tuning forks were invented, I once heard, and that's a fun rumor. But I'm still going with Sauveur.

From here on, I'll just progress through Fux's different counterpoint species until I meet some resistance, maybe posting insights and code snippets as I go. If that goes well, I'll probably talk about work other people have done on microtonal counterpoint, e.g. in addition to consonances and dissonances, the microtonal composer Easley Blackwood Jr. recognized "discords" and he had rules for preparing and resolving them contrapuntally. We'll talk about Blackwood eventually.

:: First Species Counterpoint

My guess is that it's not terribly easy to get cool pitches or intervals by following the Fuxian rules of counterpoint. The rules do a good job of keeping us in the space of natural intervals, with occasional deviations into once-modified intervals, but almost never will we reach twice-modified intervals or higher. The obvious way to get to weird intervals faster is to expand the set of melodic and harmonic intervals that we allow ourselves to use. For example, in 12-TET, the m3 and M3 are considered consonant harmonic intervals, but in other EDOs, microtonal composers often use nearby intervals as if they were consonant thirds, e.g. Zheanna Erose talks about the use of basic triads in 31-EDO built by combining the following intervals harmonically with P1 and P5:

Subminor triad: A2
Minor triad: m3
Neutral triad: AA2 = dd4
Major triad: M3
Super-major triad: d4
.
And those chords sound pretty good in Zheanna's video, yeah? So the pseudo-third intervals and their octave complements, the pseudo-sixths, might be good additions to the consonant harmonic intervals if you're writing counterpoint microtonally. I suppose you'd have to check the sound of triads based on AA2 and dd4 in tuning systems where they're not equated if you want to decide between them or decide how to use them with different functions.

Also, in traditional counterpoint, most melodic motion is done by "steps" - intervals of m2 and M2 - with larger melodic motions ("leaps") usually being following by steps in the opposite direction so we don't move too far too fast. For microtonal music, we might expand our notions of which intervals are suitable as melodic steps ("consonant" steps?), to include some other intervals between P1 and m3 - some number of {d2, A1, AA1, dd3, d3, A2}, if any of those sound good melodically - I don't know if they do, but I'm going to write my counterpoint programs so that it's easy to change the sets of usable harmonic and melodic intervals for experimentation.

But let's follow the rules before breaking them. I'll be developing my programs on the exercises in Jacob Gran's counterpoint youtube videos, starting with How to Compose 1:1 Counterpoint || Tonal Voice Leading 1. You may find his voice more bearable at 2x speed or faster. He starts us out with this cantus firmus composed by Salieri:

C4,w F4,w E4,w A4,w G4,w F4,w E4,w D4,w C4,w
.

We're going to write a counterpoint melody above that. Each counterpoint note has be a consonant interval above the note sounding at the same time in the cantus firmus. Our consonant options are:

P1, P5, P8, m3, M3, m6, M6, m10, M10

with P1 only being an option on the first and last notes. Gran tells us that we can't use two perfect consonant harmonic intervals (i.e. P1, P5, P8) in a row. You've got to throw in some imperfect consonant harmonic intervals, (m3, M3, m6, M6, m10, M10), for spice. And for now, we won't use any dissonant harmonic intervals, those being (2nds, 4ths, 7ths, augmented intervals, and diminished intervals).

When Gran talks about scale degrees in this exercise, we're going to assume a major scale, (P1 M2 M3 P4 P5 M6 M7), over C natural. Natural C is also the first and last pitch class of the cantus firmus.  Because we're writing a counterpoint above the cantus firmus, Gran tells us the counterpoint must begin on scale degrees ^1, ^3, or ^5. Among our consonant intervals, this limits us to P1, M3, P5, P8, M10.

The counterpoint can move melodically by these small intervals ("steps"):

(m2 M2)

up or down. So these seconds are ?consonant melodically, even though seconds aren't consonant harmonically. Different sets of intervals. Using non-positive numbers, we can write names for the descending versions of those steps, so the full set of ?consonant melodic steps could be written:

(m0 M0 m2 M2)

. The counterpoint can also move melodically by these large intervals ("leaps"):

(m3, M3, P4, P5, m6, M6, P8)

up or down. By embracing negative numbers, we can again write the full set explicitly:

(m3, M3, P4, P5, m6, M6, P8, m-1, M-1, P-2, P-3, m-4, M-4, P-6)

. Those are the ?consonant melodic leaps. Okay, I really want a different adjective. Harmonic intervals can be consonant, and melodic intervals can be... graceful? Fluent. The fluent melodic intervals are the fluent steps and fluent leaps.

The counterpoint can also move by P1, i.e. stay still. The cantus firmus won't have successive repeated pitches, so this is the only way that we'll get oblique motion between the cantus firmus and the counterpoint.

Gran also says that we can't use P4/P5 melodically between scale degrees ^4 and ^7. Weird flex, but okay. In a major scale, ^4 lies a P4 above P1, plus or minus some number of P8s, and ^7 lies a M7 above P1, plus or minus some number of P8s. Of course, we can't leap by more than an octave, but it might still happen that we reach scale degree ^4 or ^7 in a different octave by smaller motions, and then we'll have to do some tests.

Gran says that melodic leaps larger than a M3 are "typically" followed by step-wise melodic intervals in the opposite direction (i.e. the leaps are "recovered"), "especially" after leaping upward. The "especially" part isn't hard to code: I'll just always recover downward by step from melodic leaps upward that are larger than M3. The "typically" part is a little bit trickier: I'm okay with generating melodies probabilistically, but I'd like the part of my code that *verifies* melodies to be deterministic. I don't want a melody to be valid on one pass of my program and invalid on another pass. So how about these for deterministic rules: first, we'll always recover upward by step after a melodic leap downward that is larger than P4 in magnitude (i.e. less than P-2), and 2) no two successive downward melodic interval in sum will outline an interval more than A5 in magnitude, so that you can go down by P4 + M2 or M3 + M3, but not by P4 + m3 or m2 + P5. I haven't played with those intervals to see if they actually sound typical of a baroque setting, but I can change it later if it's not good. An A5 below P1 is better known as a d-3, a diminished negative third. No two successive melodic intervals of a voice shall sum to less than d-3.

Gran also gives some vague rules about how the overall melodic shapes of the cantus firmus and the counterpoint should differ. I'm not coding that and I'm not sorry.

You might be noticing that there are kind of a lot of rules, and we're only like halfway done. In my experience, this is one of the biggest challenges of writing counterpoint programs: there's a a lot of rules and weird special cases that make your code really ugly, and you'll get sad looking at it and quit for a few months, and when you come back to it, you'll want to start from scratch instead of looking at that awful code again. The next challenge is finding counterpoint melodies that satisfy all the rules, which is kind of like a fun search+optimization problem for computer science students, and the last challenge is wondering why you should keep working with all these rules when no one even likes baroque music, just play Driver's License by Olivia Rodrigo again, god damn. The second problem is fun and I have some new techniques I want to try against it, and my solution to the third problem is to instead make weird mathy microtonal music that challenges me and might help introduce me to some with weird mathy people who also like being challenged by art. But problem-one doesn't go away: the code's still going to be flaming garbage. Ready for more garbage? Cool.

Do you remember the types of contrapuntal motion, like parallel motion and similar motion? We've got rules about them now. First, the counterpoint can't cross the cantus firmus. Easy. Second, we can't approach a perfect harmonic consonance (e.g. a harmonic interval of P1, P5, or P8) by direct motion (parallel motion of similar motion). The contrapuntal motion that ends on a perfect harmonic consonance instead has to be indirect, i.e. it has to be contrary (with one interval larger than P1 and one smaller than P1) or oblique (with one equal to P1 and one unequal to P1).

Those are the rules as Gran presents them in the first exercise. You can find more rules in different sources, but these are a good start. Let's code up the constraints, find some solutions, and give the solutions a listen.

In the past, when I've tried to solve counterpoint constraints, I've tried a few strategies. One is to generate notes one at a time from start to finish, looking at the set of valid notes for the next time step and picking randomly from those. If you get to a point where there are no remaining valid steps, then abort and start over. This isn't memory intensive in each run, but it fails a lot, and it fails more with longer songs. Another thing I've tried is to a recursive function that can try every possible melody, which aborts, prunes, and backtracks when difficulties are encountered. This is more impressive and rarely fails, but it's slow and memory intensive and maybe overkill. One strategy I don't think I've ever tried is to make a complete song that violates some constraints and to then try to fix it by small edits. Not every optimization + design problem can be solved by small local edits, but I don't think I ever tried with counterpoint, and I'd like to. I'll eventually need to be able to make modifications to an existing phrase in order to compose imitative counterpoint, so I might as well figure that out now.

I kind of like the idea of making multiple passes through the contrapuntal melody in which you either:

* adjust things to satisfy the harmonic constraints, or
* adjust things to satisfy the melodic constraints.
.
There won't be any guarantee that you'll converge to something valid, but maybe it will work out fine anyway? Sometimes things work out fine, you know? And maybe you can maintain a list of flags on all of the notes of the melody that say either "this pitch is fixed, don't change it" or "this one is free for modification". That way maybe you're gradually locking down the form of the melody instead of alternating back and forth between two version, one that's more harmonically valid and one that's more melodically valid, without making progress.

I never mentioned or coded a rule saying that the pitch classes had to come from a C major diatonic scale. Often, when my program ventures outside of a C major scale, it sounds quite bad, but also I just got a very nice melody with a Bb. That's encouraging. I want to go outside of the scale. That's kind of the point. I admit, it sounds better as a B natural, but it also sounds quite good as a Bb. It happened over a G in the cantus firmus, which I'd argue should suggest an Eb.major chord to you, which is the relative major of C.major's parallel minor key. It's not a G.minor. Don't tell me it's a G.minor. Ooh, and now I've gotten an Ab over F that's bearable. Maybe we could read that as an F.minor, another parallel borrowing.

There's, um - I don't know if it's a bug in my code or if it's a psycho-acoustic phenomenon I didn't account for, but right now my software synth get *way louder* on higher notes, and it reminds me of that famous performance of the 20th Century Fox theme on kazoo. I definitely have to do something about that before I show you my code or any rendered melodies.

...

Quartertones

Background: Algebraic Structure Of Musical Intervals And Pitches, From Notated Music to Audible Sounds

Previously: EDO GeneratorsReinventing 7-Limit Just Intonation

There's a youtube channel I just found called Quartertone Harmony that explores... quartertone harmony. It's pretty good and it makes me want to learn about quartertone music, i.e. music written in 24-EDO.

A quick refresher on interval space and EDO tuning systems:

Tuning-systems map interval-space to frequency-ratios. For rank-2 interval space, we we can make a tuning system that breaks an Octave into logarithmically Equal Divisions (an EDO) by "tempering out" a second basis interval, B, that's independent of the octave, i.e. we set the tuned value of the basis interval to unity, so that t(P8) = 2 and t(B) = 1. That fully defines an EDO tuning system and we can use it to figure out the logarithmic frequency ratio for any other interval using those two basis intervals. There are other tuning systems, like just tuning systems and the meantone temperaments, but this post is mainly about 24-EDO.

How does the tuning work though? Well first, prior to the choice of any tuning system, the rank-2 intervals themselves can each be represented as a pair of integers in a coordinate system with two intervals as a coordinate basis. The classic basis for representing rank-2 intervals is the Pythagorean basis, (P5, P8), in which P5 has coordinates (1, 0) and P8 has coordinates (0, 1). With combinations of those you can get other intervals like a perfect fourth (which is a perfect fifth below an octave, P4 = (-1, 1)), or a major sixth (which is one octave below three perfect fifths, M6 = (3, -1)). The names like P4 and M6 are more fixed by history than fixed by the math, but history found a pretty good system and you can read about how intervals are regularly named in Algebraic Structure Of Musical Intervals And Pitches. (P5, P8) is historically important as a basis of rank-2 interval space, but my favorite rank-2 basis is (A1, d2), which Lilley also talks about in that post Algebraic Structure post.

Once you pick basis vectors for your tuning system and their tuned values, then you can tune any other interval. To tune a rank-2 interval (m, n) in a tuning system, we start with our two basis intervals (a, b) and (c, d), and tuned values for them, t(a, b) = basis_value1 and t(c, d) = basis_value2. Then

frequency_ratio = t(m, n) = (basis_value1)^x * (basis_value2)^y

where

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

This simplifies a lot for EDOs. Since one of the basis vectors has a value of one, and one raised to a power is one, the frequency ratio formula just becomes:

frequency_ratio = 2^y

where

y = (a * n - b * m) / (a * 12 - b * 7)

.

In the EDO-generator post we found out which intervals can be tempered out to make EDOs that preserve the same order of primitive intervals (P1, m2, M2, m3, M3, P4, P5, m6, M6, m7, M7) as 12-TET. We also found out that there is no interval that can be tempered out to produce a 24-EDO that preserves the 12-TET order of primitive intervals.

A lesser man might say, "I guess 24-EDO isn't well behaved, let's write music in a different tuning system.". That used to be me. Then I found an exuberant gesticulating youtuber with some really cool chord progressions and now I need to go deeper.

I'm going to try understanding 24-EDO music from several different perspectives. The first perspective is as a subset of an EDO with more divisions, namely 72-EDO. Next, I want to look at different 24-EDOs that don't preserve the 12-TET order and see if there's something musically interesting/important/insightful about how the usual order of primitive intervals is not preserved - maybe it's good that the usual primitive order is broken -- maybe 12-TET is wrong. Third, I want to try analyzing 24-EDO music as 12-TET music equipped with just-borrowings, e.g. pitch bends and tremolos that hint at harmonic intervals and other justly tuned intervals, including intervals that aren't rank-2. That last perspective is where I'll try to understand more deeply the stuff in the Quartertone Harmony videos.

Okay, first up, 24-EDO as a subset of a higher EDO. We can't use 48-EDO because it also isn't well behaved. The first even multiple of 12 that's well behaved is 72-EDO. The natural way to produce a 72-EDO is by tempering out dddddddddd14, which has coordinates of (12, 13) in the (A1, d2) basis, if you were wondering.

Here are the names of the 72-EDO intervals that have the same frequency ratios as 24-EDO:

2^(0/24): P1
2^(1/24): dd4
2^(2/24): dddd7
2^(3/24): dddddd10, AAAA-3
2^(4/24): A0
2^(5/24): m3
2^(6/24): dd6
2^(7/24): dddd9, AAAAA-4
2^(8/24): AAA-1
2^(9/24): A2
2^(10/24): d5
2^(11/24): ddd8
2^(12/24): ddddd11, AAAAA-2
2^(13/24): AAA1
2^(14/24): A4
2^(15/24): d7
2^(16/24): ddd10
2^(17/24): AAAA0, ddddd13
2^(18/24): AA3
2^(19/24): M6
2^(20/24): d9
2^(21/24): dddd12 AAAAAA-1
2^(22/24): AAAA2
2^(23/24): AA5
2^(24/24): P8
.

Analyzing 24-EDO as being secretly 72-EDO is about as crazy as analyzing 12-EDO as if it were secretly 72-EDO: no one would do it if there were a better option. You might notice that almost none of the primitive intervals are present above, e.g. if we try to analyze 24-EDO as 72-EDO, then we're looking at music that doesn't have any major thirds or perfect fifths. In this system, when someone plays what would be called a major triad in 12-TET, (P1, M3, P5), we should now call it (P1, AAA-1, A4). I confess, my knowledge of music theory is not so well developed that I know a standard name for that chord.

That didn't work so well. Next, let's look at how different 24-EDOs disrespect 12-TET.

The interval with the smallest absolute (A1, d2) coordinates that can be tempered out to get a 24-EDO is AAA6, with coordinates (12, 5) in (A1, d2). If we temper that out, we get... a weird mess.

In the 24-EDO made by tempering out AAA6, diminishing an interval increases its frequency by a factor of 2^(5/12), e.g.

M2 : 2^(2/24)
m2 : 2^(7/24)
d2 : 2^(12/24)
dd2 : 2^(17/24)

.

Here's a fuller list:

2^(0/24): AAA6, P1, ddd-4
2^(1/24): AA4, d-1, ddddd-6
2^(2/24): AAA7, M2, ddd-3
2^(3/24): AA5, d0, dddd-5
2^(4/24): M3, ddd-2
2^(5/24): AA6, d1, dddd-4
2^(6/24): A4, dd-1
2^(7/24): AA7, dddd-3, m2
2^(8/24): A5, dd0, ddddd-5
2^(9/24): AAA8, dddd-2, m3
2^(10/24): A6, dd1, ddddd-4
2^(11/24): P4, ddd-1
2^(12/24): A7, d2, ddddd-3
2^(13/24): P5, ddd0
2^(14/24): AA8, d3, ddddd-2
2^(15/24): M6, ddd1
2^(16/24): AA9, d4, dddd-1
2^(17/24): M7, dd2
2^(18/24): d5, dddd0
2^(19/24): A8, dd3
2^(20/24): dddd1, m6
2^(21/24): A9, dd4, ddddd-1
2^(22/24): ddd2, m7
2^(23/24): dd5, ddddd0
2^(24/24): P8, ddd3

.

And here are just the natural intervals:

2^(0/24): P1
2^(2/24): M2
2^(4/24): M3
2^(7/24): m2
2^(9/24): m3
2^(11/24): P4
2^(13/24): P5
2^(15/24): M6
2^(17/24): M7
2^(20/24): m6
2^(22/24): m7
2^(24/24): P8

.

I contemplated a respelling where every major is swapped with a minor and every augmentation is swapped with a diminution. That respelling still doesn't give us 12-TET order over primitive intervals, but it's a lot closer. The major triad in the respelled system actually looks pretty reasonable. It has frequency ratios of

2^(0/24): P1
2^(9/24): M3
2^(13/24): P5

whereas the frequency ratios for the elements of the major triad in 12 TET are now named:

2^(0/24): P1
2^(8/24): d5
2^(14/24): A3

in the respelled AAA6-based 24-EDO.

So the 8/24 becomes a 9/24, and the 14/24 becomes a 13/24 - that is to say, the third widens slightly and the fifth narrows slightly. Those aren't better approximations to harmonic/just intervals than we had in 12-TET, but they're also not too far off. They're a little spicy. If you're looking for that good ear spice, respelled 24-EDO has got you covered.

I want to figure out what that respelling is doing mathematically before I use it any more.

...

Want to try making a different 24-EDO by tempering out another interval besides AAA6? Sure! My EDO-finder program says that these should all work:

(12, 5): AAA6
(24, 10): AAAAAAA11
(36, 15): AAAAAAAAAA16
(36, 19): AAA20
(36, 23): ddd24
(48, 20): AAAAAAAAAAAAA21
(60, 25): AAAAAAAAAAAAAAAAA26
(60, 37): ddd38
(72, 30): AAAAAAAAAAAAAAAAAAAA31
(72, 38): AAAAAAA39
(72, 46): ddddddd47
(84, 35): AAAAAAAAAAAAAAAAAAAAAAAA36
(84, 47): AAA48
(96, 40): AAAAAAAAAAAAAAAAAAAAAAAAAAA41

Those are not all linearly independent, e.g. (24, 10) is just (12, 5) times two. I think (36, 23) = ddd24 looks pretty interesting. Let's do that one.

...

Oh man, this one's even crazier.

2^(0/24): P1
2^(1/24): d8
2^(2/24): dd15
2^(3/24): M-1
2^(4/24): m6
2^(5/24): d13
2^(6/24): A-3
2^(7/24): P4
2^(8/24): d11
2^(9/24): A-5
2^(10/24): M2
2^(11/24): m9
2^(12/24): A-7, d16
2^(13/24): M0
2^(14/24): m7
2^(15/24): d14
2^(16/24): A-2
2^(17/24): P5
2^(18/24): d12
2^(19/24): A-4
2^(20/24): M3
2^(21/24): m10
2^(22/24): AA-6
2^(23/24): A1
2^(24/24): P8

.

There's no (m2, m3, M6, M7) above. Those first two are smaller than P1, the second two are larger than P8. Crazy.

...

If I ever figure out a good tuning system that maps rank-2 interval space to a 24-EDO, the pitch names will follow naturally. For example, no matter what rank-2 tuning system you're in, C2 + dd5 = Gbb2. The only question is, which of the 24 frequency ratios in 24-EDO should be called Gbb2? That's what you need the tuning system for.

In the mean time, until I figure out how to do it right, here's a notation that's definitely wrong: introduce new accidentals for pitch classes that are half sharp (+), half flat (-), three-halves sharp (#+), and three-halves flat (b-). Then we can name the 24 pitch classes of a chromatic scale incorrectly:

C
C+/Db-
Db/C#
C#+/D-
D
D+/Eb-
Eb/D#
D#+/E-
E
E+/F-
F
F+/Gb-
Gb/F#
G-/F#+
G
Ab-/G+
Ab/G#
A-/G#+
A
A+/Bb-
Bb/A#
B-/A#+
B
B+/C-

.

It's no worse than pretending that Bb is the same as A#, which lots of musicians and music teachers do.  But it's still pretty gross.

What if we want to make circles that visit all 24 pitch classes by regular intervals, like the circle fifths? To do that, we can step by any integer number of divisions that's coprime with 24. In the range (1, 24), they happen to be:

[1, 5, 7, 11, 13, 17, 19, 23]

.

All of these have pretty clear interpretations.

 * 19 divisions of the octave in 24-EDO, 2^(19/24), approximates an octave-reduced 7th harmonic (7/8), and 5 divisions is its octave-complement.

* 11 divisions, 2^(11/24), is close to a reduced 11th harmonic, (11/8), and 13 divisions is its complement.

* 17 divisions, 2^(17/24) is close to a reduced 13th harmonic, (13/8), and 7 divisions is its complement.

* 1 division and 23 divisions are obviously the chromatic scales in either direction. The frequency ratios are not close to any small harmonics. The octave-reduced 33rd harmonic, (33/32), is pretty close to 1 division, i.e. 2^(1/24), I suppose.

What about other small harmonics? We don't do any better approximating them in 24-EDO than we do in 12-TET:

* 14 divisions in 24-EDO approximates a reduced 3rd harmonic (3/2, the perfect fifth), just as 7 divisions did in 12-TET.

* 8 division in 24-EDO approximates a reduced 5th harmonic (5/4, the major third), just like 4 division did in 12 TET. 

* 4 division in 24-EDO approximates an octave reduced 9th harmonic (9/8, the major second), just as 2 division did in 12-TET.

.

Generally, to find the number of EDO divisions that best approximates a frequency ratio, say 13/8, you start with

13/8 = 2^(x/24)

and invert 

x = log_2(13/8) * 24

x ~ 16.81

.

So, you  can see, 17 steps in 24-EDO isn't a stunning approximation to the 13th harmonic, but it's better than the 12-TET approximation (and will be whenever x rounds to an odd number).

...

Okay, so, the space of rank-2 musical intervals doesn't collapse down to a 24-EDO. And that's a damn shame, because we'd like to analyze stuff like Wyschnegradsky's 24-EDO preludes or King Gizzard and The Lizard Wizard's "Melting" with the full machinery of music theory.

What if we go up to rank-3 musical intervals? I've neve tried making EDOs from that. It could be interesting.  Rank-3 interval space is good for representing 5-limit just intonation, so that's a start, but if we want to talk about how 24-EDO has 7th, 11th, and 13th harmonics, then maybe we should skip up to rank-6 interval space right away and see if we can make an EDO from that.

I don't know much about rank-6 interval space. I've written at length on this blog about my attempts to make/find a good rank-4 interval space; I never found a system as cool as I'd like, but I did talk about two fairly functional systems. In both systems, you just take 5-limit just intonation notationa and prepend new adjectives (sub and super) for ratios that differ from the 5-limit versions by a septimal comma - and the two systems just used different septimal commas.

If we continue on in that way from rank-4 to rank-5 and rank-6, we'll need some undecimal and tridecimal commas and some new adjectives to prepend onto the interval names.

A common staff notation for microtonal music is the Extended Helmholtz-Ellis Just Intonation Pitch Notation and it comes with a set of commas for different prime limits. Want to just try those? I do.

EHEJIN uses 64/63 as a septimal comma, 33/32 as a undecimal comma, and 27/26 as a tridecimal comma. All of those are super-particular ratios, which is kind of nice. We need some principle for picking commas, and super-particulars are about as good as any.

So ... I guess we also need adjectives. Adding or substracting a septimal comma makes something super or sub, notated Sb and Sp. How about we associate the undecimal comma with (ascendant | descendant), notated As and De. And the tridecimal comma can pair with (prominent | recessed), notated as Pr and Re, why not. Putting the HEJI 7th, 11th, and 13th commas together with the tuned basis intervals from Small Intervals in 5-Limit Just Intonation, we get:

t(Ac1) = 81/80
t(A1) = 25/24
t(d2) = 128/125
t(Sp1) = 64/63
t(As1) = 33/32
t(Pr1) = 27/26

.

There's another staff notation for just intonation made by the great composer Ben Johnston that uses some different commas for higher prime limit accidentals. His commas are also super-particular ratios, just not always the same ones. Again, importing his 7th, 11th, and 13th harmonic commas, we get:

t(Ac1) = 81/80
t(A1) = 25/24
t(d2) = 128/125
t(Sp1) = 36/35
t(As1) = 33/32
t(Pr1) = 65/64

.

In my post on reinventing 7-limit just intonation, I argued for the use of the fraction 21/20 (the Palatine comma) as a septimal accidental, so it's a little bit sad to me that neither HEJI nor Johnston use it, but also the fact that those two didn't agree on the septimal and tridecimal accidentals makes me think that it's all kind of meaningless and you can do whatever you want.

The HEJI accidental fractions only have 2 and 3 as factors, other than the prime limit that they're introducing:

t(Sp1) = 64/63 = 2^6 / 3^2 * 7
t(As1) = 33/32 = 3 * 11 / 2^5
t(Pr1) = 27/26 = 3^3 / 2 * 13

So they're they're kind of Pythagorean under the hood. At least they are at first. The accidental associated with 17 in HEJI isn't super-particular and it also includes 5 as a factor. The accidental associated with 19 is pseudo-Pythagorean again, but not super-particular.

 In contrast, Johnston includes 5 as a factor in his ratios from the start, and all of them are super particular:

t(Sp1) = 36/35 = 2^2 * 3^2/ 5 * 7
t(As1) = 33/32 = 3 * 11 / 2^5
t(Pr1) = 65/64 = 5 * 13 / 2^6

. Johnston's commas continue on (51/50, 96/95, 46/45, 145/144, 31/30) for the 17th, 19th, 23rd, 29th, and 31s harmonics, respectively.

Since Pythagorean tuning kind of sucks, and since Johnston's system regularly uses super particular ratios, and since I really love his music, I'm particular to his system on all accounts. The one drawback is that most of my microtonal friends use HEJI.

Why didn't Johnston use the septimal Palatine comma though? Just too large, maybe? It's 84.4 cents, which is large, but his 11-limit and 13-limit commas are also more than a 50 cents, so....I dunno. Of course, if we only cared about the size of the numerator and denominator, then 8/7 (at 231 cents) would be an even simpler super-particular septimal accidental, and 17/16 (at 105 cents) would be the simplest accidental for the seventeenth harmonic. What if we limit ourselves to 70 cents for the accidental associated with the 7th harmonic and higher? Nope, we still don't recover the Johnston commas that way. The simplest super-particular septimal comma smaller than 70 cents is 28/27 at 63 cents.

So, I don't know how Johnston picked his accidentals, but it's not "take the simplest fraction that includes 2, 3, 5, and the prime in question as factors below a given cent value". Even if I limit myself to 57cents (to exclude simpler septimal ratios that he didn't include while still allowing for the 31th harmonic accidental that he did include), then we get this:

7th - 36/35 : 49 cents
11th - 33/32 : 53 cents
13th - 40/39 : 44 cents
17th - 51/50 : 34 cents
19th - 76/75 : 23 cents
23th - 46/45 : 38 cents
31th - 31/30 : 57 cents
37th - 37/36 : 47 cents
39th - 40/39 : 44 cents

. which is great, but not Johnston. Finally, here's what we get if we set the cents cutoff so that I can include my preferred septimal accidental:

7th - 21/20 : 84 cents
11th - 33/32 : 53 cents
13th - 26/25 : 68 cents
17th - 51/50 : 34 cents
19th - 76/75 : 23 cents
23th - 24/23 : 74 cents
31th - 31/30 : 57 cents
37th - 37/36 : 47 cents
39th - 26/25 : 68 cents

.

You can see that the 13 and the 39th are both about 68 cents. That seems like a waste. Maybe one criterion for choosing between different sets of accidentals is how evenly they're distributed from 0 to 100 cents.

Oh, I just had the best idea! Forget 11 and 13 and the rest. I hereby propose that 24-EDO should be thought of as a projection of a rank-4 interval space that approximates 7-limit jut intonation. The pure octave (2/1) and the perfect fifth (3/2) and the major third (5/4) all lie on the 12-EDO subset of 24-EDO, i.e. the even divisions,, and 7/4 lives at 19 divisions, on the odd subset, and we can and will and perhaps even should think about all the odd divisions as being septimal deviations from the even ones. Yes, yes, yes. And I should probably try projecting a rank-3 space down to an EDO before trying rank-4, but when have  I ever done what's in my best interest?

Whoa! Out of my Palatine septimal comma (21/20 = 1.05) and the Leipzig comma used by HEJI (64/63 ~ 1.016) and the Johnston's septimal comma (36/35 ~ 1.0286), out of those three, Johnston's is by far the closest to the 24-EDO division: 2^(1/24) ~ 1.0293. Most impressive. If you want to make a septimal tuning system that explains 24-EDO, that might be the comma to use.

Okay, for my first sanity check: if I make a septimal tuning system by adding 36/35 to the standard Lilley commas for 5-limit JI, do I get a sensible short name for 7/4? Yeah, ,it's a subminor seventh.

Okay, I've now got a program that turns 4-tuple interval coordinates in the (36/35, 81/80, 25/24, 128/125) basis into septimal interval names. My next step is to convert those coordinates into the 7-limit reduced prime basis (2/1, 3/2, 5/4, 7/4). Then I can associate each of those to a number of empirical 24-EDO divisions, namely (24, 14, 8, 19), and then I can say "5 divisions in 24-EDO goes by all of these names".

Okay, here are my current commas, in no particular order:

36/35 : Sp1 :: (1, 0, 0, 0)
81/80 : Ac1 :: (0, 1, 0, 0)
25/24 : A1 :: (0, 0, 1, 0)
128/125 : d2 :: (0, 0, 0, 1)

. And here are the reduced-prime basis intervals that I want to use instead, expressed in terms of those commas:

2/1 : P8 :: (0, 3, 12, 7)
3/2 : P5 :: (0, 2, 7, 4)
5/4 : M3 :: (0, 1, 4, 2)
7/4 : Sbm7 :: (-1, 3, 10, 6)

And here are the septimal Johnston-Lilley commas expressed in terms of the reduced primes:

81/80 : Ac1  :: (-2, 4, -1, 0)
25/24 : A1 :: (0, -1, 2, 0)
128/125 : d2 :: (1, 0, -3, 0)
36/35 : Sp1 :: (0, 2, -1, -1)

where of course I'm using the order (P8, P5 M3, Sbm7) in the coordinates.

And that should do it, yeah? Those are the matrices I need for interconverting between the two interval bases. 

Okay! Here are the intervals (up to four characters in length) that I think should logically correspond to the frequency ratios (expressed here as numbers of divisions) in 24-EDO:

0 : A0, Ac1, AcA0, Acd2, Gr1, GrA0, Grd2, P1, d2, ddd3
1 : SbA1, Sbm2, Sp1, SpA0, Spd2
2 : A1, AA0, AcA1, Acm2, GrA1, Grm2, dd3, m2
3 : SbM2, Sbd3, SpA1, Spm2
4 : AA1, AAA0, AcM2, Acd3, GrM2, Grd3, M2, d3, ddd4
5 : SbA2, Sbm3, SpM2, Spd3
6 : A2, AAA1, AcA2, Acm3, GrA2, Grm3, dd4, m3
7 : SbM3, Sbd4, SpA2, Spm3
8 : AA2, AcM3, Acd4, GrM3, Grd4, M3, d4, ddd5
9 : Sb4, SbA3, SpM3, Spd4
10 : A3, AAA2, Ac4, AcA3, Gr4, GrA3, P4, dd5, ddd6
11 : SbA4, Sbd5, Sp4, SpA3
12 : A4, AA3, AcA4, Acd5, GrA4, Grd5, d5, dd6
13 : Sb5, Sbd6, SpA4, Spd5
14 : AA4, AAA3, Ac5, Acd6, Gr5, Grd6, P5, d6, ddd7
15 : SbA5, Sbm6, Sp5, Spd6
16 : A5, AAA4, AcA5, Acm6, GrA5, Grm6, dd7, m6
17 : SbM6, Sbd7, SpA5, Spm6
18 : AA5, AcM6, GrM6, Grd7, M6, d7, ddd8
19 : SbA6, Sbm7, SpM6, Spd7
20 : A6, AAA5, AcA6, GrA6, Grm7, dd8, m7
21 : SbM7, Sbd8, SpA6, Spm7
22 : AA6, GrM7, Grd8, M7, d8
23 : Sb8, SbA7, SpM7, Spd8
24 : A7, AAA6, Gr8, GrA7, P8
.

Cleaning that up a bit, 

0: P1
1 : Sp1, Sbm2
2 : m2
3 : SbM2, Spm2
4 : M2
5 : Sbm3, SpM2
6 : m3
7 : SbM3, Spm3
8 : M3
9 : Sb4, SpM3
10 : P4
11 : Sp4
12 : A4, d5
13 : Sb5
14 : P5
15 : Sp5, Sbm6
16 : m6
17 : SbM6, Spm6
18 : M6
19 : Sbm7, SpM6
20 : m7
21 : SbM7, Spm7
22 : M7
23 : Sb8, SpM7
24 : P8

.

It's really, really good, right? I think so. Sb5 is a sub-fifth or sub-perfect fifth. Spm2 is a super minor second. If you see "spm" and you think "sperm", try thinking "spem" instead. It means "hope" in Latin, in the accusative singular inflection.

So, I didn't spell out the math behind what I was doing very well just now. I didn't even know what I was doing. But I think it's still mathematically well founded.

I took some basis vectors and I tuned them to exponential frequency ratios. And that gave me an EDO. It's not the usual route for projecting rank-2 interval space into an EDO, but it works. No trickery to be ashamed of here. In particular, I think I did this tuning:

t(P8) = 2^(24/24)
t(P5) = 2^(14/24)
t(M3) = 2^(8/24)
t(Sbm7) = 2^(19/24)
.
Soon I'll post some programs for converting between 7-limit frequency ratios, rank-4 interval names in the Johnston-Lilley tuning system, and 24-EDO frequency ratios.

...


...

Now that we have an interpretation of 24-EDO, can we reproduce it by tempering out intervals? Like, by carefully tuning the intervals that correspond justly to reduced primes, we got 24-EDO, and as a consequences, these guys got tempered out: A0, Ac1, AcA0, Acd2, Gr1, GrA0, Grd2, P1, d2, ddd3. Can we use some combination of three of those, along with pure octave t(P8)=2/1, to get the 24-EDO from a different perspective? Oh, hah, no, disregard that. None of (A0, Ac1, AcA0, ...) are septimal, so tempering them out won't determine a 24 EDO! Hm....

...

We were successful in making a 24-EDO by tuning rank-4 interval space, and we know it can't be done well with rank-2 interval space, but what about rank-3? Honestly, I think one could give 24-EDO a 5-limit interpretation by tuning rank-3 interval space, it just wouldn't be as good. In my view, 24-EDO is septimal - at least, if not also undecimal and tridecimal; it's the tuning system that equates super-major Nths with sub-minor Nths. That's part of the reason why most 24-EDO chords sound so bad on a piano: hammers in a piano are placed close to nodes of vibration of the 7th harmonic in order to suppress the 7th harmonic. The very fact that 24-EDO chords mostly sounds bad is a hint that it's fundamentally septimal, I think - that it should at least be analyzed with factors of 7 in the frequency ratios, if not also 11ths and 13ths.

Speaking of which, I also want to talk a little bit about the EDO divisions that I'd previously associated with the 11th and 13th harmonic and compare those harmonics to the 7-limit ratios that I'm now associating to those EDO divisions.

The interval of 11 division in 24-EDO was a good approximation to the reduced 11th harmonic, 11/8. In my rank-4 septimal interpretation of 24-EDO, 11 divisions is associated to Sp4 primarily, but also SbA4, Sbd5, SpA3, among other more complicated intervals. The just frequency ratios that correspond to these in the Johnston-Lilley septimal tuning system are:

SpA3 : 75/56 :: 1.3392857142857142
Sp4 : 48/35 :: 1.3714285714285714
2^(11/24): 1.37395364746
reduced 11th harmonic: 1.375
Sbd5 : 7/5 :: 1.4
.
You can see that the septimal super fourth is a good approximation to the reduced 11th harmonic, although slightly less good than the 24-EDO value.

The interval of 17 division in 24-EDO was a good approximation to the reduced 13th harmonic, 11/8. In my septimal interpretation of 24-EDO, 17 divisions is associated to Spm6 and SbM6, along with Sbd7, SpA5, and others. Let's compare their just frequency ratios.

SpA5 : 45/28 :: 1.6071428571428572
SbM6 : 175/108 :: 1.6203703703703705
reduced 13th harmonic: 1.625
2^(17/21) :: 1.63391545324
Spm6 : 288/175 :: 1.6457142857142857
Sbd7 : 42/25 :: 1.68

The 13th harmonic sits squarely between the submajor sixth and the superminor sixth, and so does the 24-EDO value. It's quite nice, right? It means that the 24-EDO value can be fruitfully interpreted as either the 17th harmonic or as a value that bridges between the two quite close septimal sub-major and super-minor values (which differ by about 27 cents).

In both cases, thee 24-EDO values are closer to the harmonic values than to the septimal values. So if you want to interpret 24-EDO as a 13-limit system, good for you. I'd love to see your blog. But this is as far as I'm taking it, and I think it's quite good where it stands.

Time to talk about the stuff in the videos from Quartertone Harmony!

In his first video, Mr. Quart showed of a bunch of nice 24-EDO chords. I'd like to try respelling them with a septimal interpretation and then listening to them tuned justly. If the chords have sensible respellings and sound better in 7-limit just intonation than they do in 24-EDO, that will somewhat verify my septimal reading of 24-EDO. If the chords have weird spellings or sound worse in 7-limit just intonation, then maybe you really do need undecimal and tridecimal intervals to explain 24-EDO well.

...

Nah, something else first. I want to try a 5-limit interpretation of 24-EDO. Compare:
1.02880658436214: GrA1 = 250/243
1.029302236643492: 1 divisions in 24-EDO = 2^(1/24)
Pretty close, yeah? Let's take rank-3 intervals and represent them in the (P8, P5, GrA1) basis, since those are independent and have nice 24-EDO approximations. Then we'll tune then those three intervals so that we recover a 24-EDO, and finally see which names the tuning system assigns to all the 24-EDO divisions within an octave.

Oh. I think the matrix of the new basis I wanted to use, (P8, P5, GrA1), doesn't have a determinant of -1 or 1, so the coordinates of intervals in the new system won't generally be integers. Like M3 in the (P8, P5, GrA1) basis would be (-2/3, 5/3, 1/3). Kind of sad. That means that the tuning system

t(P8) = 2^(24/24)
t(P5) = 2^(14/24)
t(GrA1) = 2^(1/24)

puts M3 at

(24 * -2/3) + (14 * 5/3) + (1 * 1/3) = 23/3 divisions in 24-EDO. 

So we haven't really recovered a 24-EDO. Only to you in this bitter moment can I reveal my heart. I have failed completely. What if we try using a 5-limit d7 (216/125 = 1.728) for 19 divisions of 24-EDO (1.731073122012286)?  Same problem. We get thirds. I think if we find a 5-limit interval that has 1 or -1 in in its third component in the 5-limit (P8, P5, M3) basis, then we could use that. The only problem is, when I do that and compare just intervals to their closest 24-EDO approximations, all of them have even numbers of  24-EDO divisions, e.g. AcA5 at has a 5-limit value of (1.58203125), which is mostly closely approximated by 16 divisions of 24-EDO (1.5874010519681994), and 16 divisions is even, so we're still stuck in the space of 12-EDO and we haven't reached the space of quatertones. Likewise for all of: (Ac1, Ac4, Ac5, Ac8, AcA1, AcA4, AcA5, AcA8, Gr1, Gr4, Gr5, Gr8, Grd1, Grd4, Grd5, Grd8, M2, M3, M6, M7, m2, m3, m6, m7).

So, go ahead and complain about how my septimal interpretation of 24-EDO isn't as good as one with undecimal and tridecimal ratios - that my lattice isn't complicated enough - but don't tell me that it's too complicated unless you can provide a 5-limit interpretation.

...

:: Quarter Tones and Maqamat

Tarek Yamani on youtube did a cool thing. Start with a dominant 13 sharp 11 chord, which is a normal chord in jazz, and which outlines a scale (spelled by thirds rather than by steps). This chord has intervals of

P1 M3 P5 m7 M9 A11 M13

which we could spell with pitch classes over a C natural tonic as:

C E G Bb D F# A

.

The scale intervals, expressed in the (A1, d2) basis, have A1 components of: 

0 4 7 10 14 18 21

which are of course also the number of division in 12-EDO you need to climb above a tonic to get the next pitch in the chord.

Now divide all the the A1 components by 2, giving:

0 2 3.5 5 7 9 10.5

and interpret these as numbers of 12-EDO divisions again. Then we have a scale with two quarter-tone intervals. If we interpret this one as moving by step, rather than by thirds, this new scale has quarter-tone intervals in the third and seventh scale degrees (which before were the P5 of the chord and the M13 of the chord).

This new scale isn't actually new at all: it's called rast, and it's probably the most common mode (or dastgahs or maqam) in Iranian, Arabic, and Turkish music. So if you can improvise over a dominant 13 sharp 11 jazz chords on a keyboard, and you can switch your keyboard from 12-EDO to 24-EDO, then surprise, you can probably also play some pretty fluent 24-EDO middle eastern music. Congratulations.

Does this procedure of halving the A1s suggest a new way to interpret 24-EDO? I'm not sure. My mathematical experimentations haven't yielded promising results yet. It's not as easy as saying that two stacked octaves (a P15) should have a frequency ratio of 2 and that two stacked diminished seconds (a dd3) should be tempered out. That gives us a 34-EDO, usually, depending a little bit on which things you break along the way.

Does the halved major scale correspond to a maqam? By thirds, we can spell it

P1, M3, P5, M7, M9, P11, M13

. Translating to 12-EDO divisions, these become

0, 4, 7, 11, 14, 17, 21

. Dividing by 2, we get 

0, 2, 3.5, 5.5, 7, 8.5, 10.5

. Reinterpreting by step, we have microtonal intervals on scale degrees ^3, ^4, ^6, and ^7.That's not a maqam in root position that I know. After a little investigation, it's not a permutation of any of the maqams that I know, either.

Using 24-EDO divisions instead of 12-TET divisions, these are the differences between successive scale degrees of the halved major scale:

4, 3, 4, 3, 3, 4, 3

.

I'll be using maqams as spelled out on wikipedia. The halved major scale is microtonal, so we know it's not a permutation of 

Ajam: (Tonal. Major)
Kurd: (Tonal. Phrygian)
Nahawand: (Tonal. Minor)
Hijaz: (D, Eb, F#, G, A, Bb, C, D) :: 2, 6, 2, 4, 2, 4, 4. (Tonal. Spelled by thirds, this is a dominant D.11b9b13 chord, aka Phrygian with a major 3rd)
Nawa Athar: (C, D, Eb, F#, G, Ab, B, C) :: 4, 2, 6, 2, 2, 6, 2. (Tonal. Shad ‘Araban permutation. This would be a C.minor-major9#11b13 chord)
Shad ‘Araban: (G, Ab, B, C, D, Eb, F#, G) :: 2, 6, 2, 4, 2, 6, 2. (Tonal. Nawa Athar permutation. This one is GMaj11b9b13 as a chord; not too bad.)

None of those. The halved major scale also doesn't have any separations of 2 divisions, so we know it's not a permutation of:

Bayati: (D, E-, F, G, A, Bb, C, D) :: 3, 3, 4, 4, 2, 4, 4. (Jiharkah permutation)
Jiharkah: (F, G, A, Bb, C, D, E-, F) :: 4, 4, 2, 4, 4, 3, 3. (Bayati permutation)
Huzam: (E-, F, G, Ab, B, C, D, E-) :: 3, 4, 2, 6, 2, 4, 3. (Rahat al-Arwah exactly. Also called Sikah, Sigah, Segah)
Rahat al-Arwah: (B-, C, D, Eb, F#, G, A, B-) :: 3, 4, 2, 6, 2, 4, 3. (Huzam exactly. Sikah, Sigah, Segah)
Saba: (D, E-, F, Gb, A, Bb, C, D) :: 3, 3, 2, 6, 2, 4, 4. (Linked wikipedia article has last scale degree flatted in error, but spells it correctly on other pages)

. And finally, the halved major scale looks pretty close to a permutation of our old friend Rast, but compare them closely (or find the lexicographically first permutation of each) and you'll see that they're distinct:

Rast: (C, D, E-, F, G, A, B-, C) :: 4, 3, 3, 4, 4, 3, 3. (Husayni ‘Ushayran permutation)
Husayni ‘Ushayran: (A, B-, C, D, E-, F, G, A) :: 3, 3, 4, 3, 3, 4, 4. (Rast permutation)

.
Well, now we now. In practice, I think maqamat are named by their first few intervals, i. e. the lower tetrachord, and there's some variation in which tetrachord is used for the upper scale degrees, but I'm happy leaving the analysis there.

Do Persian, Arabic, or Turkish music tell us anything about how to harmonize with quartertones? I don't think so. They're mostly not polyphonic. But a youtuber named Maqam Harmony is doing cool things in that space.

Apparently, the Arabic (et cetera) music is derived from Greek Pythagorean tuning though, so maybe reading more on that will give me better names for the microtonal intervals. First insight, two stacked Pythagorean commas are very close to a quarter tone:

The Pythagorean comma is (3/2)^12 ⁄ 2^7 = 531441/524288 ~ 1.0136.
Two stacked Pythagorean commas = (3/2)^24 ⁄ 2^14 = 282429536481/274877906944 ~ 1.0275.
.

The Pythagorean comma is the tuned value of an augmented 0th interval in the Pythagorean tuning system, i.e. the rank-2 tuning system defined by t(P8) = 2/1 and t(P5) = 3/2. In our usual (A1, d2) basis, A0 has coordinates (0, -1). Two stacked Pythagorean commas correspond to the interval AAA-1, which is (0, -2) in the (A1, d2) basis. I'm going to call AAA-1 a maqam comma, maybe.

Okay, let's suppose that the maqam quarter tones derive from the addition or subtraction of AAA-1 to the pitches a diatonic twelve tone scale. That means we're playing with these ugly suckers now:

ddd3 - P1 - AAA-1
dddd4 - m2 - AA0
ddd4 - M2 - AAA0
dddd5 - m3 - AAA1
ddd5 - M3 - AAAA1
ddd6 - P4 - AAA2
dd6 - A4 - AAAA2
dddd7 - d5 - AA3
ddd7 - P5 - AAA3
dddd8 - m6 - AAA4
ddd8 - M6 - AAAA4
ddd9 - m7 - AAA5
dd9 - M7 - AAAA5
ddd10 - P8 - AAA6
.

Does something good happen if we tune the maqam comma to exactly 2^(1/24)? Kind of, I suppose? Here are a bunch of tuned intervals represented in cents, rounded to the nearest integer cent.

0 - P1 : (0, 0)
25 - A0 : (0, -1)
40 - dddd4 : (1, 3)
50 - AAA-1 : (0, -2)
90 - m2 : (1, 1)
115 - A1 : (1, 0)
140 - AA0 : (1, -1)
154 - ddd4 : (2, 3)
179 - d3 : (2, 2)
204 - M2 : (2, 1)
229 - AA1 : (2, 0)
244 - dddd5 : (3, 4)
254 - AAA0 : (2, -1)
269 - dd4 : (3, 3)
294 - m3 : (3, 2)
319 - A2 : (3, 1)
344 - AAA1 : (3, 0)
358 - ddd5 : (4, 4)
383 - d4 : (4, 3)
408 - M3 : (4, 2)
433 - AA2 : (4, 1)
448 - ddd6 : (5, 5)
458 - AAAA1 : (4, 0)
473 - dd5 : (5, 4)
498 - P4 : (5, 3)
523 - A3 : (5, 2)
538 - dddd7 : (6, 6)
548 - AAA2 : (5, 1)
563 - dd6 : (6, 5)
588 - d5 : (6, 4)
613 - A4 : (6, 3)
638 - AA3 : (6, 2)
65 - dd3 : (1, 2)
652 - ddd7 : (7, 6)
663 - AAAA2 : (6, 1)
677 - d6 : (7, 5)
702 - P5 : (7, 4)
727 - AA4 : (7, 3)
742 - dddd8 : (8, 7)
752 - AAA3 : (7, 2)
767 - dd7 : (8, 6)
792 - m6 : (8, 5)
817 - A5 : (8, 4)
842 - AAA4 : (8, 3)
856 - ddd8 : (9, 7)
881 - d7 : (9, 6)
906 - M6 : (9, 5)
931 - AA5 : (9, 4)
946 - ddd9 : (10, 8)
956 - AAAA4 : (9, 3)
971 - dd8 : (10, 7)
996 - m7 : (10, 6)
1021 - A6 : (10, 5)
1046 - AAA5 : (10, 4)
1060 - dd9 : (11, 8)
1085 - d8 : (11, 7)
1110 - M7 : (11, 6)
1135 - AA6 : (11, 5)
1150 - ddd10 : (12, 9)
1160 - AAAA5 : (11, 4)
1175 - d9 : (12, 8)
1200 - P8 : (12, 7)

.

On the one hand, yeah, t(P5) = 702 cents is really close to 700 cents like we'd expect (and even closer to the pure frequency ratio of 3/2), and t(m6) = 792 cents is pretty close to 800 cents like we'd expect (and even closer to the Pythagorean m6), and in between them we've got an interval interpretable as a quarter tone, namely t(AAA3) = 752. On the other hand, if Arabic music notates the pitch-class that's ~750 cents above a C as G-, isn't it kind of bullshit to say "Nope, wrong, that's an E###."? They use it by step between Fs and As as if it were some kind of a G, so maybe we should call it some kind of a G. Although honestly, even if we should technically call it an E###, that doesn't really help me to compose music, because I don't know how to use E###s. They're not going to show up by any reasonable modulations from C major, I don't think. Although I'll sooner use this AAA3 than the craziness from the 72-edo thing from the start, which had things like

2^(7/24): dddd9, AAAAA-4

, so maybe this is a triumph? It doesn't feel like a triumph. One day I'll try analyzing 24-EDO music as being tridecimal. That'll be a triumph.

I've got another idea for how to analyze quartertones. It also starts with Pythagorean tuning. I don't know what involvement, if any, Pythagoras actually had in early music theory, but here's part of the myth as I think of it.

Below we have some intervals in the (P5, P8) basis, their frequency ratios in Pythagorean tuning, and their modern names. Pythagoras wrote this table down, exactly as it appears below, on a goat skin parchment after eating some bad spanakopita:

(-20, 12) 4294967296/3486784401 ddd5
(-19, 12) 2147483648/1162261467 dd9
(-18, 11) 536870912/387420489 dd6
(-17, 10) 134217728/129140163 dd3
(-16, 10) 67108864/43046721 dd7
(-15, 9) 16777216/14348907 dd4
(-14, 9) 8388608/4782969 dd8
(-13, 8) 2097152/1594323 dd5
(-12, 8) 1048576/531441 d9
(-11, 7) 262144/177147 d6
(-10, 6) 65536/59049 d3
(-9, 6) 32768/19683 d7
(-8, 5) 8192/6561 d4
(-7, 5) 4096/2187 d8
(-6, 4) 1024/729 d5
(-5, 3) 256/243 m2
(-4, 3) 128/81 m6
(-3, 2) 32/27 m3
(-2, 2) 16/9 m7
(-1, 1) 4/3 P4
(0, 0) 1 P1
(1, 0) 3/2 P5
(2, -1) 9/8 M2
(3, -1) 27/16 M6
(4, -2) 81/64 M3
(5, -2) 243/128 M7
(6, -3) 729/512 A4
(7, -4) 2187/2048 A1
(8, -4) 6561/4096 A5
(9, -5) 19683/16384 A2
(10, -5) 59049/32768 A6
(11, -6) 177147/131072 A3
(12, -7) 531441/524288 A0
(13, -7) 1594323/1048576 AA4
(14, -8) 4782969/4194304 AA1
(15, -8) 14348907/8388608 AA5
(16, -9) 43046721/33554432 AA2
(17, -9) 129140163/67108864 AA6
(18, -10) 387420489/268435456 AA3
(19, -11) 1162261467/1073741824 AA0
(20, -11) 3486784401/2147483648 AAA4

.

To get this list, you start with t(P1) = 1/1 and t(P5) = 3/2 and t(P8) = 2/1. You can stack two perfect fifths and then drop it down an octave to get a new interval x in the range P1 <  x < P8. Today we call it a major second, M2. You can also stack three P5s and drop it an octave to get another interval in range, and today we call it a M6. And so on. In addition to going higher and higher, you can go lower and lower: a P5 below P1, when raised by on octave to put as back in range, is called a P4. Two stacked P5s below P1, raise by octaves until it's in range again, are called a minor seventh, m7.

This procedure won't get you all possible rank-2 intervals: for example, it won't get you a P8. It will get you thing arbitrarily close to P8 eventually, but not exactly. For that, you need to extend the table in the horizonal directions (i.e. adding and substracting P8 repeatedly from the list above). for which you need a larger goat. or at least one with more surface area. Goat surface area was the limiting factor in early Greek music theory.

If you just look at intervals with P5 from -5 to +5, and raise or lower the octaves accordingly, then you get this set: [P1, m2, M2, m3, M3, P4, P5, m6, M6, m7, M7], These are pretty evenly spaced out, psycho-acoustically, which is to say, logarithmically. To see that, we can represent each of the frequency ratios in cents.
cents = 1200 * log_2(frequency_ratio)
.
Multiplying by 1200 isn't really necessary: it just gives us integers that capture a few digits of precision - numbers which are good enough and much easier to look at than decimals. If we express all of [P1, m2, M2, m3, M3, P4, P5, m6, M6, m7, M7] in cents, rounded to integers, then you can see that they're all really close to multiples of 100:

0 cents - 1/1 - P1
90 cents - 256/243 - m2
204 cents - 9/8 - M2
294 cents - 32/27 - m3
408 cents - 81/64 - M3
498 cents - 4/3 - P4
???
702 cents - 3/2 - P5
792 cents - 128/81 - m6
906 cents - 27/16 - M6
996 cents - 16/9 - m7
1110 cents - 243/128 - M7

with a conspicuous gap at 600 cents. Add in an interval at 600 cents, and you've got a nice 12 note chromatic scale with fairly even psycho-acoustic spacing. Make the spacing exactly even and you've got 12-TET. What if you forget about exactly even spacing? Then you do some more math and you'll eventually find that the more complicated fractions of the set, which were all made from powers of (3/2) and (2/1), are very close to simpler fractions made from powers of (5/4). and (3/2) and (2/1), and these simpler ratios with factors of five sound fantastic. That's 5-limit just intonation. And a lot of the melodiousness of music comes from a combination of there being (roughly) even spacing of intervals and of frequency ratios being (roughly) simple fractions. You can't get really get both at once, but you can favor one or the other in a principled way. Zheanna Erose writes some nice music that completely disregards logarithmically equal spacing, e.g. by just using frequency ratios with the same denominator. *Some* of it is nice. Some of it is like a seizure.

To get the 11 or 12 chromatic frequency ratios, we raised t(P5) = 3/2 to different powers, form -5 to 5, and then offset by octaves. But if we use use powers with larger magnitude than five, then we can get new intervals in between the 11 or 12 chromatic notes. Using powers of P5 between -10 and 10, we get:

0 cents -  1 - P1
90 cents -  256/243 - m2
114 cents -  2187/2048 - A1
180 cents -  65536/59049 - d3
204 cents -  9/8 - M2
294 cents -  32/27 - m3
318 cents -  19683/16384 - A2
384 cents -  8192/6561 - d4
408 cents -  81/64 - M3
498 cents -  4/3 - P4
588 cents -  1024/729 - d5
612 cents -  729/512 - A4
702 cents -  3/2 - P5
792 cents -  128/81 - m6
816 cents -  6561/4096 - A5
882 cents -  32768/19683 - d7
906 cents -  27/16 - M6
996 cents -  16/9 - m7
1020 cents -  59049/32768 - A6
1086 cents -  4096/2187 - d8
1110 cents -  243/128 - M7

. You can see that the intermediate intervals don't fall on the 50 cent marks, the quarter tones: most of them are like 20 cents off from the 100 cents marks, plus or minus. But what if they weren't? We could monkey with t(P5) or t(P8) to get things more quarter-tone-esque. For example, between m2 and M2, we now have intervals of A1 and d3. What if we keep t(P8) = 2/1, but we adjust t(P5) so that A1 = d3?

To do that, we start with the coordinates for A1 and d3 in the (P5, P8) basis:

(7, -4) = A1
(-10, 6) = d3

These coordinates, of course, relate the given intervals linearly to the basis intervals, e.g.:

(7 * P5 + -4 * P8) = A1

which is equivalent to a statement about the tuned values of the intervals:

t(A1) = t(P5)^(7) * t(P8)^(-4)

. Now we can solve for t(P5) = x in the equation t(A1) = t(d3):

x^7 * (2/1)^(-4) = x^(-10) * (2/1)^6

giving

x = 2^(10/17)

. The {x} is just a new variable here because I like single letter variables. It's not the same as any other {x} that I've used in the post.

That 17 in the denominator of the power looks kind of 17-EDO-esque. Did we just reinvent 17-EDO? We absolutely did, yes. But weren't we trying to explain 24-EDO? We absolutely were, yes. So does 17-EDO explain 24-EDO? Lol, I don't know. Probably not. Let's look.

2^(0/17): P1
2^(1/17): m2
2^(2/17): A1=d3
2^(3/17): M2
2^(4/17): m3
2^(5/17): A2=d4
2^(6/17): M3
2^(7/17): P4
2^(8/17): A3=d5
2^(9/17): A4=d6
2^(10/17): P5
2^(11/17): m6
2^(12/17): A5=d7
2^(13/17): M6
2^(14/17): m7
2^(15/17): A6=d8
2^(16/17): M7
2^(17/17): P8

. 17-EDO gives us tones between (m2 and M2), between (m3 and M3), between (m6 and M6) and between (m7 and M7), all of which feel kind of like quarter-tones, maybe, but it doesn't give us intermediate tones in a lot of other places, and there are 2 intermediate two between P4 and P5, which is fine I guess, but you might have hoped for 3 intermediate tones if you grew up with 12-TET. So maybe quarter tones are mostly used in practice between the major and minor versions of the 2nd, 3rds, 6ths, and 7ths? If so, then 17-EDO might help you to name and understand the intervals that makes Arabic/Turkish/Persian microtonal music work. Or maybe that's all wrong.

If instead we keep the perfect fifth pure, t(P5) = (3/2), and then adjust {t(P8) = y} so thatA1=d3, then our equation becomes:

(3/2)^7 * y^(-4) = (3/2)^(-10) * y^6

giving

y = (3/2)^(17/10) ~ 1.9923

. I don't suppose there's a name for that tuning system, but one day I'll post some music here that's tuned like that.

If the 12-note chromatic scale is better represented with 5-limit ratios than with 3-limit Pythagorean ratios, maybe we should try messing with a higher-rank tuning systems again to figure out which intermediate intervals between the 12 chromatic notes can be related to produce a tuning system that explains quarter tone music intervallically. Since there are three basis intervals in 5-limit just intonation tuning systems for us to monkey with, ... ...  ...

I'm tired. Maybe some other day. Also, it's tridecimal, right? It' not 5-limit, it's 13-limit. Just analyze it as 13-limit.

-

Okay, if you design a tuning system for rank-2 interval space on the principles of 1) pure octaves and 2) "let's tune these two intervals to the same frequency", then you're always going to get an EDO, in particular, the EDO that tempers out the interval between the two intervals that you're tuning to the same frequency. Like, when we equated the tunings of A1 and d3, well they're separated by dd3, so we're also tuning dd3 to a frequency ratio of 1/1. Looking at the interval you're tempering out is the logical way to figure out what EDO scale you're producing. You may recall, I gave a formula in the "EDO-generators" post, abs(a * 7 - b * 12) / gcd(a, b), that uses the coordinates (a, b) of the tempered out interval in the (A1, d2) basis to calculate the number of EDO divisions.

I've talked a lot about different ways to interpret 24-EDO with musical intervals, with mixed success. But I haven't talked about is how to use the interval for harmonic analysis. Let's do that a little.

The ways to analyze harmony in terms of intervals, rather than frequency ratios, are chordally and contrapuntally. The blog post directly after this one, which I'm writing at the same time, is where I'm figuring out the rules of microtonal counterpoint, so let's focus on chords here.

Most western chord theory is based on stacked thirds drawn from scales. Here's the major scale spelled by thirds:

P1, M3, P5, M7, M9, P11, M13

. If you're on scale degree ^1 and you see the first three of those, or the first, five, or the first however many, then don't sweat, you've got a normal diatonic major chord made of thirds.

Here are all 7 diatonic modes spelled by step:

[P1, M2, M3, P4, P5, M6, M7] - Ionian (I)
[P1, M2, m3, P4, P5, M6, m7] - Dorian (ii)
[P1, m2, m3, P4, P5, m6, m7] - Phrygian (iii)
[P1, M2, M3, A4, P5, M6, M7] - Lydian (IV)
[P1, M2, M3, P4, P5, M6, m7] - Mixolydian (V)
[P1, M2, m3, P4, P5, m6, m7] - Aeolian (vi)
[P1, m2, m3, P4, d5, m6, m7] - Locrian (vii)

and here they are spelled by thirds:

[P1, M3, P5, M7, M9, P11, M13] - Ionian (I) = .Maj13
[P1, m3, P5, m7, M9, P11, M13] - Dorian (ii) = .m13
[P1, m3, P5, m7, m9, P11, m13] - Phrygian (iii) = .m11b9b13
[P1, M3, P5, M7, M9, A11, M13] - Lydian (IV) = .Maj13#11
[P1, M3, P5, m7, M9, P11, M13] - Mixolydian (V) = .13
[P1, m3, P5, m7, M9, P11, m13] - Aeolian (vi) = .m11b13
[P1, m3, d5, m7, m9, P11, m13] - Locrian (vii) = .m11b5b9b13
.
So if you're in the key of C and you see an F chord with a #11th scale degree (relative to F major), that's no surprise, because it's diatonic in C major. Those are the easiest intervals to analyze. Among all the modes, most of the intervals that appear are also in the major or the minor scale. The exceptions are A4 in Lydian (which can be raised by an octave to give A11 or #11th scale degree, relative to major), d5 in Locrian (which gives us diminished chords), and m2 in both Locrian and Phrygian (which can be raised by an octave to give the m9 the interval or the b9th scale degree, relative to major).

If you look at music with interesting altered upper chord tones that aren't diatonic, you'll see lots of b9, #9, #11, and b13 in the chord names. These correspond to m9, A9, A11, and d13 intervals, which can be lowered by an octave to give m2, A2, A4, and d6 intervals. I don't have much in the way of formal generative principles of when to use those non-diatonically, but a decent rule of thumb is to do whatever you want, who cares, just play it well and someone will like it.

There are other rules for introducing non-diatonic tones, of course. If you're in C major, you can borrow chords from C minor: you don't do this willy-nilly - the borrowed chords have different tonic, dominant, or predominant functions, but you can do it. You can also do modulations - such as on the circle of fifth or by shared-tone mediant motion. Honestly, any modulations sound good to me; finish a cadence on one key and start a brand new cadence on another key - so long as you have logical strings of chords, the strings don't need much if any relationship, in my book. Within strings of chords, you can also do temporary tonicizations, such as by inserting secondary dominants before chords. You can also inset passing chords, which are often diminished seventh chords, and these look a lot like temporary tonicizations with secondary dominants. Those are my main rules for introducing non-diatonic chord tones. But also, you can just do whatever.

If, in our analysis of 24-EDOs, we'd found a system that tuned the altered intervals of A2, A4, d5, and d6 to quarter-tones, that would have been great. We know how to use those, either diatonically or as jazzy upper chord tone alternations, or both. And then other augmented and diminished intervals could be interpreted as A2, A4, d5, and d6 relative to other scale degrees. But that hasn't happened as much as I was hoping.

...

Ready for a whole new world of microtonal music theory? It's time for Indian shrutis. What ae shrutis? They're microtones. Most of the wikipedia article on shrutis is as non-committal about intervals and exact frequency ratios as the literature on Persian / Arabic / Turkish music, but then one section that cites "South Indian Music" by Pichu Sambamoorthy (1954) seems to gives us everything we need to figure out a mathematical system that describes the microtonal Indian system, which is conventionally considered to have 22 pitches per octave. Maybe we'll end up explaining Arabic quarter tones in terms Indian shrutis!

The Sambamoorthy system as briefly described on Wikipedia has three commas, 

Poorna ("big") -> 256/243
Pramana ("standard") -> 81/80
Nyuna ("small")  -> 25/24

. These frequency ratios correspond to named intervals in Lilley's naming system for 5-limit just intonation:
Poorna ("big") = Grm2  -> 256/243
Pramana ("standard") = Ac1 -> 81/80
Nyuna ("small") = A1 -> 25/24
.
Two of those are basis vectors in the Lilley system, which otherwise replaces (Grm2 -> 256/243) with (d2 -> 128/125). This is the part where I should check whether the Sambamoorth commas form a basis with a determinant that's {1} in magnitude, but instead, I'm going to keep working through the stuff in the Wikipedia paragraph.

Supposedly the frequency ratio between shruti 0 and shruti 1 is one poorrna, the big comma better known as a grave minor second, Grm2. I'm not sure how best to notate shrutis, but let's just use a hat/chevron/caret for now as if they were scale degree ranging from 0 to 22. Sambamoorth gives us frequency ratios between all 22 shrutis! This probably isn't the most concise way to write them, but it'll do: 
Grm2 = ^1 - ^0
Ac1 = ^2  - ^1
A1 = ^3 - ^2
Ac1 = ^4 - ^3
Grm2 = ^5 - ^4
Ac1 = ^6 - ^5
A1 = ^7 - ^6
Ac1 = ^8 - ^7
Grm2 = ^9 - ^8
Ac1 = ^10 - ^9
A1 = ^11 - 10
Ac1 = ^12 - 11
Grm2 = ^13 - ^12
Grm2 = ^14 - ^13
Ac1 = ^15 - ^14
A1 = ^16 - ^15
Ac1 = ^17 - ^16
Grm2 = ^18 - ^17
Ac1 = ^19 - ^18
A1 = ^20 - ^19
Ac1 = ^21 - ^20
Grm2 = ^22 - ^21
.

Let's add up the intervals and then find out interval names and frequency ratios for everyone from ^0 to ^22! I'm so excited! I really hope they form and octave and this isn't bullshit. I have to be up super early tomorrow and I don't care. 

Okay, these are the frequency ratios for the shrutis in Sambamoorth's system.

^0 -> 1/1
^1 -> 256/243
^2 -> 16/15
^3 -> 10/9
^4 -> 9/8
^5 -> 32/27
^6 -> 6/5
^7 -> 5/4
^8 -> 81/64
^9 -> 4/3
^10 -> 27/20
^11 -> 45/32
^12 -> 729/512
^13 -> 3/2
^14 -> 128/81
^15 -> 8/5
^16 -> 5/3
^17 -> 27/16
^18 -> 16/9
^19 -> 9/5
^20 -> 15/8
^21 -> 243/128
^22 -> 2/1
.
They do form an octave! In the Lilley's 5-limit just intonation, those frequency ratios correspond to these intervals:

^0 -> 1/1 :: P1
^1 -> 256/243 :: Grm2
^2 -> 16/15 :: m2
^3 -> 10/9 :: M2
^4 -> 9/8 :: AcM2
^5 -> 32/27 :: Grm3
^6 -> 6/5 :: m3
^7 -> 5/4 :: M3
^8 -> 81/64 :: AcM3
^9 -> 4/3 :: P4
^10 -> 27/20 :: Ac4
^11 -> 45/32 :: AcA4
^12 -> 729/512 :: AcAcA4
^13 -> 3/2 :: P5
^14 -> 128/81 :: Grm6
^15 -> 8/5 :: m6
^16 -> 5/3 :: M6
^17 -> 27/16 :: AcM6
^18 -> 16/9 :: Grm7
^19 -> 9/5 :: m7
^20 -> 15/8 :: M7
^21 -> 243/128 :: AcM7
^22 -> 2/1 :: P8
.

All of those are intervals I mention in my post Small Intervals in 5-Limit Just Intonation, except for shruti ^12, the AcAcA4. This scale is almost symmetric: almost every shruti has another one whih is its octave complement, like

^17 -> 27/16 :: AcM6
^5 -> 32/27 :: Grm3

for which (17 + 5 = 22), and (27/16 * 32/27 = 2/1) and (AcM6 + Grm3 = P8). The exceptions are shruti ^10, ^11, and ^12, right in the middle. The ^11 shruti can't be a 5-limit frequency ratio and be its own octave complement, because to get (11 + 11 = 22), you need (sqrt(2) * sqrt(2) = 2/1). The 5-limit AcA4 is a decent approximation for sqrt(2). It's closer than the 5-limit t(d5) = 36/25 or t(A4) = 25/18 for example. But the other ones? Just on the basis of mathematical aesthetics, I'm tempted to say that Sambamoorth got one wrong. If ^10 is an acute fourth with a simple ratio, then ^12 should be Gr5 -> 40/27. This isn't a tiny change: the Gr5 is about 68.7 cents sharper than Sambamoorth's shruti ^12 of AcAcA4, more than a quarter tone. But also, Sambamoorth's shruti ^12 of AcAcA4 was really close to his ^11, so I think there's an improvement in distinguishability, even though it's a big change. I should try to find his original writings and see what he says about it. But also, I'm not super sure I care what he says: it should be a Gr5. If we make shruti ^12 into a Gr5, then we get these changes in the commas between scale degrees:

Grm2  = ^12 - 11
Ac1 = ^13 - 12

. Righteous. I'm going to post all 22  again with ^12 fixed so that I have something correct to copy when I look back at this post in the future.

^0 -> 1/1 :: P1
^1 -> 256/243 :: Grm2
^2 -> 16/15 :: m2
^3 -> 10/9 :: M2
^4 -> 9/8 :: AcM2
^5 -> 32/27 :: Grm3
^6 -> 6/5 :: m3
^7 -> 5/4 :: M3
^8 -> 81/64 :: AcM3
^9 -> 4/3 :: P4
^10 -> 27/20 :: Ac4
^11 -> 45/32 :: AcA4
^12 ->  40/27 :: Gr5
^13 -> 3/2 :: P5
^14 -> 128/81 :: Grm6
^15 -> 8/5 :: m6
^16 -> 5/3 :: M6
^17 -> 27/16 :: AcM6
^18 -> 16/9 :: Grm7
^19 -> 9/5 :: m7
^20 -> 15/8 :: M7
^21 -> 243/128 :: AcM7
^22 -> 2/1 :: P8

It is done, and it is done well.

The 22 shrutis have all of the intervals of a normal chromatic scale with some extra bits. Here's a list with some bullet points where the Indian system makes additions:

[P1 • m2 M2 • • m3 M3 • P4 • • • P5 • m6 M6 • • m7 M7 • P8]

. It doesn't look much like 24-EDO, does it? Still cool though. I don't at all regret figuring this out. The frequency ratios are also not 24-EDO-esque. Here they are in cents, truncated to integers:

0: P1
90: Grm2
111: m2
182: M2
203: AcM2
294: Grm3

315: m3
386: M3
407: AcM3
498: P4
519: Ac4
590: AcA4

680: Gr5
701: P5
792: Grm6
813: m6
884: M6
905: AcM6
996: Grm7

1017: m7
1088: M7
1109: AcM7
1200: P8

. Nothing close to 50 cents. Which his fine. I'd like to learn more about how Indian music uses these, but not tonight. And probably not in this post, since I don't think it will be relevant to quarter-tones after all. Goodnight.

...

Some microtonal composers really like 31-EDO. It provides nice neutral thirds, among other things. Want to try analyzing 24-EDO as an approximation to a subset of 31 EDO? I do. Here are some interval names: Here's a table with cents rounded to integers values on the left for different 31 EDO divisions, and also there are interval names n the right. 

Cents : Frequency Ratio : Simplest Interval Name
0 : 2^(0/31) - P1
39 : 2^(1/31) - d2
77 : 2^(2/31) - A1
116 : 2^(3/31) - m2
155 : 2^(4/31) - AA1=dd3
194 : 2^(5/31) - M2
232 : 2^(6/31) - d3
271 : 2^(7/31) - A2
310 : 2^(8/31) - m3
348 : 2^(9/31) - AA2=dd4
387 : 2^(10/31) - M3
426 : 2^(11/31) - d4
465 : 2^(12/31) - A3
503 : 2^(13/31) - P4
542 : 2^(14/31) - AA3=dd5
581 : 2^(15/31) - A4
619 : 2^(16/31) - d5
658 : 2^(17/31) - AA4=dd6
697 : 2^(18/31) - P5
735 : 2^(19/31) - d6
774 : 2^(20/31) - A5
813 : 2^(21/31) - m6
852 : 2^(22/31) - AA5=dd7
890 : 2^(23/31) - M6
929 : 2^(24/31) - d7
968 : 2^(25/31) - A6
1006 : 2^(26/31) - m7
1045 : 2^(27/31) - AA6=dd8
1084 : 2^(28/31) - M7
1123 : 2^(29/31) - d8
1161 : 2^(30/31) - A7
.
If we pare this down a little to get just the intervals     that are roughly multiples of 50 cents,
0 : 2^(0/31) - P1
-
116 : 2^(3/31) - m2
155 : 2^(4/31) - AA1=dd3
194 : 2^(5/31) - M2
    -
310 : 2^(8/31) - m3
348 : 2^(9/31) - AA2=dd4
387 : 2^(10/31) - M3
-
503 : 2^(13/31) - P4
542 : 2^(14/31) - AA3=dd5
581 : 2^(15/31) - A4       or      619 : 2^(16/31) - d5
658 : 2^(17/31) - AA4=dd6
697 : 2^(18/31) - P5
-
813 : 2^(21/31) - m6
852 : 2^(22/31) - AA5=dd7
890 : 2^(23/31) - M6
-
1006 : 2^(26/31) - m7
1045 : 2^(27/31) - AA6=dd8
1084 : 2^(28/31) - M7
-
1200 : 2^(31/31) - P8

, we get a set that has good approximations to the neutral quartertone 2nds, 3rds, 6th, and 7ths. The 600 cent tritone interval kind of has two approximations, which isn't great, but it's better than having no options, and then there are also pretty good quartertone-esque tones between (P4 and A4) and (d5 P5).


I think this is a success. The most melodically and harmonically important neutral tones are represented here and the corresponding intervals have short simple names. Some quarter tones are missing - like between M2 and m3, but there we have two intermediates:

194 : 2^(5/31) - M2
232 : 2^(6/31) - d3
271 : 2^(7/31) - A2
310 : 2^(8/31) - m3

And maybe that's better. Maybe musicians who play microtonal instruments like fretless strings and voice, maybe their actual frequencies favor the d3 or A2 in practice, and 250 cents is more a convenient notional fiction than a musically useful frequency ratio. That could all be wrong, but it feels right.

Let's talk about which maqamat you can play with this quartertone subset of 31-EDO.

I can see right away that the Rast maqam is playable in the quartertone subset of 31-EDO. It's pitch classes were

Rast: (C, D, E-, F, G, A, B-, C)

and its quartertones E- (neutral third) and B- (neutral seventh) correspond to

348 : 2^(9/31) - AA2=dd4

and 

1045 : 2^(27/31) - AA6=dd8

respectively. 

Several maqamat have no quarter tones, and those can of course all be played in this subset of 31 EDO. The main things I care about now are Bayati/Jiharkah, and Huzam/Rahat al-Arwah/Sikah, and maybe Saba, but how important can Saba be if it's not notated correctly on that wikipedia page? We'll check them all.

Saba and Bayati aren't equivalent, but they both only have a neutral 2nd for quarter tones, which is 

155 : 2^(4/31) - AA1=dd3

, so those are both doable, along with their modal permutations.

Huzam/Sikah starts on a quarter tone for some reason and has no other quarter tones, which means if you transpose it to start on C, then all six of the other chord tones of the 7 note scale become quartertones. We could do transposition and test all six, but there's an easier way to test Huzam for playability. Here's the Huzam maqam:

(E-, F, G, Ab, B, C, D, E-)

. We can just permute it so that it starts on C:

(C, D, E-, F, G, Ab, B, C)

and now the only microtone is a neutral third, which is 

348 : 2^(9/31) - AA2=dd4

which we already saw in Rast. So we can play a permutation of  Huzam in the quartertone subset of 31-EDO, which means we can also play Huzam. Great success! You don't need 24 EDO to play Arabic music, you just need a neutral 2nd, 3rd, and 7th, apparently? But having more would help with transposition.

I hear that some Turkish music uses eighth-tones, and I would  be very pleased to learn that they're used in in the places where 31-EDO has good eighth tones but not good quarter tones, like those two eight tones between (M2 and m3):

194 cents : 2^(5/31) - M2
232 cents : 2^(6/31) - d3
271 cents : 2^(7/31) - A2
310 cents : 2^(8/31) - m3

. If I ever find out, I'll put it here. Time for 13-limit just intonation analysis, I think.

...

So if you ty to figure out which simple 13-limit intervals are very close to the 31-EDO steps, you run into questions of how to define simplicity vey quickly. One step in 31-EDO, 2^(2/31), is very close to (128/125) and to (49/48). Like two or three cents off, and humans can only reliably distinguish differences of like 5 cents, so they're basically all the same. Now, 49/48 has a smaller numerator and denominator, so maybe it's simpler? But it has larger prime factors. And hey, do the magnitudes of the exponents on the prime factors matter? Like should we penalize ratios with 7^2 in their factors more than ratios with 7? I dunno. In the Johnston-Lilley septimal just intonation naming system I defined a few posts back, (128/125) has a super short name, diminished second, d2, while (49/48) is a sub sub acute minor second, SbSbAcm2. So that looks more complicated.

I have lots of fractions that are close to 31-EDO steps, I just don't know that any of it is worth posting.

I think the usual players are all still best analyzed as being 5-limit. Like P5 in 31-EDO is 2^(18/31), and this is dead close to the just-tuned P5 of (3/2). All of [P1, m2, M2, m3, M3, P4, P5, m6, M6, m7, M7] are like that. But then there are another 20 steps to analyze, or at least if we're enforcing octave complementation.

...

Here are a couple of functions that you might find useful: 

If you have a 7-limit frequency ratio, you can express it with a sequence of integers (a, b, c, d) which are the powers of the primes (2, 3, 5, 7). If you want to re-express this in an octave-reduced prime basis, (2/1, 3/2, 5/4, 7/4), then you just need to know the original basis vectors (the primes) in the new basis (the reduced primes), namely: 

2/1: (1, 0, 0, 0)
3/1: (1, 1, 0, 0)
5/1: (2, 0, 1, 0)
7/1: (2, 0, 0, 1)

From this you can change any frequency ratio in the 7-limit prime basis, (a, b, c, d), to one in the reduced prime basis, (m, n,, o, p):

m = a * 1 + b * 1 + c * 2 + d * 2
n = a * 0 + b * 1 + c * 0 * d * 0
o = a * 0 + b * 0 + c * 1 + d * 0
p = a * 0 + b * 0 + c * 0 + d * 1

The columns of the coefficients here correspond to the rows of the basis vectors.

Suppose you want to now transform a frequency ratio (m, n, o, p) into the septimal Johnston-Lilley basis? I posted a function before for naming frequency ratios in the 7-JL basis, so there's a good reason to do this. The Johnston-Lilley basis has four intervals tuned to these frequency ratios: [(36/35), (81/80), (25/24), (128/125)]. The first of these is the septimal comma in the staff notation of the great microtonal composer Ben Johnston, and the next three are the tuned values of the basis vectors in Lilley's system of naming 5-limit just intervals. The specific intervals tuned to those frequency ratios in 7-JL are the septimal super first, the acute first, the augmented first, and the diminished second: 

t(Sp1) = 36/35
t(Ac1) = 81/80
t(A1) = 25/24
t(d2) = 128/125

To make the conversion, first we need the frequency ratios of the old basis expressed in the new basis:

2/1 = (0, 3, 12, 7) # P8
3/2 = (0, 2, 7, 4) #P5
5/4 = (0, 1, 4, 2) # M3
7/4 = (-1, 3, 10, 6) # Sbm7

and then we just turn rows into columns again:

q = m * 0 + n * 0 + o * 0 + p * -1
r = m * 3 + n * 2 + o * 1 + p * 3
s = m * 12 + n * 7 + o * 4 + p * 10
t = m * 7 + n * 4 + o * 2 + p * 6

. Now the frequency-ratio (q, r, s, t) in the frequency-ratio basis ((36/35), (81/80), (25/24), (128/125)) can be reinterpreted as an interval in the interval basis (Sp1, Ac1, A1, d2), and then it's really easy to name the interval from there using the functions in septimal-interval-converter.py.

So that's one way to start with a 7-limit frequency ratio and figure out the name of the corresponding interval. You could also go straight from the prime factorization to the tuned septimal Johnston Lilley basis, but I had other reasons for changing bases twice.

I don't generally have names for 13-lmit frequency ratios; I haven't settled on an 11-limit comma or a 13-limit comma. Maybe one day.

...

Neutral intervals to focus on justifying:

n2: 155 cents - AA1=dd3 : 2^(4/31)

n3: 348 cents - AA2=dd4 : 2^(9/31)

n6: 852 cents - AA5=dd7 : 2^(22/31)

n7: 1045 cents - AA6=dd8 : 2^(27/31)

.

* 4 steps in 31-EDO can be used like a neutral second. There are infinitely many intervals that the 31-EDO tuning system tunes to a frequency ratio of 2^(4/31), but the simplest ones are the intervals AA1 and dd3. 31-EDO tunes both of those two intervals to a frequency ratio of 2^(4/31). Which justly tuned intervals are close to that exponential value, 2^(4/31)? 4 steps in 31-EDO is less than a cent flat relative to the reduced 35th harmonic. (35/32), but that's kind of crazy. People can't hear the 35th harmonic, so we shouldn't use that as a justification of why 4-steps in 31-EDO is a useful frequency ratio. It's still a fairly nice simple ratio, I'm just saying that we should just give it a septimal interval name, the sub acute major second, SbAcM2, instead of calling it a harmonic. 4 steps in 31-EDO is also 4 cents sharp of (12/11). I don't have names for fractions with 11 and 13 in their factors yet, so we'll just call that (12/11). 

* 9 steps in 31-EDO can be used like a neutral 3rd. It is 6 cents sharp of (39/32), 5 cents sharp of 128/105 (the super grave minor third, SpGrm3), and 11 cents flat of 16/13 (the octave complement of the reduced 13th harmonic).

* 22 steps in 31-EDO can be used like a neutral 6th. It is 5 cents flat of 105/64 (the sub acute major sixth, SbAcM6). It's also 11 cents sharp of the reduced 13th harmonic, 13/8.

* 27 steps in 31-EDO can be used like a neutral 7th. It is less than a cent sharp of the octave complement of the reduced 35h harmonic, 64/35, but that's kind of crazy. It's also 4 cents flat of 11/6.

Let's go back to the neutral 2nd for a moment. What are the 5-limit justly tuned frequency ratios of AA1 and dd3, and how do they compare to their shared value when tuned in 31-EDO? And what theoretically "should" a neutral second be?

Here are the 5-limit versions of AA1 and dd3 in Lilley's system for naming 5-limit just intonation:

?AA1 : (0, 2, 0) :: [0, -2, 4] = (25^2 / 24^2) = (625/576) ~ 1.08507
2^(4/31) ~ 1.09356
?dd3 : (1, 1, 2) :: [0, 3, -5] = (144/125) * (24/25) = (3456/3125) ~ 1.10592

They're fairly close. I did the ones with question marks by hand. I'll recheck them with a computer soon. I think they're right. So if you want to analyze 4-stepsin 31-EDO as being an AA1, I mean, yeah, that's the value to which 31-EDO tunes AA1, and the value is fairly close to the justly tuned 5-limit version of AA1, so go ahead. 

What about the theoretical value for a neutral second?  Here are the 5-limit minor second and major second:

m2 : (0, 1, 1) :: [1, -1, -1] = 16/15
M2 : (0, 2, 1) :: [1, -2, 1] = 10/9

.

The geometric mean of those frequency ratios is sqrt(32/27) = (4/3 * sqrt(2/3)) = (4 * sqrt(6) / 9) ~ 1.08866. That's logarithmically equally spaced between the justly tuned m2 and M2, so maybe that's the ideal value for a neutral third. It's much closer to the justly tuned AA1 than the justly tuned dd2. So if you're trying to choose an interval to use like a neutral third in some other tuning system, maybe try AA1 to start.

If the ideal neutral third is the geometric mean between

m3 : (1, 3, 2) :: [0, 1, -1] = 6/5
M3 : (1, 4, 2) :: [0, 0, 1] = 5/4

then it should have a frequency ratio of sqrt((6/5) * (5/4)) = sqrt(3/2) = sqrt(6)/2. That's kind of nice, right? Two neutral thirds stack to form a perfect fifth.

The ideal neutral sixth is the geometric mean of:

m6 : (2, 8, 5) :: [1, 0, -1] = 8/5
M6 : (2, 9, 5) :: [1, -1, 1] = 5/3

.

This has a frequency ratio of sqrt(8/3) = (2 * sqrt(6)/3).

Finally, the neutral 7th is the geometric mean of

m7 : (3, 10, 6) :: [0, 2, -1] = 9/5
M7 : (3, 11, 6) :: [0, 1, 1] = 15/8

so it has a frequency ratio of sqrt((9/5) * (15/8)) = sqrt(27/8) = (3 * sqrt(6) / 4).

All four of these neutral frequency ratios have sqrt(6) times a 3-limit fraction. That's kind of nice, right?

The theoretical tritone is kind of like a neutral tone, but it doesn't have a sqrt(6). From

P4 : (1, 5, 3) :: [1, -1, 0] = 4/3

P5 : (2, 7, 4) :: [0, 1, 0] = 3/2

we see that it's just sqrt((4/3) * (3/2)) = sqrt(2).

What about the other 24-EDO values, besides the n2, n3, n6, n7? If we find the frequency ratio between M2 and m3, will it also have a sqrt(6) factor? The justly tuned ratios are:

M2 : (0, 2, 1) :: [1, -2, 1] = 10/9
m3 : (1, 3, 2) :: [0, 1, -1] = 6/5

So, between the justly tuned M2 and m3, we have a frequency ratio sqrt((10/9) * (6/5)) = sqrt(4/3) = (2 * sqrt(3)/3). So it doesn't have a factor of sqrt(6), but you can stack two of them to get a justly tuned P4. That's pretty cool. Here's a partial table of frequency ratios that are logarithmically between the frequency ratios of justly tuned successive chromatic intervals:

P1
    (4 * sqrt(15) / 15)
m2
    n2 = (4 * sqrt(6) / 9)
M2
    (2 * sqrt(3) / 3)
m3
    n3 = (sqrt(6) / 2)
M3
    (4 * sqrt(15) / 15
P4
    ??
d5
    ??
P5
    ??
m6
    n6 = (2 * sqrt(6) / 3)
M6
    ??
m7
    n7 = (3*sqrt(6)/4)
M7
    ??
P8

.

Yep.

...