Prevalent Minerals

There are thousands of minerals, and, having read up on many of them, I still don't know much about their prevalence in the earth's crust.

There are some minerals that exist all over the earth, like quartz and calcite, and there are some that have only been found in a few countries, like cryolite (which has been found in five), and there are some minerals that have only ever been found in once place, like khatyrkite, which was found in a meteorite in Russia that might have broken off of the main-belt asteroid 89 Julia (between Mars and Jupiter), or the mineral triazolite, which forms when the poop of the Chilean Guanay cormorant reacts with chalcopyrite-bearing gabbro rocks, or jimthompsonite, which has only every been found in a quarry in Vermont where God placed it for Jim Thompson to find.

It doesn't take a ton of work to figure out all the places that a mineral has been found; you just have to look at the mindat.org page for the mineral. But that little bit adds up when there are thousands of minerals. So here below is a list ~200 that I most want to know about. Over the coming weeks, I'll slowly add prevalence data. Even if I fail to do that, it's still nice to have a semi-categorized list of minerals that I care about.

* Feldspars (Tectosilicate): orthoclase, microcline, sanidine, anorthoclase, albite, oligoclase, andesine, labradorite, bytownite, anorthite

* Feldspathoids (Tectosilicate): leucite, lazurite, sodalite, petalite

* Zeolites (Tectosilicate): mesolite, clinoptilolite, natrolite, analcime, ferrierite, stilbite, chabazite

* Micas (Phyllosilicate): biotite, muscovite, lepidolite, phlogopite

* Serpentines (Phyllosilicate): chrysotile, lizardite

* Prehnites (Phyllosiilicate): prehnite

* Clays (Phyllosilicate): chamosite, attapulgite, beidellite, clinochlore, halloysite, illite, kaolinite, montmorillonite, nacrite, nontronite, pennantite, pyrophyllite, saponite, sepiolite, serpentinite, talc, vermiculite

* Pyroxenes (Inosilicate): aegirine, augite, diopside, enstatite, esseneite, ferrosilite, hedenbergite, hypersthene, jadeite, omphacite, pigeonite, spodumene, wollastonite, rhodonite

* Amphiboles (Inosilicate): anthophyllite, cummingtonite, grunerite, tremolite, actinolite, hornblende, glaucophane, riebeckite

* Cyclosilicates: beryl, cordierite, dioptase, tourmaline, schorl

* Nesosilicates: andalusite, kyanite, sillimanite, olivine, forsterite, fayalite, tephroite, chondrodite, euclase, norbergite, staurolite, titanite (sphene), topaz, willemite, zircon, pyrope, almandine, spessartine, grossular, uvarovite, andradite

* Sorosilicates: epidote, zoisite, hemimorphite, idocrase (vesuvianite)

* Oxides: anatase, ilmenite, brookite, rutile, cassiterite, chrysoberyl, spinel, magnetite, corundum, cristobalite, quartz, cuprite, hematite, periclase, litharge, pyrolusite, uraninite, scheelite, wolframite, wulfenite

* Hydroxides: brucite, diaspore, boehmite, gibbsite, goethite

* Borates: borax, ulexite, colemanite, howlite

* Carbonates: calcite, aragonite, dolomite, azurite, siderite, cerussite, magnesite, malachite, nahcolite, rhodochrosite, smithsonite, trona

* Nitrates: niter, soda niter, nitrocalcite

* Phosphates: apatite, struvite, autunite, brushite, vivianite, monazite, scorzalite, lazulite, turquoise, augelite, stercorite, wavellite, whitlockite, xenotime

* Sulfides: acanthite, cinnabar, pyrite, realgar, arsenopyrite, galena, bornite, chalcopyrite, molybdenite, orpiment, pyrrhotite, troilite, sphalerite, stibnite, wurtzite, chalcocite

* Sulfates: anhydrite, gypsum, epsomite, glauberite, mirabilite, thenardite, baryte, anglesite, chalcanthite, ettringite, hanksite, jarosite, alum-K, alum-Na, alunite

* Chalcogens: fluorite, halite, sylvite, bischofite

* Organics: graphite, diamond, whewellite, hoelite

While making the list, I found a neat article about the structure of prehnite. It's pretty rare and it's usually described as being an inosilicate mineral, meaning it has a backbone of silicate tetrahedra all chained up together in a row and sharing oxygen atoms at the corners. I couldn't find any source telling whether it was a single-chain inosilicate (like the pyroxenes) or a double-chain (like the amphiboles) or something weirder (like the inosilicate mineral that God put in Vermont for Jim Thompson), until I found Steve Dutch's webpage. He explains that prehnite is something weirder. It has its own mineral structure, which is generally planar (phyllosilicate), but a little more three-dimensional (like the tectosilicates), and also the planes are made of rectangular helices of silica and alumina tetrahedra, so it's a little bit inosilicate too. Mindat.org also calls it a phyllosilicate, so that's good enough for me. Despite being kind of rare, Prehnite has been found in dozens of countries and every continent, including Antarctica. So I guess it's both uncommon and widespread? Cool. 

Now I've just got to get similar data for another ~193 minerals. Maybe I can automate it. Any mineral that has 9 or more countries and 5 or more continents will get put in a a special bin called "Prevalent", maybe. And then I'll know if apatite is globally more common than magnesite. And I'll have a better idea, when I pick up a handful of pebbles from a river bed, if there's likely to be any spinel or hypersthene in there. And I'll know if I'd be more likely to find mercury ores or lead ores if I were to try mining by fire-setting. Important stuff like that.

Reinventing 7-Limit Just Intonation

I wanted to create a system for systematically giving interval names to arbitrary frequency ratios in 7-limit just intonation, inspired by Lilley's system for naming intervals in 5-limit just intonation.

Specifically, I was hoping I could find a system in which all the perfect intervals only have factors of (2, 3) and all the major and minor intervals just only have factors of (2, 3, 5), and then some other intervals, either the (augmented and diminished) or the (acute and grave) would all have factors of (2, 3, 5, 7). I wanted the qualities of the intervals to tell you something about their factors.

Such a system might exist, but I wasn't able to find one. Or rather, I found several systems, but the ratios with factors of 7 get interval names with new qualities, instead of using old interval qualities like (augmented and diminished). The new qualities are "sub", as in a "septimal sub-minor 7th", Sbm7, and "super", like a "septimal super unison", Sp1. And this is fine. To talk about a 4 dimensional space, we were going to need new interval qualities one way or the other. This way all the familiar frequency ratios from 5-limit JI keep their old interval names, and the new septimal frequency ratios get new intervals names.

I found three functional systems for naming septimal intervals, and I'll introduce them to you in the order that I found them.

:: The Palatine System

I started by looking at rank-2 intervals tuned to 31-EDO, which I'd heard offered good approximations to most of the simple 7-limit just intonation intervals. Whenever I could find a 7-limit frequency ratio that was very close to a step  of 31-EDO and also simpler than the corresponding 5-limit frequency ratio for the interval, I thought my new system should tune that interval to the septimal ratio instead of the 5-limit one. These were the first substitutions I found:

d3: 144/125 -> 8/7
A2: 125/108 -> 7/6
d4: 32/25 -> 9/7
A4: 25/18 -> 7/5
d5: 36/25 -> 10/7
A5: 25/16 -> 14/9
d7: 216/125 -> 12/7
A6: 125/72 -> 7/4

.

I eventually found substitutions for all of the once modified (i.e. once augmented or diminished) intervals and then for the twice modified intervals. But when I looked at the interval differences, the system wasn't very regular. It was a mess of weird skips and jumps. I spent a really long time trying to figure out an algebra of interval differences where you could consistently say, "adding an augmented unison to a perfect fourth produces an augmented fourth", but it wasn't coming together. Eventually I gave up on the project of making augmented and diminished interval septimal.

What finally worked was taking the Lilley system of 5-limit just intonation and adding a septimal comma. 

I wrote a little bit about Lilley's system on this blog last month and also you can see the original presentation in Haskell code at FiveLimit.hs. His system has an interval basis (Ac1, A1, d2) tuned to a frequency ratio basis (81/80, 25/24, 128/125).

The augmented unison, A1, tuned to a value of 25/24, is the difference between the 5-limit major and minor seconds, 

A1 = M2 - m2
(25 / 24) = (10/9) / (16/15)
.

More generally, it' the difference between any major Nth and minor Nth.

The diminished second interval, d2, tuned to a value of 128/125, is the difference between 5-limit minor second and the augmented first that we just defined, t(m2) = 16/15 and t(A1) = 25/24.

d2 = m2 - A1
(128 / 125) = (16/15) / (25/24)
.

Lilley previously used the (A1, d2) basis to great effect for talking about rank-2 tuning system, like Pythagorean tuning and the various meantone temperaments, the starting point for which is Algebraic Structure Of Musical Intervals And Pitches.

But to represent a rank-3 system like 5-limit just intonation, we need one more comma, and Lilley uses the acute unison, Ac1, tuned to a frequency ratio of 81/80. It's the difference between the 5-limit major second and the Pythagorean major second, 9/8.  In Lilley's system, the Pythagorean major second now gets the name "acute major second", AcM2.

Lilley's basis is nice for lots of reasons, and one of them is that the absolute value of the determinant of the matrix of basis vectors is unitary, and that's the right way to define just intonation tuning systems and also a good way to design enharmonic keyboard layouts (details here).

To extend Lilley's 5-limit system to a 7-limit system, we need a fourth interval as a basis vector, which will be the septimal super unison, Sp1, and we need to tune Sp1 to a septimal frequency ratio. I tried several small septimal frequency ratios, and found that adding in 21/20 produced a full rank basis of frequency ratios with an absolute determinant of one (when expressed in any other such basis, like the (2/1, 3/1, 5/1, 7/1) prime basis), and also this system reproduced a lot of the features that I was trying to get by substituting in 7-limit frequency ratios in place of 5-limit frequency ratios as approximations to steps in 31-EDO. 

For example, I thought the frequency ratio of 7/4, the octave-reduced 7th harmonic, should be called some kind of 6th interval, since 7/4 was very close to the 31-EDO value for the augmented 6th, and also the frequency ratio 7/4 was simpler than the 5-limit version of the augmented sixth. The rank-4 extension of Lilley's 5-limit system with Sp1 tuned to 21/20 - it calls the frequency ratio (7/4) a Super major 6th, SpM6. And I thought it was a sixth previously! Great success!

I liked this system so much that I gave it a name: It is the "Palatine system" and (21/20) is the "Palatine comma". The letters of the name "Palatine" appear in order in the phrase "septimal chromatic semitone".

I'll talk more about how we actually assign (frequency ratios to interval names) and (interval names to frequency ratios) in a bit.

:: The Leipzig system

But my Palatine comma was not the only septimal comma on the block. Whoever wrote the Wikipedia articles on septimal intervals is very partial to a septimal comma of 64/63, which is called the Leipzig comma in some sources. If we tune the septimal super unison, Sp1, to the Leipzig comma in the rank-4 extension of Lilley's system, then we get a different set of interval names for septimal frequency ratios. This new set matches the ordinals for the interval names, (1st, 2nd, 3rd, ....), on Wikipedia, which is good. This system gives the intervals different qualities than the ones on Wikipedia, but I'd argue that the qualities are more regular here, just as Lilley's interval qualities are so, *so* much nicer than the mess of crap in Wikipedia's "List of intervals in 5-limit just intonation". The octave-reduced 7th harmonic, 7/4, is now instead called a sub-grave-minor 7th, SbGrm7, in the Leipzig system.

The Leipzig comma, (64/63), can be obtained as (16/15) / (21/20), i.e. it's the 5-limit minor second minus the Palatine comma. The Leipzig comma is also the frequency ratio associated with the septimal accidental in Helmholtz-Ellis staff notation.

For both the Palatine and Leipzig extensions of Lilley's system, written in this order (Sp1, Ac1, A1, d2), the old 5-limit frequency ratios have all the same interval coordinates, except with a 0 tacked on the front. Here are some simple ones:

1/1 :: (0, 0, 0, 0) # P1
16/15 :: (0, 0, 1, 1) # m2
10/9 :: (0, 0, 2, 1) # M2
6/5 :: (0, 1, 3, 2) # m3
5/4 :: (0, 1, 4, 2) # M3
4/3 :: (0, 1, 5, 3) # P4
3/2 :: (0, 2, 7, 4) # P5
8/5 :: (0, 2, 8, 5) # m6
5/3 :: (0, 2, 9, 5) # M6
9/5 :: (0, 3, 10, 6) # m7
15/8 :: (0, 3, 11, 6) # M7

. A lot of zeroes up front, as promised.

For septimal ratios, if there's a 1 in the front, then it's a Super-(whatever the interval would be called if there were a zero in front). And if there's a -1 in the first column, then it's a Sub-(whatever the interval would be called if there were a zero in front). If the first component were a -2, then it would be a Sub-Sub-(whatever).

Let's do an example. In the Palatine extension of Lilley's 5-limit tuning system, we have these two related intervals:

5/3 :: (0, 2, 9, 5) # M6 in either system
7/4 :: (1, 2, 9, 5) # Octave-reduced 7th harmonic in Palatine system

These two have the same coordinates at the end, but 7/4 is raised by one unit in the septimal component relative to the major sixth, so it's a super major sixth, SpM6.

In the Leipzig extension of the 5-limit tuning system, we have 

9/5 :: (0, 3, 10, 6) # m7 in either system
7/4 :: (-1, 2, 10, 6) # Octave-reduced 7th harmonic in Leipzig system
.
The components of the interval for 7/4 are lowered, relative to m7, in both the acute unison component and the septimal component. That makes (7/4) a sub grave minor seventh, SbGrm7.

By the same logic we can say that, e.g. (15/14) is a sub grave major second, SbGrM2, in the Palatine system, and it's a super acute augmented first, SpAcA1, in the Leipzig system. If you were wondering.

:: The Johnston system

That's as far as this post got originally, except for a lot of failed attempts to alter one or more of Lilley's original basis vectors to make things even nicer. But I promised you three tuning systems, and the best is yet to come. 

The great microtonal composer Ben Johnston used the frequency ratio (36/35) as the frequency ratio for the septimal accidental in his staff notation. Johnston's comma is really close to a quarter tone, i.e. 2^(1/24), and I discovered this while writing a later post about quartertone harmony and maqamat in middle eastern music.

In that same post, I make some suggestions for interval qualities for 11-limit and 13-limit just intonation: we could associate a undecimal comma with the qualities (ascendant | descendant), notated As and De, and associate a tridecimal comma with the qualities (prominent | recessed), notated as Pr and Re. Maybe. One day.

I'm not going to reproduce everything in that post here, but I like the septimal Johnston-Lilley system even more than my Palatine system at this point. It agrees with Wikipedia and HEJI that 7/4 is some kind of seventh interval, but the Johnston-Lilley system gives (7/4) the nicer name of a sub-minor seventh, Sbm7. Also it's fairly good for analyzing quarter tone music. Also I just love Ben Johnston's music and like that I can use something of his productively. Also, honestly, the Palatine comma was kind of wide to be called a comma, it's more than 50 cents. 

All three septimal commas are super-particular, if that's something you care about, and all three systems have their merits, but I'm sticking with Johnston from here on out. I will leave you with two gifts. First, a table of 150 intervals with short names in the Johnston-Lilley system:

P1 : (0, 0, 0, 0) :: 1/1
SpA0 : (1, 0, 0, -1) :: 225/224
Grd2 : (0, -1, 0, 1) :: 2048/2025
Ac1 : (0, 1, 0, 0) :: 81/80
SbA1 : (-1, 0, 1, 0) :: 875/864
SpGr1 : (1, -1, 0, 0) :: 64/63
d2 : (0, 0, 0, 1) :: 128/125
AcAc1 : (0, 2, 0, 0) :: 6561/6400
Sp1 : (1, 0, 0, 0) :: 36/35
GrA1 : (0, -1, 1, 0) :: 250/243
Acd2 : (0, 1, 0, 1) :: 648/625
Sbm2 : (-1, 0, 1, 1) :: 28/27
SpAc1 : (1, 1, 0, 0) :: 729/700
A1 : (0, 0, 1, 0) :: 25/24
Spd2 : (1, 0, 0, 1) :: 4608/4375
Grm2 : (0, -1, 1, 1) :: 256/243
AcA1 : (0, 1, 1, 0) :: 135/128
SpSp1 : (2, 0, 0, 0) :: 1296/1225
m2 : (0, 0, 1, 1) :: 16/15
SpA1 : (1, 0, 1, 0) :: 15/14
Acm2 : (0, 1, 1, 1) :: 27/25
SbM2 : (-1, 0, 2, 1) :: 175/162
Spm2 : (1, 0, 1, 1) :: 192/175
GrM2 : (0, -1, 2, 1) :: 800/729
M2 : (0, 0, 2, 1) :: 10/9
Sbd3 : (-1, 1, 2, 2) :: 28/25
AcM2 : (0, 1, 2, 1) :: 9/8
SbA2 : (-1, 0, 3, 1) :: 4375/3888
Grd3 : (0, 0, 2, 2) :: 256/225
SpM2 : (1, 0, 2, 1) :: 8/7
GrA2 : (0, -1, 3, 1) :: 2500/2187
d3 : (0, 1, 2, 2) :: 144/125
A2 : (0, 0, 3, 1) :: 125/108
Acd3 : (0, 2, 2, 2) :: 729/625
Sbm3 : (-1, 1, 3, 2) :: 7/6
AcA2 : (0, 1, 3, 1) :: 75/64
Spd3 : (1, 1, 2, 2) :: 5184/4375
Grm3 : (0, 0, 3, 2) :: 32/27
SpA2 : (1, 0, 3, 1) :: 25/21
m3 : (0, 1, 3, 2) :: 6/5
Acm3 : (0, 2, 3, 2) :: 243/200
SbM3 : (-1, 1, 4, 2) :: 175/144
Spm3 : (1, 1, 3, 2) :: 216/175
GrM3 : (0, 0, 4, 2) :: 100/81
Sbd4 : (-1, 1, 4, 3) :: 56/45
M3 : (0, 1, 4, 2) :: 5/4
SbSb4 : (-2, 1, 5, 3) :: 1225/972
Grd4 : (0, 0, 4, 3) :: 512/405
AcM3 : (0, 2, 4, 2) :: 81/64
SbA3 : (-1, 1, 5, 2) :: 4375/3456
d4 : (0, 1, 4, 3) :: 32/25
SbGr4 : (-1, 0, 5, 3) :: 2800/2187
SpM3 : (1, 1, 4, 2) :: 9/7
GrA3 : (0, 0, 5, 2) :: 625/486
Acd4 : (0, 2, 4, 3) :: 162/125
Sb4 : (-1, 1, 5, 3) :: 35/27
GrGr4 : (0, -1, 5, 3) :: 25600/19683
A3 : (0, 1, 5, 2) :: 125/96
SbAc4 : (-1, 2, 5, 3) :: 21/16
Spd4 : (1, 1, 4, 3) :: 1152/875
Gr4 : (0, 0, 5, 3) :: 320/243
AcA3 : (0, 2, 5, 2) :: 675/512
P4 : (0, 1, 5, 3) :: 4/3
SpA3 : (1, 1, 5, 2) :: 75/56
Ac4 : (0, 2, 5, 3) :: 27/20
SbA4 : (-1, 1, 6, 3) :: 875/648
SpGr4 : (1, 0, 5, 3) :: 256/189
AcAc4 : (0, 3, 5, 3) :: 2187/1600
Sp4 : (1, 1, 5, 3) :: 48/35
GrA4 : (0, 0, 6, 3) :: 1000/729
SpAc4 : (1, 2, 5, 3) :: 243/175
A4 : (0, 1, 6, 3) :: 25/18
Sbd5 : (-1, 2, 6, 4) :: 7/5
AcA4 : (0, 2, 6, 3) :: 45/32
SpSp4 : (2, 1, 5, 3) :: 1728/1225
SbSb5 : (-2, 2, 7, 4) :: 1225/864
Grd5 : (0, 1, 6, 4) :: 64/45
SpA4 : (1, 1, 6, 3) :: 10/7
d5 : (0, 2, 6, 4) :: 36/25
SbGr5 : (-1, 1, 7, 4) :: 350/243
Acd5 : (0, 3, 6, 4) :: 729/500
Sb5 : (-1, 2, 7, 4) :: 35/24
GrGr5 : (0, 0, 7, 4) :: 3200/2187
SbAc5 : (-1, 3, 7, 4) :: 189/128
Spd5 : (1, 2, 6, 4) :: 1296/875
Gr5 : (0, 1, 7, 4) :: 40/27
Sbd6 : (-1, 2, 7, 5) :: 112/75
P5 : (0, 2, 7, 4) :: 3/2
Grd6 : (0, 1, 7, 5) :: 1024/675
Ac5 : (0, 3, 7, 4) :: 243/160
SbA5 : (-1, 2, 8, 4) :: 875/576
SpGr5 : (1, 1, 7, 4) :: 32/21
d6 : (0, 2, 7, 5) :: 192/125
AcAc5 : (0, 4, 7, 4) :: 19683/12800
Sp5 : (1, 2, 7, 4) :: 54/35
GrA5 : (0, 1, 8, 4) :: 125/81
Acd6 : (0, 3, 7, 5) :: 972/625
Sbm6 : (-1, 2, 8, 5) :: 14/9
SpAc5 : (1, 3, 7, 4) :: 2187/1400
A5 : (0, 2, 8, 4) :: 25/16
Spd6 : (1, 2, 7, 5) :: 6912/4375
Grm6 : (0, 1, 8, 5) :: 128/81
AcA5 : (0, 3, 8, 4) :: 405/256
SpSp5 : (2, 2, 7, 4) :: 1944/1225
m6 : (0, 2, 8, 5) :: 8/5
SpA5 : (1, 2, 8, 4) :: 45/28
Acm6 : (0, 3, 8, 5) :: 81/50
SbM6 : (-1, 2, 9, 5) :: 175/108
Spm6 : (1, 2, 8, 5) :: 288/175
GrM6 : (0, 1, 9, 5) :: 400/243
M6 : (0, 2, 9, 5) :: 5/3
Sbd7 : (-1, 3, 9, 6) :: 42/25
AcM6 : (0, 3, 9, 5) :: 27/16
SbA6 : (-1, 2, 10, 5) :: 4375/2592
Grd7 : (0, 2, 9, 6) :: 128/75
SpM6 : (1, 2, 9, 5) :: 12/7
GrA6 : (0, 1, 10, 5) :: 1250/729
d7 : (0, 3, 9, 6) :: 216/125
A6 : (0, 2, 10, 5) :: 125/72
Acd7 : (0, 4, 9, 6) :: 2187/1250
Sbm7 : (-1, 3, 10, 6) :: 7/4
AcA6 : (0, 3, 10, 5) :: 225/128
Spd7 : (1, 3, 9, 6) :: 7776/4375
Grm7 : (0, 2, 10, 6) :: 16/9
SpA6 : (1, 2, 10, 5) :: 25/14
m7 : (0, 3, 10, 6) :: 9/5
Acm7 : (0, 4, 10, 6) :: 729/400
SbM7 : (-1, 3, 11, 6) :: 175/96
Spm7 : (1, 3, 10, 6) :: 324/175
GrM7 : (0, 2, 11, 6) :: 50/27
Sbd8 : (-1, 3, 11, 7) :: 28/15
M7 : (0, 3, 11, 6) :: 15/8
SbSb8 : (-2, 3, 12, 7) :: 1225/648
Grd8 : (0, 2, 11, 7) :: 256/135
AcM7 : (0, 4, 11, 6) :: 243/128
SbA7 : (-1, 3, 12, 6) :: 4375/2304
d8 : (0, 3, 11, 7) :: 48/25
SbGr8 : (-1, 2, 12, 7) :: 1400/729
SpM7 : (1, 3, 11, 6) :: 27/14
GrA7 : (0, 2, 12, 6) :: 625/324
Acd8 : (0, 4, 11, 7) :: 243/125
Sb8 : (-1, 3, 12, 7) :: 35/18
GrGr8 : (0, 1, 12, 7) :: 12800/6561
A7 : (0, 3, 12, 6) :: 125/64
SbAc8 : (-1, 4, 12, 7) :: 63/32
Spd8 : (1, 3, 11, 7) :: 1728/875
Gr8 : (0, 2, 12, 7) :: 160/81
AcA7 : (0, 4, 12, 6) :: 2025/1024
Sbd9 : (-1, 3, 12, 8) :: 448/225
P8 : (0, 3, 12, 7) :: 2/1

, and second, a python program for working with 7-limit intervals. Enjoy.

Oh, man! I found a cool application. There was an ancient Greek dude named Archytas who liked breaking super-particular frequency ratios into new super-particular frequency ratios using harmonic means. He came up with some 7-limit scales and tetrachords. A tetrachord is a sequence of intervals that sum to P4.

Music theorists usually just state the tetrachords in terms of frequency ratios, but let's give them 7-limit interval names!

Archytas's enharmonic tetrachord:

(28/27) * (36/35) * (5/4) = (4/3)

Sbm2 + Sp1 + M3 = P4

Archytas's diatonic tetrachord:

(28/27) * (8/7) * (9/8) = (4/3)

Sbm2 + SpM2 + AcM2 = P4

Archytas's chromatic tetrachord:

(28/27) * (243/224) * (32/27) = (4/3)

Sbm2 + SpAcA1 + Grm3 = P4

I'm not here to say whether his tetrachords were good, interesting, or useful, but we've successfully named the components.

Ooh, update:

If you split (4/3) into (8/7) (which is the harmonic mean of 4/3 with 1/1) and (7/6) (which is the arithmetic mean of 4/3 with 1/1), and stack them up alternately, reducing by octaves when necessary,  then  you get a lot of septimal frequency ratios separated by (64/63) like
    (256/243) / (28/27) = (64/63)
    (32/27) / (7/6) = (64/63)
    (128/81) / (14/9) = (64/63)
    (256/189) / (4/3) = (64/63)
    (1024/567) / (16/9) = (64/63)

I know that's not a great reason to use 64/63 as a septimal comma, but I found it repeatedly as a septimal comma while doing that stacking thing and thought it might go well as an endnote in a post partially about one's choice of septimal comma.  

You also get lots of frequency ratios separated by (28/27), like:
    (256/243) / (64/63) = 28/27
    (32/27) / (8/7) = 28/27
    (128/81) / (32/21) = 28/27
.
So whatever.

Orders of Modified Musical Intervals

The primitive rank-2 musical intervals, or the natural intervals, are these guys: (P1, m2, M2, m3, M3, P4, P5, m6, M6, m7, M7). The once-modified rank-2 intervals are these guys: (A1, A2, A3, A4, A5, A6, A7, d1, d2, d3, d4, d5, d6, d7).

In what order do different tuning systems put the modified intervals, relative to the natural ones? In turns out, there are multiple possibilities, even if we only look at rank-2 tuning systems with pure octaves, t(P8) = 2, that preserve the 12-TET order of the natural intervals.

Pythagorean tuning has this order: 

[d1, d2, P1, m2, A1, d3, M2, m3, A2, d4, M3, P4, A3, d5, A4, d6, P5, m6, A5, d7, M6, m7, A6, d8, M7, P8, A7]

.

This order

[d1, P1, d2, A1, m2, M2, d3, A2, m3, M3, d4, A3, P4, A4, d5, P5, d6, A5, m6, M6, d7, A6, m7, M7, d8, A7, P8]

is shared by quarter-comma meantone (t(M3) = 5/4), third-comma meantone (t(m3) = 6/5), sixth-comma meantone (t(A4) = 45/32), septimal tuning (t(A6) = 7/4), and a tuning system I made up in the EDO-generator post (t(m2) = 16/5), which I'll call the 5-limit m2 tuning system.

This order

[d1, P1, A1, d2, m2, M2, A2, d3, m3, M3, A3, d4, P4, A4, d5, P5, A5, d6, m6, M6, A6, d7, m7, M7, A7, d8, P8]

is shared by the Tetracot tuning system (t(A5) = 3/2), another tuning system I made up in the EDO-generator post which we could call the 5-limit M2 tuning system (t(M2) = 10/9), the 26-EDO generated by (t(ddd2) = 1), and the 33-EDO generated by (t(dddd2) = 1). This one separates the firsts from the seconds from the thirds, et cetera. No interleaving. That's a little neat.

After seeing 26-EDO and 33-EDO, I wondered if every EDO >= 26 would have the Tetracot order, but then I tried the 53-EDO generating by (t(ddddddd6) = 1) and found that it has the Pythagorean order.

So I've tried 12 tuning systems, and I've gotten three different orders of modified intervals. Neat. How many orders are there? How can we predict what order a tuning system will have? Let's find out!

I'm up to 5 orders now:

[d1, P1, A1, d2, m2, M2, A2, d3, m3, M3, A3, d4, P4, A4, d5, P5, A5, d6, m6, M6, A6, d7, m7, M7, A7, d8, P8]: 26-EDO, 33-EDO, 40-EDO, 45-EDO, 47-EDO, 440-Floor, 5-limit M2, Tetracot

[d1, P1, d2, A1, m2, M2, d3, A2, m3, M3, d4, A3, P4, A4, d5, P5, d6, A5, m6, M6, d7, A6, m7, M7, d8, A7, P8]: 31-EDO, 43-EDO, 50-EDO, 5-limit-m2, Quarter-comma meantone, Septimal, Sixth-comma meantone, Third-comma meantone

[d1, d2, P1, m2, A1, d3, M2, m3, A2, d4, M3, P4, A3, d5, A4, d6, P5, m6, A5, d7, M6, m7, A6, d8, M7, P8, A7]: 17-EDO, 19-EDO, 29-EDO, 41-EDO, 46-EDO, 53-EDO, Pythagorean

[d1, d2, P1, m2, d3, A1, M2, m3, d4, A2, M3, P4, d5, A3, d6, A4, P5, m6, d7, A5, M6, m7, d8, A6, M7, P8, A7]: 39-EDO

[d1, d2, P1, m2, d3, A1, M2, m3, d4, A2, M3, P4, d5, d6, A3, A4, P5, m6, d7, A5, M6, m7, d8, A6, M7, P8, A7]: 27-EDO, 37-EDO, 42-EDO, 49-EDO, 52-EDO

and here are the definitions of the tuning systems:

t(A4) = 45/32 # Sixth-comma meantone
t(A5) = 3/2 # Tetracot
t(A6) = 7/4 # Septimal
t(M2) = 10/9 # 5-limit-M2
t(M3) = 5/4 # Quarter-comma meantone
t(P5) = 3/2 # Pythagorean
t(m2) = 16/15 # 5-limit-m2
t(m3) = 6/5 # Third-comma meantone
t(m3) = 67/55 # 440-Floor
t(dd3) = 1 # 17-EDO
t(dd2) = 1 # 19-EDO
t(ddd2) = 1 # 26-EDO
t(dddd5) = 1 # 27-EDO
t(dddd4) = 1 # 29-EDO
t(dddd3) = 1 # 31-EDO
t(dddd2) = 1 # 33-EDO
t(ddddd7) = 1 # 37-EDO
t(ddddd6) = 1 # 39-EDO
t(ddddd2) = 1 # 40-EDO
t(dddddd5) = 1 # 41-EDO
t(dddddd8) = 1 # 42-EDO
t(dddddd4) = 1 # 43-EDO
t(dddddd3) = 1 # 45-EDO
t(dddddd6) = 1 # 46-EDO
t(dddddd2) = 1 # 47-EDO
t(ddddddd8) = 1 # 49-EDO
t(ddddddd4) = 1 # 50-EDO
t(ddddddd10) = 1 # 52-EDO
t(ddddddd6) = 1 # 53-EDO

.

Time to get weird? I got these systems from ejlilley's Tuning.hs. I've never played with them before.

t(8 * P4) = t(d25) = 10 # Schismatic
t(3 * M3) = t(A7) = 2 # Augmented
t(4 * P5) = t(M17) = 24/5 # Pelogic
t(8 * M3) = t(AAAA17) = 6 # Wuerschmidt
t(4 * m3) = t(d9) = 2 # Dimipent
t(5 * A1) = t(AAAAA1) = 6/5 # Sycamore
t(9 * M3) = t(AAAAA19) = 16384/2187 # Escapade
t(7 * A1) = t(AAAAAAA1) = 4/3 # Vishnuzmic

Schismatic has the Pythagorean order. Augmented, Wuerschmidt, Vishnuzmic, and Escapade have the Meantone order. Sycamore has the Tetracot order. Pelogic doesn't even have the 12-TET order over natural intervals. It's also crazy. The tuned major seventh in Pelogic is t(M7).= 6/25 * 10^(3/4) * 3^(1/4). Dimipent has the same pitches as 12-TET, so it doesn't distinguish between the modified intervals and it doesn't get an ordering on this page. Or maybe we should say pure octave tuning systems with t(P5) = 2^(7/12) have a degenerate order over once-modified rank-2 intervals.

Next, let's check more generally whether tuning systems with the same orders have similar P5s.

Good news!

1.4863324494754246 : 440-Floor - Tetracot order
1.4877378261644905 : Tetracot - Tetracot order
1.4887216904814808 : 54-EDO - Tetracot order
1.4891283272685385 : 47-EDO - Tetracot order
1.4896774631227023 : 40-EDO - Tetracot order
1.4904599153098523 : 33-EDO - Tetracot order
1.49071198499986 : 5-limit M2 - Tetracot order
1.4909906251234766 : 59-EDO - Tetracot order
1.4916644904914018 : 26-EDO - Tetracot order
1.492548464309911 : 45-EDO - Tetracot order
1.4937553085226773 : Sycamore - Tetracot order
1.4937589616544857 : 19-EDO - Tetracot order
1.4938015821857216 : Third-comma meantone - Meantone order
1.4947443156280251 : Vishnuzmic - Meantone order
1.4948492486349383 : 50-EDO - Meantone order
1.4953487812212205 : Quarter-comma meantone - Meantone order
1.4955178823482085 : 31-EDO - Meantone order
1.495576529604238 : Escapade - Meantone order
1.4956115235716425 : Septimal - Meantone order
1.4956577455914317 : Wuerschmidt - Meantone order
1.4962778697388446 : 5-limit m2 - Meantone order
1.4962957394862462 : 43-EDO - Meantone order
1.4968975827619546 : Sixth-comma meantone - Meantone order
1.4983070768766817 : Augmented - Meantone order
1.4997884186649117 : Schismatic - Pythagorean order
1.4999409030781112 : 53-EDO - Pythagorean order
1.5 : Pythagorean - Pythagorean order
1.5004194330574077 : 41-EDO - Pythagorean order
1.5012943823463352 : 29-EDO - Pythagorean order
1.5020746584842646 : 46-EDO - Pythagorean order
1.5034066538560549 : 17-EDO - Pythagorean order
1.5049792436093965 : 39-EDO - 39-EDO order
1.5071643388112317 : 49-EDO - 27-EDO order
1.5079541804033867 : 27-EDO - 27-EDO order
1.5100481939178911 : 37-EDO - 27-EDO order
1.5107218870420942 : 42-EDO - 27-EDO order
1.5116811224148876 : 52-EDO - 27-EDO order

.

We can predict the order of once-modified intervals in a tuning system from the size of its tuned perfect fifth interval (the number on the far left). Now I just have to figure out where the five families live. And also, maybe there are more than five families if you go to higher precision or go out farther on the ends toward 2^(4/7) on the low end and 2^(3/5) on the high end (The details of where these come from are presented in the previous blog post).

Ok, there still appear to be only five families. We transition from Tetracot order to Meantone order right at t(P5) = 2^(11/19). That kind of makes sense. There's a 19-EDO with the 12-TET order over natural intervals and the only value it has in the range (2^(4/7), 2^(3/5)) is the 11/19 thing. On that basis, we might expect to see 2^x for x in [10/17, 11/19, 13/22, 15/26, 16/27, 17/29, 18/31, ...] as other transition points.

Oh! And also 2^(7/12) from 12-TET. That's where Meantone order switches to Pythagorean order. Then we switch from Pythagorean order to the 39-EDO order at 2^(10/17) and we switch from the 39-EDO order to the 27-EDO order at t(P5) = 2^(13/22).

All together now:

Tuning systems with t(P5) between 2^(4/7) and 2^(11/19) have the Tetracot order over once-modified intervals.
Tuning systems with t(P5) between 2^(11/19) and 2^(7/12) have the Meantone order.
Tuning systems with t(P5) exactly 2^(7/12) have a degenerate order over once-modified intervals.
Tuning systems with t(P5) between 2^(7/12) and 2^(10/17) have the Pythagorean order.
Tuning systems with t(P5) between 2^(10/17) and 2^(13/22) have the 39-EDO order.
Tuning systems with t(P5) between 2^(13/22) and 2^(3/5) have the 27-EDO order.

. Nice.

So what about 2^(15/26 )and 2^(16/27) and higher? Maybe those points distinguish between orders of twice-modified intervals like dd6 and AA2.

Which order is the best? Pelogic. Nah, probably the Meantone one that's also 31-EDO and septimal, but I don't have an argument for why. Or, here's an argument: 1) The best ordering has to be the Pythagorean or the Meantone, because those two straddle the 12-TET order at t(P5) = 2^(7/12), and 2) it's not the Pythagorean order. The Meantone ordering is also what you get when you name rank-3 intervals according to ejlilley's rank-3 interval algebra and then tune them in 5-limit just intonation, although I wouldn't be surprised if he built his algebra to create that ordering, given that he's a man of good taste who appreciates the finer things in life (meantone temperaments).

Let's compare the Pythagorean ordering to the Meantone ordering.

[d1, P1, d2, A1, m2, M2, d3, A2, m3, M3, d4, A3, P4, A4, d5, P5, d6, A5, m6, M6, d7, A6, m7, M7, d8, A7, P8] # Meantone
[d1, d2, P1, m2, A1, d3, M2, m3, A2, d4, M3, P4, A3, d5, A4, d6, P5, m6, A5, d7, M6, m7, A6, d8, M7, P8, A7]:  # Pythagorean

Relative to Meantone, Pythagoras swaps [P1 with d2], [A1 with m2], [M2, d3], [A2, m3], [M3, d4], [A3, P4], [A4, d5], [P5, d6], [A5, m6], [M6, d7], [A6, m7], [M7, d8], and [A7, P8]. What effect does that swap have on melodies and harmonies?

...

I don't know, but I looked at some orders of twice modified intervals, and 40-EDO is cool:

[dd1, d1, P1, A1, AA1, dd2, d2, m2, M2, A2, AA2, dd3, d3, m3, M3, A3, AA3, dd4, d4, P4, A4, AA4, dd5, d5, P5, A5, AA5, dd6, d6, m6, M6, A6, AA6, dd7, d7, m7, M7, A7, AA7, dd8, d8, P8, A8, AA8]

There's still no interleaving! All the firsts come first, then the seconds, then the thirds, and so on.

Back to the once-modified intervals, I wanted to be able to say more about the regularities that hold across all five of orders. We've already seen, in Pythagorean order versus Meantone order, that t(P1) is larger and sometimes t(d2) is larger, depending on the tuning system. I'm going to notate that incomparability as

P1 >< d2

meaning that the order of the two is not consistently distinguished in pure octave tuning systems that have the 12-TET order over natural intervals. "Not less than equal to or greater than". I also considered using ~ or <!=!> or <≠> or ≮ ≠ ≯ or ⊥.

Besides the incomparability relations already listed when we compared the Pythagorean order and the Meantone order, there's also incomparability between A(n) and d(n+1). e.g.

A6 >< d7

and between A(n) and d(n+1), .e.g. 

A4 >< d6

and finally between A3 >< d6, which is a weird lone example of A(n) >< dn(n + 2). What gives? It looks like A3 is way below d6 in Tetracot, but they're a little closer in Meantone, a little closer in Pythagorean, a little closer in 39-EDO, and then they swap position in 27-EDO. Bug in my code? Let's double-check the tuned values in 27-EDO:

t(d6) = 2^(13/27) = 1.3961766429234026
t(A3) = 2^(14/27) = 1.4324834970826286

No bug.

So if you're trying to compose microtonal counterpoint, and you're examining a situation where one of your voices might move melodically by a d6 and one might move melodically by an A3, I don't think there's any fact of the matter of whether that's contrary motion or voice crossing until you pick a tuning system. They're octave complements, so it shouldn't be oblique or motion or similar motion, and you'll only have parallel motion in a tuning system that equates the two.

This contrapuntal ambiguity doesn't just happen for A3 >< d6, but for all of the incomparability relations, like P1 >< d2 and A6 >< d7 and A4 >< d6.

I think I need to make a math diagram that summarizes the relationships, inequalities and incomparabilities, between all of all the once-modified intervals next. A Hasse diagram, right? Which means I need to find a transitive reduction. I think I can do that. I've never done it before, but how hard can it be?

I couldn't quickly find an explanation online of how to do it, but this is what I came up with: suppose we have an interval i1, and its "small set" is the set of intervals smaller than it. Suppose the smallset of interval i1 contains an interval i2. Here's the algorithm: draw an arrow from i1 to i2 only if i2 does not appear in the smallsets (smallersets) of any of the other intervals in i1's smallset. I did that and it looks amazing:


It's a ladder! There had to be one big long line because we required the natural intervals to be ordered like 12-TET, but the two lines and the triangles and stuff, that's something inherent to the structure of rank-2 musical intervals. And the horizonal pairs are the ones that were switched in Pythagoras relative to Meantone! And the rungs are fairly regular, except they switch direction in the middle and that's why A3 and d6 are incomparable. Because of the direction switch! This graph makes sense of it all. So I think I did my graph transitive reduction correctly! Nice.

Also, you can see that all of the augmented and major intervals are on one side while all the diminished and minor intervals are on th'other. It's a good graph, am I right?

Oh! What do you think it looks like with twice modified intervals included? Are there FOUR rungs maybe?!?! I have to find all the twice modified interval orderings first, but it's going to happen.

Okay! I found them. There are 11 of them, not counting some degenerate orders that are exactly on the transition points like t(P5) = 2^(7/12) or t(P5) = 2^(19/32). It feels a little spammy to post all of the twice-modified interval orderings, but the transition points are 2^(x) for x in:

[(4/7), (19/33), (15/26), (11/19), (18/31), (7/12), (17/29), (10/17), (13/22), (16/27), (19/32), (3/5)]

which are the t(P5)s for EDOs of increasing size that have the 12-TET ordering, just as I predicted. I didn't know how many there would be though! Eleven. Maybe it's a soluble question how many orders you'll have for once-modified, twice-modified, n-th modified intervals. We'll solve it another day.

Now for the Hasse diagram? Now for the Hasse diagram!


Super Kabbalistic. Probably the most surprising thing here is that AA2 can be larger than dd7. That happens in the 11th order of modified intervals, with 2^(19/32) < t(P5) < 2^(3/5). The lowest EDO in which this happens is 37, where

t(dd7) = 2^(18/37) = 1.401028677549888
t(AA2) = 2^(19/37) = 1.4275225283022686
The two are exactly equal in 32-EDO (which is the degenerate order on the low transition point of the range).

I thought this was a really good post at the time, and I still do, but coming back to it after a few months, it needs a closer. Here it comes:

Lots of cool tuning systems have the same order of natural intervals as our beloved 12-TET. Most of them also have cool modified (augmented and diminished) intervals, whereas 12-TET collapses those down to the natural intervals. The once-modified intervals of different tuning systems that respect the 12-TET order of natural intervals, they come in just a few different possible orders - five of them, plus a degenerate order for 12-TET.

Is there a fast way to predict which order of modified intervals a pure-octave syntonic tuning system will have? Sure as shit! Here's what I found: When we look at the frequency ratios assigned by all of our favorite tuning systems to the interval P5, we see immediately that tuning systems with similar t(P5)s generally have the same order of modified intervals. What's more, the modified-interval orders switch from one order to the next as t(P5) increases. To keep the 12-TET order, all of these t(P5)s have to be between 2^(4/7) and 2^(3/5), which was the topic of the previous post. These values are the tuned frequency ratios for the perfect fifth in 7-EDO and 5-EDO, respectively. It turns out that all of the cut-off points at which the modified intervals change from one order to another are also P5s of different EDO tuning systems. Two posts ago, in "EDO Generators", we found out that for all but finitely many cases, EDOs of any number of divisions can be made that respect the 12-TET order of natural intervals. The workable ones begin [5, 7, 12, 17, 19, 22, 26, 27, 29, 31, 32, ....], and the t(P5)s of the first few of these EDOs are precisely where the divisions occur between our five families of modified interval orders.

The normal orders appear on dashes: 
[2^(4/7) - 2^(11/19) -  2^(7/12) - 2^(10/17) - 2^(13/22) - 2^(3/5)]
.
For the sake of rigor, I should probably say something about what happens on the boundary points. Just looking back over this post and not doing any calculations, I can already see a mistake. In one spot I said that 19-EDO has the Pythagorean order and in another spot, I say it has Tetracot order. It's definitely not Pythagorean and I don't know why I ever said that. Oops. 

Even worse, it doesn't have the Tetracot order,  either, not exactly. Tetracot looks like this:

[P1, A1, d2, m2, M2, A2, d3, m3, M3, A3, d4, P4, A4, d5, P5, A5, d6, m6, M6, A6, d7, m7, M7, A7, d8, P8]
.
There are more than 19 intervals there, so 19-EDO can't have a distinguishable order for all of them. In particular, 19-EDO has:
[P1, A1=d2, m2, M2, A2=d3, m3, M3, A3=d4, P4, A4, d5, P5, A5=d6, m6, M6, A6=d7, m7, M7, d8]
. and I just figured out why there are five families of true orders that fully distinguish the once-modified intervals! EDOs with divisions of [5, 7, 12, 17, 19, 22] don't have enough distinct pitches in an octave to separate all the once modified intervals. It's not until 26-EDO that we can fit them all. Every transition point is a degenerate order and the true orders live strictly between the transition points.

When we look at orders of twice-modified intervals, there are now 11 non-degenerate orders instead of five.
[2^(4/7) - 2^(19/33) - 2^(15/26) - 2^(11/19) - 2^(18/31) - 2^(7/12) - 2^(17/29) - 2^(10/17) - 2^(13/22) - 2^(16/27) - 2^(19/32) - 2^(3/5)]
.
These transition points are still t(P5)s of EDOs. And why are there 11 families? Because....wait, shouldn't there also be a transition point for 37-EDO? I might have ... failed to include intervals like AA0 and d-1 when I was doing my numeric code. Oops. Let's fix it!

First, up, 37-EDO collapses AA0=dd6 and dd9=AA3. Also, I think 2^(4/37) and 2^(33/37) correspond to thrice-modified intervals, which is kind of crazy, because the twice-modified intervals didn't all get their own spots.

Next, 39-EDO doesn't seem to collapse any once- or twice-modified intervals. I think the frequency ratios of 2^(1/39) and 2^(28/39) must correspond to thrice modified intervals. Quite interesting. All together, in the range [P1, P8) there are 37 intervals that are natural, once modified, or twice modified. I think I can say that any non-degenerate order that includes twice modified intervals will also have 37 intervals in that 1 octave range. Consider, e.g. if d2 is smaller than P1 and it falls out the bottom. Then d9 becomes smaller than P8 and falls in from the top. It's only when intervals collapse in on each other than the number changes. So says my cursory reasoning. But it's late and I have to take out the bins for the binmen and go to bed. Another time, perhaps?

Next time we'll find out if there are actually 12 orders of twice-modified intervals. That's my guess. The upper range probably looks like [... 2^(19/32) - 2^(22/37) - 2^(3/5)].

Since there are only finitely many EDOs that don't have the 12-tet ordering and they come early, things should get more regular as we get into high degrees of modified intervals. Gosh, I never figured out why there are finitely many exceptions, did I? Another thing to do!

....

One reason that I investigated the things in this post is that I wanted to compose classical counterpoint algorithmically, and I wanted to do it correctly, with musical intervals instead of, like, pretending that sharps and flats are the same thing and then finding semitone separations between notes by subtracting midi numbers. That's bullshit and I'm so much better than that.

But when you see a work of classical music, there usually isn't a big note that says "Oh and by the way, tune your t(d25) = 10/1 or you're dead to me". So we expect that there's a way to compose counterpoint so that the tuning system doesn't matter all that much, or else it would be notated reliably. But if you actually look at different tuning systems, even just pure-octave syntonic tuning system with 12-TET order over natural intervals, one generally doesn't put modified intervals in the same order as another! In principle, two people could play the same song, and one would go low to high and one would go high to low. It's crazy! So I had to figure out what's consistent between tuning systems - what can we rely on to be true for all of them, and then we can compose around those constraints so that our music doesn't flip directions depending on the performer.

That's where we get into partial orders. I'm using partial orders to express the fact that some pairs of intervals can change relative position, from one tuning system to another, and some pairs of intervals can't, e.g. P5 tunes to a frequency ratio larger than both A4 and d5 in all pure-octave syntonic tuning system that respect the 12-TET order over natural intervals. You can always count on that, whether you're composing classically inspired microtonal music in, say, quarter-comma meantone because you're shocked and appalled and confused and embarrassed that no one today can compose as well a bunch of guys who died 250 years ago, even when we have their music to work off of, or whether you're doing some crazy sci-fi shit in 31-EDO because you want something that pushes you out of your comfort zone into new realms of complex beauty. The achievement of this post is that I've shown what interval relationships you can rely on for composing across microtonal tuning systems, whatever your motivations.

I'm not alone in this by the way: most music theory, and in particular the historic rules of counterpoint, is/are phrased in interval space, not pitch space. I'm hoping that if we can rewrite the historic rules to allow for an expanded set of consonant intervals, then we can adapt the old machinery to parse and generate all sorts of music, from Chopin to Bill Evan to Ben Johnston to Philipp Gerschlauer and Sintel and Zheanna Erose and beyond. One day, I'm going to teach a computer to compose in interval space. This post is a small but hopefully important step toward doing that systematically.

Non-EDO generators

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

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

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

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

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

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

.

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

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

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

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

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

if

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

.

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

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

.

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

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

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

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

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

.

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

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

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

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

where

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

and where

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

.

Through substitutions this becomes:

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

.

The right side equals 2 when 

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

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

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

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

We'll need these:

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

.

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

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

where

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

.

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

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

where

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

.

The two frequency ratio expressions are equal 

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

when

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

.

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

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

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

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

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

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

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

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

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

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

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

t((a, b)) = 1

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

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

-

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

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

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

EDO Generators

A rank-2 syntonic tuning system is determined by fixing the frequency ratio values of two linearly independent basis vectors. For almost all tuning systems, one of those basis vectors is the octave, P8, which we fix to a pure frequency ratio of two, t(P8) = 2/1, leaving us only one free parameter. If the second basis intervals of a rank-2 syntonic tuning system with pure octaves is set to a frequency ratio of 1, then an EDO is generated, i.e. we get a tuning system that divides the Octaves into logarithmically Equal Divisions. The most famous of these is 12 tone equal temperament, which can be generated by tempering out the diminished second, d2.

Setting that frequency ratio of the second basis value to 1 will be called "tempering out" throughout this post. We temper out d2 to get 12-TET.

Let's represent intervals in the (A1, d2) basis. This python code snippet might be of some help: it finds the name of a rank-2 interval with integral coefficients, for example, (7, 4) = P5 and (12, 7) = P8.

We can temper out any interval (a, b) besides (0, 0) = P1 to get an EDO tuning system. Oh, and of course you can't use P8 either if you've already set that to 2. And multiples of P8 don't work. Anyway. The number of divisions of the octave will be{edo_divisions = abs(a * 7 - b * 12) / gcd(a, b)}, where abs() is the absolute value function and gcd() is the greatest common divisor. We can substitute (a, b) = (0, 1) = d2 into this, and as expected we find that tempering out d2 produces a 12-EDO. 

Interestingly, multiple intervals can be tempered out to generate EDO tuning systems with the same number of divisions. For example, tempering out any of these intervals

(49, 26) = AAAA27
(37, 19) = AAAA20
(25, 12) = AAAA13
(13, 5) = AAAA6
(-1, 2) = dddd3
(11, 9) = dddd10
(23, 16) = dddd17
(35, 23) = dddd24
(47, 30) = dddd31

will produce a 31-EDO. And maybe there are other intervals with larger coefficients that can do the same. Even more interestingly, they're not all the same EDO. They're all tuning systems that divide the octave into 31 logarithmically equal divisions, so they have the same pitches, but the tuning systems map different intervals to those pitches. For an example, let's look at how tempering out these intervals will map (7, 4) = P5 to the pitch space.

In general, 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 fixed 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)

.

With this, we're ready to calculate the frequency ratio for the perfect fifth (n, m) = P5 = (7, 4) when we temper out different intervals (a, b). I think this is the least messy way to show them:

AAAA27: 14/31
AAAA20: 15/31
AAAA13: 16/31
AAAA6: 17/31
dddd3: 18/31
dddd10: 19/31
dddd17: 20/31
dddd24: 21/31
dddd31: 22/31

.

The first line is to be read like this: tempering out a four times augmented 27th interval AAAA27, i.e. t(AAAA27) = 1, produces a 31-EDO tuning system in which the perfect fifth has a frequency ratio of t(P5) = 2^(14/31). 

Isn't the spread on that table crazy? If you compose a song with a P1 and a P5, the ratio between them could be anywhere from 1.36 to 1.64 depending on the choice of tuning system. A ratio of 1.36 is like a P4 in 12-TET (or should I say, the 12-TET generated by tempering out d2?) and a ratio of 1.64 is like a M6. Four semitones! Holy shit.

When I first learned this, I thought, "Well, dang, I guess you can't compose music in interval space." But I can do anything. Let's take a song and hear what it sounds like in different 31 EDOs.

Here's a monophonic rendition of the folk tune "Down In The Valley" in a format I like to use that's heavily inspired by ABC notation: "G4,q C5,q D5,q | E5,d_h | C5,d_h | E5,q D5,q C5,q | D5,d_h | G4,q B4,q D5,q | F5,d_h | D5,d_h | B4,q C5,q D5,q | C5,d_h | G4,q C5,q D5,q | E5,d_h | C5,d_h | E5,q D5,q C5,q | D5,d_h | G4,q B4,q D5,q | F5,d_h | D5,d_h | B4,q C5,q D5,q | C5,d_h"

Notes consist of a pitch, like G4 or C5, a comma for a separator, and a note length, like q for quarter note or d_h for dotted half note.  Bars are optionally separated by a pipe character |. I fixed C5 as the origin of my pitch space, despite it not being the lowest note in the song, so some of the song's pitches have associated intervals with 0 or negative ordinals, but it's fine:

"G4": "P-2",
"B4": "M0",
"C5": "P1",
"D5": "M2",
"E5": "M3",
"F5": "P4",

.

This mapping gives us a song in interval space: "P-2,q P1,q M2,q | M3,d_h | P1,d_h | M3,q M2,q P1,q | M2,d_h | P-2,q M0,q M2,q | P4,d_h | M2,d_h | M0,q P1,q M2,q | P1,d_h | P-2,q P1,q M2,q | M3,d_h | P1,d_h | M3,q M2,q P1,q | M2,d_h | P-2,q M0,q M2,q | P4,d_h | M2,d_h | M0,q P1,q M2,q | P1,d_h". Want to hear it rendered in the two most wildly differing 31-EDOs?

I thought I did too, but it's pretty bad. Tempering out the low end AAAA27 or the high end dddd31 both make the song fly all over the place. The familiar ordering of intervals from 12-TET is not preserved. Let's look at the table again:

(49, 26) = AAAA27
(37, 19) = AAAA20
(25, 12) = AAAA13
(13, 5) = AAAA6
(-1, 2) = dddd3
(11, 9) = dddd10
(23, 16) = dddd17
(35, 23) = dddd24
(47, 30) = dddd31

See how (-1, 2) = dddd3 has the smallest coefficients and the smallest ordinal in the interval name? That one works fine. Temper out dddd3 and it doesn't sound particularly different from 12-TET. Like I wouldn't have guessed if you'd randomly played it for me that it was in a microtonal tuning.  I think there's some interesting mathematical investigation to be done here. There are some intervals like dddd3 that can be tempered out to produce tuning systems that sound something like 12-TET and there are others that make me regret getting up this morning. Heh heh, no it's not that bad.

Here's d2 (12-TET) in one ear and dddd3 in the other ear. It just has some nice width and warmth.

Here's AAAA27 in one ear and dddd31 in the other. It's something else.

Right now I think I can compose music in interval space rather than pitch space, but I need to find and target a class of related tuning systems that don't get too wibbly wobbly woo on me. But a little wibbly wobbly woo, that I'm okay with. Is there a class of tuning systems that induces the same 1D total ordering on 2D interval space as 12-TET? That's what I'm going to look for next. And they don't have to be EDOs, I just happened to see some EDOs with different P5s and thought it might make a good blog post.

Ooh! I just layered all four tuning systems together and got something approximately the right amount of spicy. Nice.

Huh! I tried some non-EDO tuning systems first (some of the ones named in ejlilley's Tuning.hs and two more that complete the pattern of using 5-limit just intonation values for rank-2 bases), and they all had the same total ordering over pitches as 12-TET, at least for the primitive rank-2 intervals (P1 m2 M2 m3 M3 P4 P5 m6 M6 m7 M7 P8).

Here are the values for the frequencies of the primitive rank-2 intervals above concert A, truncated to integers, for several non-EDO tuning systems. The values of 440 and 880 are omitted from all for brevity: 

[463, 495, 521, 556, 586, 660, 695, 742, 782, 835]: 'P5', (3/2) # Pythagorean
[468, 492, 524, 552, 587, 658, 701, 737, 785, 826]: 'A4', (45/32) # Sixth-comma meantone
[469, 492, 525, 551, 588, 658, 702, 736, 786, 825]: 'm2', (16/15)
[470, 491, 526, 550, 588, 657, 704, 735, 787, 822]: 'M3', (5/4) # Quarter-comma meantone
[470, 492, 526, 550, 588, 658, 703, 736, 786, 823]: 'A6', (7/4) # Septimal
[473, 490, 528, 547, 589, 657, 706, 733, 788, 818]: 'm3', (6/5)  # Third-comma meantone
[478, 488, 531, 543, 590, 655, 712, 728, 792, 809]: 'M2', (10/9)
[482, 486, 534, 538, 591, 654, 718, 724, 795, 801]: 'A5', (3/2) # Tetracot

.

So, that's pretty cool, right? Maybe it's not too hard to compose in interval space after all. Maybe things don't usually jump around too much. Next I'll look into EDOs that preserve the total order of the primitive intervals.

Okay! If you temper out these ones to make EDOs, they keep the same total ordering for primitive rank-2 intervals as 12-TET: [m2, d2, d3, dd2, dd3, dd4, ddd2, ddd3, ddd4, ddd5, ddd6, dddd2, dddd3, dddd4, dddd5, dddd6, dddd7, ddddd2, ddddd3, ddddd4, ddddd5, ddddd6, ddddd7, ddddd8, ddddd9, dddddd10, dddddd2, dddddd3, dddddd4, dddddd5, dddddd6, dddddd7, dddddd8, dddddd9, ddddddd10, ddddddd2, ddddddd3, ddddddd4, ddddddd5, ddddddd6, ddddddd7, ddddddd8, ddddddd9, dddddddd10, dddddddd2, dddddddd3, dddddddd4, dddddddd5, dddddddd6, dddddddd7, dddddddd8, dddddddd9, ddddddddd10, ddddddddd2, ddddddddd3, ddddddddd4, ddddddddd5, ddddddddd6, ddddddddd7, ddddddddd8, ddddddddd9, dddddddddd10, dddddddddd2, dddddddddd3, dddddddddd4, dddddddddd5, dddddddddd6, dddddddddd7, dddddddddd8, dddddddddd9, ddddddddddd10, ddddddddddd3, ddddddddddd4, ddddddddddd5, ddddddddddd6, ddddddddddd7, ddddddddddd8, ddddddddddd9, dddddddddddd10, dddddddddddd3, dddddddddddd4, dddddddddddd5, dddddddddddd6, dddddddddddd7, dddddddddddd8, dddddddddddd9, ddddddddddddd10, ddddddddddddd4, ddddddddddddd5, ddddddddddddd6, ddddddddddddd7, ddddddddddddd8, ddddddddddddd9, dddddddddddddd4, dddddddddddddd5, dddddddddddddd7, dddddddddddddd8]. They're all straight shooters.

And these ones, they have their own orders: [M2, m3, M3, P4, P5, m6, M6, m7, M7, m9, M10, A1, A2, A3, A4, A5, A6, A7, A8, A9, A11, AA1, AA2, AA3, AA4, AA5, AA6, AA7, AA8, AA9, AAA1, AAA2, AAA3, AAA4, AAA5, AAA6, AAA7, AAA8, AAAA1, AAAA13, AAAA2, AAAA20, AAAA27, AAAA3, AAAA4, AAAA5, AAAA6, AAAAA1, AAAAA2, AAAAA3, AAAAA4, AAAAAA1, AAAAAA2, AAAAAA3, AAAAAA4, AAAAAAA1, AAAAAAA2, AAAAAAAA1, AAAAAAAA2, AAAAAAAAA1, AAAAAAAAAA1, d1, d10, d11, d12, d13, d4, d5, d6, d7, d8, d9, dd1, dd10, dd11, dd12, dd5, dd6, dd7, dd8, dd9, ddd1, ddd10, ddd12, ddd7, ddd8, ddd9, dddd1, dddd10, dddd12, dddd17, dddd24, dddd31, dddd8, dddd9, ddddd1, ddddd10, dddddd1, ddddddd1, dddddddd1, ddddddddd1, dddddddddd1]. They're black sheep. Although for a few of them, the problem might just be that tempering out the interval results in an EDO with fewer divisions that 12, so some of the intervals end up having the same pitch, which means there's some ambiguity in the order when my sorting function looks at them. Like tempering out d1 produces a 7-EDO, and 7-EDO can sound totally badass.

Here are some black sheep that produce EDOs with 12 or more divisions: [AA2, AA4, AA5, AA6, AA7, AAA2, AAA3, AAA4, AAA6, AAA7, AAA8, AAAA13, AAAA2, AAAA20, AAAA27, AAAA3, AAAA5, AAAA6, AAAAA2, AAAAA3, AAAAA4, AAAAAA2, AAAAAA3, AAAAAA4, AAAAAAA2, AAAAAAAA2, dd10, dd12, dd5, dd6, dd8, dd9, ddd12, ddd7, ddd8, ddd9, dddd10, dddd12, dddd17, dddd24, dddd31, dddd8, dddd9, ddddd10]. I think they're legitimately unruly.

What EDOs do we get if we just look at the straight shooters above? A good number of them are repeated, like there's a regular series of increasingly diminished intervals that all produce 12-TETS, but if we just look at the shortest interval that tempers out to an n-EDO, then we have:

  5-EDO: m2 = (1, 1)
12-EDO: d2 = (0, 1) 17-EDO: dd3 = (1, 2) 19-EDO: dd2 = (-1, 1) 26-EDO: ddd2 = (-2, 1) 27-EDO: dddd5 = (3, 4) 29-EDO: dddd4 = (1, 3) 31-EDO: dddd3 = (-1, 2) 33-EDO: dddd2 = (-3, 1) 37-EDO: ddddd7 = (5, 6) 39-EDO: ddddd6 = (3, 5) 40-EDO: ddddd2 = (-4, 1) 41-EDO: dddddd5 = (1, 4) 42-EDO: dddddd8 = (6, 7) 43-EDO: dddddd4 = (-1, 3) 45-EDO: dddddd3 = (-3, 2) 46-EDO: dddddd6 = (2, 5) 47-EDO: dddddd2 = (-5, 1) 49-EDO: ddddddd8 = (5, 7) 50-EDO: ddddddd4 = (-2, 3) 52-EDO: ddddddd10 = (8, 9) 53-EDO: ddddddd6 = (1, 5)

, and it keeps going up, but I think 53 is a good stopping point. Who ever needed more than 53 pitches per octave to make music? You probably know of someone if you're interesting in microtonal music, but still. Technically, if humans can just barely on average discriminate pitches that differ by 5 cents, then we could go up to 240-EDO, which has a step size of exactly 5 cents, but I won't.

For the black sheep intervals that produce EDOs with fewer than 12 divisions, I think these are the most likely to make cool music:
1-EDO: P5 = (7, 4) 2-EDO: M3 = (4, 2) 3-EDO: d5 = (6, 4) 3-EDO: m3 = (3, 2) 4-EDO: M10 = (16, 9) 4-EDO: d11 = (16, 10) 4-EDO: m6 = (8, 5) 5-EDO: M7 = (11, 6) 6-EDO: d12 = (18, 11) 7-EDO: d1 = (-1, 0) 8-EDO: d4 = (4, 3) 9-EDO: A2 = (3, 1) 10-EDO: d10 = (14, 9) 11-EDO: d6 = (7, 5)
, although that A2 for generating 9-EDO seems a little sus, since none of the other good intervals were augments.

There are some conspicuous gaps in the straight shooters. Like, examine:
12: d2
17: dd3
19: dd2
26: ddd2
Where are 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, and 25-EDO? Maybe those are unnatural tunings in some sense. Or maybe I need to use weirder intervals, like things that have negative ordinals, e.g. a diminished negative fourth. I don't know! It's fertile ground for inquiry. Edit from the distant future:  A 22-EDO exists that has the same order for the primitive intervals as 12-TET. It's generated by ddd4. The rest are genuine gaps.

In the mean time, I feel confident that I can make good sounding music in [17, 19, 22, 26, 27, 29, 31, 33, 37, 39, 40, 41, 42, 43, 45, 46, 47, 49, 50, 52, 53]-EDO by composing in pitch space and then tempering out the relevant straight-shooter interval. Rousing success! I wonder if they differ in their ordering of the diminished and augmented intervals.

Oh wow, there is a lot of structure in the straight shooters.

These increase by 5 divisions, effectively because they're increasing by 12 and decreasing by 7:
(0, 1) | 12-EDO: d2
(1, 2) | 17-EDO: dd3
(2, 3) | 22-EDO: ddd4
(3, 4) | 27-EDO: dddd5
(4, 5) | 32-EDO: dddd6
(5, 6) | 37-EDO: ddddd7
(6, 7) | 42-EDO: dddddd8
(7, 8) | 47-EDO: dddddd9
(8, 9) | 52-EDO: ddddddd10
.
These increase by 0 divisions:
(0, 1) | 12-EDO:  d2
(0, 2) | 12-EDO:  ddd3
(0, 3) | 12-EDO:  ddddd4
(0, 4) | 12-EDO:  ddddddd5
(0, 5) | 12-EDO:  dddddddd6
(0, 6) | 12-EDO:  dddddddddd7
(0, 7) | 12-EDO:  dddddddddddd8
(0, 8) | 12-EDO:  ddddddddddddd9
.
These increase by 0 divisions:
(1, 1) | 5-EDO: m2
(2, 2) | 5-EDO:  d3
(3, 3) | 5-EDO:  dd4
(4, 4) | 5-EDO:  ddd5
(5, 5) | 5-EDO:  ddd6
(6, 6) | 5-EDO:  dddd7
(7, 7) | 5-EDO:  ddddd8
(8, 8) | 5-EDO:  ddddd9
(9, 9) | 5-EDO:  dddddd10
.
These increase by 12 divisions:
(-1, 1) | 19-EDO:  dd2
(-1, 2) | 31-EDO:  dddd3
(-1, 3) | 43-EDO:  dddddd4
(-1, 4) | 55-EDO:  dddddddd5
(-1, 5) | 67-EDO:  ddddddddd6
(-1, 6) | 79-EDO:  ddddddddddd7
(-1, 7) | 91-EDO:  ddddddddddddd8
.
These increase by 12 divisions:
(-7, 1) | 61-EDO:  dddddddd2
(-7, 2) | 73-EDO:  dddddddddd3
(-7, 3) | 85-EDO:  dddddddddddd4
(-7, 4) | 97-EDO:  dddddddddddddd5
.
These increase by 12 divisions:
(1, 1) | 5-EDO:  m2
(1, 2) | 17-EDO:  dd3
(1, 3) | 29-EDO:  dddd4
(1, 4) | 41-EDO:  dddddd5
(1, 5) | 53-EDO:  ddddddd6
(1, 6) | 65-EDO:  ddddddddd7
(1, 7) | 77-EDO:  ddddddddddd8
(1, 8) | 89-EDO:  dddddddddddd9
.
These increase by 7 divisions:
(0, 1) | 12-EDO:  d2
(-1, 1) | 19-EDO:  dd2
(-2, 1) | 26-EDO:  ddd2
(-3, 1) | 33-EDO:  dddd2
(-4, 1) | 40-EDO:  ddddd2
(-5, 1) | 47-EDO:  dddddd2
(-6, 1) | 54-EDO:  ddddddd2
(-7, 1) | 61-EDO:  dddddddd2
(-8, 1) | 68-EDO:  ddddddddd2
(-9, 1) | 75-EDO:  dddddddddd2
.
These decrease by 7 divisions: 
(1, 7) | 77-EDO:  ddddddddddd8
(2, 7) | 70-EDO:  dddddddddd8
(3, 7) | 63-EDO:  ddddddddd8
(4, 7) | 56-EDO:  dddddddd8
(5, 7) | 49-EDO:  ddddddd8
(6, 7) | 42-EDO:  dddddd8
.
These would decrease by 7 divisions, except the components of (3, 9) have a common factor, so instead of an 87-EDO, they give us 87/3 = 29-EDO:
(2, 9) | 94-EDO:  ddddddddddddd10
(3, 9) | 29-EDO:  dddddddddddd10
(4, 9) | 80-EDO:  ddddddddddd10
(5, 9) | 73-EDO:  dddddddddd10
.
And so forth. I still don't know what makes an interval a straight shooter or a black sheep, except maybe d2 >= A1 to be a straight shooter. Let's look at the black sheep intervals that were diminished and gave EDOs of 12 divisions or more:
(5, 4) | 13-EDO:  dd5
(6, 5) | 18-EDO:  dd6
(7, 6) | 23-EDO:  ddd7
(8, 7) | 28-EDO:  dddd8
(9, 7) | 21-EDO:  ddd8
(9, 8) | 33-EDO:  dddd9
(10, 7) | 14-EDO:  dd8
(10, 8) | 13-EDO:  ddd9
(10, 9) | 38-EDO:  ddddd10
(11, 8) | 19-EDO:  dd9
(11, 9) | 31-EDO:  dddd10
(13, 9) | 17-EDO:  dd10
(15, 11) | 27-EDO:  dddd12
(16, 11) | 20-EDO:  ddd12
(17, 11) | 13-EDO:  dd12
(23, 16) | 31-EDO:  dddd17
(35, 23) | 31-EDO:  dddd24
(47, 30) | 31-EDO:  dddd31
Hey, hey! All of the A1s > d2s. ... And it works for all the other black sheep too, except for these guys:
(-1, 0) | 7-EDO:  d1
(-2, 0) | 7-EDO:  dd1
(-3, 0) | 7-EDO:  ddd1
(-4, 0) | 7-EDO:  dddd1
(-5, 0) | 7-EDO:  ddddd1
(-6, 0) | 7-EDO:  dddddd1
(-7, 0) | 7-EDO:  ddddddd1
(-8, 0) | 7-EDO:  dddddddd1
(-9, 0) | 7-EDO:  ddddddddd1
(-10, 0) | 7-EDO:  dddddddddd1
.
I hereby pronounce them "secretly good". And now we can make that badass 7-EDO song from the link! It was a cover of the theme song from House M.D, which is "Teardrop" by Massive Attack. Did you listen to it? Yeah, that's okay, you don't have to like it.

Things get ever so slightly more complicated if you allow negative b. If the tempered interval is (a, b) and b is negative, then it's always a black sheep unless a = b, in which case we get a 5-EDO:

(-1, -1) | 5-EDO:  M0
(-2, -2) | 5-EDO:  A-1
(-3, -3) | 5-EDO:  AA-2
(-4, -4) | 5-EDO:  AAA-3
(-5, -5) | 5-EDO:  AAA-4
(-6, -6) | 5-EDO:  AAAA-5
(-7, -7) | 5-EDO:  AAAAA-6
(-8, -8) | 5-EDO:  AAAAA-7
(-9, -9) | 5-EDO:  AAAAAA-8
(-10, -10) | 5-EDO:  AAAAAAA-9
.

The sequence [5, 7, 12, 17, 19, 22, 26, 27, 29, 31, 32, 33, 37, 39, 40, 41, 42, 43, 45, 46, 47, 49, ...] isn't in OEIS. Lemme double check its members before I give it a name that it shall carry for the rest of human history....

Here's the full sequence up to 240: [5, 7, 12, 17, 19, 22, 26, 27, 29, 31, 32, 33, 37, 39, 40, 41, 42, 43, 45, 46, 47, 49, 50, 52, 53, 54, 55, 56, 57, 59, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, ...]. 

I hereby name this.... the EDO sequence. There appear to be finitely many missed EDOs. Up to 10,000-EDO, the sequence is only missing [1, 2, 3, 4, 6, 8, 9, 10, 11, 13, 14, 15, 16, 18, 20, 21, 23, 24, 25, 28, 30, 34, 35, 36, 38, 44, 48, 51, 58, 60, 66, 78, 84, 108, 156] among the positive integers. This sequence is also not on OEIS. Chumps.

The missed EDOs contain 24-EDO (so there isn't an interval you can temper out to get quarter tone harmony that respects the order of primitive intervals in 12-TET) and a few other EDOs the number of octave divisions for which are small integer multiples of 12: 24, 36, 48, 60. The first integer multiple of 12 we get after 12-TET is 72-TET, which breaks each 12-TET step into 6 logarithmically equal pieces. So, uh, maybe quarter tone harmony should be analyzed as a subset of 72-EDO? That doesn't sound right. I'll have to make a post about quarter tone harmony where I figure out what's going on there.

Want a treat for getting to the end? The previous code snippet found names for intervals in the (A1, d2) basis. This one does the opposite and finds intervals in the (A1, d2) basis if you supply the names.