Detempering

Tempering means applying a tuning system (to a set of intervals) which maps some intervals to a frequency ratio of 1/1. This hides the effect of those intervals. For example, if Ac1 is tempered out, then you'll hear the same frequency ratio for any tuned intervals expressible as

    n * Ac1

for integers {n}. So in tuning, we've lost information.

Given a piece in a tempered tuning, what can we do to try reconstructing plausible intervallic muisc?

We could off course just associate every tempered frequency ratio with a single interval in our detempering reconstruction, e.g. assume every 1/1 was a P1 before we threw out the information. This is roughly the state of the art in the microtonal community.

That's weaksauce, but it's an okay baseline. We know that we can do at least as well as mapping, e.g. steps of 12 edo to a ch,romatic scale,

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] ->

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

What can we do that's better than that?

Suppose for a toy example that every step of 12-EDO can map to a small finite set of intervals, like the chromatic values above plus or minus an Ac1 and plus or minus a d2. It's up to you if you want to allow both commas to be applied at once, or to apply them multiple times. But we want something finite.

We're free to associate those altered chromatic intervals with the same 12-EDO step because 12-EDO tempers out Ac1 and d2. If you're working with a different temperament, you'll similarly continue to want to used its tempered commas to generate intervallic detempering options for every tuned frequency ratio in your song, but it might not be Ac1 and d2, and they might not be altering a chromatic scale. But let's keep working with 12-TET for simplicity and concreteness and applicability to the canon of modern western music.

For a given song, we'd like to choose among these intervallic detempering options for every note so as to get 

    1) melodic intervals that are fluid

    2) harmonic intervals that are consonant

and if those two criteria leave some decisions un-made, then we'd like to also have

    3) low complexity just tunings of individual notes

Those are currently three vague optimization criteria. Let's make them a little more concrete.

For a first approximation, we'll suppose that melodic fluidity and harmonic consonance are the same - some intervals are better at both functions and some intervals are worse at both functions.

Suppose we bless a set of intervals as perfectly consonant+fluid, perhaps

[P1, P4, P5]

[Grm2, m2, M2, AcM2]

[Grm3, m3, M3, AcM3]

[Grm6, m6, M6, AcM6]

[Grm7, m7, M7, AcM7]

And maybe also the octave displacements of those shall be blessed.

Next we judge all other intervals as being less consonant+fluid based on how many commas we have to traverse to reach a blessed one. We'll need to define a set of traversing commas for this - which steps are we making and counting to get from A to B. Let's work in rank-3 interval space / 5-limit just intonation and use (Ac1, A1, d2) as our traversing commas. This will let us move between any pair of intervals since this basis is unimodular in the rank 3 prime harmonic basis, (P8, P12, M17).

For a given interval B, you

    0) find the octave reduction of B, 

    1) take the difference of reduced-B with each blessed interval, 

    2) express the differences in the (Ac1, A1, d2) basis, 

    3) take the sum of the absolute values of the components of each difference interval

    4) take the minimum value of those sums as the score of dissonance. A larger score means the original interval was separated from the nearest blessed interval by more commas, and therefore was itself more dissonant.

Here's what that looks like for some rank-9 intervals:

1 : A1 # 25/24

1 : A4 # 25/18

1 : Ac1 # 81/80

1 : Acd4 # 162/125

1 : Acm2 # 27/25

1 : As1 # 33/32

1 : As4 # 11/8

1 : AsGrm2 # 88/81

1 : AsGrm3 # 11/9

1 : AsGrm6 # 44/27

1 : AsGrm7 # 11/6

1 : Asm2 # 11/10

1 : De5 # 16/11

1 : DeAcM2 # 12/11

1 : DeAcM3 # 27/22

1 : DeAcM6 # 18/11

1 : DeAcM7 # 81/44

1 : DeM7 # 20/11

1 : Dem7 # 96/55

1 : Gr5 # 40/27

1 : GrA1 # 250/243

1 : Pr1 # 65/64

1 : PrGrm7 # 65/36

1 : Prm2 # 13/12

1 : Prm3 # 39/32

1 : Prm6 # 13/8

1 : Re5 # 96/65

1 : ReAcM2 # 72/65

1 : ReM3 # 16/13

1 : ReM6 # 64/39

1 : ReM7 # 24/13

1 : Rsm2 # 512/475

1 : Sb5 # 35/24

1 : SbAcM2 # 35/32

1 : Sbm2 # 28/27

1 : Sbm3 # 7/6

1 : Sbm7 # 7/4

1 : Sp1 # 36/35

1 : SpM2 # 8/7

1 : SpM3 # 9/7

1 : d4 # 32/25

1 : d5 # 36/25

1 : d5 # 36/25

2 : AcA1 # 135/128

2 : AsGr1 # 55/54

2 : AsGrd7 # 44/25

2 : DeA1 # 100/99

2 : DeAc5 # 81/55

2 : DeSbAcM3 # 105/88

2 : DeSbm7 # 56/33

2 : ExA1 # 17/16

2 : FaA1 # 2375/2304

2 : Grd4 # 512/405

2 : Grd5 # 64/45

2 : PrDe5 # 65/44

2 : PrDem3 # 13/11

2 : PrDem7 # 39/22

2 : PrGrd7 # 26/15

2 : PrSp1 # 117/112

2 : PrSpm2 # 39/35

2 : Prd2 # 26/25

2 : ReA1 # 40/39

2 : ReAs1 # 66/65

2 : ReAsM2 # 44/39

2 : ReAsM3 # 33/26

2 : ReSb5 # 56/39

2 : ReSbAcM2 # 14/13

2 : ReSbM7 # 70/39

2 : SbAcm2 # 21/20

2 : Sbd4 # 56/45

2 : Sbd5 # 7/5

2 : Sbd7 # 42/25

2 : SpA1 # 15/14

2 : SpGr1 # 64/63

2 : Spd4 # 1152/875

3 : AcAcA1 # 2187/2048

3 : AcAcA4 # 729/512

3 : AsGrd5 # 22/15

3 : AsSbGrd7 # 77/45

3 : AsSpGr1 # 22/21

3 : AsSpGr1 # 22/21

3 : DeAcA1 # 45/44

3 : DeDeAcAA1 # 125/121

3 : DeSbAc5 # 63/44

3 : DeSpA1 # 80/77

3 : GrGrd5 # 1024/729

3 : PrDeSp1 # 78/77

3 : PrDed5 # 78/55

3 : PrGrd5 # 13/9

3 : PrPrd4 # 169/128

3 : PrSbGrd7 # 91/54

3 : PrSbd5 # 91/64

3 : PrSpGr1 # 65/63

3 : ReAcA1 # 27/26

3 : ReAsSb5 # 77/52

3 : ReDeAcAA1 # 150/143

3 : SbSbd7 # 49/30

3 : SpAcA1 # 243/224

3 : SpSpGr1 # 256/245

4 : AsAsGrd1 # 121/120

4 : AsSbGrd5 # 77/54

4 : AsSpGrd1 # 176/175

4 : DeSpAcA1 # 81/77

4 : PrAsGrd4 # 143/108

4 : PrDeSbd5 # 91/66

4 : PrDeSbd7 # 91/55

4 : ReAsAsGr1 # 121/117

4 : ReDeAcA1 # 144/143

4 : ReDeAcA4 # 192/143

4 : ReReAsA1 # 176/169

4 : ReReSbAcAA1 # 175/169

4 : ReSbAcA1 # 105/104

5 : DeDeAcAcA1 # 243/242

5 : PrAsSpGrd1 # 143/140

5 : PrPrSpGrd1 # 169/168

This looks really good to me - nothing is miscategorized. And the score is basically the number of adjectives in from of a 3-limit or 5-limit natural interval. Easy. Unfortunately, the categories aren't very granular, e.g. lots of things are 1 step of dissonance away from blessed. So how do we decide among them? Maybe that's where our notion of frequency ratio complexity comes into play.

For our measure of frequency ratio simplicity, I'm a little torn: it's dirt simple to only use numerator magnitude, but this neglects factor structure: a 3-limit Pythagorean Major Third justly tuned to 81/64 is a much more harmonically basic ratio than, e.g. a 13-limit justly tuned Recessed Major Third at 16/13. We could simply ignore the contribution of factors 2 and 3, but then all Pythagorean ratios would be equally consonant, which isn't right.

The first frequency ratio norm I've found that I like somewhat is this:

    norm = sum([abs(coordinate) * (primes[index] ** 3) for index, coordinate in enumerate(harmonic_coordinates)])

Here's how the function works: for a given ratio, find its prime factorization, and represent all the exponents for primes up to some limit as a vector. Here we have a 9 component vector representing exponents of prime factors up to 23, since 23 is the 9th prime: 

    81/80 :: [-4, 4, -1, 0, 0, 0, 0, 0, 0]

The norm for this ratio takes the absolute value of each vector component and multiplies it by the cube of the corresponding prime, then sums all those products:

    (4 * 2^3) + (4 * 3^3) + (1 * 5^3) = 265

Here are a few frequency ratios sorted by increasing norm value to give you an idea of how this norm behaves:

    [1/1, 2/1, 3/2, 4/3, 9/8, 81/64, 16/15, 10/9, 256/243, 81/80, 7/4, 11/4, 11/8, 11/10, 16/13, 13/12, 14/13, 17/16, 57/56]

I said we were working in 5-limit just intonation, so most of these ratios wouldn't show up, but I want to the norm to be well behaved at higher prime limits. If I write a detempering algorithm that works up to 23-limit, I'll use these as my traversing commas:

    [Ac1, A1, d2, Sp1, As1, Pr1, Ex1, Rs1, Nb1][81/80, 25/24, 128/125, 36/35, 33/32, 65/64, 51/50, 96/95, 46/45]

The fractionc complexity norm above does a good job of penalizing higher primes and letting Pythagorean ratios play first, or at least letting them play fairly soon. I like septimal ratios almost as much as Pythagorean ones, and would prefer it if 7/4 wasn't deemed less consonant than 81/80, but this is a good start. I guess I could just put some intervals with septimal just tuning into the blessed set if I wanted them to show up more.

Here are a few intervals that I already had defined in code sorted by the norm of their frequency ratios:

[P1, P8, P5, P4, AcM2, Grm7, AcM6, Grm3, M3, m6, M6, AcM3, m3, Grm6, M7, m7, m2, M2, AcM7, Grm2, Grd5, Gr5, AcAcA4, GrGrd5, AcA1, Ac1, AcAcA1, d4, A1, Grd4, A4, d5, Acm2, Sbm7, SpM2, Sbm3, SpM3, Sbm2, SpGr1, Sbd5, Acd4, SpA1, SbAcM2, SbAcm2, GrA1, SpAcA1, Sb5, Sp1, Sbd4, Sbd7, Spd4, SbSbd7, SpSpGr1, As4, De5, AsGrm7, DeAcM2, AsGrm3, DeAcM6, As1, DeAcM3, AsGrm6, DeAcM7, AsGrm2, Asm2, DeM7, AsGrd5, Dem7, DeAcA1, AsGr1, DeAc5, AsGrd7, DeA1, AsSpGr1, AsSpGr1, DeSbm7, DeSbAc5, AsSbGrd5, DeSpAcA1, DeSpA1, DeSbAcM3, AsSbGrd7, AsSpGrd1, Prm6, ReM3, Prm2, ReM7, PrGrd5, Prm3, ReM6, ReAcA1, PrGrd7, Pr1, ReA1, Re5, PrGrm7, ReAcM2, Prd2, ReSbAcM2, PrSbd5, ReSb5, PrSp1, PrSbGrd7, PrSpm2, ReSbM7, ReSbAcA1, PrSpGr1, DeDeAcAcA1, AsAsGrd1, DeDeAcAA1, PrDem3, PrDem7, ReAsM3, ReAsM2, ReDeAcA4, ReDeAcA1, PrAsGrd4, PrDe5, PrDed5, ReAs1, ReDeAcAA1, ReAsSb5, PrDeSbd5, PrDeSp1, PrDeSbd7, PrAsSpGrd1, PrPrd4, PrPrSpGrd1, ReAsAsGr1, ExA1, ReReSbAcAA1, ReReAsA1, Rsm2, FaA1]

It's kind of weird that an ascendant sub grave diminished unison, AsSbGrd5, is more complex than a prominent minor second, Prm2, but that's on me for definine a bad norm, I guess. But those are going to be in difference dissonance categories, and then the frequency ratio things disambiguates within the category, yeah? I could probably combine them numerically even.... Or continue thinking about detempering.

Wait, no, I've got it! I want the dissonance categories to remain, and the frequency ratios to disambiguate within them. And the dissonacne categories are integers. So I'll map the frequency ratio norm to the range [0, 1) and add that to the dissonance category. That way there's (probably) a total order over intervals and their just tunings, but also nothing gets too far away from its dissonance category. So we need a function that takes [0, inf) to [0, 1), like

f(x) = x / (1 + x)

f(x) = 1 - e^(-x)

f(x) = tanh(x)

f(x) = 2/π * arctan(x)

I tried the first function. It works okay. I notice that since I didn't inclode tritones in the blessed set (intentionally) and since Pythagorean tritones 

AcAcA4 # 729/512

GrGrd5 # 1024/729

have large numerators and lots of factors and they're quite a few commas away from natural intervals like P4 and P5, they get quite high dissonance ratings, whereas the 5-limti A4 and d5 do not. I'm not sure if this is a bug, but I think so. I remember I once listened to tons of different intonations of diminished chords and I thought a pythagorean diminished triad

    [P1, Grm3, GrGrd5]

was particularly beautiful. So the fact that none of my methods like GrGrd5 is a bit of a flaw.

Anyway, regardless of their quality, we now have concrete notions of consonance+fluidity and frequency ratio simplicity.

For a melody in 12-TET, we have oh, 5 or 9 or however many interval options per tempered frequency ratio, and we want to make interval selections for all of our notes to minimize melodic disfluidity/dissonance, and if multiple choices of intervals would leave us with same amount of disfluidity, then we want to minimize the frequency ratio complexity of the just tunings of individual notes.

This is almost solvable, but still a little ill-posed. Having a finite search space helps a lot. How about this: given two interval sequences with equal melodic disfluidity, sum the frequency ratio complexities for the just tunings of all the intervals in each detempering / melodic interval reconstruction. I think this probably won't work well: 2/1 has a normed value of 8, while 16/13 has a norm of 2229. These are really different magnitudes, so the sum of ratio complexities for a detempered melodic line is going to be dominanted by single notes. Maybe it would work, but it seems unlikely. I guess I could take a logarithm of the norm to make things more similarly sized. I'll try it both ways and see what gives better results.

That's a partial solution to detempering, yeah? You could code this up and it would find you an intervallic melody from a 12-TET melody (or 19-TET or 53-TET or meantone or whatever, with a litle tweaking).

That's very exciting to me! It's a big conceptual improvement over mapping 1 ratio to 1 interval. Maybe it won't work that well, but it's got moving parts that can be adjusted until it does.

Let's think about polyphonic music next.

Suppose you have two voices. I care more about harmonic consonance than melodic fluidity, so at every moment, we're going to have pure harmony, and if there are some wonky melodic steps to get there, that's fine.

I've been thinking that my notion of favoring a low frequency ratio complexity in the just tunings of notes over a reference pitch will tend to limit comma drift, but comma drift is beautiful and not something we should limit. We should drift all over frequency space, wherever harmony and fluidity take us, regardless of our starting pitches.

...

I think for a given passage in a song, you're going to have one melody that's most important, and it's going to have the most fluid melodic intervals, and other notes of other voices will adapt around it to make good harmony, even if this makes their melodies less fluid. Maybe everyone can move fluidly and maintain harmony, but I doubt it, and if that's the case, then one star voice at a time will maintain the greatest fluidity.

...

Ornaments Over Major Third

In my post on playing jazz piano from a lead sheet, I shared some melodic substitions rules that I learned from Shan Verma. If you have a melodic passage outlining a major third or minor third, up or down, Shan has some ornaments you can put there to add some movement and variety. His riffs were called triplet major (up/down), triplet minor (up/down), chromatic major (up/down), and standard minor (up/down). Now, I was a little bothered that I didn't know a Verma riff called standard major up or down. If he has one, it's not available in his free materials. Maybe if you pay for his courses. There also isn't a free chromatic minor up or down, but that didn't bother me as much. I want to know the standard stuff first.

So I made up some more riffs for major thirds. Suppose we're in 4/4 time and we go from C for two beats, up a major third to E for some amount of time, let's say also two beats. We'll replace the C with four eighth note and keep E with the same duration, giving us a new rhythm of [e e e e h]. Here are some pitch options and what I call the riffs: 

[C B C D E] # standard major

[C D B C E] # enclosed major

[C D E Eb E] # neighbor major

I like all of these. What's more, if you play them in reverse, going from E down to C, I still like them, and continue to think the names are appropiate.

To put these and the other Verma riffs into code, I wrote some functions. One of them does diatonic offsets, i.e. given a pitch and a scale, it takes you up or down the scale by some number of notes. If the given note isn't in the scale, the first offset gets you back onto the scale on the nearest note in the direction  you want to go (i.e. the nearest note changes depending on if the offset supplied to the function is positive or negative). I also wrote a function that finds chromatic offsets, which mostly just feeds a chromatic scale into the diatonic offset function.

With these functions, we can define the riffs relative to the start note in terms of scalar motion and chromatic motion. This is kind of cool because the riff can adapt depending on where you are in the scale: it doesn't have to have a fixed intervallic structure, though it also could. Like, if you're doing a riff over an ascending minor third in C major, the diatonic middle note could be a major second or a minor second up from the starting note.

[D, E, F] : [M2, m2]

[A, B, C] : [M2, m2]

[E, F, G] : [m2, M2]

[B, C, D] : [m2, M2]

And things get even crazier if your scales are microtonal.

In the major riffs I shared in terms of pitches, the standard major, the enclosed major, and the neighbor major, most of the pitches could be thought of as diatonic in C: neighbor major has a chromatic note, but the rest could come from a C major scale. But some of the B notes below C, maybe I should think of those as a chroamtic offset below the starting pitch. This is the difference between a standard major triad riff up on G in the key of C major looking like:

     [G F G A B] or [G F# G A B]

I intend to try interpreting the B notes in both Standard Major and Enclosed Major as diatonic or chromatic offsets and see which one I like better.

...

I came up with some minor riffs:

[A, G#, A, B, C] # low neighbor minor

[A, B, C, D, C] # high neighbor minor

[A, B, G, A, C] # low enclosure minor

[A, B, D, B, C] # high enclosure minor

[A, B, C, B, C] # trill minor

I think the first three of these continue to sound very good in reverse, and the last two also sound okay. I'm going to code them all up.

I should probably add a few more figures with triplets too.

My plan is that I'll 

    1) generate a diatonic skeleton for a melody or bass line in terms of motions by 2nds and 3rds.

    2) generate whichever of those I didn't in step 1, favoring contrary motion

    3) hopefully find notes for two inner voices that fit with a chord

    4) take turns ornamenting the melody or an inner voice with riffs from Verma and myself, hopefully respecting most species counterpoint rules, but I've made very boring music in the past by respecting all of them, so maybe I'll allow some violations. Generate a few and score them by their number of violations of soft rules or something. I don't know.

I don't know how to get interesting rhythmic variation.

I have an idea of representing a whole piece of music in terms of determinstic transformations, randomly selected. We'll see how far that gets.

...

Maybe I should be calling these embellishments or diminutions or variations instead of ornaments. I'm mostly calling them riffs though. It's fine.

...

Okay! I have four part harmony. That's totally trivial for me to generate. Chord, Chord, Chord, infinitely, voiced in SATB.

Then I can add one step of diatonic motion in half notes within that chord's measure for the upper voices and probably still satisfy counterpoint rules. Maybe all four voices.

Then I can embellish one upper voice at a time, usually the soprano. When I embellish another voice, it will be a response that's related to a previous soprano line by some kind of transformation - perhaps a new theme generated in contrary motion, perhaps an inversion of reversal or transposition or something.

The lower voices will usually be playing half notes at this point. Which is too boring. In the past, I have sometimes satisfied myself with the inner voices playing whole notes while an interesting melody and bassline move in contrary motion, but I want to figure out how to add some rhythm to inner lines, so let's try that now.

Suppose I put a generative distribution over beats and smaller subdivisions of each measure. It might look like "Note onsets are likely on [1, and_of_3, 4]. Somewhat likely on [2, a_of_4]". Every voice has two half note pitches per measure (generated by diatonic motion from the original SATB chord voicing for the measure and respecting species counterpoint rules), and they can associate these two pitches with the set of note onsets times produced by sampling the distribution. And then, uh, for note durations, you just run up to the next note onset, unless that would require a weird note length, and then a rest fills the gap.

So if the Alto's diatonic steps say to play G and then A, then the rhythm might go, 

    [G3,q G3,dq A3,e R,e R,s A3,s]

where I'm using a comma to combine a pitch and its note length (or a rest, R, and it's note length).

Once that's done, maybe we can go back and add passing notes or replace the A3 at the end with a chromatic approach to a note in the next measure of something.

...

I'm suddenly realizing that this post in called "ornaments over major third" but I'm now so far off tangest as to be outlining a whole generative music progam. But no one reads my blog, so I'll post what I want.

...

Quartertone Harmony Over Maqamat

I was curious which arabic maqamat had some strong diatonic tetrads from the set in my recent Quartertone Harmony Chords post. I checked if for tetrads on (^1, ^2, ^5) and (^1, ^4, ^5) and a few others. From that, I think these maqamat lend themselves best to harmonizing in the style of Curt from Quartertone Harmony:

     'Iraq [0, 3, 7, 10, 13, 17, 21]

    Dalanshin (descends) [0, 4, 7, 10, 14, 18, 21]

    Husayni Ushayran [0, 3, 6, 10, 13, 16, 20]

    Jiharkah [0, 3, 7, 11, 14, 17, 21]

    Jiharkah_maqamworld [0, 3, 7, 11, 14, 17, 21]

    Nairuz [0, 4, 7, 10, 14, 17, 20]

    Rast (Upper Rast ending) [0, 4, 7, 10, 14, 18, 21]

    Sikah [0, 3, 7, 11, 14, 17, 21]

    Yakah [0, 4, 7, 10, 14, 17, 20]

If we just look at which maqamat have strong triads, then these maqamat have available diatonic chords on ^1, ^2, ^4, and ^5.

Lami [0, 2, 6, 10, 12, 16, 20]

Kurd [0, 2, 6, 10, 14, 16, 20]

Hijaz (Nahawand Ending) [0, 2, 8, 10, 14, 16, 20]

Husayni Ushayran [0, 3, 6, 10, 13, 16, 20]

Bayati (Nahawand Ending) [0, 3, 6, 10, 14, 16, 20]

Bayati (Rast Ending) [0, 3, 6, 10, 14, 17, 20]

'Iraq [0, 3, 7, 10, 13, 17, 21]

Jiharkah [0, 3, 7, 11, 14, 17, 21]

Sikah [0, 3, 7, 11, 14, 17, 21]

Nahawand (Kurd Ending) [0, 4, 6, 10, 14, 16, 20]

Nahawand (Hijaz Ending) [0, 4, 6, 10, 14, 16, 22]

Nawa Athar [0, 4, 6, 10, 14, 16, 22]

'Ushaq Masri [0, 4, 6, 10, 14, 17, 20]

Nikriz (descends) [0, 4, 6, 12, 14, 18, 20]

Suznak [0, 4, 7, 10, 14, 16, 22]

Nairuz [0, 4, 7, 10, 14, 17, 20]

Yakah [0, 4, 7, 10, 14, 17, 20]

Rast (Nahawand ending) [0, 4, 7, 10, 14, 18, 20]

Suzdalara (descends) [0, 4, 7, 10, 14, 18, 20]

Dalanshin (descends) [0, 4, 7, 10, 14, 18, 21]

Rast (Upper Rast ending) [0, 4, 7, 10, 14, 18, 21]

Mahur [0, 4, 7, 10, 14, 18, 22]

Shawq Afza [0, 4, 8, 10, 14, 16, 22]

'Ajam (Nahawand Ending) [0, 4, 8, 10, 14, 18, 20]

Jiharkah_wikipedia [0, 4, 8, 10, 14, 18, 21]

Jiharkah_maqamworld [0, 3, 7, 11, 14, 17, 21]

'Ajam (Upper Ajam Ending) [0, 4, 8, 10, 14, 18, 22]

So between triads and tetrads, we've got tons of options for harmonizing maqamat (in 24-EDO).

In the post on Quartertone Harmony Chords, the chords were all 24-EDO mistunings of just intonation chords. I wonder the just intonation forms of these 24-EDO diatonic maqamat chords have enough overlap that we can synthesize just intonation forms of the maqamat.

To start, I looked even more restrictively to see which maqamat had Curt-approved triad chords on every scale degree. There were quite a few:

Lami [0, 2, 6, 10, 12, 16, 20]

Kurd [0, 2, 6, 10, 14, 16, 20]

Husayni Ushayran [0, 3, 6, 10, 13, 16, 20]

Bayati (Nahawand Ending) [0, 3, 6, 10, 14, 16, 20]

Bayati (Rast Ending) [0, 3, 6, 10, 14, 17, 20]

'Iraq [0, 3, 7, 10, 13, 17, 21]

Sikah [0, 3, 7, 11, 14, 17, 21]

Nahawand (Kurd Ending) [0, 4, 6, 10, 14, 16, 20]

'Ushaq Masri [0, 4, 6, 10, 14, 17, 20]

Nairuz [0, 4, 7, 10, 14, 17, 20]

Yakah [0, 4, 7, 10, 14, 17, 20]

Rast (Nahawand ending) [0, 4, 7, 10, 14, 18, 20]

Suzdalara (descends) [0, 4, 7, 10, 14, 18, 20]

Dalanshin (descends) [0, 4, 7, 10, 14, 18, 21]

Rast (Upper Rast ending) [0, 4, 7, 10, 14, 18, 21]

'Ajam (Nahawand Ending) [0, 4, 8, 10, 14, 18, 20]

Jiharkah_wikipedia [0, 4, 8, 10, 14, 18, 21]

Jiharkah_maqamworld [0, 3, 7, 11, 14, 17, 21]

'Ajam (Upper Ajam Ending) [0, 4, 8, 10, 14, 18, 22]

A few of those are purely tonal. Here are the ones with odd steps:

Husayni Ushayran [0, 3, 6, 10, 13, 16, 20]

Bayati (Nahawand Ending) [0, 3, 6, 10, 14, 16, 20]

Bayati (Rast Ending) [0, 3, 6, 10, 14, 17, 20]

'Iraq [0, 3, 7, 10, 13, 17, 21]

Sikah [0, 3, 7, 11, 14, 17, 21]

'Ushaq Masri [0, 4, 6, 10, 14, 17, 20]

Nairuz [0, 4, 7, 10, 14, 17, 20]

Yakah [0, 4, 7, 10, 14, 17, 20]

Rast (Nahawand ending) [0, 4, 7, 10, 14, 18, 20]

Suzdalara (descends) [0, 4, 7, 10, 14, 18, 20]

Dalanshin (descends) [0, 4, 7, 10, 14, 18, 21]

Rast (Upper Rast ending) [0, 4, 7, 10, 14, 18, 21]

Jiharkah_wikipedia [0, 4, 8, 10, 14, 18, 21]

Jiharkah_maqamworld [0, 3, 7, 11, 14, 17, 21]

I'll probably go through them one by one by one offscreen trying to figure something out by hand. Mmmm, I hope one of them has an octave reduced 11th or 13th harmonic in one of its rotations. That would be cool.

...

Oh, I've got it. If you have tetrads on ^1, ^5, ^2, that specified an entire scale ^(1 3 5 7) ^(5 7 2 4) ^(2 4 6 1). So I just need those chords to be tuned justly in a way that one chord overlaps with the next. Also, if a maqam doesn't have tetrads on ^1, ^5, ^2, I could just as well use another sequence of three chords with tonics separated by fifths, like

    ^2, ^6, ^3
    ^3, ^7, ^4
    ^4, ^1, ^5
    ^5, ^2, ^6,
    ^6, ^3, ^7
    ^7, ^4, ^1

You just need three tetrads that line up with their relative intervals (the last interval of the chord on ^1 is the first interval on ^5, and the last interval of the chord on ^5 is the first interval of the chord on ^2) and also the whole thing adds up to on octave (or really two octaves you add up all 7 positionally distinct relative interval from the tertian chords).

Here's a spelling of Husayni 'Ushayran by 3rds: 

    [P1, Grm3, De5, PrDem7, DeAcM9, P11, m13, P15] :: [0, 6, 13, 20, 27, 34, 40, 48]

Here it is increasing by 2nd intervals, with its just tuning:

    [P1, DeAcM2, Grm3, P4, De5, m6, PrDem7, P8] # [1/1, 12/11, 32/27, 4/3, 16/11, 8/5, 39/22, 2/1]

There's no doubt in my mind that other detemperings would work, because the chords in 24-EDO steps have lots of compatible just determperings. This is just the first one I found. I think an Arab music theorist would find 8/5 a little bit of an unusual ratio to include since it's 5 limit, but the rest looks pretty plausible to me. And more than being plausible, this tuning of the scale supports Curt's notion of quartertone harmony.

Let's find one for maqam 'Iraq.

...

These three work, but they look pretty weird.

    [P1, AsGrm3, AsGrd5, AsGrm7, AsGrm9, PrAsGrd11, AsGrm13, P15]

    [P1, DeAcM3, De5, DeAcM7, DeAcM9, ReDeAcA11, DeAcM13, P15]

    [P1, Prm3, PrGrd5, PrGrm7, Prm9, PrPrd11, Prm13, P15]

I guess 'Iraq is alsways going to look weird in absolute intervals since it starts on a microtone. You're going to have all tones starting with "AsGrm" or "DeAcM" or "Prm" until you get back to the octave. Maybe a better test of the naturalness of these tunings is to rotate 'Iraq so that the tonic is C instead of Ed. That means rooting the scale on the 6th (or 13th).

Here they are respectively:

    [P1, AcM2, DeAcM3, P4, P5, Prm6, m7] # [1/1, 9/8, 27/22, 4/3, 3/2, 13/8, 9/5]

    [P1, AcM2, AsGrm3, P4, P5, ReM6, Grm7] # [1/1, 9/8, 11/9, 4/3, 3/2, 64/39, 16/9]

    [P1, M2, ReM3, P4, P5, Prm6, Grm7] # [1/1, 10/9, 16/13, 4/3, 3/2, 13/8, 16/9]

That first one looks amazingly arabic in the lower tetrachord and also has an octave reduced 13th harmonic. Just change the m7 to Grm7 and we've got it in terms of aesthetics of the absolute frequency ratios. Can we actually do that and still have nice tetrads on ^1, ^2, ^5, as well as (at least) good triads on the other scale degrees?

Sadly no. This scale (described relative to C still) has strong tetrads on ^1, ^2, ^4, strong triads on ^5 and ^7, and absolute garbage on ^3 and ^6.

Actually ^3 and ^6 are garbage regardless of whether we use m7 or Grm7. I think my procedure of "link of three chords with tonics separated by fifths and make sure it forms an octave" was insufficient. Oops. Probably my detemperings for Husayni 'Ushayran were wrong too.

Well, the good new is that I've done this by hand enough that I can automate it, go through all the possibilities, and check for validity.

The bad news is that I don't understand what I did wrong. If ^(1 3 5 7) is a good tetrad, why wouldn't ^(3 5 7) be a good triad? Maybe it is and I just don't have it in my library, since my library started by generating tetrads. Yeah. Yeah. Yeah. Probably yeah.

So like, if you remove the first note from a valid tetrad, it will still be according to Curt's rules. But the just tuning might be so complex that I would disregard it. But whether or not we keep them, I need to explicitly generate them and not just consider a chord valid if it appears in the first three notes of a valid tetrad. We want to look at both the first three and the last three notes.

Okay, here's the set of triads for Curt:
[P1, AcM3, P5] # [1/1, 81/64, 3/2]
[P1, AsGrm3, AsGrd5] # [1/1, 11/9, 22/15]
[P1, AsGrm3, AsSbGrd5] # [1/1, 11/9, 77/54]
[P1, AsGrm3, P5] # [1/1, 11/9, 3/2]
[P1, AsGrm3, PrGrd5] # [1/1, 11/9, 13/9]
[P1, DeAcM3, De5] # [1/1, 27/22, 16/11]
[P1, DeAcM3, DeAc5] # [1/1, 27/22, 81/55]
[P1, DeAcM3, DeSbAc5] # [1/1, 27/22, 63/44]
[P1, DeAcM3, P5] # [1/1, 27/22, 3/2]
[P1, Grm3, De5] # [1/1, 32/27, 16/11]
[P1, Grm3, Gr5] # [1/1, 32/27, 40/27]
[P1, Grm3, Grd5] # [1/1, 32/27, 64/45]
[P1, Grm3, P5] # [1/1, 32/27, 3/2]
[P1, Grm3, PrGrd5] # [1/1, 32/27, 13/9]
[P1, M3, Gr5] # [1/1, 5/4, 40/27]
[P1, M3, P5] # [1/1, 5/4, 3/2]
[P1, M3, PrDe5] # [1/1, 5/4, 65/44]
[P1, M3, Sb5] # [1/1, 5/4, 35/24]
[P1, PrDem3, De5] # [1/1, 13/11, 16/11]
[P1, PrDem3, P5] # [1/1, 13/11, 3/2]
[P1, PrDem3, PrDe5] # [1/1, 13/11, 65/44]
[P1, PrDem3, PrDeSbd5] # [1/1, 13/11, 91/66]
[P1, PrDem3, PrDed5] # [1/1, 13/11, 78/55]
[P1, PrDem3, PrGrd5] # [1/1, 13/11, 13/9]
[P1, Prm3, P5] # [1/1, 39/32, 3/2]
[P1, Prm3, PrGrd5] # [1/1, 39/32, 13/9]
[P1, Prm3, PrSbd5] # [1/1, 39/32, 91/64]
[P1, ReAsM3, P5] # [1/1, 33/26, 3/2]
[P1, ReAsM3, ReAsSb5] # [1/1, 33/26, 77/52]
[P1, ReM3, De5] # [1/1, 16/13, 16/11]
[P1, ReM3, P5] # [1/1, 16/13, 3/2]
[P1, ReM3, Re5] # [1/1, 16/13, 96/65]
[P1, ReM3, ReSb5] # [1/1, 16/13, 56/39]
[P1, Sbm3, AsSbGrd5] # [1/1, 7/6, 77/54]
[P1, Sbm3, DeSbAc5] # [1/1, 7/6, 63/44]
[P1, Sbm3, PrDeSbd5] # [1/1, 7/6, 91/66]
[P1, Sbm3, PrSbd5] # [1/1, 7/6, 91/64]
[P1, Sbm3, ReAsSb5] # [1/1, 7/6, 77/52]
[P1, Sbm3, ReSb5] # [1/1, 7/6, 56/39]
[P1, Sbm3, Sb5] # [1/1, 7/6, 35/24]
[P1, Sbm3, Sbd5] # [1/1, 7/6, 7/5]
[P1, m3, AsGrd5] # [1/1, 6/5, 22/15]
[P1, m3, DeAc5] # [1/1, 6/5, 81/55]
[P1, m3, Grd5] # [1/1, 6/5, 64/45]
[P1, m3, P5] # [1/1, 6/5, 3/2]
[P1, m3, PrDed5] # [1/1, 6/5, 78/55]
[P1, m3, Re5] # [1/1, 6/5, 96/65]
[P1, m3, Sbd5] # [1/1, 6/5, 7/5]
[P1, m3, d5] # [1/1, 6/5, 36/25]

I'm going to add these into the Quartertone Harmony Chords post too.

...

Ah, in a previous post, I shared microtonal chords that were compatible with Curt's Quartertone Harmony rules, but I removed all the ones that didn't have intervals tuned to odd steps in 24-EDO. That was the right thing to do for that post, but now my harmony analyzer doesn't think that a scale can have like a normal Pythagorean major or minor triad. That's probably why maqamat with the best harmonic options according to my analyzer were weird things like maqam 'Iraq with a half flat fifth. So I have to regenerate the full set of quartertone chords and not discard the tonal ones.

...

Okay, here are 268 Curt chords, triads and tetrads, neutral tones and non-neutral tones both.

[P1, AcM3, P5, AsGrm7] : [AcM3, Grm3, AsGrm3] _ [1/1, 81/64, 3/2, 11/6] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, AcM3, P5, DeAcM7] : [AcM3, Grm3, DeAcM3] _ [1/1, 81/64, 3/2, 81/44] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, AcM3, P5, Grm7] : [AcM3, Grm3, Grm3] _ [1/1, 81/64, 3/2, 16/9] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, AcM3, P5, M7] : [AcM3, Grm3, M3] _ [1/1, 81/64, 3/2, 15/8] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, AcM3, P5, PrDem7] : [AcM3, Grm3, PrDem3] _ [1/1, 81/64, 3/2, 39/22] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, AcM3, P5, ReAsM7] : [AcM3, Grm3, ReAsM3] _ [1/1, 81/64, 3/2, 99/52] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, AcM3, P5, ReM7] : [AcM3, Grm3, ReM3] _ [1/1, 81/64, 3/2, 24/13] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, AcM3, P5, Sbm7] : [AcM3, Grm3, Sbm3] _ [1/1, 81/64, 3/2, 7/4] :: [0, 8, 14, 19] # [8, 6, 5]
[P1, AcM3, P5, m7] : [AcM3, Grm3, m3] _ [1/1, 81/64, 3/2, 9/5] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, AsGrm3, AsGrd5, AsGrd7] : [AsGrm3, m3, m3] _ [1/1, 11/9, 22/15, 44/25] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, AsGrm3, AsGrd5, AsGrm7] : [AsGrm3, m3, M3] _ [1/1, 11/9, 22/15, 11/6] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, AsGrm3, AsGrd5, AsSbGrd7] : [AsGrm3, m3, Sbm3] _ [1/1, 11/9, 22/15, 77/45] :: [0, 7, 13, 18] # [7, 6, 5]
[P1, AsGrm3, AsGrd5, PrGrd7] : [AsGrm3, m3, PrDem3] _ [1/1, 11/9, 22/15, 26/15] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, AsGrm3, AsGrd5, m7] : [AsGrm3, m3, DeAcM3] _ [1/1, 11/9, 22/15, 9/5] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, AsGrm3, AsSbGrd5, AsSbGrd7] : [AsGrm3, Sbm3, m3] _ [1/1, 11/9, 77/54, 77/45] :: [0, 7, 12, 18] # [7, 5, 6]
[P1, AsGrm3, AsSbGrd5, PrSbGrd7] : [AsGrm3, Sbm3, PrDem3] _ [1/1, 11/9, 77/54, 91/54] :: [0, 7, 12, 18] # [7, 5, 6]
[P1, AsGrm3, AsSbGrd5, Sbm7] : [AsGrm3, Sbm3, DeAcM3] _ [1/1, 11/9, 77/54, 7/4] :: [0, 7, 12, 19] # [7, 5, 7]
[P1, AsGrm3, P5, AsGrm7] : [AsGrm3, DeAcM3, AsGrm3] _ [1/1, 11/9, 3/2, 11/6] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, AsGrm3, P5, DeAcM7] : [AsGrm3, DeAcM3, DeAcM3] _ [1/1, 11/9, 3/2, 81/44] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, AsGrm3, P5, Grm7] : [AsGrm3, DeAcM3, Grm3] _ [1/1, 11/9, 3/2, 16/9] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, AsGrm3, P5, PrDem7] : [AsGrm3, DeAcM3, PrDem3] _ [1/1, 11/9, 3/2, 39/22] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, AsGrm3, P5, ReM7] : [AsGrm3, DeAcM3, ReM3] _ [1/1, 11/9, 3/2, 24/13] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, AsGrm3, P5, Sbm7] : [AsGrm3, DeAcM3, Sbm3] _ [1/1, 11/9, 3/2, 7/4] :: [0, 7, 14, 19] # [7, 7, 5]
[P1, AsGrm3, P5, m7] : [AsGrm3, DeAcM3, m3] _ [1/1, 11/9, 3/2, 9/5] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, AsGrm3, PrGrd5, AsGrm7] : [AsGrm3, PrDem3, ReAsM3] _ [1/1, 11/9, 13/9, 11/6] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, AsGrm3, PrGrd5, Grm7] : [AsGrm3, PrDem3, ReM3] _ [1/1, 11/9, 13/9, 16/9] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, AsGrm3, PrGrd5, PrDem7] : [AsGrm3, PrDem3, DeAcM3] _ [1/1, 11/9, 13/9, 39/22] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, AsGrm3, PrGrd5, PrGrd7] : [AsGrm3, PrDem3, m3] _ [1/1, 11/9, 13/9, 26/15] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, AsGrm3, PrGrd5, PrGrm7] : [AsGrm3, PrDem3, M3] _ [1/1, 11/9, 13/9, 65/36] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, AsGrm3, PrGrd5, PrSbGrd7] : [AsGrm3, PrDem3, Sbm3] _ [1/1, 11/9, 13/9, 91/54] :: [0, 7, 13, 18] # [7, 6, 5]
[P1, DeAcM3, De5, DeAcM7] : [DeAcM3, Grm3, AcM3] _ [1/1, 27/22, 16/11, 81/44] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, DeAcM3, De5, DeM7] : [DeAcM3, Grm3, M3] _ [1/1, 27/22, 16/11, 20/11] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, DeAcM3, De5, DeSbm7] : [DeAcM3, Grm3, Sbm3] _ [1/1, 27/22, 16/11, 56/33] :: [0, 7, 13, 18] # [7, 6, 5]
[P1, DeAcM3, De5, Dem7] : [DeAcM3, Grm3, m3] _ [1/1, 27/22, 16/11, 96/55] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, DeAcM3, De5, Grm7] : [DeAcM3, Grm3, AsGrm3] _ [1/1, 27/22, 16/11, 16/9] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, DeAcM3, De5, PrDem7] : [DeAcM3, Grm3, Prm3] _ [1/1, 27/22, 16/11, 39/22] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, DeAcM3, De5, ReM7] : [DeAcM3, Grm3, ReAsM3] _ [1/1, 27/22, 16/11, 24/13] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, DeAcM3, DeAc5, DeAcM7] : [DeAcM3, m3, M3] _ [1/1, 27/22, 81/55, 81/44] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, DeAcM3, DeAc5, Dem7] : [DeAcM3, m3, Grm3] _ [1/1, 27/22, 81/55, 96/55] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, DeAcM3, DeAc5, m7] : [DeAcM3, m3, AsGrm3] _ [1/1, 27/22, 81/55, 9/5] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, DeAcM3, DeSbAc5, DeSbm7] : [DeAcM3, Sbm3, Grm3] _ [1/1, 27/22, 63/44, 56/33] :: [0, 7, 12, 18] # [7, 5, 6]
[P1, DeAcM3, DeSbAc5, Sbm7] : [DeAcM3, Sbm3, AsGrm3] _ [1/1, 27/22, 63/44, 7/4] :: [0, 7, 12, 19] # [7, 5, 7]
[P1, DeAcM3, P5, AsGrm7] : [DeAcM3, AsGrm3, AsGrm3] _ [1/1, 27/22, 3/2, 11/6] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, DeAcM3, P5, DeAcM7] : [DeAcM3, AsGrm3, DeAcM3] _ [1/1, 27/22, 3/2, 81/44] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, DeAcM3, P5, Grm7] : [DeAcM3, AsGrm3, Grm3] _ [1/1, 27/22, 3/2, 16/9] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, DeAcM3, P5, PrDem7] : [DeAcM3, AsGrm3, PrDem3] _ [1/1, 27/22, 3/2, 39/22] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, DeAcM3, P5, ReM7] : [DeAcM3, AsGrm3, ReM3] _ [1/1, 27/22, 3/2, 24/13] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, DeAcM3, P5, Sbm7] : [DeAcM3, AsGrm3, Sbm3] _ [1/1, 27/22, 3/2, 7/4] :: [0, 7, 14, 19] # [7, 7, 5]
[P1, DeAcM3, P5, m7] : [DeAcM3, AsGrm3, m3] _ [1/1, 27/22, 3/2, 9/5] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, Grm3, De5, DeSbm7] : [Grm3, DeAcM3, Sbm3] _ [1/1, 32/27, 16/11, 56/33] :: [0, 6, 13, 18] # [6, 7, 5]
[P1, Grm3, De5, Dem7] : [Grm3, DeAcM3, m3] _ [1/1, 32/27, 16/11, 96/55] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, Grm3, De5, Grm7] : [Grm3, DeAcM3, AsGrm3] _ [1/1, 32/27, 16/11, 16/9] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, Grm3, De5, PrDem7] : [Grm3, DeAcM3, Prm3] _ [1/1, 32/27, 16/11, 39/22] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, Grm3, Gr5, GrM7] : [Grm3, M3, M3] _ [1/1, 32/27, 40/27, 50/27] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, Grm3, Gr5, Grm7] : [Grm3, M3, m3] _ [1/1, 32/27, 40/27, 16/9] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, Grm3, Gr5, M7] : [Grm3, M3, AcM3] _ [1/1, 32/27, 40/27, 15/8] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, Grm3, Grd5, Dem7] : [Grm3, m3, DeAcM3] _ [1/1, 32/27, 64/45, 96/55] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, Grm3, Grd5, Grm7] : [Grm3, m3, M3] _ [1/1, 32/27, 64/45, 16/9] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, Grm3, Grd5, PrGrd7] : [Grm3, m3, Prm3] _ [1/1, 32/27, 64/45, 26/15] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, Grm3, Grd5, m7] : [Grm3, m3, AcM3] _ [1/1, 32/27, 64/45, 9/5] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, Grm3, P5, Grm7] : [Grm3, AcM3, Grm3] _ [1/1, 32/27, 3/2, 16/9] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, Grm3, P5, M7] : [Grm3, AcM3, M3] _ [1/1, 32/27, 3/2, 15/8] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, Grm3, P5, PrDem7] : [Grm3, AcM3, PrDem3] _ [1/1, 32/27, 3/2, 39/22] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, Grm3, P5, ReAsM7] : [Grm3, AcM3, ReAsM3] _ [1/1, 32/27, 3/2, 99/52] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, Grm3, P5, Sbm7] : [Grm3, AcM3, Sbm3] _ [1/1, 32/27, 3/2, 7/4] :: [0, 6, 14, 19] # [6, 8, 5]
[P1, Grm3, P5, m7] : [Grm3, AcM3, m3] _ [1/1, 32/27, 3/2, 9/5] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, Grm3, PrGrd5, Grm7] : [Grm3, Prm3, ReM3] _ [1/1, 32/27, 13/9, 16/9] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, Grm3, PrGrd5, PrDem7] : [Grm3, Prm3, DeAcM3] _ [1/1, 32/27, 13/9, 39/22] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, Grm3, PrGrd5, PrGrd7] : [Grm3, Prm3, m3] _ [1/1, 32/27, 13/9, 26/15] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, Grm3, PrGrd5, PrSbGrd7] : [Grm3, Prm3, Sbm3] _ [1/1, 32/27, 13/9, 91/54] :: [0, 6, 13, 18] # [6, 7, 5]
[P1, M3, A5, GrM7] : [M3, M3, Grm3] _ [1/1, 5/4, 25/16, 50/27] :: [0, 8, 16, 22] # [8, 8, 6]
[P1, M3, A5, M7] : [M3, M3, m3] _ [1/1, 5/4, 25/16, 15/8] :: [0, 8, 16, 22] # [8, 8, 6]
[P1, M3, Gr5, DeM7] : [M3, Grm3, DeAcM3] _ [1/1, 5/4, 40/27, 20/11] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, M3, Gr5, GrM7] : [M3, Grm3, M3] _ [1/1, 5/4, 40/27, 50/27] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, M3, Gr5, Grm7] : [M3, Grm3, m3] _ [1/1, 5/4, 40/27, 16/9] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, M3, Gr5, M7] : [M3, Grm3, AcM3] _ [1/1, 5/4, 40/27, 15/8] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, M3, Gr5, PrGrm7] : [M3, Grm3, Prm3] _ [1/1, 5/4, 40/27, 65/36] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, M3, P5, AsGrm7] : [M3, m3, AsGrm3] _ [1/1, 5/4, 3/2, 11/6] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, M3, P5, DeAcM7] : [M3, m3, DeAcM3] _ [1/1, 5/4, 3/2, 81/44] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, M3, P5, Grm7] : [M3, m3, Grm3] _ [1/1, 5/4, 3/2, 16/9] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, M3, P5, M7] : [M3, m3, M3] _ [1/1, 5/4, 3/2, 15/8] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, M3, P5, PrDem7] : [M3, m3, PrDem3] _ [1/1, 5/4, 3/2, 39/22] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, M3, P5, ReAsM7] : [M3, m3, ReAsM3] _ [1/1, 5/4, 3/2, 99/52] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, M3, P5, ReM7] : [M3, m3, ReM3] _ [1/1, 5/4, 3/2, 24/13] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, M3, P5, Sbm7] : [M3, m3, Sbm3] _ [1/1, 5/4, 3/2, 7/4] :: [0, 8, 14, 19] # [8, 6, 5]
[P1, M3, P5, m7] : [M3, m3, m3] _ [1/1, 5/4, 3/2, 9/5] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, M3, PrDe5, DeM7] : [M3, PrDem3, ReM3] _ [1/1, 5/4, 65/44, 20/11] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, M3, PrDe5, M7] : [M3, PrDem3, ReAsM3] _ [1/1, 5/4, 65/44, 15/8] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, M3, PrDe5, PrDem7] : [M3, PrDem3, m3] _ [1/1, 5/4, 65/44, 39/22] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, M3, PrDe5, PrGrm7] : [M3, PrDem3, AsGrm3] _ [1/1, 5/4, 65/44, 65/36] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, M3, Sb5, ReSbM7] : [M3, Sbm3, ReM3] _ [1/1, 5/4, 35/24, 70/39] :: [0, 8, 13, 20] # [8, 5, 7]
[P1, M3, Sb5, Sbm7] : [M3, Sbm3, m3] _ [1/1, 5/4, 35/24, 7/4] :: [0, 8, 13, 19] # [8, 5, 6]
[P1, PrDem3, De5, DeSbm7] : [PrDem3, ReM3, Sbm3] _ [1/1, 13/11, 16/11, 56/33] :: [0, 6, 13, 18] # [6, 7, 5]
[P1, PrDem3, De5, Dem7] : [PrDem3, ReM3, m3] _ [1/1, 13/11, 16/11, 96/55] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, PrDem3, De5, Grm7] : [PrDem3, ReM3, AsGrm3] _ [1/1, 13/11, 16/11, 16/9] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, PrDem3, De5, PrDem7] : [PrDem3, ReM3, Prm3] _ [1/1, 13/11, 16/11, 39/22] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, PrDem3, P5, Grm7] : [PrDem3, ReAsM3, Grm3] _ [1/1, 13/11, 3/2, 16/9] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, PrDem3, P5, M7] : [PrDem3, ReAsM3, M3] _ [1/1, 13/11, 3/2, 15/8] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, PrDem3, P5, PrDem7] : [PrDem3, ReAsM3, PrDem3] _ [1/1, 13/11, 3/2, 39/22] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, PrDem3, P5, ReAsM7] : [PrDem3, ReAsM3, ReAsM3] _ [1/1, 13/11, 3/2, 99/52] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, PrDem3, P5, Sbm7] : [PrDem3, ReAsM3, Sbm3] _ [1/1, 13/11, 3/2, 7/4] :: [0, 6, 14, 19] # [6, 8, 5]
[P1, PrDem3, P5, m7] : [PrDem3, ReAsM3, m3] _ [1/1, 13/11, 3/2, 9/5] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, PrDem3, PrDe5, M7] : [PrDem3, M3, ReAsM3] _ [1/1, 13/11, 65/44, 15/8] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, PrDem3, PrDe5, PrDem7] : [PrDem3, M3, m3] _ [1/1, 13/11, 65/44, 39/22] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, PrDem3, PrDeSbd5, DeSbm7] : [PrDem3, Sbm3, ReM3] _ [1/1, 13/11, 91/66, 56/33] :: [0, 6, 11, 18] # [6, 5, 7]
[P1, PrDem3, PrDeSbd5, PrDeSbd7] : [PrDem3, Sbm3, m3] _ [1/1, 13/11, 91/66, 91/55] :: [0, 6, 11, 17] # [6, 5, 6]
[P1, PrDem3, PrDeSbd5, PrSbGrd7] : [PrDem3, Sbm3, AsGrm3] _ [1/1, 13/11, 91/66, 91/54] :: [0, 6, 11, 18] # [6, 5, 7]
[P1, PrDem3, PrDeSbd5, Sbm7] : [PrDem3, Sbm3, ReAsM3] _ [1/1, 13/11, 91/66, 7/4] :: [0, 6, 11, 19] # [6, 5, 8]
[P1, PrDem3, PrDed5, Dem7] : [PrDem3, m3, ReM3] _ [1/1, 13/11, 78/55, 96/55] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, PrDem3, PrDed5, PrDeSbd7] : [PrDem3, m3, Sbm3] _ [1/1, 13/11, 78/55, 91/55] :: [0, 6, 12, 17] # [6, 6, 5]
[P1, PrDem3, PrDed5, PrDem7] : [PrDem3, m3, M3] _ [1/1, 13/11, 78/55, 39/22] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, PrDem3, PrDed5, PrGrd7] : [PrDem3, m3, AsGrm3] _ [1/1, 13/11, 78/55, 26/15] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, PrDem3, PrDed5, m7] : [PrDem3, m3, ReAsM3] _ [1/1, 13/11, 78/55, 9/5] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, PrDem3, PrGrd5, Grm7] : [PrDem3, AsGrm3, ReM3] _ [1/1, 13/11, 13/9, 16/9] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, PrDem3, PrGrd5, PrDem7] : [PrDem3, AsGrm3, DeAcM3] _ [1/1, 13/11, 13/9, 39/22] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, PrDem3, PrGrd5, PrGrd7] : [PrDem3, AsGrm3, m3] _ [1/1, 13/11, 13/9, 26/15] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, PrDem3, PrGrd5, PrSbGrd7] : [PrDem3, AsGrm3, Sbm3] _ [1/1, 13/11, 13/9, 91/54] :: [0, 6, 13, 18] # [6, 7, 5]
[P1, Prm3, P5, AsGrm7] : [Prm3, ReM3, AsGrm3] _ [1/1, 39/32, 3/2, 11/6] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, Prm3, P5, DeAcM7] : [Prm3, ReM3, DeAcM3] _ [1/1, 39/32, 3/2, 81/44] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, Prm3, P5, Grm7] : [Prm3, ReM3, Grm3] _ [1/1, 39/32, 3/2, 16/9] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, Prm3, P5, PrDem7] : [Prm3, ReM3, PrDem3] _ [1/1, 39/32, 3/2, 39/22] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, Prm3, P5, ReM7] : [Prm3, ReM3, ReM3] _ [1/1, 39/32, 3/2, 24/13] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, Prm3, P5, Sbm7] : [Prm3, ReM3, Sbm3] _ [1/1, 39/32, 3/2, 7/4] :: [0, 7, 14, 19] # [7, 7, 5]
[P1, Prm3, P5, m7] : [Prm3, ReM3, m3] _ [1/1, 39/32, 3/2, 9/5] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, Prm3, PrGrd5, AsGrm7] : [Prm3, Grm3, ReAsM3] _ [1/1, 39/32, 13/9, 11/6] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, Prm3, PrGrd5, Grm7] : [Prm3, Grm3, ReM3] _ [1/1, 39/32, 13/9, 16/9] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, Prm3, PrGrd5, PrDem7] : [Prm3, Grm3, DeAcM3] _ [1/1, 39/32, 13/9, 39/22] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, Prm3, PrGrd5, PrGrd7] : [Prm3, Grm3, m3] _ [1/1, 39/32, 13/9, 26/15] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, Prm3, PrGrd5, PrGrm7] : [Prm3, Grm3, M3] _ [1/1, 39/32, 13/9, 65/36] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, Prm3, PrGrd5, PrSbGrd7] : [Prm3, Grm3, Sbm3] _ [1/1, 39/32, 13/9, 91/54] :: [0, 7, 13, 18] # [7, 6, 5]
[P1, Prm3, PrSbd5, PrSbGrd7] : [Prm3, Sbm3, Grm3] _ [1/1, 39/32, 91/64, 91/54] :: [0, 7, 12, 18] # [7, 5, 6]
[P1, Prm3, PrSbd5, Sbm7] : [Prm3, Sbm3, ReM3] _ [1/1, 39/32, 91/64, 7/4] :: [0, 7, 12, 19] # [7, 5, 7]
[P1, ReAsM3, P5, AsGrm7] : [ReAsM3, PrDem3, AsGrm3] _ [1/1, 33/26, 3/2, 11/6] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, ReAsM3, P5, DeAcM7] : [ReAsM3, PrDem3, DeAcM3] _ [1/1, 33/26, 3/2, 81/44] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, ReAsM3, P5, Grm7] : [ReAsM3, PrDem3, Grm3] _ [1/1, 33/26, 3/2, 16/9] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, ReAsM3, P5, M7] : [ReAsM3, PrDem3, M3] _ [1/1, 33/26, 3/2, 15/8] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, ReAsM3, P5, PrDem7] : [ReAsM3, PrDem3, PrDem3] _ [1/1, 33/26, 3/2, 39/22] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, ReAsM3, P5, ReAsM7] : [ReAsM3, PrDem3, ReAsM3] _ [1/1, 33/26, 3/2, 99/52] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, ReAsM3, P5, ReM7] : [ReAsM3, PrDem3, ReM3] _ [1/1, 33/26, 3/2, 24/13] :: [0, 8, 14, 21] # [8, 6, 7]
[P1, ReAsM3, P5, Sbm7] : [ReAsM3, PrDem3, Sbm3] _ [1/1, 33/26, 3/2, 7/4] :: [0, 8, 14, 19] # [8, 6, 5]
[P1, ReAsM3, P5, m7] : [ReAsM3, PrDem3, m3] _ [1/1, 33/26, 3/2, 9/5] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, ReAsM3, ReAs5, ReAsM7] : [ReAsM3, m3, M3] _ [1/1, 33/26, 99/65, 99/52] :: [0, 8, 14, 22] # [8, 6, 8]
[P1, ReAsM3, ReAs5, m7] : [ReAsM3, m3, PrDem3] _ [1/1, 33/26, 99/65, 9/5] :: [0, 8, 14, 20] # [8, 6, 6]
[P1, ReAsM3, ReAsSb5, Sbm7] : [ReAsM3, Sbm3, PrDem3] _ [1/1, 33/26, 77/52, 7/4] :: [0, 8, 13, 19] # [8, 5, 6]
[P1, ReM3, De5, DeAcM7] : [ReM3, PrDem3, AcM3] _ [1/1, 16/13, 16/11, 81/44] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, ReM3, De5, DeM7] : [ReM3, PrDem3, M3] _ [1/1, 16/13, 16/11, 20/11] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, ReM3, De5, DeSbm7] : [ReM3, PrDem3, Sbm3] _ [1/1, 16/13, 16/11, 56/33] :: [0, 7, 13, 18] # [7, 6, 5]
[P1, ReM3, De5, Dem7] : [ReM3, PrDem3, m3] _ [1/1, 16/13, 16/11, 96/55] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, ReM3, De5, Grm7] : [ReM3, PrDem3, AsGrm3] _ [1/1, 16/13, 16/11, 16/9] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, ReM3, De5, PrDem7] : [ReM3, PrDem3, Prm3] _ [1/1, 16/13, 16/11, 39/22] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, ReM3, De5, ReM7] : [ReM3, PrDem3, ReAsM3] _ [1/1, 16/13, 16/11, 24/13] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, ReM3, P5, AsGrm7] : [ReM3, Prm3, AsGrm3] _ [1/1, 16/13, 3/2, 11/6] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, ReM3, P5, DeAcM7] : [ReM3, Prm3, DeAcM3] _ [1/1, 16/13, 3/2, 81/44] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, ReM3, P5, Grm7] : [ReM3, Prm3, Grm3] _ [1/1, 16/13, 3/2, 16/9] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, ReM3, P5, PrDem7] : [ReM3, Prm3, PrDem3] _ [1/1, 16/13, 3/2, 39/22] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, ReM3, P5, ReM7] : [ReM3, Prm3, ReM3] _ [1/1, 16/13, 3/2, 24/13] :: [0, 7, 14, 21] # [7, 7, 7]
[P1, ReM3, P5, Sbm7] : [ReM3, Prm3, Sbm3] _ [1/1, 16/13, 3/2, 7/4] :: [0, 7, 14, 19] # [7, 7, 5]
[P1, ReM3, P5, m7] : [ReM3, Prm3, m3] _ [1/1, 16/13, 3/2, 9/5] :: [0, 7, 14, 20] # [7, 7, 6]
[P1, ReM3, Re5, Dem7] : [ReM3, m3, PrDem3] _ [1/1, 16/13, 96/65, 96/55] :: [0, 7, 13, 19] # [7, 6, 6]
[P1, ReM3, Re5, ReM7] : [ReM3, m3, M3] _ [1/1, 16/13, 96/65, 24/13] :: [0, 7, 13, 21] # [7, 6, 8]
[P1, ReM3, Re5, m7] : [ReM3, m3, Prm3] _ [1/1, 16/13, 96/65, 9/5] :: [0, 7, 13, 20] # [7, 6, 7]
[P1, ReM3, ReSb5, DeSbm7] : [ReM3, Sbm3, PrDem3] _ [1/1, 16/13, 56/39, 56/33] :: [0, 7, 12, 18] # [7, 5, 6]
[P1, ReM3, ReSb5, ReSbM7] : [ReM3, Sbm3, M3] _ [1/1, 16/13, 56/39, 70/39] :: [0, 7, 12, 20] # [7, 5, 8]
[P1, ReM3, ReSb5, Sbm7] : [ReM3, Sbm3, Prm3] _ [1/1, 16/13, 56/39, 7/4] :: [0, 7, 12, 19] # [7, 5, 7]
[P1, Sbm3, AsSbGrd5, AsSbGrd7] : [Sbm3, AsGrm3, m3] _ [1/1, 7/6, 77/54, 77/45] :: [0, 5, 12, 18] # [5, 7, 6]
[P1, Sbm3, AsSbGrd5, PrSbGrd7] : [Sbm3, AsGrm3, PrDem3] _ [1/1, 7/6, 77/54, 91/54] :: [0, 5, 12, 18] # [5, 7, 6]
[P1, Sbm3, AsSbGrd5, Sbm7] : [Sbm3, AsGrm3, DeAcM3] _ [1/1, 7/6, 77/54, 7/4] :: [0, 5, 12, 19] # [5, 7, 7]
[P1, Sbm3, DeSbAc5, DeSbm7] : [Sbm3, DeAcM3, Grm3] _ [1/1, 7/6, 63/44, 56/33] :: [0, 5, 12, 18] # [5, 7, 6]
[P1, Sbm3, DeSbAc5, Sbm7] : [Sbm3, DeAcM3, AsGrm3] _ [1/1, 7/6, 63/44, 7/4] :: [0, 5, 12, 19] # [5, 7, 7]
[P1, Sbm3, PrDeSbd5, DeSbm7] : [Sbm3, PrDem3, ReM3] _ [1/1, 7/6, 91/66, 56/33] :: [0, 5, 11, 18] # [5, 6, 7]
[P1, Sbm3, PrDeSbd5, PrDeSbd7] : [Sbm3, PrDem3, m3] _ [1/1, 7/6, 91/66, 91/55] :: [0, 5, 11, 17] # [5, 6, 6]
[P1, Sbm3, PrDeSbd5, PrSbGrd7] : [Sbm3, PrDem3, AsGrm3] _ [1/1, 7/6, 91/66, 91/54] :: [0, 5, 11, 18] # [5, 6, 7]
[P1, Sbm3, PrDeSbd5, Sbm7] : [Sbm3, PrDem3, ReAsM3] _ [1/1, 7/6, 91/66, 7/4] :: [0, 5, 11, 19] # [5, 6, 8]
[P1, Sbm3, PrSbd5, PrSbGrd7] : [Sbm3, Prm3, Grm3] _ [1/1, 7/6, 91/64, 91/54] :: [0, 5, 12, 18] # [5, 7, 6]
[P1, Sbm3, PrSbd5, Sbm7] : [Sbm3, Prm3, ReM3] _ [1/1, 7/6, 91/64, 7/4] :: [0, 5, 12, 19] # [5, 7, 7]
[P1, Sbm3, ReAsSb5, Sbm7] : [Sbm3, ReAsM3, PrDem3] _ [1/1, 7/6, 77/52, 7/4] :: [0, 5, 13, 19] # [5, 8, 6]
[P1, Sbm3, ReSb5, DeSbm7] : [Sbm3, ReM3, PrDem3] _ [1/1, 7/6, 56/39, 56/33] :: [0, 5, 12, 18] # [5, 7, 6]
[P1, Sbm3, ReSb5, Sbm7] : [Sbm3, ReM3, Prm3] _ [1/1, 7/6, 56/39, 7/4] :: [0, 5, 12, 19] # [5, 7, 7]
[P1, Sbm3, Sb5, Sbm7] : [Sbm3, M3, m3] _ [1/1, 7/6, 35/24, 7/4] :: [0, 5, 13, 19] # [5, 8, 6]
[P1, Sbm3, Sbd5, AsSbGrd7] : [Sbm3, m3, AsGrm3] _ [1/1, 7/6, 7/5, 77/45] :: [0, 5, 11, 18] # [5, 6, 7]
[P1, Sbm3, Sbd5, PrDeSbd7] : [Sbm3, m3, PrDem3] _ [1/1, 7/6, 7/5, 91/55] :: [0, 5, 11, 17] # [5, 6, 6]
[P1, Sbm3, Sbd5, SbSbd7] : [Sbm3, m3, Sbm3] _ [1/1, 7/6, 7/5, 49/30] :: [0, 5, 11, 16] # [5, 6, 5]
[P1, Sbm3, Sbd5, Sbd7] : [Sbm3, m3, m3] _ [1/1, 7/6, 7/5, 42/25] :: [0, 5, 11, 17] # [5, 6, 6]
[P1, Sbm3, Sbd5, Sbm7] : [Sbm3, m3, M3] _ [1/1, 7/6, 7/5, 7/4] :: [0, 5, 11, 19] # [5, 6, 8]
[P1, m3, AsGrd5, AsGrd7] : [m3, AsGrm3, m3] _ [1/1, 6/5, 22/15, 44/25] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, m3, AsGrd5, AsSbGrd7] : [m3, AsGrm3, Sbm3] _ [1/1, 6/5, 22/15, 77/45] :: [0, 6, 13, 18] # [6, 7, 5]
[P1, m3, AsGrd5, PrGrd7] : [m3, AsGrm3, PrDem3] _ [1/1, 6/5, 22/15, 26/15] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, m3, AsGrd5, m7] : [m3, AsGrm3, DeAcM3] _ [1/1, 6/5, 22/15, 9/5] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, m3, DeAc5, Dem7] : [m3, DeAcM3, Grm3] _ [1/1, 6/5, 81/55, 96/55] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, m3, DeAc5, m7] : [m3, DeAcM3, AsGrm3] _ [1/1, 6/5, 81/55, 9/5] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, m3, Grd5, Dem7] : [m3, Grm3, DeAcM3] _ [1/1, 6/5, 64/45, 96/55] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, m3, Grd5, Grm7] : [m3, Grm3, M3] _ [1/1, 6/5, 64/45, 16/9] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, m3, Grd5, PrGrd7] : [m3, Grm3, Prm3] _ [1/1, 6/5, 64/45, 26/15] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, m3, Grd5, m7] : [m3, Grm3, AcM3] _ [1/1, 6/5, 64/45, 9/5] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, m3, P5, Grm7] : [m3, M3, Grm3] _ [1/1, 6/5, 3/2, 16/9] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, m3, P5, M7] : [m3, M3, M3] _ [1/1, 6/5, 3/2, 15/8] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, m3, P5, PrDem7] : [m3, M3, PrDem3] _ [1/1, 6/5, 3/2, 39/22] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, m3, P5, ReAsM7] : [m3, M3, ReAsM3] _ [1/1, 6/5, 3/2, 99/52] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, m3, P5, Sbm7] : [m3, M3, Sbm3] _ [1/1, 6/5, 3/2, 7/4] :: [0, 6, 14, 19] # [6, 8, 5]
[P1, m3, P5, m7] : [m3, M3, m3] _ [1/1, 6/5, 3/2, 9/5] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, m3, PrDed5, Dem7] : [m3, PrDem3, ReM3] _ [1/1, 6/5, 78/55, 96/55] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, m3, PrDed5, PrDeSbd7] : [m3, PrDem3, Sbm3] _ [1/1, 6/5, 78/55, 91/55] :: [0, 6, 12, 17] # [6, 6, 5]
[P1, m3, PrDed5, PrDem7] : [m3, PrDem3, M3] _ [1/1, 6/5, 78/55, 39/22] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, m3, PrDed5, PrGrd7] : [m3, PrDem3, AsGrm3] _ [1/1, 6/5, 78/55, 26/15] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, m3, PrDed5, m7] : [m3, PrDem3, ReAsM3] _ [1/1, 6/5, 78/55, 9/5] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, m3, Re5, Dem7] : [m3, ReM3, PrDem3] _ [1/1, 6/5, 96/65, 96/55] :: [0, 6, 13, 19] # [6, 7, 6]
[P1, m3, Re5, m7] : [m3, ReM3, Prm3] _ [1/1, 6/5, 96/65, 9/5] :: [0, 6, 13, 20] # [6, 7, 7]
[P1, m3, ReAs5, ReAsM7] : [m3, ReAsM3, M3] _ [1/1, 6/5, 99/65, 99/52] :: [0, 6, 14, 22] # [6, 8, 8]
[P1, m3, ReAs5, m7] : [m3, ReAsM3, PrDem3] _ [1/1, 6/5, 99/65, 9/5] :: [0, 6, 14, 20] # [6, 8, 6]
[P1, m3, Sbd5, AsSbGrd7] : [m3, Sbm3, AsGrm3] _ [1/1, 6/5, 7/5, 77/45] :: [0, 6, 11, 18] # [6, 5, 7]
[P1, m3, Sbd5, PrDeSbd7] : [m3, Sbm3, PrDem3] _ [1/1, 6/5, 7/5, 91/55] :: [0, 6, 11, 17] # [6, 5, 6]
[P1, m3, Sbd5, Sbd7] : [m3, Sbm3, m3] _ [1/1, 6/5, 7/5, 42/25] :: [0, 6, 11, 17] # [6, 5, 6]
[P1, m3, Sbd5, Sbm7] : [m3, Sbm3, M3] _ [1/1, 6/5, 7/5, 7/4] :: [0, 6, 11, 19] # [6, 5, 8]
[P1, m3, d5, AsGrd7] : [m3, m3, AsGrm3] _ [1/1, 6/5, 36/25, 44/25] :: [0, 6, 12, 19] # [6, 6, 7]
[P1, m3, d5, Sbd7] : [m3, m3, Sbm3] _ [1/1, 6/5, 36/25, 42/25] :: [0, 6, 12, 17] # [6, 6, 5]
[P1, m3, d5, m7] : [m3, m3, M3] _ [1/1, 6/5, 36/25, 9/5] :: [0, 6, 12, 20] # [6, 6, 8]
[P1, PrDem3, PrGrd5] : [PrDem3, AsGrm3] _ [1/1, 13/11, 13/9] :: [0, 6, 13] # [6, 7]
[P1, m3, P5] : [m3, M3] _ [1/1, 6/5, 3/2] :: [0, 6, 14] # [6, 8]
[P1, ReAsM3, ReAs5] : [ReAsM3, m3] _ [1/1, 33/26, 99/65] :: [0, 8, 14] # [8, 6]
[P1, Grm3, De5] : [Grm3, DeAcM3] _ [1/1, 32/27, 16/11] :: [0, 6, 13] # [6, 7]
[P1, ReM3, Re5] : [ReM3, m3] _ [1/1, 16/13, 96/65] :: [0, 7, 13] # [7, 6]
[P1, M3, A5] : [M3, M3] _ [1/1, 5/4, 25/16] :: [0, 8, 16] # [8, 8]
[P1, Grm3, P5] : [Grm3, AcM3] _ [1/1, 32/27, 3/2] :: [0, 6, 14] # [6, 8]
[P1, Sbm3, ReAsSb5] : [Sbm3, ReAsM3] _ [1/1, 7/6, 77/52] :: [0, 5, 13] # [5, 8]
[P1, ReM3, De5] : [ReM3, PrDem3] _ [1/1, 16/13, 16/11] :: [0, 7, 13] # [7, 6]
[P1, m3, AsGrd5] : [m3, AsGrm3] _ [1/1, 6/5, 22/15] :: [0, 6, 13] # [6, 7]
[P1, m3, DeAc5] : [m3, DeAcM3] _ [1/1, 6/5, 81/55] :: [0, 6, 13] # [6, 7]
[P1, ReM3, ReSb5] : [ReM3, Sbm3] _ [1/1, 16/13, 56/39] :: [0, 7, 12] # [7, 5]
[P1, PrDem3, P5] : [PrDem3, ReAsM3] _ [1/1, 13/11, 3/2] :: [0, 6, 14] # [6, 8]
[P1, AsGrm3, AsGrd5] : [AsGrm3, m3] _ [1/1, 11/9, 22/15] :: [0, 7, 13] # [7, 6]
[P1, m3, Re5] : [m3, ReM3] _ [1/1, 6/5, 96/65] :: [0, 6, 13] # [6, 7]
[P1, m3, ReAs5] : [m3, ReAsM3] _ [1/1, 6/5, 99/65] :: [0, 6, 14] # [6, 8]
[P1, Sbm3, Sbd5] : [Sbm3, m3] _ [1/1, 7/6, 7/5] :: [0, 5, 11] # [5, 6]
[P1, m3, Sbd5] : [m3, Sbm3] _ [1/1, 6/5, 7/5] :: [0, 6, 11] # [6, 5]
[P1, Sbm3, ReSb5] : [Sbm3, ReM3] _ [1/1, 7/6, 56/39] :: [0, 5, 12] # [5, 7]
[P1, M3, P5] : [M3, m3] _ [1/1, 5/4, 3/2] :: [0, 8, 14] # [8, 6]
[P1, Prm3, PrSbd5] : [Prm3, Sbm3] _ [1/1, 39/32, 91/64] :: [0, 7, 12] # [7, 5]
[P1, ReM3, P5] : [ReM3, Prm3] _ [1/1, 16/13, 3/2] :: [0, 7, 14] # [7, 7]
[P1, m3, Grd5] : [m3, Grm3] _ [1/1, 6/5, 64/45] :: [0, 6, 12] # [6, 6]
[P1, M3, Gr5] : [M3, Grm3] _ [1/1, 5/4, 40/27] :: [0, 8, 14] # [8, 6]
[P1, Prm3, P5] : [Prm3, ReM3] _ [1/1, 39/32, 3/2] :: [0, 7, 14] # [7, 7]
[P1, AcM3, P5] : [AcM3, Grm3] _ [1/1, 81/64, 3/2] :: [0, 8, 14] # [8, 6]
[P1, M3, PrDe5] : [M3, PrDem3] _ [1/1, 5/4, 65/44] :: [0, 8, 14] # [8, 6]
[P1, PrDem3, De5] : [PrDem3, ReM3] _ [1/1, 13/11, 16/11] :: [0, 6, 13] # [6, 7]
[P1, DeAcM3, DeSbAc5] : [DeAcM3, Sbm3] _ [1/1, 27/22, 63/44] :: [0, 7, 12] # [7, 5]
[P1, AsGrm3, AsSbGrd5] : [AsGrm3, Sbm3] _ [1/1, 11/9, 77/54] :: [0, 7, 12] # [7, 5]
[P1, Grm3, Gr5] : [Grm3, M3] _ [1/1, 32/27, 40/27] :: [0, 6, 14] # [6, 8]
[P1, M3, Sb5] : [M3, Sbm3] _ [1/1, 5/4, 35/24] :: [0, 8, 13] # [8, 5]
[P1, AsGrm3, P5] : [AsGrm3, DeAcM3] _ [1/1, 11/9, 3/2] :: [0, 7, 14] # [7, 7]
[P1, Sbm3, PrSbd5] : [Sbm3, Prm3] _ [1/1, 7/6, 91/64] :: [0, 5, 12] # [5, 7]
[P1, DeAcM3, P5] : [DeAcM3, AsGrm3] _ [1/1, 27/22, 3/2] :: [0, 7, 14] # [7, 7]
[P1, PrDem3, PrDeSbd5] : [PrDem3, Sbm3] _ [1/1, 13/11, 91/66] :: [0, 6, 11] # [6, 5]
[P1, Sbm3, AsSbGrd5] : [Sbm3, AsGrm3] _ [1/1, 7/6, 77/54] :: [0, 5, 12] # [5, 7]
[P1, AsGrm3, PrGrd5] : [AsGrm3, PrDem3] _ [1/1, 11/9, 13/9] :: [0, 7, 13] # [7, 6]
[P1, Grm3, Grd5] : [Grm3, m3] _ [1/1, 32/27, 64/45] :: [0, 6, 12] # [6, 6]
[P1, DeAcM3, DeAc5] : [DeAcM3, m3] _ [1/1, 27/22, 81/55] :: [0, 7, 13] # [7, 6]
[P1, DeAcM3, De5] : [DeAcM3, Grm3] _ [1/1, 27/22, 16/11] :: [0, 7, 13] # [7, 6]
[P1, m3, PrDed5] : [m3, PrDem3] _ [1/1, 6/5, 78/55] :: [0, 6, 12] # [6, 6]
[P1, Sbm3, Sb5] : [Sbm3, M3] _ [1/1, 7/6, 35/24] :: [0, 5, 13] # [5, 8]
[P1, Prm3, PrGrd5] : [Prm3, Grm3] _ [1/1, 39/32, 13/9] :: [0, 7, 13] # [7, 6]
[P1, Sbm3, DeSbAc5] : [Sbm3, DeAcM3] _ [1/1, 7/6, 63/44] :: [0, 5, 12] # [5, 7]
[P1, PrDem3, PrDe5] : [PrDem3, M3] _ [1/1, 13/11, 65/44] :: [0, 6, 14] # [6, 8]
[P1, PrDem3, PrDed5] : [PrDem3, m3] _ [1/1, 13/11, 78/55] :: [0, 6, 12] # [6, 6]
[P1, Grm3, PrGrd5] : [Grm3, Prm3] _ [1/1, 32/27, 13/9] :: [0, 6, 13] # [6, 7]
[P1, m3, d5] : [m3, m3] _ [1/1, 6/5, 36/25] :: [0, 6, 12] # [6, 6]
[P1, ReAsM3, P5] : [ReAsM3, PrDem3] _ [1/1, 33/26, 3/2] :: [0, 8, 14] # [8, 6]
[P1, ReAsM3, ReAsSb5] : [ReAsM3, Sbm3] _ [1/1, 33/26, 77/52] :: [0, 8, 13] # [8, 5]
[P1, Sbm3, PrDeSbd5] : [Sbm3, PrDem3] _ [1/1, 7/6, 91/66] :: [0, 5, 11] # [5, 6]

These actually only fall into 49 distinct chords when tuned in 24-EDO:
[0, 8, 14, 21]
[0, 8, 14, 20]
[0, 8, 14, 22]
[0, 8, 14, 19]
[0, 7, 13, 19]
[0, 7, 13, 21]
[0, 7, 13, 18]
[0, 7, 13, 20]
[0, 7, 12, 18]
[0, 7, 12, 19]
[0, 7, 14, 21]
[0, 7, 14, 20]
[0, 7, 14, 19]
[0, 6, 13, 18]
[0, 6, 13, 19]
[0, 6, 13, 20]
[0, 6, 14, 22]
[0, 6, 14, 20]
[0, 6, 12, 19]
[0, 6, 12, 20]
[0, 6, 14, 19]
[0, 8, 16, 22]
[0, 8, 13, 20]
[0, 8, 13, 19]
[0, 6, 11, 18]
[0, 6, 11, 17]
[0, 6, 11, 19]
[0, 6, 12, 17]
[0, 7, 12, 20]
[0, 5, 12, 18]
[0, 5, 12, 19]
[0, 5, 11, 18]
[0, 5, 11, 17]
[0, 5, 11, 19]
[0, 5, 13, 19]
[0, 5, 11, 16]
[0, 6, 13]
[0, 6, 14]
[0, 8, 14]
[0, 7, 13]
[0, 8, 16]
[0, 5, 13]
[0, 7, 12]
[0, 5, 11]
[0, 6, 11]
[0, 5, 12]
[0, 7, 14]
[0, 6, 12]
[0, 8, 13]

....

Oh, I should also note that I don't check cyclic permutations of chords to look for enemy intervals (from Curt's rule fro chains of friends for constructing good quarter tone chords). I just build them  up by thirds, and if they look good in that form, then I feel free to rotate them. I'm not sure if Curt would like that. Probably not. But I liked how the chords sounded in root position enough that I'm going to keep using them to try to harmonize maqamat. I still have to option to use them in root position, or to only use inversions or voicings that don't have enemy intervals.

...

Fantastic! When I add tonal chords in, all of these maqamat have good tetrads on scale degrees 1 through 7:
'Ajam (Nahawand Ending): [0, 4, 8, 10, 14, 18, 20]
'Ajam (Upper Ajam Ending): [0, 4, 8, 10, 14, 18, 22]
'Iraq: [0, 3, 7, 10, 13, 17, 21]
'Ushaq Masri: [0, 4, 6, 10, 14, 17, 20]
Bayati (Nahawand Ending): [0, 3, 6, 10, 14, 16, 20]
Bayati (Rast Ending): [0, 3, 6, 10, 14, 17, 20]
Dalanshin (descends): [0, 4, 7, 10, 14, 18, 21]
Husayni Ushayran: [0, 3, 6, 10, 13, 16, 20] 
Jiharkah_maqamworld: [0, 3, 7, 11, 14, 17, 21]
Jiharkah_wikipedia: [0, 4, 8, 10, 14, 18, 21]
Kurd: [0, 2, 6, 10, 14, 16, 20]
Lami: [0, 2, 6, 10, 12, 16, 20]
Musta'ar: [0, 5, 7, 11, 13, 17, 21]
Nahawand (Kurd Ending): [0, 4, 6, 10, 14, 16, 20]
Nairuz: [0, 4, 7, 10, 14, 17, 20]
Rast (Nahawand ending): [0, 4, 7, 10, 14, 18, 20]
Rast (Upper Rast ending): [0, 4, 7, 10, 14, 18, 21]
Sikah: [0, 3, 7, 11, 14, 17, 21]
Suzdalara (descends): [0, 4, 7, 10, 14, 18, 20]
Yakah: [0, 4, 7, 10, 14, 17, 20]

...

Ah, I found a typo in my transcription of maqam Jiharkah from MaqamWorld. The B pitch was notated Bb_down, but I transcribed it as Bd instead of Bb or Bbd. Navid from Oud For Guitarists says that both the A and Bb are played flat (relative to 12-TET), with A about 15 cents flat and Bb about 35 to 40 cents flat. Also the Ed is 60 cents flat relative to E, rather than 50. But he calls the pitch Bb, so I guess I will too. That means Bb is a perfect fourth above the tonic of F, or 10\24. The corrected scale, starting on the tonic F instead of the approach note Ed below the tonic, is

     [0, 4, 8, 10, 14, 18, 21] :: [4, 4, 2, 4, 4, 3, 3] # Maqam Jiharkah from Maqam Wolrd

which is the same as on Wikipedia. I'll have to find out who made the scores and audio files on Wikipedia and send some positive reinforcement their way.

...

New plan: I'm just going to find just intonation versions of these maqamat:
    [0, 4, 7, 10, 14, 18, 20]: Rast (Nahawand ending)
    [0, 4, 7, 10, 14, 18, 21]: Rast (Upper Rast ending)
    [0, 3, 6, 10, 14, 16, 20]: Bayati (Nahawand Ending)
    [0, 3, 6, 10, 14, 17, 20]: Bayati (Rast Ending)
    [0, 4, 7, 10, 14, 17, 20]: Nairuz
    [0, 3, 7, 11, 14, 17, 21]: Sikah
    [0, 3, 7, 10, 13, 17, 21]: 'Iraq

that are compatible with Curt Chords. And I'm also just going to use Pythagorean intonation for the even steps.

[P1, 3\24, 7\24, 11\24, P5, 17\24, AcM7]: Sikah
[P1, 3\24, 7\24, P4, 13\24, 17\24, AcM7]: 'Iraq
[P1, 3\24, Grm3, P4, P5, Grm6, Grm7]: Bayati (Nahawand Ending)
[P1, 3\24, Grm3, P4, P5, 17\24, Grm7]: Bayati (Rast Ending)
[P1, AcM2, 7\24, P4, P5, 17\24, Grm7]: Nairuz
[P1, AcM2, 7\24, P4, P5, AcM6, AcM7]: Rast (Upper Rast ending)
[P1, AcM2, 7\24, P4, P5, AcM6, Grm7]: Rast (Nahawand ending)

So we need intonations for
    3\24
    7\24
    11\24
    13\24
    17\24
that make good tetrads on all scale degrees. We can do this. Here's an obvious first guess:

    3\24 -> DeAcM2 # 12/11
    7\24 -> DeAcM3 # 27/22
    11\24 -> As4 # 11/8
    13\24 ->DeAcM6 # 18/11
    17\24 -> DeAcM7 # 81/44

Sadly with this intonation, none of the maqamat have valid triads or tetrads on every scale degree. Bayati (Nahawand ending) has 6/7 valid, or 4/7 valid with the Rast ending. Maqam Rast has 6/7 valid either way, but can't muster a triad on scale degree ^4. Nairuz has three validchords, Sikah only has two, and 'Iraq has none. I should have treated Sikah and 'Iraq differently since they start on neutral tones. The first 3\24 sized interval is the Grm3 complement of the 3\24 sized intervals in maqamat with tonal tonics, and that changes all the absolute intervals that come after. Oops.

...

Let's look at ^4 for Rast and see why we can't get a Curt chord to fit there.

...