Introduction

In these days where algorithms can drive much of our experience, I had a recent encounter with a band calling itself Hejira who had posted a video of their performance of Joni Mitchell’s song, which – not to put too fine a point on it – is really quite wonderful.

Now my main point of contact with the piece is from the Shadows and Light live album featuring one of the most amazing backing bands ever assembled:

All of which is just to say that I love this song. So having heard a cover that I thought did justice to the original recording, it got me thinking about what I might like to do to produce a cover of the song. Knowing Joni’s extensive use of open tunings, coupled with literally everything else about this recording, my thoughts ran towards a Just-intonated version using the tools I have readily to hand: voices and automated synthesis.

Designing a Just Environment

Step one was simply to see how the harmonies would render in a JI schema. I hunted down the transcriptions by Eyolf Østrem and Howard Wright on Joni's web site to find out the basic tuning and chord shapes. The basic tuning is given as x77325. The numbers are the relative tuning in frets over the mext lower string; so since 7 frets is nominally a perfect fifth, and five frets a perfect fourth, this open tuning can ring very beautifully when tuned harmonically. In list notation the tuning is

        (define joni-x77325 '(1 3/2 9/4 8/3 3/1 4/1))
      

It is also an excellent candidate for JI exploration. For this song, Joni tuned everything to C, giving the open strings CGDFGC and making a delightful cluster in the prime-3 limit that might be conventionally called a Csus4+9 chord. In pure JI terms, this cluster forms the extended ratio 12:18:27:32:36:48. So after looking at the chords Joni actually uses in Hejira the open tuning is fretted at the 3rd, 4th, 6th, and 8th frets. Except for the sixth fret (the tritone), these all represent intervals relating to the major/minor third interval, and if we choose the usual five-prime limit fractions (6/5 and 5/4), you get the following set of tones:

        (define joni-hejira-frets
         (1 16/15 9/8 6/5 5/4 81/64 4/3 27/20 45/32 3/2 8/5 5/3 27/16 16/9 9/5 15/8))
    

These 16 tones provide an interesting basis to begin. Notice that even though we did not specify an interval to use in place of the tritone, two candidates already interpolate between the fourth and the fifth: 27/20 and 45/32. It's a little surprising that the usual 16/15 semitone is available as the first fret isn't directly used. I am personally not bothered by the translational asymmetry arising from the different distances in these intervals, but the fact that some intervals are missing their complementary tones is a feature that I usually try to avoid as it tends to make it difficult to return to the tonal center in the octave.

Adding in the 16/15 semitone for all of the open strings is easy. And fortunately, I have an automated procedure which will enrich a set of tones to ameliorate the problem of returning to the octave. As with most of my code for working with tunings, it is written in the Scheme dialect of Lisp. And when we apply it to the joni-hejira-frets scale, we get

        (define joni-hejira-5
         (enrich-scale-with-complements
          (guitar-scale joni-x77325
                        ;; note 16/15 and it's complement 15/8 added
                        '(1 16/15 9/8 6/5 5/4 4/3 3/2 8/5 15/8)))

        =>
        (1 135/128 16/15 10/9 9/8 32/27 6/5 5/4 81/64 4/3 27/20 45/32
         64/45 40/27 3/2 128/81 8/5 5/3 27/16 16/9 9/5 15/8 256/135)
      

Which makes for a 23-note 5-prime limit scale with a nice helping of cubes and a slight excess of 5-tonality notes. It also has 4 different approximations of the tritone to allow fine-tuning the uses of mid-octave harmonies. Taking a look at the scale in cents, so we can get a sense of how the tones are distributed through the octave

scale-summary joni-hejira-5
note tone cents interval
0 1 0.00.0
1 135/128 92.17992.179
2 16/15 111.73119.553
3 10/9 182.40470.672
4 9/8 203.91021.506
5 32/27 294.13590.225
6 6/5 315.64121.506
7 5/4 386.31470.672
8 81/64 407.82021.506
9 4/3 498.04590.225
10 27/20 519.55121.506
11 45/32 590.22470.672
12 64/45 609.77619.553
13 40/27 680.44970.672
14 3/2 701.95521.506
15 128/81 792.18090.225
16 8/5 813.68621.506
17 5/3 884.35870.672
18 27/16 905.86521.506
19 16/9 996.08990.225
20 9/5 1017.59621.506
21 15/8 1088.26970.672
22 256/135 1107.82119.553
23 2 1200.00092.179

So that looks playable, I guess. ¢20 is a bit of a thin interval but it does provide a clear switch between tonalities. And what's up with the fact that ¢20 is in-between all of the other pairs of notes? And then we have the fact that ¢20 + ¢70 = ¢90. Is there an EDO generator lurking underneath this particular set of tones?

Towards an EDO representation

Now, at this moment in time (July 2023), I am not the world's greatest expert on microtonal tunings. In fact I see myself as a bit of a self-taught kook; but I don't mind feeling that way because it allows me to remain playful and enjoy the intersectionality of arts through mathematics and music all in one neat package. Over the last several years, I have been slowly absorbing different formal concepts via the Microtonal Music and Tuning Theory Facebook group; including readings from The Xenharmonic Wiki and the Tonalsoft Encyclopedia. But somewhere along the line I have noticed a common pattern among some microtonal practitioners where they use a very finely-divided real-valued EDO as a grid for approximating a rational-valued JI division of the octave. The joni-hejira-5scale listed above looks like it might be a good candidate for such a treatment. Given that all of the intervals are within a cent or two of a multiple of ¢10, perhaps we are looking at a scale that can be approximated by a "nice" subset of 120EDO?

As a first guess, I just truncated everything to units of ¢10, giving three scale steps

        (define jh120-truncated-deltas
                '(0 90 20 70 20 90 20 70 20 90 20 70
                20 70 20 90 20 70 20 90 20 70 20 90))
      

And then I thought it would be interesting to check how it matched up with an algorithm I have been using to approximate one scale (usually EDO) using a subset of a larger (usually JI) scale. This time I would be reversing the process to see how close my naive approach actually was. The approximation gave

        (define jh120-approx-cents
          (map (lambda (t) (inexact->exact (floor (tone->cents t))))
            (approximate-subset joni-hejira-5
                                (et-scale 120))))
        =>
        (0 90 110 180 200 290 320 390 410 500 520 590
         610 680 700 790 810 880 910 1000 1020 1090 1110 1200)
      

Eventually I saw it. The interval between the fifth and sixth notes was larger than ¢20. It was actually ¢30! And of course there was a corresponding extra ¢10 fixup between notes 17 and 18. Oops. Those truncations added up, and my approximation program took them in units of ¢10, exactly as it was supposed to. This makes the scale balance nicely at the octave, too. But it comes at the cost of our nice 20+70=90 relationship.

I am a little bit attached to the ¢(20, 70, 90) framework, because it looked like it might also be well-suited to a physical impementation (as opposed to a computer controlled one). A higher-resolution five-prime limit keyboard for performing JI jazz seems like a good thing that I might like to build. Can we find a way to distribute the missing ¢20 from the jh120-truncated-deltas?

It turns out that we can, with bells on. If we insert an extra ¢20 interval right after the ¢600 true tritone, not only do we get back to a full octave scale, but we also get the octave closure property back which was part of the original JI construction in the first place. This version of the hejira scale (jh120-tritone-cents) now has 24 distinct tones and also looks like it admits a nice physical implementation.

So to summarize the different approaches:

implementations of jh120
truncated tritone approx
cents interval cents interval cents interval
000000
909090909090
110201102011020
180701807018070
200202002020020
290902909029090
310203102032030
380703807039070
400204002041020
490904909050090
510205102052020
580705807059070
6002060020
670706202061020
690206907068070
780907102070020
800208009079090
870708202081020
890208907088070
980909102091030
100020100090100070
107070102020102020
109020109070109070
118090111020111020
gap20120090120090

And how does it sound? truth be told, I don't know. All of my audible explorations so far have used the joni-hejira-5 scale. I find EDOs more interesting for building practical instruments than for composition. But of course, one has to evaluate the tuning before building the instrument, especially if it has a complex tone layout like a traditional keyboard. Eventually, I hope to get to that stage in this exploration.

And One More Thing...

After the MMTM Group detected my mistakes, Paul Erlich suggested that I knew more than I actually did:

118 is well known for being an extremely good 5-limit ET, with 5-odd-limit errors a small fraction of a cent. Perhaps David miscalculated and meant 118 rather than 120...

Not to put too fine a point on it, but my knowledge of EDO mappings generally is poor and I did not mean 118EDO. But I gave it a look because of those reasons. 118EDO has a unit interval size of ¢10.17, giving the step pattern from jh120-truncated-deltas a very accurate approximation of the 5-prime limit intervals.

hejira-118 hejira-5 delta
# cents interval units cents
0 0.0 0.0 0 0.0 0.0
1 91.525 91.5259 92.179 0.653
2 111.864 20.3392111.731 -0.133
3 183.051 71.1867182.404 -0.647
4 203.390 20.3392203.910 0.520
5 294.915 91.5259294.135 -0.780
6 315.254 20.3392315.641 0.387
7 386.441 71.1867386.314 -0.127
8 406.780 20.3392407.820 1.040
9 498.305 91.5259498.045 -0.260
10518.644 20.3392519.551 0.907
11589.831 71.1867590.224 0.393
12610.169 20.3392609.776 -0.393
13681.356 71.1867680.449 -0.907
14701.695 20.3392701.955 0.260
15793.220 91.5259792.180 -1.040
16813.559 20.3392813.686 0.127
17884.746 71.1867884.359 -0.387
18905.085 20.3392905.865 0.780
19996.610 91.5259996.090 -0.520
201016.949 20.33921017.596 0.647
211088.136 71.18671088.269 0.133
221108.475 20.33921107.821 -0.653
231200.0 91.52591200.0 0.0

This is actually rather delightful, even if it is harder to explain to a layman than saying that the mapping uses a pitch step that is 1/10 of a semitone. From the point of practical instrument building, 118EDO would seem to be the way forward. Tuning to sub-cent intervals is difficult enough, and the tuning would certainly be fine for polyphonic performance. The differences between the hejira-118 and hejira-5 scales might be audible in some vertical harmonic contexts when using synthesized waveforms, but for practical instruments it is hard to imagine that there would be any audible difference.

And so, it just might be, that I need to make my peace with these high-order EDOs. I can see a very real practicality in them, which I had not seen before.