Higher Rank EDO Generators Again

My last post on this topic is becoming quite messy, but I haven't figured things out quite well enough that I can delete and rewrite.

24-EDO is a tuning system with a single generating interval size, so we may call it rank-1 in /frequency/ space. However, to analyze it in terms of intervals, we need to go to a much higher rank in /interval/ space. Let me explain.

Many EDOs can be defined over rank-2 interval space by defining a tuning system which has, as a basis, a purely tuned octave and a second interval which is "tempered", i.e. tuned to a frequency ratio of 1/1. However, there is no rank-2 interval that can be tempered out to produce 24-EDO. Neither are there two rank-3 intervals that can be tempered while keeping the octave pure. If you try to do it, all of the intervals in your interval space will fall on the 12-EDO subset. In order to analyze 24-EDO music intervallically, you need to go up to at least rank-4 interval space, at which point you get neutral intervals like the septimal super-major second, SpM2, or the septimal sub-minor third, Sbm3.

It took me a while to figure out how to predict that minimal rank of the interval space associated with an EDO, but I've done it. Consider a definition of 24-EDO in which we tune {the intervals justly associated to the prime harmonics} to the respective nearest steps of 24-EDO. Below I show the 24-EDO steps for harmonics (2/1, 3/1, 5/1, 7/1, 11/1, 13/1, 17/1, 19/1):

    [24, 38, 56, 67, 83, 89, 98, 102]

When I say 56 steps is how 24-EDO tunes the 5th harmonic, it would be more technically correct to say that we can define a 24-EDO which tunes the M17 (which is justly to to 5/1) to 2^(56/24). This is like 14 cents sharp of the pure value. To find the closest step, we find {i} which solves this equation 

    5/1 = 2^(i / 24)

and round it to the nearest integral step, so that 24-EDO tunes M17 to

    round(24 * log_2(5))

which is 56.

You can see that the first three harmonics are all tuned to even values. If we define our rank-3 intervals by combinations of the first three harmonics and all of them are tuned to even steps, then of course we won't get any intervals tuned to odd steps, and the whole thing collapses to 12-EDO. The fact that the first prime harmonic tuned to an odd number of steps is the 7th harmonic, and the fact that 7 is the fourth prime, is most of the explanation of why 24-EDO is minimally analyzed with rank-4 interval space. But instead of looking for the first odd step, the general procedure is to look for the first point at which all the harmonics so far have no jointly common factor. 

I'll say it again. The minimal-rank interval space needed to analyze a given EDO is found as the smallest number of sequential prime harmonics such that the set has {1} as its greatest common divisor.

Let's look at 60-EDO to investigate. Here are its prime harmonic intervals, up to the one justly tuned to 19/1, but now tuned to 60-EDO steps: [60, 95, 139, 168, 208, 222, 245, 255]. Brief inspection tells us that 60-EDO must be rank-3, based on these facts:

    GCD(60) = 60

    GCD(60, 95) = 5

    GCD(60, 95, 139) = 1.

Here's the prime-harmonic GCD classification of EDOs:

    rank-2: [5, 7, 8, 9, 11, 12, 13, 16, 17, 18, 19, 22, 23, 26, 27, 29, 31, 32, 33, 37, 39, 40, 41, 42, 43, 45, 46, 47, 49, 50, 53, 55, 56, 59, 61, 63, 64, 65, 67, 69, 70, 71, 73, 74, 75, 77, 79, 80, 81, 83, 88, 89, 90, 91, 94, 95, 97, 98, 99]-EDO

    rank-3: [10, 14, 15, 21, 25, 28, 34, 35, 48, 51, 52, 54, 58, 60, 72, 78, 84, 85, 87, 96]-EDO

    rank-4: [6, 24, 36, 38, 57, 66, 68, 76, 86, 100]-EDO

    rank-5: [20, 93]-EDO

    rank-6: [30, 44, 62, 82]-EDO

    rank-8: [92]-EDO

Here also is the prime harmonic GCD classification of EDOs with rank >= 6, for divisions below 600:

    rank-6 : [30, 44, 62, 82, 136, 144, 218, 404, 478, 496, 510]-EDO

    rank-7 : [174, 448, 540]-EDO

    rank-8 : [92]-EDO

    rank-9 : [322]-EDO

I haven't proved anything yet about when the definition of an EDO in this way, by rounding prime harmonics, will be equivalent to a definition in terms of tempering. But these ranks do match the ranks that I found by tempering (up to up to 100-EDO divisions at least) so that's encouraging.

Here are the commas that can be used to define the EDOs which are minimally associated to rank-2 interval space. The commas are written in prime harmonic coordinates, along with the basis matrix that includes the octave.

3-EDO: ([5, -3] → 32/27). Basis: ([1, 0], [5, -3])

5-EDO: ([8, -5] → 256/243). Basis: ([1, 0], [8, -5])

7-EDO: ([-11, 7] → 2187/2048). Basis: ([1, 0], [-11, 7])

8-EDO: ([13, -8] → 8192/6561). Basis: ([1, 0], [13, -8])

9-EDO: ([-14, 9] → 19683/16384). Basis: ([1, 0], [-14, 9])

11-EDO: ([-17, 11] → 177147/131072). Basis: ([1, 0], [-17, 11])

12-EDO: ([-19, 12] → 531441/524288). Basis: ([1, 0], [-19, 12])

13-EDO: ([21, -13] → 2097152/1594323). Basis: ([1, 0], [21, -13])

16-EDO: ([-25, 16] → 43046721/33554432). Basis: ([1, 0], [-25, 16])

17-EDO: ([27, -17] → 134217728/129140163). Basis: ([1, 0], [27, -17])

18-EDO: ([29, -18] → 536870912/387420489). Basis: ([1, 0], [29, -18])

19-EDO: ([-30, 19] → 1162261467/1073741824). Basis: ([1, 0], [-30, 19])

22-EDO: ([35, -22] → 34359738368/31381059609). Basis: ([1, 0], [35, -22])

23-EDO: ([-36, 23] → 94143178827/68719476736). Basis: ([1, 0], [-36, 23])

26-EDO: ([-41, 26] → 2541865828329/2199023255552). Basis: ([1, 0], [-41, 26])

27-EDO: ([43, -27] → 8796093022208/7625597484987). Basis: ([1, 0], [43, -27])

29-EDO: ([46, -29] → 70368744177664/68630377364883). Basis: ([1, 0], [46, -29])

31-EDO: ([-49, 31] → 617673396283947/562949953421312). Basis: ([1, 0], [-49, 31])

32-EDO: ([51, -32] → 2251799813685248/1853020188851841). Basis: ([1, 0], [51, -32])

33-EDO: ([-52, 33] → 5559060566555523/4503599627370496). Basis: ([1, 0], [-52, 33])

37-EDO: ([59, -37] → 576460752303423488/450283905890997363). Basis: ([1, 0], [59, -37])

39-EDO: ([62, -39] → 4611686018427387904/4052555153018976267). Basis: ([1, 0], [62, -39])

40-EDO: ([-63, 40] → 12157665459056928801/9223372036854775808). Basis: ([1, 0], [-63, 40])

41-EDO: ([65, -41] → 36893488147419103232/36472996377170786403). Basis: ([1, 0], [65, -41])

42-EDO: ([67, -42] → 147573952589676412928/109418989131512359209). Basis: ([1, 0], [67, -42])

43-EDO: ([-68, 43] → 328256967394537077627/295147905179352825856). Basis: ([1, 0], [-68, 43])

45-EDO: ([-71, 45] → 2954312706550833698643/2361183241434822606848). Basis: ([1, 0], [-71, 45])

46-EDO: ([73, -46] → 9444732965739290427392/8862938119652501095929). Basis: ([1, 0], [73, -46])

47-EDO: ([-74, 47] → 26588814358957503287787/18889465931478580854784). Basis: ([1, 0], [-74, 47])

49-EDO: ([78, -49] → 302231454903657293676544/239299329230617529590083). Basis: ([1, 0], [78, -49])

50-EDO: ([-79, 50] → 717897987691852588770249/604462909807314587353088). Basis: ([1, 0], [-79, 50])

53-EDO: ([-84, 53] → 19383245667680019896796723/19342813113834066795298816). Basis: ([1, 0], [-84, 53])

55-EDO: ([-87, 55] → 174449211009120179071170507/154742504910672534362390528). Basis: ([1, 0], [-87, 55])

56-EDO: ([89, -56] → 618970019642690137449562112/523347633027360537213511521). Basis: ([1, 0], [89, -56])

59-EDO: ([94, -59] → 19807040628566084398385987584/14130386091738734504764811067). Basis: ([1, 0], [94, -59])

61-EDO: ([97, -61] → 158456325028528675187087900672/127173474825648610542883299603). Basis: ([1, 0], [97, -61])

63-EDO: ([100, -63] → 1267650600228229401496703205376/1144561273430837494885949696427). Basis: ([1, 0], [100, -63])

64-EDO: ([-101, 64] → 3433683820292512484657849089281/2535301200456458802993406410752). Basis: ([1, 0], [-101, 64])

65-EDO: ([-103, 65] → 10301051460877537453973547267843/10141204801825835211973625643008). Basis: ([1, 0], [-103, 65])

67-EDO: ([-106, 67] → 92709463147897837085761925410587/81129638414606681695789005144064). Basis: ([1, 0], [-106, 67])

69-EDO: ([-109, 69] → 834385168331080533771857328695283/649037107316853453566312041152512). Basis: ([1, 0], [-109, 69])

70-EDO: ([111, -70] → 2596148429267413814265248164610048/2503155504993241601315571986085849). Basis: ([1, 0], [111, -70])

71-EDO: ([113, -71] → 10384593717069655257060992658440192/7509466514979724803946715958257547). Basis: ([1, 0], [113, -71])

73-EDO: ([116, -73] → 83076749736557242056487941267521536/67585198634817523235520443624317923). Basis: ([1, 0], [116, -73])

74-EDO: ([-117, 74] → 202755595904452569706561330872953769/166153499473114484112975882535043072). Basis: ([1, 0], [-117, 74])

75-EDO: ([119, -75] → 664613997892457936451903530140172288/608266787713357709119683992618861307). Basis: ([1, 0], [119, -75])

77-EDO: ([-122, 77] → 5474401089420219382077155933569751763/5316911983139663491615228241121378304). Basis: ([1, 0], [-122, 77])

79-EDO: ([-125, 79] → 49269609804781974438694403402127765867/42535295865117307932921825928971026432). Basis: ([1, 0], [-125, 79])

80-EDO: ([127, -80] → 170141183460469231731687303715884105728/147808829414345923316083210206383297601). Basis: ([1, 0], [127, -80])

81-EDO: ([-128, 81] → 443426488243037769948249630619149892803/340282366920938463463374607431768211456). Basis: ([1, 0], [-128, 81])

83-EDO: ([132, -83] → 5444517870735015415413993718908291383296/3990838394187339929534246675572349035227). Basis: ([1, 0], [132, -83])

88-EDO: ([-139, 88] → 969773729787523602876821942164080815560161/696898287454081973172991196020261297061888). Basis: ([1, 0], [-139, 88])

89-EDO: ([-141, 89] → 2909321189362570808630465826492242446680483/2787593149816327892691964784081045188247552). Basis: ([1, 0], [-141, 89])

90-EDO: ([143, -90] → 11150372599265311570767859136324180752990208/8727963568087712425891397479476727340041449). Basis: ([1, 0], [143, -90])

91-EDO: ([-144, 91] → 26183890704263137277674192438430182020124347/22300745198530623141535718272648361505980416). Basis: ([1, 0], [-144, 91])

94-EDO: ([149, -94] → 713623846352979940529142984724747568191373312/706965049015104706497203195837614914543357369). Basis: ([1, 0], [149, -94])

95-EDO: ([151, -95] → 2854495385411919762116571938898990272765493248/2120895147045314119491609587512844743630072107). Basis: ([1, 0], [151, -95])

97-EDO: ([154, -97] → 22835963083295358096932575511191922182123945984/19088056323407827075424486287615602692670648963). Basis: ([1, 0], [154, -97])

98-EDO: ([-155, 98] → 57264168970223481226273458862846808078011946889/45671926166590716193865151022383844364247891968). Basis: ([1, 0], [-155, 98])

99-EDO: ([157, -99] → 182687704666362864775460604089535377456991567872/171792506910670443678820376588540424234035840667). Basis: ([1, 0], [157, -99])

Here are just a few rank-2 names for those rank-2 commas:

3-EDO: (m3 → 32/27)

5-EDO: (m2 → 256/243)

7-EDO: (A1 → 2187/2048)

8-EDO: (d4 → 8192/6561)

9-EDO: (A2 → 19683/16384)

11-EDO: (A3 → 177147/131072)

12-EDO: (A0 → 531441/524288)

13-EDO: (dd5 → 2097152/1594323)

16-EDO: (AA2 → 43046721/33554432)

17-EDO: (dd3 → 134217728/129140163)

18-EDO: (dd6 → 536870912/387420489)

19-EDO: (AA0 → 1162261467/1073741824)

and here's a rank-2 reduction graph:

     256/243: 5 ← (10, 15, 20, 25, 30)

2187/2048: 7 ← (14, 21, 28, 35)

531441/524288: 12 ← (24, 36, 48, 60, 72, 84, 96)

134217728/129140163: 17 ← (34, 51, 68, 85)

1162261467/1073741824: 19 ← (38, 57, 76)

34359738368/31381059609: 22 ← (44, 66) 

2541865828329/2199023255552: 26 ← (52)

8796093022208/7625597484987: 27 ← (54)

70368744177664/68630377364883: 29 ← (58, 87)

617673396283947/562949953421312: 31 ← (62, 93)

4611686018427387904/4052555153018976267: 39 ← (78)

36893488147419103232/36472996377170786403: 41 ← (82)

328256967394537077627/295147905179352825856: 43 ← (86)

9444732965739290427392/8862938119652501095929: 46 ← (92)

Here are rank-3 definitions of some EDOs, including some that could be defined in rank-2:

3-EDO: (M2 → 10/9, m2 → 16/15). Basis: ([1, 0, 0], [1, -2, 1], [4, -1, -1])

4-EDO: (AcM2 → 9/8 , A1 → 25/24). Basis: ([1, 0, 0], [-3, 2, 0], [-3, -1, 2])

5-EDO: (m2 → 16/15 , Acm2 → 27/25). Basis: ([1, 0, 0], [4, -1, -1], [0, 3, -2])

7-EDO: (A1 → 25/24 , Ac1 → 81/80). Basis: ([1, 0, 0], [-3, -1, 2], [-4, 4, -1])

8-EDO: (m2 → 16/15 , GrA1 → 250/243). Basis: ([1, 0, 0], [4, -1, -1], [1, -5, 3])

9-EDO: (Acm2 → 27/25 , d2 → 128/125). Basis: ([1, 0, 0], [0, 3, -2], [7, 0, -3])

10-EDO: (A1 → 25/24 , Grm2 → 256/243). Basis: ([1, 0, 0], [-3, -1, 2], [8, -5, 0])

11-EDO: (AcA1 → 135/128 , d3 → 144/125). Basis: ([1, 0, 0], [-7, 3, 1], [4, 2, -3])

12-EDO: (Ac1 → 81/80 , d2 → 128/125). Basis: ([1, 0, 0], [-4, 4, -1], [7, 0, -3])

13-EDO: (A1 → 25/24 , GrGrm3 → 2560/2187). Basis: ([1, 0, 0], [-3, -1, 2], [9, -7, 1])

14-EDO: (Acm2 → 27/25 , Grd2 → 2048/2025). Basis: ([1, 0, 0], [0, 3, -2], [11, -4, -2])

15-EDO: (d2 → 128/125 , GrA1 → 250/243). Basis: ([1, 0, 0], [7, 0, -3], [1, -5, 3])

16-EDO: (AcA1 → 135/128 , dAcm2 → 648/625). Basis: ([1, 0, 0], [-7, 3, 1], [3, 4, -4])

17-EDO: (A1 → 25/24 , GrGrm2 → 20480/19683). Basis: ([1, 0, 0], [-3, -1, 2], [12, -9, 1])

18-EDO: (d2 → 128/125 , GrM2 → 800/729). Basis: ([1, 0, 0], [7, 0, -3], [5, -6, 2])

19-EDO: (Ac1 → 81/80 , dd0 → 3125/3072). Basis: ([1, 0, 0], [-4, 4, -1], [-10, -1, 5])

21-EDO: (d2 → 128/125 , AcAcA1 → 2187/2048). Basis: ([1, 0, 0], [7, 0, -3], [-11, 7, 0])

22-EDO: (GrA1 → 250/243 , Grd2 → 2048/2025). Basis: ([1, 0, 0], [1, -5, 3], [11, -4, -2])

23-EDO: (AcA1 → 135/128 , dAcAcm2 → 6561/6250). Basis: ([1, 0, 0], [-7, 3, 1], [-1, 8, -5])

25-EDO: (Grm2 → 256/243 , dd0 → 3125/3072). Basis: ([1, 0, 0], [8, -5, 0], [-10, -1, 5])

26-EDO: (Ac1 → 81/80 , ddd0 → 78125/73728). Basis: ([1, 0, 0], [-4, 4, -1], [-13, -2, 7])

27-EDO: (d2 → 128/125 , GrGrA1 → 20000/19683). Basis: ([1, 0, 0], [7, 0, -3], [5, -9, 4])

28-EDO: (dAcm2 → 648/625 , AcAcA1 → 2187/2048). Basis: ([1, 0, 0], [3, 4, -4], [-11, 7, 0])

29-EDO: (GrA1 → 250/243 , Grdd0 → 16875/16384). Basis: ([1, 0, 0], [1, -5, 3], [-14, 3, 4])

31-EDO: (Ac1 → 81/80 , Grdddd3 → 393216/390625). Basis: ([1, 0, 0], [-4, 4, -1], [17, 1, -8])

32-EDO: (Grd2 → 2048/2025 , GrAA1 → 3125/2916). Basis: ([1, 0, 0], [11, -4, -2], [-2, -6, 5])

33-EDO: (d2 → 128/125 , AcAcAcA1 → 177147/163840). Basis: ([1, 0, 0], [7, 0, -3], [-15, 11, -1])

34-EDO: (Grd2 → 2048/2025 , ddAcm0 → 15625/15552). Basis: ([1, 0, 0], [11, -4, -2], [-6, -5, 6])

35-EDO: (AcAcA1 → 2187/2048 , dd0 → 3125/3072). Basis: ([1, 0, 0], [-11, 7, 0], [-10, -1, 5])

37-EDO: (GrA1 → 250/243 , GrGrddd3 → 262144/253125). Basis: ([1, 0, 0], [1, -5, 3], [18, -4, -5])

39-EDO: (d2 → 128/125 , ddAcAcAcm2 → 1594323/1562500). Basis: ([1, 0, 0], [7, 0, -3], [-2, 13, -8])

40-EDO: (dAcm2 → 648/625 , AcAcAcA1 → 177147/163840). Basis: ([1, 0, 0], [3, 4, -4], [-15, 11, -1])

41-EDO: (dd0 → 3125/3072 , GrGrA1 → 20000/19683). Basis: ([1, 0, 0], [-10, -1, 5], [5, -9, 4])

42-EDO: (d2 → 128/125 , GrGrGrAA1 → 5000000/4782969). Basis: ([1, 0, 0], [7, 0, -3], [6, -14, 7])

43-EDO: (Ac1 → 81/80 , Grdddddd4 → 50331648/48828125). Basis: ([1, 0, 0], [-4, 4, -1], [24, 1, -11])

45-EDO: (Ac1 → 81/80 , GrGrdddddd-1 → 146484375/134217728). Basis: ([1, 0, 0], [-4, 4, -1], [-27, 1, 11])

46-EDO: (Grd2 → 2048/2025 , ddAcAcm2 → 78732/78125). Basis: ([1, 0, 0], [11, -4, -2], [2, 9, -7])

47-EDO: (dAcAcm2 → 6561/6250 , Grdd0 → 16875/16384). Basis: ([1, 0, 0], [-1, 8, -5], [-14, 3, 4])

48-EDO: (Grdd0 → 16875/16384 , GrGrA1 → 20000/19683). Basis: ([1, 0, 0], [-14, 3, 4], [5, -9, 4])

49-EDO: (ddAcm0 → 15625/15552 , GrGrm2 → 20480/19683). Basis: ([1, 0, 0], [-6, -5, 6], [12, -9, 1])

50-EDO: (Ac1 → 81/80 , Grddddddd-2 → 1220703125/1207959552). Basis: ([1, 0, 0], [-4, 4, -1], [-27, -2, 13])

51-EDO: (GrA1 → 250/243 , GrGrddddd-1 → 17578125/16777216). Basis: ([1, 0, 0], [1, -5, 3], [-24, 2, 9])

52-EDO: (dAcm2 → 648/625 , GrGrGrdd0 → 4428675/4194304). Basis: ([1, 0, 0], [3, 4, -4], [-22, 11, 2])

53-EDO: (ddAcm0 → 15625/15552 , GrGrd0 → 32805/32768). Basis: ([1, 0, 0], [-6, -5, 6], [-15, 8, 1])

54-EDO: (Grd2 → 2048/2025 , GrGrAAA1 → 390625/354294). Basis: ([1, 0, 0], [11, -4, -2], [-1, -11, 8])

55-EDO: (Ac1 → 81/80 , GrGrdddddddd5 → 6442450944/6103515625). Basis: ([1, 0, 0], [-4, 4, -1], [31, 1, -14])

56-EDO: (Grd2 → 2048/2025 , dddAcAcm0 → 1953125/1889568). Basis: ([1, 0, 0], [11, -4, -2], [-5, -10, 9])

58-EDO: (Grd2 → 2048/2025 , ddAcAcAcm2 → 1594323/1562500). Basis: ([1, 0, 0], [11, -4, -2], [-2, 13, -8])

59-EDO: (GrA1 → 250/243 , GrGrdddddd4 → 268435456/263671875). Basis: ([1, 0, 0], [1, -5, 3], [28, -3, -10])

60-EDO: (dd0 → 3125/3072 , GrGrGrd0 → 531441/524288). Basis: ([1, 0, 0], [-10, -1, 5], [-19, 12, 0])

61-EDO: (GrGrA1 → 20000/19683 , GrGrddd3 → 262144/253125). Basis: ([1, 0, 0], [5, -9, 4], [18, -4, -5])

63-EDO: (dd0 → 3125/3072 , GrGrGrm2 → 1638400/1594323). Basis: ([1, 0, 0], [-10, -1, 5], [16, -13, 2])

64-EDO: (dAcm2 → 648/625 , GrGrGrGrdd0 → 71744535/67108864). Basis: ([1, 0, 0], [3, 4, -4], [-26, 15, 1])

65-EDO: (GrGrd0 → 32805/32768 , ddAcAcm2 → 78732/78125). Basis: ([1, 0, 0], [-15, 8, 1], [2, 9, -7])

67-EDO: (Ac1 → 81/80 , GrGrddddddddd6 → 824633720832/762939453125). Basis: ([1, 0, 0], [-4, 4, -1], [38, 1, -17])

69-EDO: (Ac1 → 81/80 , GrGrGrdddddddddd-3 → 2288818359375/2199023255552). Basis: ([1, 0, 0], [-4, 4, -1], [-41, 1, 17])

70-EDO: (Grd2 → 2048/2025 , ddddAcAcm3 → 51018336/48828125). Basis: ([1, 0, 0], [11, -4, -2], [5, 13, -11])

71-EDO: (GrGrm2 → 20480/19683 , Grdddd3 → 393216/390625). Basis: ([1, 0, 0], [12, -9, 1], [17, 1, -8])

72-EDO: (ddAcm0 → 15625/15552 , GrGrGrd0 → 531441/524288). Basis: ([1, 0, 0], [-6, -5, 6], [-19, 12, 0])

73-EDO: (ddAcAcm2 → 78732/78125 , GrGrddd3 → 262144/253125). Basis: ([1, 0, 0], [2, 9, -7], [18, -4, -5])

74-EDO: (Ac1 → 81/80 , GrGrdddddddddd6 → 19791209299968/19073486328125). Basis: ([1, 0, 0], [-4, 4, -1], [41, 2, -19])

75-EDO: (GrGrA1 → 20000/19683 , GrGrdddd-1 → 2109375/2097152). Basis: ([1, 0, 0], [5, -9, 4], [-21, 3, 7])

77-EDO: (GrGrd0 → 32805/32768 , ddAcAcAcm2 → 1594323/1562500). Basis: ([1, 0, 0], [-15, 8, 1], [-2, 13, -8])

78-EDO: (Grd2 → 2048/2025 , ddddAcAcAcm0 → 244140625/229582512). Basis: ([1, 0, 0], [11, -4, -2], [-4, -15, 12])

79-EDO: (dd0 → 3125/3072 , GrGrGrGrd0 → 43046721/41943040). Basis: ([1, 0, 0], [-10, -1, 5], [-23, 16, -1])

80-EDO: (Grd2 → 2048/2025 , dddAcAcAcAcm0 → 390625000/387420489). Basis: ([1, 0, 0], [11, -4, -2], [3, -18, 11])

81-EDO: (Ac1 → 81/80 , GrGrGrddddddddddd-4 → 286102294921875/281474976710656). Basis: ([1, 0, 0], [-4, 4, -1], [-48, 1, 20])

83-EDO: (ddAcm0 → 15625/15552 , GrGrGrGrdd3 → 8388608/7971615). Basis: ([1, 0, 0], [-6, -5, 6], [23, -13, -1])

84-EDO: (ddAcAcm2 → 78732/78125 , GrGrGrd0 → 531441/524288). Basis: ([1, 0, 0], [2, 9, -7], [-19, 12, 0])

85-EDO: (dd0 → 3125/3072 , GrGrGrGrGrdd3 → 134217728/129140163). Basis: ([1, 0, 0], [-10, -1, 5], [27, -17, 0])

87-EDO: (ddAcm0 → 15625/15552 , GrGrGrGrddd3 → 67108864/66430125). Basis: ([1, 0, 0], [-6, -5, 6], [26, -12, -3])

88-EDO: (Ac1 → 81/80 , GrGrGrdddddddddddd-4 → 2384185791015625/2251799813685248). Basis: ([1, 0, 0], [-4, 4, -1], [-51, 0, 22])

89-EDO: (GrGrd0 → 32805/32768 , ddddAcm3 → 10077696/9765625). Basis: ([1, 0, 0], [-15, 8, 1], [9, 9, -10])

90-EDO: (Grd2 → 2048/2025 , ddddAcAcAcAcm0 → 1220703125/1162261467). Basis: ([1, 0, 0], [11, -4, -2], [0, -19, 13])

91-EDO: (ddAcm0 → 15625/15552 , GrGrGrGrd0 → 43046721/41943040). Basis: ([1, 0, 0], [-6, -5, 6], [-23, 16, -1])

94-EDO: (GrGrd0 → 32805/32768 , dddAcAcAcm0 → 9765625/9565938). Basis: ([1, 0, 0], [-15, 8, 1], [-1, -14, 10])

95-EDO: (GrGrA1 → 20000/19683 , Grdddddd4 → 50331648/48828125). Basis: ([1, 0, 0], [5, -9, 4], [24, 1, -11])

96-EDO: (Grdddd3 → 393216/390625 , GrGrGrd0 → 531441/524288). Basis: ([1, 0, 0], [17, 1, -8], [-19, 12, 0])

97-EDO: (GrGrGrm2 → 1638400/1594323 , dddAcAcm0 → 1953125/1889568). Basis: ([1, 0, 0], [16, -13, 2], [-5, -10, 9])

98-EDO: (Ac1 → 81/80 , GrGrGrdddddddddddddd8 → 324259173170675712/298023223876953125). Basis: ([1, 0, 0], [-4, 4, -1], [55, 2, -25])

99-EDO: (Grdddd3 → 393216/390625 , GrGrGrA1 → 1600000/1594323). Basis: ([1, 0, 0], [17, 1, -8], [9, -13, 5])

...

Here are some reductions (of EDOs with division > 53 and <= 100) that still happen when you have rank-3 commas available. 

19 ← (57)

31 ← (62)

22 ← (66)

34 ← (68)

19 ← (76)

41 ← (82)

43 ← (86)

46 ← (92)

31 ← (93)

50 ← (100)

.

Here are some rank-4 EDO definitions:

Rank-4 EDOs: 

6-EDO: (M2 → 10/9, m2 → 16/15, SbSbAcm2 → 49/48). Basis matrix: ([1, 0, 0, 0], [1, -2, 1, 0], [4, -1, -1, 0], [-4, -1, 0, 2])

24-EDO: (SbSbAcm2 → 49/48, Ac1 → 81/80, d2 → 128/125). Basis matrix: ([1, 0, 0, 0], [-4, -1, 0, 2], [-4, 4, -1, 0], [7, 0, -3, 0])

36-EDO: (Ac1 → 81/80, d2 → 128/125, SbSbSbdd3 → 686/675). Basis matrix: ([1, 0, 0, 0], [-4, 4, -1, 0], [7, 0, -3, 0], [1, -3, -2, 3])

38-EDO: (SpSpGrA0 → 50/49, Ac1 → 81/80, AA0 → 3125/3072). Basis matrix: ([1, 0, 0, 0], [1, 0, 2, -2], [-4, 4, -1, 0], [-10, -1, 5, 0])

57-EDO: (Ac1 → 81/80, SbSbSbAcAcm2 → 1029/1024, AA0 → 3125/3072). Basis matrix: ([1, 0, 0, 0], [-4, 4, -1, 0], [-10, 1, 0, 3], [-10, -1, 5, 0])

66-EDO: (GrA1 → 250/243, SbSbSbdd3 → 686/675, SbSbSbAcAcm2 → 1029/1024). Basis matrix: ([1, 0, 0, 0], [1, -5, 3, 0], [1, -3, -2, 3], [-10, 1, 0, 3])

68 EDO: (SbSbm2 → 245/243, Grd2 → 2048/2025, SbSbSbSbAcdd3 → 2401/2400). Basis matrix: ([1, 0, 0, 0], [0, -5, 1, 2], [11, -4, -2, 0], [-5, -1, -2, 4])
76 EDO: (Ac1 → 81/80, SbSbSbSbAcdd3 → 2401/2400, AA0 → 3125/3072). Basis matrix: ([1, 0, 0, 0], [-4, 4, -1, 0], [-5, -1, -2, 4], [-10, -1, 5, 0])
86 EDO: (Ac1 → 81/80, SpSpGrd1 → 6144/6125, SbSbSbSbAcdddd4 → 9604/9375). Basis matrix: ([1, 0, 0, 0], [-4, 4, -1, 0], [11, 1, -3, -2], [2, -1, -5, 4])
100-EDO: (Ac1 → 81/80, SpSpGrd1 → 6144/6125, SpSpSpSpGrAAAAA-2 → 78125/76832). Basis matrix: ([1, 0, 0, 0], [-4, 4, -1, 0], [11, 1, -3, -2], [-5, 0, 7, -4])

Rank-5 EDOs:
20 EDO: (A1 → 25/24, Sbm2 → 28/27, SbSbAcm2 → 49/48, AsAsGrd1 → 121/120). Basis matrix: ([1, 0, 0, 0, 0], [-3, -1, 2, 0, 0], [2, -3, 0, 1, 0], [-4, -1, 0, 2, 0], [-3, -1, -1, 0, 2])

93-EDO: (Ac1 → 81/80, SbAcd2 → 126/125, SbSbSbAcAcm2 → 1029/1024, DeDeDeSbAcAcM2 → 1344/1331). Basis matrix: ([1, 0, 0, 0, 0], [-4, 4, -1, 0, 0], [1, 2, -3, 1, 0], [-10, 1, 0, 3, 0], [6, 1, 0, 1, -3])

The rank-6 EDOs below 100-divisions are [30, 44, 62, 82]-EDO.

My program stopped working at rank-6 for some reason, but I tried figuring out minimal commas by hand. 

30-EDO: Sbm2 → 28/27, SbSbAcm2 → 49/48, AsGr1 → 55/54, AsSbd2 → 77/75, PrPrSpGrd1 → 169/168. Basis matrix: ([1, 0, 0, 0, 0, 0], [2, -3, 0, 1, 0, 0], [-4, -1, 0, 2, 0, 0], [-1, -3, 1, 0, 1, 0], [0, -1, -2, 1, 1, 0], [-3, -1, 0, -1, 0, 2])

44 EDO: SpSpGrA0 → 50/49, AsGr1 → 55/54, SpGr1 → 64/63, AsSpSpGrM0 → 99/98, PrPrSpGrd1 → 169/168. Basis matrix: ([1, 0, 0, 0, 0, 0], [1, 0, 2, -2, 0, 0], [-1, -3, 1, 0, 1, 0], [6, -2, 0, -1, 0, 0], [-1, 2, 0, -2, 1, 0], [-3, -1, 0, -1, 0, 2])

62 EDO: Ac1 → 81/80, AsSpSpGrM0 → 99/98, AsAsGrd1 → 121/120, SbAcd2 → 126/125, PrPrSpGrd1 → 169/168. Basis matrix: ([1, 0, 0, 0, 0, 0], [-4, 4, -1, 0, 0, 0], [-1, 2, 0, -2, 1, 0], [-3, -1, -1, 0, 2, 0], [1, 2, -3, 1, 0, 0], [-3, -1, 0, -1, 0, 2])

82 EDO: DeA1 → 100/99, SpA0 → 225/224, DeDeAcAcA1 → 243/242, DeDeSbSbAcAcM2 → 245/242, PrPrSpGrd1 → 169/168. Basis matrix: ([1, 0, 0, 0, 0, 0], [2, -2, 2, 0, -1, 0], [-5, 2, 2, -1, 0, 0], [-1, 5, 0, 0, -2, 0], [-1, 0, 1, 2, -2, 0], [-3, -1, 0, -1, 0, 2])


The absolute determinants of the basis matrices match the EDO divisions at least.

Rank-8: [92]-EDO

So 92-EDO is supposed to be rank-8 intervalically. And the program I wrote to find these things stopped working at rank-6. But I made this rank-6 matrix by hand, and it has determinant 92: 
    
    ([1, 0, 0, 0, 0, 0], [-3, -1, -1, 0, 2, 0], [1, 2, -3, 1, 0, 0], [4, 0, -2, -1, 1, 0], [0, -5, 1, 2, 0, 0], [-3, -1, 0, -1, 0, 2]]

But maybe that's not actually a definition of 92-EDO for some reason. I guess I should try tuning a bunch of intervals using that matrix and I can see if they span all the steps from 0 to 92.

If that doesn't work, I found a bunch of rank-8 matrices with determinant = 92 (and of course they're each made up of an octave and a bunch of comma intervals tuned to small frequency ratios). Here's the just tuning for one basis matrix which is quite low complexity in terms of the sum of tuned numerators and denominators:

    [221/220, 169/168, 136/135, 126/125, 364/361, 121/120, 91/90, 2/1]

and this one has low complexity in the sense of the largest numerator of the comma with the smallest cent value:

    [154/153, 136/135, 126/125, 364/361, 121/120, 343/340, 91/90, 2/1]

I meant to find the basis that minimizes the largesr numerator, but I messed up my sorting function. I'll fix it soon.

But maybe one of those will work.

...

Yeah, works fine. And they tune intervals in the same way. Empirically equivalent rank8  definitions of 92 EDO. Still have to look at tje rank 6 definition.

I'm open to the possibility that some of these sets of intervals are not jointly optimally small in their frequency ratios. Like, for 92-EDO I came up with two different notions of complexity because I didn't remember what I did for the program that worked at lower ranks and I didn't want to look through my code.

I think the programs I wrote did a good job of finding compact bases, but I can't declare without doubt that these are the canonical forms for defining EDOs minimally by tempering.

I would love it if there were a simple way to directly figure out small commas from the tunings of the prime harmonics, or even just a set of tempered commas that were adequate to define the EDO, if not to define it with intervals that get justly tuned to small frequency ratios. The closest thing that I know of is a trick to find a set of commas that are tempered out by a pair of EDOs. So like, if you want some commas for 92-EDO, you could find the commas associated with (92 and 12)-EDO or (92 and 46)-EDO and so on. 

And then you could arrange all the commas by size and see if a different subsets get you a good matrix? Mostly I just do brute force search over comma coordinates to get commas and that works quickly and reliably enough. But I'll figure out something systematic one day. I think I'd be happy if I could figure out a procedure that would automatically give me a comma for each prime-limit. Like a 3-limit fractions, a 5-limit fraction, a 7-limit fraction, so on.

Suppose I have found the tempered comma such that its tuned fraction is the smallest possible, for each prime-limit for an EDO, with limits up to the rank of the interval space. Like 82-EDO requires rank-6 intervallic interpretations, so up to rank 6 we have:
    
    36893488147419103232/36472996377170786403 # rank-2 (3-limit)
    3125/3072 # rank-3 (5-limit)
    225/224 # rank-4 (7-limit)
    100/99 # rank-5 (11-limit)
    169/168 # rank-6 (13-limit)

If we have the smallest comma of each prime limit, that should make a suitable basis with absolute determinant 82 when combined with the octave, right?

After that we can look for a few tempered commas with small associated fractions that aren't necessarily the shortest for each prime limit, like:  (243/242), (245/242), (245/243), (441/440), (540/539), (625/616), (676/675), (875/864).

Those first three fractions look a little crazy, but they're real. Anyway, now we hope we can mix some of those in to replace longer fractions in the old 82-absolute-determinant basis, and still have a suitable basis, but a shorter one. Semi-automatically, hopefully.

Why are we doing this again? Because even though EDOs are 1D in frequency space, their intervallic interpretations live in higher dimensional interval spaces, and wouldn't it be nice if we could describe those spaces without having to make reference to garbage like 36893488147419103232/36472996377170786403 # rank-2 (3-limit). I think it would be nice. No one needs to look at that to understand 82-EDO.

...

No comments:

Post a Comment