## 20190726

### All Interval Sets revisited

Recently, I spotted a five year old comment by David Feldman, which reminded me of my earlier post on All Interval Sets.

The brute force method, in brief, is to look for 6 term polynomials of the form

s(x) = 1 + x + xp + xq + xr + xs, (2 < p < q < r < s < 31)

such that

s(x) · s(x-1)
= 6 + x + x2 + x3 + x4 + … + x-3 + x-2 + x-1
= 6 + x + x2 + x3 + x4 + … + x28 + x29 + x30 modulo (x31-1)

since that product, fully written out, will look like the 36 term polynomial

1 + x + xp + xq + xr + xs +
x-1 + 1 + xp-1 + xq-1 + xr-1 + xs-1 +
x-p + x1-p + 1 + xq-p + xr-p + xs-p +
x-q + x1-q + xp-q + 1 + xr-q + xs-q +
x-r + x1-r + xp-r + xq-r + 1 + xs-r +
x-s + x1-s + xp-s + xq-s + xr-s + 1

where 6 of the 36 terms are unavoidably collapsed into units (from, e.g. xr · x-r ≡ 1) and the remaining 30 terms - products of 6 × 5 = 30 terms with unequal exponents - are present exactly once. The four 'unknowns' p, q, r and s must be chosen so that the nonzero differences { 0-1, 0-p, 0-q, 0-r, 0-s, 1-0, 1-p, 1-q, 1-r, 1-s, p-0, p-1, p-q, p-r, p-s, q-0, q-1, q-p, q-r, q-s, r-0, r-1, r-p, r-q, r-s, s-0, s-1, s-p, s-q, s-r } must equate to {±1, ±2, ±3, ±4, ±5, ±6, ±7, ±8, ±9, ±10, ±11, ±12, ±13, ±14, ±15}. I.e. where the 28 member set

{ -p, -q, -r, -s, 1-p, 1-q, 1-r, 1-s, p, p-1, p-q, p-r, p-s, q, q-1, q-p, q-r, q-s, r, r-1, r-p, r-q, r-s, s, s-1, s-p, s-q, s-r }
must be the same as the set
{±2, ±3, ±4, ±5, ±6, ±7, ±8, ±9, ±10, ±11, ±12, ±13, ±14, ±15}
- we already know where the ±1s are. Bear in mind that the first, variable, set is by no means presented in any kind of numerical value order. We know things like q-p > 0, and s-p > s-r, and q-r < 0, but not much else.

Whilst the brute force search, finding p, q, r and s - as 10 solution quartets -

pqrs
381218
3101426
461321
4101217
6182229
8111317
11192628
14202429
15192124
15202228

does not take very long for 31 EDO, one can appreciate that for the larger octave division sets where the k(k-1) distinct differences between k distinct pitch classes must all occur exactly once, higher values of k represents a combinatorial explosion in search times (or large systems of Diophantine simultaneous equations).

## The Feldman Observation

Prof Feldman finds a rather quicker way to get the all interval sets for 31 EDO, and begins with the fact that the number 3 can generate the complete set of integers 1 … 30 when repeatedly multiplied by itself, 29 times, modulo 31.

This is not as weirdly out of left-field as it sounds. All it takes is a little messing around with multiplicative group theory. Here are the integers we're looking at:

30,31,32,33,34,35, …, 327,328,329
1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28,22,4,12,5,15,14,11,2,6,18,23,7,21

Now this set - which is to say the set of all integers between 1 and 30 inclusive - forms a group, G, with 30 elements. Insofar as

• the multiplicative identity, 1, is an element
• any pair, multiplied together modulo 31, is an element (e.g. 25×11 = 275 = (31×8) + 27 ≡ 27)
• every element has exactly one multiplicative inverse (e.g. 27-1 = 23, since 27×23 = 621 = (31×20) + 1)
• … and of course integer multiplication in modulo arithmetic is associative

All except the third property is plain to see. You may wish to verify the less obvious one with 28×27 multiplications, or read up on multiplicative groups.

Now this order 30 group has a particular subgroup, H of order 3 (Sylow says there's only one), comprising elements { 3^0, 3^10, 3^20 }, i.e. { 1, 25, 5 }, as the following (rather simple) multiplication table shows:

×311525
11525
55251
252515

Because this subgroup is of order 3, G's elements may be partitioned into 30/3 = 10 cosets of 3 members each. One of them being H itself, and the other 9 being non-groups - since the triples perforce lack the identity.

Here they are with the cosets in columns (with the first column being the actual subgroup H)

H×3kk
0369121518212427
1271629830415223
25242812146731917
511182192620131022

He then combines the first two cosets (columns) to produce the 6-member set H×30H×33 = {1, 5, 11, 24, 25, 27}.

That this set is the 'same' as one found by brute-force is not hard to see. It's basically x24s(x), as the following argument should show.

Differences are completely unaffected by the subtraction of the same constant from each of those six numbers, and it's easy to see that a subtraction of 24 from each will be appropriate since it takes 24 and 25 to 0 and 1 respectively.

{1-24, 5-24, 11-24, 24-24, 25-24, 27-24} = {-23, -19, -13, 0, 1, 3} ≡31 {8, 12, 18, 0, 1, 3} = {0, 1, 3, 8, 12, 18}

since the 24-24, 25-24 gives us a 0, 1 (the 1 + x of our general s(x) 'all interval' polynomial). We can now see that we have recovered the first row of our brutishly forced table, i.e. where p=3, q=8, r=12, s=18.

Were this 'instant solution' not remarkable enough, we may recover the others - again pretty much instantly - by pairing up the remaining 8 cosets:

 6∪9 16 18 21 12 28 29 12∪15 9 14 6 30 8 26 18∪21 20 7 3 15 4 13 24∪27 19 2 23 22 10 17

The first column entries ab label the rows as being the union of cosets H×3a and H×3b.

All 10 cosets of H (including, as usual, subgroup H itself) have now been accounted for. The group G's 30 elements have thus been partitioned into 5 hexads.

These 5 hexads look like plausible all-interval sets for 31 EDO (we already know the first one is precisely one such) since in each one of them we can see two elements differing by 1 (giving us our 0, 1 exponents for the polynomial s(x)). If we perform the appropriate row subtractions, then, we get

24-23-19-13013x24s0(x)
28-12-10-7-1601x28s1(x)
816-222018x8s2(x)
3174012110x3s3(x)
22-3-2010-12-5x22s4(x)

where the first column shows the value subtracted from each element in that row, and the last column shows what the original row was, written as a pitch class polynomial, where sk(x) is some six term polynomial beginning with 1 + x. We can now present (after modulo 31 normalisation) the p, q, r, s sets in the following table's right hand column (ignoring the 0s and 1s now common to each row).

812180133,8,12,18
192124150115,19,21,24
1629220186,18,22,29
1740121104,10,12,17
281110192611,19,26,28

reproducing five rows (respectively 1st, 9th, 5th, 4th and 7th) of the 'brute' table. Which is basically the full set of all interval patterns since the remaining 5 are simply inversions of the 5 found here (all-interval sets come in pairs of mutually inverted pitch class sets).

It's not clear to me what directed him towards the idea of constructing a set from the union of an order 3 subgroup and its 'first' non-group coset. What is clear is that a more obviously direct approach using an order 6 subgroup would not have worked. For whilst G's subgroup K = {1, 5, 6, 25, 26, 30} has the right number of elements for a 31 EDO all-interval set, it already has two differences of 1 (26-25 and 6-5) in it and so is a complete non-starter.

## Is 73 the Best Number?

Some may know that Sheldon Cooper believes it is. But even he may be unaware of a musically interesting property of this particular prime.

First of all, being 9×8+1 it brings us to 73 EDO, just like 6×5+1 brings us to 31 EDO, both of which allow for the possibility of all-interval sets in which all possible (nonzero) differences between pitch classes in pitch class subsets of size 9 and 6 respectively occur exactly once. In polynomial terms we're looking for polynomials such as

s(x) = 1 + x + xp3 + xp4 + xp5 + xp6 + xp7 + xp8 + xp9

where 2 < p3 < p4 < p5 < p6 < p7 < p8 < p9 < 73) such that

s(x) · s(x-1)
= 9 + x + x2 + x3 + x4 + … + x-3 + x-2 + x-1
= 9 + x + x2 + x3 + x4 + … + x70 + x71 + x72 modulo (x73-1)

Of course we've already computed these sets with our brute-force methodology and where, as predicted, the search for the 8 exponent sets found took somewhat longer than it did for 31 EDO - about an hour of computation with a C program. By the time we got to 91 EDO, the computation was taking about a day to complete.

As it happens, life is particularly easy with 73 EDO. First of all, we need a multiplicative group of order 72 to hold our 72 difference counting exponents, and the integer 5 generates it quite nicely, in that the set {50, 51, 52, 53, …, 570, 571} all calculated modulo 73, contains every integer in the range 1 … 72 exactly once. This is a well-known fact about this group, so no work is required here. Although even though you don't need to do it, a computer algebra system such as GAP will take mere seconds to assure you that this is the case.

gap> c:=List([0..71],i->(5^i) mod 73);
[ 1, 5, 25, 52, 41, 59, 3, 15, 2, 10, 50, 31, 9, 45, 6, 30, 4, 20, 27, 62,
18, 17, 12, 60, 8, 40, 54, 51, 36, 34, 24, 47, 16, 7, 35, 29, 72, 68, 48,
21, 32, 14, 70, 58, 71, 63, 23, 42, 64, 28, 67, 43, 69, 53, 46, 11, 55, 56,
61, 13, 65, 33, 19, 22, 37, 39, 49, 26, 57, 66, 38, 44 ]
gap> Sort(c);
gap> c=List([1..72]);
true

And GAP will generate the appropriate group for you, pretty much instantly.

gap> G:=Units(Integers mod 73);
<group of size 72 with 1 generators>
gap> Int(GeneratorsOfGroup(G)[1]);
5

Now we need to find a subgroup H, ideally of order 9, of G. It's certainly possible since 9 divides 72 exactly, and such a subgroup would have an index of 8 = 72 ÷ 9. GAP provides us with a function which gives us subgroups of such an index:

gap> K:=LowIndexSubgroups(G,8);
[ <group of size 72 with 1 generators>, <group of size 36 with 4 generators>,
<group of size 24 with 4 generators>, <group of size 18 with 3 generators>,
<group of size 12 with 3 generators>, <group of size 9 with 2 generators> ]

And we see that the 6th entry is exactly what we're looking for. We can list its elements:

gap> List(K[6]);
[ Z(73)^0, Z(73)^64, Z(73)^48, Z(73)^56, Z(73)^40, Z(73)^24, Z(73)^32, Z(73)^16, Z(73)^8 ]
gap> H:=K[6];
<group of size 9 with 2 generators>
gap> List(H,i->Int(i));
[ 1, 37, 64, 55, 32, 8, 16, 4, 2 ]

And here is H's multiplication table:

×7313764553281642
113764553281642
3737645532816421
6464553281642137
5555328164213764
3232816421376455
881642137645532
1616421376455328
442137645532816
221376455328164

We can see that there's only one element-difference of 1 (from 2 - 1), which is encouraging. We can sort H's elements and subtract 1 from each (remember that subtraction of the same constant from each element has no impact upon their differences)

gap> S:=List(H,i->Int(i));
[ 1, 37, 64, 55, 32, 8, 16, 4, 2 ]
gap> Sort(S);
gap> S-1;
[ 0, 1, 3, 7, 15, 31, 36, 54, 63 ]

Inspection of the n=73 table in that earlier post shows that the set {0, 1, 3, 7, 15, 31, 36, 54, 63} we have here is precisely the first row of that table, under the heading p1 p2 p3 p4 p5 p6 p7 p8 p9.

But of course there's more. Being of index 8, this order 9 subgroup H is associated with another 7 cosets. We already know that 73 EDO provides 4 pairs of mutually inverse all-interval sets. Can it be that the remaining 7 cosets here provide exactly what we need, in what is essentially no time at all (compared to a daysworth of computational searching)?

Since we were careful to make S the sorted list of the group H's operations, rather than overwrite H as a list, the GAP variable H, for H, remains available to us and we can list all 8 cosets in integer form with a one-liner:

gap> C:=List(RightCosets(G,H),i->List(i,j->Int(j)));
[ [ 1, 37, 64, 55, 32, 8, 16, 4, 2 ], [ 22, 11, 21, 42, 47, 30, 60, 15, 44 ],
[ 46, 23, 24, 48, 12, 3, 6, 38, 19 ], [ 72, 36, 9, 18, 41, 65, 57, 69, 71 ],
[ 63, 68, 17, 34, 45, 66, 59, 33, 53 ], [ 51, 62, 52, 31, 26, 43, 13, 58, 29 ],
[ 27, 50, 49, 25, 61, 70, 67, 35, 54 ], [ 10, 5, 56, 39, 28, 7, 14, 40, 20 ] ]

And we know what to do now - although there is likely a better way to do this in GAP if you're going to do it a lot. First we will construct an array of 8 elements to be subtracted, modulo 73, from each of the 8 integer lists (in order to rebase each of them with a 0, 1 pair of elements). Then we will perform that subtraction in a loop, sort each of the 8 lists, and finally re-present:

gap> b:= [1,21,23,71,33,51,49,39];;
gap> for i in [1..8] do; C[i] := (C[i] - b[i]) mod 73; od;
gap> for c in C do; Sort(c); od;
gap> Sort(C);
gap> Display(C);
[[ 0, 1,  3,  7, 15, 31, 36, 54, 63 ],
[ 0, 1,  5, 12, 18, 21, 49, 51, 59 ],
[ 0, 1,  7, 11, 35, 48, 51, 53, 65 ],
[ 0, 1,  9, 21, 23, 26, 39, 63, 67 ],
[ 0, 1, 11, 20, 38, 43, 59, 67, 71 ],
[ 0, 1, 12, 20, 26, 30, 33, 35, 57 ],
[ 0, 1, 15, 23, 25, 53, 56, 62, 69 ],
[ 0, 1, 17, 39, 41, 44, 48, 54, 62 ]]

And indeed these 8 sets correspond exactly, row for row, to the previously calculated all-interval sets for 73 EDO. And it took only a few minutes rather than an hour or so. The longest part of the process was visually inspecting the cosets in order to construct the 'subtractions array', b.

In any event, for investigations like these, we will find a 'set difference' function useful. We may define it in GAP as:

setdifferences:=function(n, s)
local x, r;
x := Indeterminate(Integers, "x");
s := s - Minimum(s);
r := Sum(List(s, i -> x^i));
s := Sum(List(s, i -> x^(n-i)));
return CoefficientsOfUnivariatePolynomial((r*s) mod (x^n-1));
end;

Such a function will essentially perform the calculation of s(x) · s(x-1) and return the coefficients of the polynomial. For example:

gap> setdifferences(73, [22, 11, 21, 42, 47, 30, 60, 15, 44]);
[ 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]

which reveals to a human onlooker that the supplied pitch class set does indeed form an-all interval set within 73 EDO. For a non-human tester, the following function may be more useful:

isalldifferenceset:=function(s)
local x, k, n;
k := Size(s);
n := k * (k - 1) + 1;
s := s - Minimum(s);
if Maximum(s) < n then
x := ShallowCopy(setdifferences(n, s));
if (Size(x) = n) and (x[1] = k) then
Remove(x, 1);
return (Minimum(x) = 1) and (Maximum(x) = 1);
fi;
return false;
fi;
return false;
end;

## 133 EDO

We already mentioned that it took about a day's worth of computation to find the 12 all-interval sets within 91 EDO (the next suitable microtonality beyond 73 EDO). How long would brute force technique take to search through 111 EDO to find all-interval sets of 11 pitch classes? I don't know because I've not tried it. And the next one up is the sets of size 12 in 133 EDO - how long would that take?

As a teaser, let's try our GAP function out with something daring:

gap> setdifferences(133,[ 0,1,10,58,60,64,82,87,98,101,113,126 ]);
[ 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1 ]

Using group theory it doesn't actually take all that much effort to research 12×11+1 = 133 EDO. Here is a list of the 36 (normal-form) all-interval sets of 12 pitch classes therefrom:

 0 1 10 58 60 64 82 87 98 101 113 126 0 1 25 30 40 46 53 96 100 114 122 131 0 1 15 25 45 52 58 61 63 80 84 92 0 1 8 14 30 45 47 56 66 106 109 129 0 1 16 21 24 49 51 58 62 68 80 94 0 1 3 17 21 58 65 73 100 105 111 124 0 1 9 19 24 31 52 56 58 69 72 98 0 1 5 12 15 31 33 39 56 76 85 98 0 1 26 33 39 44 53 61 63 84 118 130 0 1 5 21 24 39 49 61 75 92 125 127 0 1 8 21 39 43 48 54 73 105 117 131 0 1 23 37 57 62 75 83 86 90 92 102 0 1 6 22 33 40 50 59 63 88 119 131 0 1 6 18 39 68 79 82 98 102 124 126 0 1 7 35 37 50 66 89 108 113 122 130 0 1 5 24 44 71 74 80 105 112 120 122 0 1 15 18 20 24 31 52 60 85 95 107 0 1 4 27 51 57 79 89 100 118 120 125

 0 1 8 21 33 36 47 52 70 74 76 124 0 1 3 12 20 34 38 81 88 94 104 109 0 1 42 50 54 71 73 76 82 89 109 119 0 1 5 25 28 68 78 87 89 104 120 126 0 1 40 54 66 72 76 83 85 110 113 118 0 1 10 23 29 34 61 69 76 113 117 131 0 1 36 62 65 76 78 82 103 110 115 125 0 1 36 49 58 78 95 101 103 119 122 129 0 1 4 16 50 71 73 81 90 95 101 108 0 1 7 9 42 59 73 85 95 110 113 129 0 1 3 17 29 61 80 86 91 95 113 126 0 1 32 42 44 48 51 59 72 77 97 111 0 1 3 15 46 71 75 84 94 101 112 128 0 1 8 10 32 36 52 55 66 95 116 128 0 1 4 12 21 26 45 68 84 97 99 127 0 1 12 14 22 29 54 60 63 90 110 129 0 1 27 39 49 74 82 103 110 114 116 119 0 1 9 14 16 34 45 55 77 83 107 130

Some hints about this - unlike 31 and 73, the number 133 is not prime but has divisors 7 and 19. This means the associated multiplicative group (G) has order (7-1)×(19-1) = 108. Also, 108 is divisible by 36, 12, and 3.

## 20190509

### The Polygony And The Octasy

We return to the matter of all interval sets, as described in general in a previous post, but in particular of those in the 12 tone universe inhabited by the usual musics.

We have, in this dodecaphonic universe, four all-interval tetrads. Some may better know these as, respectively, PC Sets 4-Z29A, 4-Z15A, 4-Z29B and 4-Z15B in the Fortean bestiary. There are only two distinct ‘shapes’, however, as each set can be paired with its mirror image - its musical inversion (the A and B forms).

Each of these tetrads may add a transposition of one of the others to form an octad, provided that no pitch class takes up a space occupied by the other. For example we may add 4 semitones to the second (which - so transposed - no longer collides with the first) and add this to the first to produce

Due to the non-colliding pitch class limitation, it turns out that - of the 66 possible ways to combine two of them - there are only 14 non-colliders. Even then, we find that two turn out to be the well known ‘octatonic scale’ shape (covering both minor and major versions of those Jazz/Stravinsky/Messiaen/etc scales) built from four consecutive semitone+wholetone steps. These shapes result by combining one tetrad shape with the inversion of the other.

So finally, due to similar symmetries, we end up with congruences (by which we mean only modal equivalences, where the shapes are rotatable into each other) in only 7 distinct octads, all of them symmetric (i.e. inversionally identical).

These are the Fortean PC Sets known as 8-28, 8-25, 8-26, 8-9, 8-17, 8-10, 8-3.

If we were to take (as seems usual but it's really not compulsory) that pitch class 0 represents the note C, then an application of this particular ‘tetradic addition’ would be the addition of 4-Z29A rendered as the set of pitches C, C♯, E♭, G and the set 4-Z15A (prime-form rendered as C, C♯, E, F♯) transposed (by the aforementioned four semitones) up to E, F, A♭, B♭. This produces the eight pitches (in order) C, C♯, E♭, E, F, G, A♭, B♭ (corresponding to pitch classes 0, 1, 3, 4, 5, 7, 8, 10).

Forte-wise, this might be expressed as something like 8-26 = 4-Z29A + 4-Z15A.T4, where the .T4 operator applied to a PC set indicates its transposition (up) by four semitones.

The following image shows the seven distinct constructions in an arrangement where the prime-form 4-29A is fixed at the top of a ‘pitch class clock’. Addends and sums are oriented appropriately with respect to it. Each tetrad pair (in pink, indicating their inherent inversional asymmetry) is in one clock and its summed octad (blue, indicating inversional symmetry) is in its own clock to its right.

It's OK to fix one tetrad (we've chosen the first) at the top in this way because any other possible tetrad pairing will be rotationally or inversionally identical to one of these shapes.

Labels are Fortean PC Set names located at PC element 0 positions. Consequently some may almost be upside down.

So a second example of such a ‘Fortean operational notation’ is demonstrated by 8-25's ‘11 o'clock’ orientation showing the image 4-Z29A + 4-Z15A.T5 = 8-25.TB where .TB is a transposition 11 semitones up (clockwise rotation by ‘one hour’), or 1 semitone down (an ‘hour’ anticlockwise). Shifting this expression clockwise 1 semitone (to ‘right’ the 8-25 to prime form's ‘midnight’) would require an application of .T1, and, bearing in mind that .TB.T1 ≡ .T0 is effectively a no-op, the equality could be reversed and rewritten as 8-25 = 4-Z29A.T1 + 4-Z15A.T6 (as the operational composition .T5.T1 is, of course, .T6).

# All That Bebop

There are several bebop scales, all of them - by design - octatonic.

### Major and Minor

One of the prime forms above (Forte 8-26) gives us (in two modes of the same sequence) both the Bebop Major and Bebop Harmonic Minor.

Operationallywise, one might also say that BebopMajor.T3 = BebopHarmonicMinor (or, alternatively, BebopHarmonicMinor.T9 = BebopMajor), were one so seduced by operational notations.

### Dominant and Dorian

The Bebop Dominant and Bebop Dorian scales are, like the preceding Major and Minor Harmonic, modal variations of the same PC Set, known in Forte-speak as 8-23. It's not one of our all-interval tetradic composites, but is nevertheless a symmetric set - its inversion is the same set. The figure below exhibits the rotations needed to recover the scales from the prime form - the Fortean 8-23 label appearing as usual at its 0 pitch class vertex.

And, just to draw attention to the fact that musical applications (instantiations) of pitch class sets do not require that pitch class zero be eternally attached to the note C, this time we'll exemplify the Dominant scale in G and the Dorian in D - they should go nicely with the above bebop major.

### Dominant Flat Nine

Another Bebop scale related to an all interval set is the Bebop Dominant Flat Nine. As this scale is not self-inverting, it can't be one of the combined tetrads. Nonetheless, as we shall soon see, it is yet related to one.

In the scale of C, it would be C, D♭ E, F, G, A, B♭ B - a mode of the PC Set { 0, 1, 3, 5, 6, 7, 8, 9 } - aka Forte 8-Z15B - or operationally 8-Z15B.T9.

This set's ‘unused’ pitch classes, viz. { 2, 4, 10, 11 }, can be operationally written as 4-Z15A.TA. This is because { 0 + 10, 1 + 10, 4 + 10, 6 + 10 } = { 10, 11, 14, 16 }, the same as (on our 12 hour clock) { 10, 11, 2, 4 } and the irrelevancy of set element presentation order finishes it off (as { 0, 1, 4, 6 } + 10). This means that the bebop dominant flat nine is (a transposition of) the PC set complementary to our second all interval set. Or, more formally, 8-Z15B + 4-Z15A.TA = 12-1 (where 12-1 is Fortean for the complete chromatic scale).

The transposition of the above by 4 semitones - to modally shift 8-Z15B into the actual bebop dominant flat nine scale - leaves this expression essentially unaltered, due to our modulo polynomial arithmetic. (But we might be tempted to say BebopDominantFlatNine is anti SecondAllIntervalTetrad.T2).

By the way, it's no coincidence that both of these sets share the same number 15 (in 8-Z15B and 4-Z15A) - Forte numbered his sets fully aware of complementarities.

### Another pair of Bebops

A final pair of bebop scales in this collection are found as modes of the non-invertible PC sets categorised by Forte as 8-22A and 8-27A.

The sets (as scales) are known as the Altered Bebop Dorian and the Bebop Melodic Minor.

Of course when we say that these octatonic sets are unrelated to all-interval sets, this does not mean that one cannot extract an all-interval subset from them. For example a 4-Z29A may be extracted from either of these scales, viz. (E, F, G, B) from the altered dorian and (B, C, D, G♭) from the melodic minor (both following the pattern {0, 1, 3, 7} from E and B respectively). It's simply that the four pitches remaining in each scale - respectively (A, C, D♭, D) and (E, F, A♭, A) - are not congruent with any all-interval set (inversions included).

It's also possible to pick out a 4-Z15A as (D♭, D, F, G) - from the altered dorian. We leave it as an exercise for the student to spot any other possible extractions.

In any event, certainly neither octatonic set's complement is congruent to such a tetrad.

## 20181122

### Block Around the Clock Group

In a previous post, we examined a b=22 block t=2-(v=12,k=6,λ=5) block design evenly distributed around the chromatic universe in both pitch-class (PC) and interval content. The design gave us 22 hexachords (132=6×22 pitches) where each PC turns up 11 times (132=11×12) and where also each of the interval-classes (1 to 6) appear exactly 5 times each. The blocks come from the 2nd block design partially reproduced here (a bleeding chunk, eliding unnecessary detail, from the previous post) as

… autGroup:=Group([(1,11,10,9,8,7,6,5,4,3,2)]), blockNumbers:=[22], blockSizes:=[6],
blocks:=[[1,2,3,4,7,12], [1,2,3,6,11,12], [1,2,4,6,8,9], [1,2,5,6,8,10], [1,2,5,10,11,12], [1,3,4,7,8,10], [1,3,5,6,9,10], [1,3,5,7,8,11], [1,4,5,7,9,11], [1,4,9,10,11,12], [1,6,7,8,9,12], [2,3,4,5,8,12], [2,3,5,7,9,10], [2,3,6,7,9,11], [2,4,5,8,9,11], [2,4,6,7,10,11], [2,7,8,9,10,12], [3,4,5,6,9,12], [3,4,6,8,10,11], [3,8,9,10,11,12], [4,5,6,7,10,12], [5,6,7,8,11,12]],… lambdas:=[5], t:=2), v:=12)

Interval-class is defined as the shortest distance in semitones between pitch classes, modulo 12. A major sixth - an upward skip of 9 semitones - is thus equivalent to the shorter 3 semitone skip down of a minor third - octaves being ignored. The 6 semitone tritone leap, is consequently the largest interval class. Each block contains (after renumbering 1 … 12 to 0 … 11 to bring us into PC - modulo 12 - territory) 6 PCs, and thus 6×5/2=15 intervals between pairs therein. Over the 22 blocks we therefore have 22×15=330=66×5 intervals in total and the block design itself ensures that all possible intervals between 12 PCs - which is of course 66=12×11/2 - occur 5 times each. Musically speaking, it's a very 'democratic' distribution. Not only do all pitch classes get equal representation but all interval classes too. This is an alternative way to give 'equality' to chromaticism rather than via Schoenbergian tone rows and their transformations to retrograde, inversion, and retrograde inversion; or via Hauer's tropical hexads.

### By Design

Just playing a sequence of the 22 hexads - perhaps as chords, perhaps as ascending arpeggios, perhaps even as both with 11 of them in the treble and the other 11 in the bass, will result in a mathematically legitimate presentation of that equal opportunity. But it will likely not be musically interesting (e.g. see below). In any case, the blocks generated by the design aren't presented 'ordered', but due (as far as the musician is concerned) entirely to the exigencies of linear text.

We, however, can seek further structure within, structure which may pique interest. Mathematically, all we have - all we asked for - is a bunch of numbers delivered with a certain guaranteed distribution. The design's specification required nothing more. But first, here are the blocks, presented as PC Sets (in the Forte sense):

The above table is sorted by Forte's 'interval vector' classification for no particular reason other than to show that the 22 PC Sets may be aggregated into 10 distinct interval spread classes in 12 distinct Forte Prime PC Sets. We can't imagine that this is anything other than happenstance. As usual on this blog, the blue background indicates a symmetric (inverse = self) PC set and pink indicates asymmetric (with Forte A and B Forms). There's a page devoted to 12 TET hexads if more background is needed.

In order to justify an order we might apply to the 22 blocks, we sought links between the blocks beyond any demanded by the block design itself. And indeed we found such a link, in the appearance of common tetrads between the hexads. Even better, we found several cycles (i.e. Hamiltonian circuits) of all 22 blocks, stepwise connected via such tetrad-sharing, in such a way that the last block connected to the first.

Each block links to three other blocks via tetrads, which means that the blocks' connectivity can be represented as a cubic graph, specifically one with 22 vertices (the blocks) and 33 edges (the linking tetrads shared between each vertex pair). And 22 of those edges form a circuit allowing the graph's presentation as a 22-gon with 11 internal edge connections.

The cubic graph exhibits an emergent symmetry having nothing to do with the block design's requirements. Nobody asked for symmetry or for common 4-sets connecting the 6-set blocks, or even anything regarding 4-sets at all.

The symmetry is doubtless due to the algorithm used to produce the design, most likely from the underlying group used to generate the design which in this case was C11 - Cyclic Group order 11 generated by the permutation (1,11,10,9,8,7,6,5,4,3,2) as shown in the design's output report.

The following is a possible expression of the above block order. The hex annotations under each bar label the six PCs present in the bar. If the staff could be wrapped around a circle, the four PCs 0,9,a and b in the final bar could - in principal - be tied to the same PCs in the first.

We say 'in principal' because the PCs a and b (as, respectively, a high A# and a centred B) are in the 'wrong' octave for bar #1, as are PCs 0 and 9 (as bass notes A and C - two octaves apart from their high treble appearances in bar #1). A 'true' circular join is of course possible. But as it is, it sounds like this:

Below is the graph with PC Set {0,3,8,9,10,11} at the top, labelled as vertex 0 (the arbitrarily chosen 'first' block in the circuit shown as the first column labelled (hexadecimally as) 0389AB in the image above).

Each block, labelled as vertices 0 to L clockwise from the top, is shown with its 6 constituent hexadic pitch classes (labelled in hexadecimal) in a hexagonal 'satellite' arrangement around it. Every block is connected to three others, two being nearest neighbours around the circumference and the third being somewhere across the circle.

Each of the three connections carries a common tetrad. For example vertex C - PC set {1,3,4,7,8,10} - connects on either side with vertex B = {0,3,4,6,8,10} and D = {1,2,3,4,7,11} as well as to the relatively distant vertex J = {0,1,3,5,7,8}, the common tetrads between them being respectively {3,4,8,10}, {1,3,4,7}, {1,3,7,8}

### From Graph to Group

Howsoever a cyclic symmetry of C11 in the generation of a block design managed to percolate through to emergent common tetradicities, the 22-vertex 33-edge graph (teased out of that collection by seeking Hamiltonian circuits via those tetradic connections) has dihedral symmetry with an automorphism group isomorphic to D22 (or D11 depending upon which Dihedral Group naming convention you follow).

For the moment, we'll dispense with the hexadic attachments - the group is concerned only with the graph's symmetries but doesn't care how it got them.

As with all dihedral groups, two generators - a mirror flip and a rotation cycle - will suffice and in this case they are the permutations (1L)(2K)(3J)(4I)(5H)(6G)(7F)(8E)(9D)(AC) and (01HI98ED45L)(2GJA7FC36KB).

We're using cyclic permutation notation where each parenthesised string (in this case of graph vertex labels) cycles (i.e. moves its tail character to its head) each time the permutation is applied.

The flipper is relatively easy to see as a simultaneous swap of 10 vertex pairs over the vertical axis through 0 and B. Vertex 1 moves to L and L moves to 1, 2 moves to K and K to 2, and so on, each effectively swapping places.

Vertices 0 and B are absent from the permutation and unaffected. In other words its action permutes the sequence 0123456789ABCDEFGHIJKL into 0LKJIHGFEDCBA987654321 (stabilising 0 and B) as you'd expect of such a flipper. Hover over the image with your mouse to see the flip in action. Or click here to see the 10 components of the permutation acting in sequence. The part of the graph unaffected by the permutation is in red.

The second generator is harder to see because the twist's rotation takes place around a pair of 11-gonal paths which - due to the tetradic connectivity of the graph - is somewhat tortuously buried within the 22-gon. They're showing as two, blue and green, polygons. The cyclic permutation notation describes the simultaneous rotation through that pair of 11-gons. The first cycle moves vertex 0 to vertex 1, vertex 1 to vertex H, vertex H to vertex I, I to 9, 9 to 8 etc all the way around until the final move from vertex L to vertex 0. All vertices are moved by this operation (hence no red pieces). The group action maps the vertices 0123456789ABCDEFGHIJKL to 1HG65LKFE87234DCJI9AB0. Click here to see the two component permutations in sequence, or hover over the figure to see the complete action.

Certainly the graph may be re-presented to show the rotations more clearly - at the expense of making the Hamiltonian circuit hard to apprehend. Relabelling the vertices, as in the following graph, effectively disentangles the 11-gons. The original Hamiltonian circuit is still there, traced along the blue edges via 0123456789ABCDEFGHIJKL as before, but is no longer on the circumference.

The Hamiltonian circuit jumps back and forth between the two orbits, as in fig. 6, and is not itself an orbit of the group. The only thing the group does do for us, musically speaking, is ensure that - by its operations - it maintains a cycle of hexads (which may be changed by the operation) where adjacent hexads always have a common tetrad (which may also changed by the operation). The group has no idea it's doing this for us, all it 'knows' is that the cubic graph - of which it's an automorphism - is structured the way it is, and that it will preserve that structure.

The identity permutation - formally (0)(1)(2)(3)(4)(5)(6)(7)(8)(9)(A)(B)(C)(D)(E)(F)(G)(H)(I)(J)(K)(L) but abbreviated to () since permutations which move something to itself are conventionally omitted - and the two generator permutations (1L)(2K)(3J)(4I)(5H)(6G)(7F)(8E)(9D)(AC) and (01HI98ED45L)(2GJA7FC36KB) are only three of the twenty two elements of this group.

We can usefully notate those operations as 'e' for the identity (it's a convention), as 'f' for the flip and as 'r' for the twist/rotator permutations. In particular, r twists its way around the two eleven stage zig-zaggy polygonal paths - not the single twenty-two stage circumference. Don't be overly misled by the term 'rotation'.

You may even, if so inclined, write r as the product of two mutually exclusive, non-interfering, rotations 'p' and 'q' - respectively the permutation cycles (01HI98ED45L) - the blue 11-gon - and (2GJA7FC36KB) - the green one. Acting independently their product, r = pq = qp, is commutative. One sees that p2 = (0H9E4L1I8D5), that q2 = (2J7C6BGAF3K) and hence that r2 = p2q2 = q2p2 - and so on, for higher powers.

Reversing the strings inside the parentheses inverts the operation, explaining why 'flippers' involving solely permutation cycles of length two are self-inverting. Thus r-1 = p-1q-1 = (0L54DE89IH1)(2BK63CF7AJG). So a flip followed by a rotation followed by a further flip is equivalent to the reverse rotation - true of all dihedrals.

You might also have noticed that p itself is a Hamiltonian cycle of length 11 - eleven of the blue cubic graph's edges form its 'circumference'. We also see that q is not a Hamiltonian, but that q4 = (276GFKJCBA3) is a Hamiltonian (as is, naturally, q-4).

The following table shows all 22 of the group's elements written in terms of r and f, their orders (i.e. how many of that operation would have to be performed in sequence to be equivalent to the identity), the equivalent permutation product (in cycle notation) and the vertex action (the resulting reorder if the group were acting on a set of vertex labels).

Bear in mind that the labels on the vertices are there for our convenience only - the group operations 'see' only a bunch of (in this case 22) points abstractly linked with each other (with, in this case, 33 relations) for 'whatever reason'. There's no 'geography' but only an invariant structure which can be operated upon in 22 distinct ways whilst preserving their connectivities in exactly the same symmetric pattern.