Pitches And Pitch Classes

Intervals are signed distances between pitches. So we probably have to talk about pitches at some point. Pitches are kind of like intervals. Here's an example: "C#3". A pitch has a letter at the start which functions a lot like the number at the end of an interval, like the "2" in "m2". Since letters are finite and integers are not, we also put an integer at the end of the pitch to indicate the pitch's octave. By repeating a few letters and differentiating them with an octave integer, we can give similar names to certain pitches that sound intimately related ("octave equivalence") and still have an infinite number of pitches for describing any weird music you can dream of. In addition to the letter name and the octave, pitches can have weird symbols called "accidentals". Accidentals like "sharp" (indicated with a "#" or a similar Unicode character), and "flat" (indicated with "b" or a similar Unicode character) function like intervals qualities, such as "augmented" and "diminished". If there's no accidental, we call the pitch "natural". If there is no octave indicated, then the entity is a "pitch class" rather than a pitch. There are many C sharps (C#) - in fact a whole class of them -  but there's only one C#3.

The notation for rank-2 pitch space (which is in one-to-one correspondence with rank-2 interval space) comes to us straight from piano keyboards: the lowest-pitched piano key is called A0 ("A natural in the 0th octave") and the highest pitched key is C8 ("C natural in the 8th octave"). There's a maybe-hard-to-remember little quirk where each octave of pitches starts on a "C" pitch rather than an "A" pitch, which you might have expected if you're familiar with conventional English lexicographical ordering. Thus on a piano, B0 is just to the left of C1, and there are no keys in the 8th octave represented except for C8, the highest-pitched key of the piano. Some other famous landmarks on the piano: C4 is called "middle C", and the pitch that's a major sixths above this, A4, is called "concert A", because it's conventional for ensembles of musicians to decide on a tuning for this pitch and make sure that all of their instruments are adjusted to produce it in concert.

The previous paragraph was all for rank-2 pitch space. Higher dimensional interval spaces, like rank-3 interval space, are in one-to-one correspondence with higher dimension pitch spaces. Just as we get more interval qualities when we increase the dimension of our interval space, like "Acute" and "Grave", we also get more accidentals when we increase the dimension of our pitch space. These are not well standardized among microtonal practitioners. 

Lots of my western microtonal friends write pitches on sheet music using Marc Sabat's HEJI staff notation ("Helmholtz-Ellis Just Intonation", made in collaboration with Wolfgang von Schweinitz for an early version and then Thomas Nicholson for a later version).  Terminological aside: A staff notation is a way of writing pitches graphically, such as on sheet music. The same accidentals like "#" and "b" are used in staff notation as in writing pitches in text,  but instead of writing a letter and a number to specify a natural pitch, we use a little circle placed delicately among some parallel lines. So staff notations are mostly equivalent to textual pitch notation - in that they have the same information and the exact same accidentals.

I prefer Ben Johnston's staff notation to HEJI for lots of reasons, including the comprehensibility of his accidentals, and the clever and useful choice of frequency ratios he associated with his accidentals, and the historical precedence of Johnston's system. I also like Ben Johnston way more as a composer, and I think this might bear some general consideration: if Johsnton's staff notation has been used to make delicate and powerful orchestral works that are memorable and singable and enjoyable, and Sabat has mostly used his staff notation to make weird sparse and screeching soundscapes without memorable melody or counterpoints, or feelable rhythm, or beautiful chordal harmony - isn't that some kind of mark against Sabat's notation? We judge a tool by what can be done with it. And not all of Sabat's music is unapproachable, and not all of Johnston's music is resplendent, but those are the general directions of things.

Neither of these systems is actually the most popular microtonal pitch notation. The most known, loved, and practiced microtonal music in the world is the middle eastern modal tradition known to Arabic and Turkish and Persian practitioners as maqam, makam, and dastgah respectively. All three of those closely related musial traditions have their own microtonal pitch notations. They're not super well developed mathematically, but they are the actual notation systems that humans mostly use.

Most of my microtonal work is done in interval space, because that's where the math is very easy and because I never particularly enjoyed reading sheet music. I'm rarely going to write on this blog about pitches or staff notation, at least not until we talk about makams. But at the very least, we're going to learn thoroughly about rank-2 pitch space.

:: Rank-2 Pitch Space

Rank-2 pitch space exists in one-to-one correspondence with rank-2 interval space. Rank-2 pitches are made of a pitch letter (i.e. a letter from A to G), some number of accidentals (sharps or flats), and an integer representing an octave. Without the octave, the thing is called a pitch class. For example, G## is a pitch class, while G##3 is a pitch. Just as rank-2 intervals could be natural (i.e. perfect, major, or minor) or modified (with some number of augmentation or diminutions relative to a natural interval), pitches can also be natural (in which case they only have a letter and an octave integer, like "G2") or they can be modified (with some number of sharp or flat accidentals, like Abb2 or F##2). It's totally analogous.

Let's talk about adding an interval to a pitch. If you go a minor third above Ab3, what pitch do you find? It's going to be some kind of "C", we know because the letter C is two positions higher than A in the circular (or heptagonal spiral) alphabet of pitch letters:

And because all intervals have an off-by-one error in their names, you must advance around the circle 4 letter spots to increase by some kind of a fifth, or advance 9 spots to increase by a tenth, et cetera.

That tells us the natural pitch class. But it doesn't tell us the accidentals or the octave. The octave increases by one each time you hit C going up in pitch and decreases by one each time you hit C going down in pitch.

The accidental is a little trickier. First, it helps to know the spacing between the natural pitch classes; they're not all evenly spaced. There's a minor second from B to C ascending, and a minor second from E to F ascending, and all the other steps are major seconds. So from a A natural up to a C natural is (M2 + m2 =) a minor third, m3. If you don't have that kind of interval arithmetic memorized, you can do it numerically. In Lilley's (A1, d2) basis for rank-2 intervals, 

M2 = (2, 1) 

m2 = (1, 1)

so

M2 + m2 = (2, 1) + (1, 1) = (3, 2)

and we known (3, 2) is a minor third. Here's a refresher of all the primary natural intervals in the (A1, d2) basis:

P1 = (0, 1)

m2 = (1, 1)

M2 = (2, 1)

m3 = (3, 2)

M3 = (4, 2)

P4 = (5, 3)

P5 = (7, 4)

m6 = (8, 5)

M6 = (9, 5)

m7 = (10, 6)

M7 = (11, 6)

P8 = (12, 7)

The d2 component is the ordinal of the interval minus one, and the A1 component happens to be the number of piano keys or guitars frets or other "half-steps" you need to go up on a 12-EDO-tuned instrument to get to the desired interval relative to your starting point. The A1 components of the natural intervals also just increase numerically by 1 regularly, except for a gap between P4 and P5, which we might fill in with a modified interval like

d5 = (6, 4)

A4 = (6, 3)

if you wanted to complete that pattern.

 I'll start putting pitches in boldface and leaving the intervals at normal font weight, so that we don't confuse A1 (the pitch "A natural in the first octave") with A1 (the interval of the augmented unison).

Anyway, one way or another, you figure out that C natural is a minor third over A natural. From this it's easy to figure out the pitch of {Ab3 + m3}.

Since

Ab = A - A1

we can just shift the whole relation

A3 + m3 = C4

down by an augmented unison, giving

(A3 - A1) + m3 = (C4 - A1)

Ab3 + m3 = Cb4

Success! 

Maybe that seemed like a lot. Let's do a different problem.  What's the ascending interval from Fbb2 up to A##2? We can write this as a subtraction:

A##2 - Fbb2 = ?

To solve it, we'll first look at the the easier problem where both pitches are natural:

A2 - F2 = ?

From F natural up to A natural, we have (*checks the heptagon or equivalent mental model*)  an interval of ... (

M2 + M2 = (2, 1) + (2, 1) = (4, 2) = M3 

... a major third. And we're going to widen this interval at the bottom end (to reach a little farther down to Fbb2) and at the top end (to reach a little higher up to A##3). Since Fbb2 is "two flats" flatter, the interval is widened by two augmented unisons relative to the natural (F -> A) interval at the bottom. And sharps are also a difference of an augmented unison, but in the other direction. But we're also going in the other direction (outward away relative to the interval of the natural relation (A2 - F2), so the interval sought in the original exercise is widened at the top end as well.

All together, we have

(A##2) - (Fbb2) = x

(A2 + 2 * A1) - (F2 - 2 * A1) = x

(A2 - F2) + 4 * A1 = x

M3 + 4 * A1 = x = AAAA3

And therefore A##2 is a four-time augmented third above Fbb2. Easy! Hopefully.

If you don't find this so easy, well, honestly, I usually just do it in software and you can too. I'll post some code here shortly. It won't be exactly the same algorithms as we walked through above, since e.g. you can do modular arithmetic to figure out the octave instead of walking around a circle and testing at each point whether you hit the letter C, but it will be close enough.

...

:: Rank-3 Pitches

Rank-3 pitch space is a little bit weirder than you might expect. Here's an example that might give you pause:

In rank-3 pitch space, the intervals between successive steps of the major scale are these:

[P1, M2, AcM2, m2, AcM2, M2, AcM2, m2]

which we can accumulate to give the old familiar friends:

[P1, M2, M3, P4, P5, M6, M7, P8]

If you root the major scale on C3, and expect all the pitches to have the old famliar names,

[C3, D3, E3, F3, G3, A3, B3, C3]

then you'll find that the interval up from F3 to G3 is an acute major second, AcM2.

If you now root the major scale on F3, and expect the pitches to have the old familiar names,

[F3, G3, A3, Bb3, C4, D4, E4, F4]

then you'll find that the interval up from F3 to G3 is now a plain major second, M2.

So what's going on? What's the actual interval between F3 and G3? Is it AcM2 or M2? Intervals are signed distances between pitches. Here are two pitches. What's the correct interval?

The problem is expecting the rank-3 scales to have the same names for pitches as the rank-2 scales. Just don't do that. It's fine to have C major continue being the scale with all the natural pitch classes. But once you do that, you commit yourself to other things being different. For example, the key signature of F major isn't just a Bb with all the other pitch classes being natural anymore. For example, the rank-3 F major scale doesn't include the G natural from the C major scale, because that G natural is an AcM2 above F natural, while the F major scale starts with a plain M2. Maybe we should update our spiral.


To tell you what the actual key signature of F major is (i.e. what pitch classes make up the scale), we need a system of rank-3 pitch notation, and in particular we need two new accidentals.  Let's use a plus sign, "+", as the accidental associated with raising a pitch by the augmented unison, and use a minus sign, "-", as the the accidental associated with lowering a pitch by the grave unison.

If we root our pitch space on some C, then we can make a table of which simple rank-3 intervals take us to which simple pitch-classes over C:


P1: (0, 0, 0) → C

d2: (0, 0, 1) → Dbb

A1: (0, 1, 0) → C#

m2: (0, 1, 1) → Db

M2: (0, 2, 1) → D

A2: (0, 3, 1) → D#

Grm3: (0, 3, 2) → Eb-

GrM3: (0, 4, 2) → E-

Gr4: (0, 5, 3) → F-

Ac1: (1, 0, 0) → C+

Acm2: (1, 1, 1) → Db+ 

AcM2: (1, 2, 1) → D+

d3: (1, 2, 2) → Ebb

m3: (1, 3, 2) → Eb

M3: (1, 4, 2) → E

d4: (1, 4, 3) → Fb

A3: (1, 5, 2) → E#

P4: (1, 5, 3) → F

A4: (1, 6, 3) → F#

Gr5: (1, 7, 4) → G-

Grm6: (1, 8, 5) → Ab-

GrM6: (1, 9, 5) → A-

Acm3: (2, 3, 2) → Eb+

AcM3: (2, 4, 2) → E+

Ac4: (2, 5, 3) → F+

AcA4: (2, 6, 3) → F#+

d5: (2, 6, 4) → Gb

P5: (2, 7, 4) → G

d6: (2, 7, 5) → Abb

A5: (2, 8, 4) → G#

m6: (2, 8, 5) → Ab

M6: (2, 9, 5) → A

A6: (2, 10, 5) → A#

Grm7: (2, 10, 6) → Bb-

GrM7: (2, 11, 6) → B-

Gr8: (2, 12, 7) → C-

Ac5: (3, 7, 4) → G+

Acm6: (3, 8, 5) → Ab+

AcM6: (3, 9, 5) → A+

d7: (3, 9, 6) → Bbb

m7: (3, 10, 6) → Bb

M7: (3, 11, 6) → B

d8: (3, 11, 7) → Cb

A7: (3, 12, 6) → B#

P8: (3, 12, 7) → C

I won't bore you with the calculations, but it turns out that the key signature for the rank-3 scale called F major is now (G- and Bb-). Those are the only spots with accidentals.

Maybe I will bore you with *a* detail. Why Bb-? If F is a perfect fourth, P4 = (1, 5, 3), over C, and the fourth scale degree of a major scale is a perfect fourth over the tonic, then the fourth scale degree of an F major scale is 

(1, 5, 3) + (1, 5, 3) = (2, 10, 6) 

over C, i.e. a grave minor seventh, Grm7, over C. And what's the name for the pitch class (C + Grm7)? We're importing some of the names for rank-3 pitches and pitch classes from rank-2 pitch space rooted on C, so a minor seventh up is still a Bb. So a *grave* minor seventh must be that lowered by an acute unison, i.e. Bb-. As promised. Or you can just look it up in the table.

Or you can look at the rank-3 spiral and find the interval distance between F natural and B natural. Going around the circle clockwise, we have AcM2 + M2 + AcM2 =  (1, 2, 1) + (0, 2, 1) + (1, 2, 1) = (2, 6, 3). From the last component, we know this is some kind of a fourth. Let's look up P4:

P1: (0, 0, 0)

M2: (0, 2, 1)

M3: (1, 4, 2)

P4: (1, 5, 3)

P5: (2, 7, 4)

M6: (2, 9, 5)

M7: (3, 11, 6)

P8: (3, 12, 7)

So B natural is higher than F natural by (2, 6, 3) which is P4 + (1, 1, 0). If we want to know what kind of B is P4 above F natural, we just subtract (1, 1, 0) from B, giving Bb-. There are lots of ways to this.

Ready for an even easier way to convert rank-3 intervals into pitch classes? We'll work in the rank-3 Lilley basis, (Ac1, A1, d2). Let's look at an interval with coordinates (1, 10, 5).

First we have to add or subtract octaves {P8 = (3, 12, 7)}, until the d2 component is >=0 and <=6. Our {d2 = 5} is already in this range, so no octave-displacement is needed.

Now we use the d2 component as an index in this list: "CDEFGAB", i.e. {d2=0} means take the element with index zero in the list, the "C", and {d2=5} means take the element with index 6, the "A". 

Next we look at a table that has major interval coordinates for each possible d2 component:

0: (0, 0, 0) // P1

1: (0, 2, 1) // M2

2: (1, 4, 2) // M3 

3: (1, 5, 3) // P4

4: (2, 7, 4) // P5

5: (2, 9, 5) // M6

7: (3, 11, 6) // M7

In this table, we're going to look up the interval for our d2 component, and call this the "natural interval". Like, our interval (1, 10, 5) can be associated to some kind of pitch class "A" and we're going to figure out what kind of "A" by comparing to "A natural". To do this we're using ...*checks table*... (2, 9, 5). This works because (2, 9, 5) are the coordinates for a major sixth and because "A natural" is a major sixth above "C natural".

Now we subtract the natural interval from the interval of interest:

(1, 10, 5) - (2, 9, 5) = (-1, 1, 0)

This difference interval tells us our accidentals. The A1 component is 1, so this is an A# of some kind. If the A1 component were -2, then we'd have Abb. The Ac1 component is -1, so we also append a minus sign, "A#-". If the Ac1 component had been +2, then we'd have A#++. If the difference vector had been all zeros, then the pitch class would just be "A".

That's the whole procedure. Lets' recap: octave displace until your interval is somewhere between a unison and a seventh. Find your pitch class letter. Find your natural interval. Subtract the natural interval from your interval of interest, and that gives you your accidentals. 

That was easy. I liked it.

Here are a few more key signatures: The key signature for G major is now (D+ and F#+) and everything else natural. The key signature for D major is (E-, F#, G-, B-, and C#). The key signature for Db+ major is (Db+, Eb, F+, Gb, Ab+, Bb, C+, and Db+). We can do this all day. Just root your pitch space on C and there's no ambiguity. I don't care which C you choose. Like, 

P1: (0, 0, 0) → C0

seems natural, but you do you. Just be consistent and let people know your conventions. Higher rank pitch spaces work the same way. You just add on new accidentals to deal with new interval qualities. And actually, in my Lilley-Johnston system, the natural intervals stop changing after rank-3 space (since the rank-3 tuning system called 5-limit just intonation is the One True Way), so there's no real chance for confusion. For example, D major is still going to have (E-, F#, G-, B-, and C#) for its key signature in rank-6 pitch space. It's a good system. It's new and a little complicated, but that's the point; we're improving a bad and overly simple system with good new complications.

Let's have a table of major scales to close out.

C major: [C, D, E, F, G, A, B, C]

C# major: [C#, D#, E#, F#, G#, A#, B#, C#]

Db major: [Db, Eb-, F, Gb-, Ab, Bb-, C, Db]

D major: [D, E-, F#, G-, A, B-, C#, D]

D# major: [D#, E#-, F##, G#-, A#, B#-, C##, D#]

Eb major: [Eb, F, G, Ab, Bb, C, D+, Eb]

E major: [E, F#, G#, A, B, C#, D#+, E]

Fb major: [Fb, Gb-, Ab, Bbb-, Cb, Db, Eb, Fb]

E# major: [E#, F##, G##, A#, B#, C##, D##+, E#]

F major: [F, G-, A, Bb-, C, D, E, F]

F# major: [F#, G#-, A#, B-, C#, D#, E#, F#]

Gb major: [Gb, Ab, Bb, Cb, Db+, Eb, F+, Gb]

G major: [G, A, B, C, D+, E, F#+, G]

G# major: [G#, A#, B#, C#, D#+, E#, F##+, G#]

Ab major: [Ab, Bb-, C, Db, Eb, F, G, Ab]

A major: [A, B-, C#, D, E, F#, G#, A]

A# major: [A#, B#-, C##, D#, E#, F##, G##, A#]

Bb major: [Bb, C, D+, Eb, F+, G, A+, Bb]

B major: [B, C#, D#+, E, F#+, G#, A#+, B]

Cb major: [Cb, Db, Eb, Fb, Gb, Ab, Bb, Cb]

B# major: [B#, C##, D##+, E#, F##+, G##, A##+, B#]

Nice. I wonder if these key signatures will ever be taught in schools.

In addition to scales being a little more complex in five limit just intonation, chords get a little more spicy too.

If you build up chords with a 1st, 3rd, 5th, and 7th scale degree, stating on each degree of a major scale, then you find that the diatonic 7th chords are no longer just called [Maj7, m7, m7, Maj7, 7, m7, m7b5].  Here are the intervals of each diatonic 7th chord in five limit just intonation:

I: [P1, M3, P5, M7]

II: [P1, m3, P5, m7]

III: [P1, m3, P5, Grm7]

IV: [P1, M3, P5, M7]

V: [P1, M3, Gr5, Grm7]

VI: [P1, m3, P5, m7]

VII: [P1, Grm3, Grd5, Grm7]

I admit that I don't know short names for those chords. But they're still important. If you try playing a "m7b5" chord with the usual interval names, [P1, m3, d5, m7], over a B natural in the key of C, you're going to have a bad time. Instead, you've got to lower all the upper chord tones by a syntonic comma. Isn't that exciting? Like, people who work in 12-TET have no idea that the dominant 7th chord on the fifth scale degree of a major scale is approximating a 5-limit chord with a flattened 5th and 7th. And they don't know that the minor II chord has different intervals from the minor III chord. And so on and so forth. There is this new land for us to conquer, a little familiar and a little strange, and we've been reaching toward it with our music for most of human history, and if we allow ourselves the complexity of notation for three dimensional lattices of intervals and pitches, than the true structure of music that exists in human heads across cultures starts to reveal itself.

Let's go all the way up to 13th chords. That we we'll have also spelled all the cyclic permutation modes by thirds:

I: [P1, M3, P5, M7, M9, P11, M13] # Ionian

II: [P1, m3, P5, m7, AcM9, Ac11, AcM13] # Dorian

III: [P1, m3, P5, Grm7, m9, P11, m13] # Phrygian

IV: [P1, M3, P5, M7, AcM9, AcA11, M13] # Lydian

V: [P1, M3, Gr5, Grm7, M9, P11, M13] # Mixolydian

VI: [P1, m3, P5, m7, AcM9, P11, m13] # Aeolian

VII: [P1, Grm3, Grd5, Grm7, m9, P11, m13] # Locrian

Nice.

If we reduce these intervals to fit in an octave, then we find that in addition to the natural intervals {P1, m2, M2, m3, M3, P4, P5, m6, M6, m7, M7, P8], we also have [Grm3, AcM2, Grd5, Gr5, Ac4, AcA4, Grm7, AcM6] . The grave minors and the acute majors happen to be like natural intervals in Pythagorean tuning, in the sense that they're justly tuned to the same frequency ratios. So we're getting nice normal things in these diatonic chords.