The second Bohlen-Pierce scale is really close to the first, but it has justly tuned (i.e. rational) frequency ratios, instead of irrational exponential ones. Moreover, the ratios are 7-limit or septimal, meaning that they can have factors of (2, 3, 5, 7) in their factorizations, but no higher primes. In fact, the septimal Bohlen-Pierce ratios don't have any factors of 2 - it's an odd 7-limit scale. There are no octaves and no even harmonics. Here are the elements of the septimal BP scale:
The intervals of septimal BP are symmetric with respect to the tritave, so that for example, these intervals add to a tritave:
and their frequency ratios multiply to a justly-tuned tritave:
Consequently, the intervals between successive steps are also symmetric with respect to the tritave. Four different intervals show up between successive steps. I'm not sure yet how to name intervals in Bohlen-Pierce, but the four intervals have the following frequency ratios:
These four tuned intervals happen to increase in size with increasing complexity. Here they are in cents:
The small simple ratios ("A-sized" intervals) are related to each other by one factor and the large complicated ratios ("B-sized" intervals) are related to each other by the same factor:
(625/567) / (375/343) = (245/243)
Each large-complicated ratio is also related to one of the small-simple ratios:
, so there's a lot of structure here.
27/25: (1, -2, 0)
25/21: (0, 2, -1)
9/7: (1, 0, -1)
7/5: (0, -1, 1)
75/49: (1, 2, -2)
5/3: (0, 1, 0)
9/5: (1, -1, 0)
49/25: (0, -2, 2)
15/7: (1, 1, -1)
7/3: (0, 0, 1)
63/25: (1, -2, 1)
25/9: (0, 2, 0)
3/1: (1, 0, 0)
Of the four intervals that appear between successive steps of septimal Bohlen-Pierce,
only the first one has been associated with an interval name so far: it's a minor second, and it appears as Bohlen ^1. If (49/45) is also an A-sized interval that raises letter names of pitch classes, then it also has to be some kind of a 2nd interval. The more I looked at it, the more I came to realize that it was functioning like an acute minor second, Acm2, in 5-limit just intonation. This means that C-sized interval, the "fudge-factor" with a frequency ratio of (245/243), is an acute unison, Ac1. The B-sized interval that raises pitch classes from flat to natural is obviously an augmented unison, A1, since that's basically what augmentation means. I ended up calling (375/343) the A1 and the related (625/567) is an acute augmented unison, AcA1.
All together we have these differences between successive chromatic intervals:
m2 - M2 = AcA1
M2 - P3 = m2
P3 - m4 = Acm2
m4 - M4 = A1
M4 - P5 = Acm2
P5 - P6 = m2
P6 - m7 = Acm2
m7 - M7 = A1
M7 - P8 = Acm2
P8 - m9 = m2
m9 - M9 = AcA1
M9 - P10 = m2
Next I wrote a program that names intervals in Bluepoint, which we can now say is an interval basis, (m2, A1, Ac1), tuned to a frequency ratio basis, [(27/25), (375/343), (245/243)]. The results are a little bit crazy; some intervals with short names have very large numerators and denominators:
, but that's not a problem with my system; when you have frequency ratios with factors of (3, 5, 7) instead of (2, 3, 5), the numerators and denominators are simply usually going to be bigger. So here's the code. You can now name name septimal Bohlen-Pierce intervals, provided you can express them in the Bluepoint basis, which is a pretty simple matter of finding the exponents of [(27/25), (375/343), (245/243)] that reproduce your desired frequency ratio.
This basis is really good. It has many of the desirable properties of Lilley's (Ac1, A1, d2) basis for 5-limit just intonation. Let's look at just the chromatic intervals of septimal BP in the Bluepoint basis for a moment:
(1, 0, 0) : m2 : (27/25)
(1, 1, 1) : M2 : (25/21)
(2, 1, 1) : P3 : (9/7)
(3, 1, 2) : m4 : (7/5)
(3, 2, 2) : M4 : (75/49)
(4, 2, 3) : P5 : (5/3)
(5, 2, 3) : P6 : (9/5)
(6, 2, 4) : m7 : (49/25)
(6, 3, 4) : M7 : (15/7)
(7, 3, 5) : P8 : (7/3)
(8, 3, 5) : m9 : (63/25)
(8, 4, 6) : M9 : (25/9)
(9, 4, 6) : P10 : (3/1)
.
Some desirable properties:
1) All of the basis components increase monotonically with increasing BP step.
2) All of the frequency ratios of the tuned basis elements are greater than (1/1).
3) One of the basis components matches the ordinal of the interval name minus one. I would have been happy if they were related by any constant integer offset, but minus one is nice.
4) The absolute determinant of the basis is unity, which just ensures that things have integral coordinates. I haven't demonstrated this to you, and I know it's a little unclear what I mean. If you express Bluepoint in the odd prime basis, you can find the determinant of that matrix of vectors, and the absolute value of the determinant will be 1. There are lots of full rank bases with determinants that are one or minus one, and expressing any of them in any of the others will give you determinant whose absolute value is unity, which gives you integer coordinates. Integer coordinates are good for lots of reasons, like for designing isomorphic keyboards with non-overlapping keys. Also integer coordinates become integer exponents in tuning, which means that if you start with basis elements tuned to rational values, then every interval in your system will also be rational. Tuning systems where the absolute determinant of the matrix of basis vectors is unity (when the basis vectors are expressed in any other such basis, using the primes as a base case for inducing the full family) let you define just intonation tuning systems.
There's an even better basis coming, but this table is still good for quickly looking up interval names and their corresponding frequency ratios.
What if you don't want to do a brute force search over exponents in order to name a frequency ratio? I can help with that. First, factorize your frequency ratio, i.e. express it in the odd prime basis (3/1, 5/1, 7/1). Then we can do a change of basis to Bluepoint.
If you've been reading my blog, you know the drill by now. To change bases, first you find the frequency ratios of the old basis (the odd 7-limit prime basis in this case) expressed in the new basis (the Bluepoint basis in this case):
5/1 = (13, 6, 9) # P14
7/1 = (16, 7, 11) # P17
Then you convert columns into rows:
(x, y, z) = interval
a = x * 9 + y * 13 + z * 16
b = x * 4 + y * 6 + z * 7
c = x * 6 + y * 9 + z * 11
return (a, b, c)
It is done, and it is done well. Now you can find the tritave-based interval names associated with arbitrary odd 7-limit frequency ratios from their factorizations, by using this change of basis function and then running my python code from before.
Now for the best basis: in 5-limit octave-based just intonation, the Lilley basis is (Ac1, A1, d2). In septimal Bohlen-Pierce, the Bluepoint basis is (m2, A1, Ac1). The order of intervals isn't important, so the only real difference is that the d2 from 5-limit JI is replaced with an m2 in the Bluepoint basis. What happens if we use Lilley's (Ac1, A1, d2) for Bohlen Pierce intervals though? The BP diminished 2nd is
d2 : (3087/3125)
To make a change of basis, here are the old vectors of the Bluepoint basis
(0, 1, 0) = 375/343 # A1
expressed in a version of the Lilley basis, (Ac1, A1, d2), modified for Bohlen-Pierce, so that we now tune those intervals to frequency ratios of (245/243, 375/343, 3087/3125). Although, it's actually faster for me to find coordinates by brute force search over exponents than to do a change of basis, so instead of writing a new change of basis function, here are the coordinates for the chromatic Bohlen Pierce intervals directly:
(0, 1, 1) = 27/25 # m2
(1, 2, 1) = 25/21 # M2
(1, 3, 2) = 9/7 # P3
(2, 4, 3) = 7/5 # m4
(2, 5, 3) = 75/49 # M4
(3, 6, 4) = 5/3 # P5
(3, 7, 5) = 9/5 # P6
(4, 8, 6) = 49/25 # m7
(4, 9, 6) = 15/7 # M7
(5, 10, 7) = 7/3 # P8
(5, 11, 8) = 63/25 # m9
(6, 12, 8) = 25/9 # M9
(6, 13, 9) = 3/1 # P10
.
It's so good! Now the last component, d2, is the interval's ordinal minus 1, just as m2 was before. The second component, A1, is the number of Bohlen-Pierce steps! The first component is... just there. I've never known how to interpret Ac1 in 5-limit octave-basis just intonation either. But it's fine. It's the fudge factor. In 5-limit JI, major Nth and minor Nths had the same Ac1 component, which was kind of nice, and that's not the case here or in the Bluepoint basis, but it's still fine.
Coordinates in the BP-Lilley basis and the JI-Lilley basis generally don't have the same interval names, and of course they shouldn't - the two systems have different intervals, like P3 in Bohlen-Pierce and P4 in Just Intonation. For an example, (4, 9, 6) is a major seventh, M7, in the BP-Lilley basis with a frequency ratio of 15/7 ~= 2.14, and it's an acute diminished 7th, Acd7, in the JI-Lilley basis, with a frequency ratio of 2187/1250 = 1.7496. I wouldn't have minded if the names had been different and the frequency ratios had been close. That would have made it easy to translate music. But it's fine. And you can still translate music if you want, it's just going to be really weird. And let's not pretend that we don't like when music is really weird. The chromatic BP intervals translated to JI intervals this way do keep their order, at least. If we take the chromatic intervals of BP and reinterpret their BP-Lilley coordinates as being JI-Lilley coordinates, we get these frequency ratios:
(0, 1, 1) -> 1.066666
(1, 2, 1) -> 1.125
(1, 3, 2) -> 1.2
(2, 4, 3) -> 1.296
(2, 5, 3) -> 1.35
(3, 6, 4) -> 1.458
(3, 7, 5) -> 1.5552
(4, 8, 6) -> 1.679616
(4, 9, 6) -> 1.7496
(5, 10, 7) -> 1.889568
(5, 11, 8) -> 2.0155392
(6, 12, 8) -> 2.125764
(6, 13, 9) -> 2.2674816
That interval on the bottom line used to be the perfect 10th with a frequency ratio of (3/1), and now it's only ~ 2.27. So just intonation is falling quite flat.
I've looked at lots of different way of translating music between tritave-based interval space and (rank-2, rank-3, rank-4) octave-based interval spaces and this is by far the best I've come up with. This post used to be about three times as long, and it was just documenting my failures with that search. This is one of the only ways that even keeps the chromatic BP intervals in the same tuned order.
My next goal is to write a program to translate music from 5-limit JI to septimal BP using this scheme to find out how it sounds. I bet it will really suck, but I've got to know.
...
Some other time. Some more music theory first. The 13-EDT version of the Bohlen-Pierce scale tempers out some intervals that the septimal BP scale doesn't. And we can find them *so* easily. An interval in the Lilley basis that has a zero for its second component, the A1 component, will be tuned to 0 steps in 13-EDT. All of those intervals are tempered out, i.e. tuned to the same value as P1, namely 1/1 or 3^(0/13). Here are a few with short names
This one converts from the Bluepoint basis to the Lilley basis:
(x, y, z) = interval
a = x * 0 + y * 0 + z * 1
b = x * 1 + y * 1 + z * 0
c = x * 1+ y * 0 + z * 0
return (a, b, c)
, and this one converts from the Lilley basis to the (P5, P8, P10) basis:
(x, y, z) = interval
a = x * 1 + y * 3 + z * -5
b = x * 2 + y * -3 + z * 3
c = x * -2 + y * 1 + z * 0
return (a, b, c)
.
The intervals (P5, P8, P10) are the ones that were justly tuned to (5/3, 7/3, 3/1), respectively, so (P5, P8, P10) is just an intervallic name for the tritave-reduced prime basis of frequency ratios. It's nice that the primes got paired up with perfect intervals, isn't it? It's a good system.
It feels wrong that I have large tables and programs concerning the Bluepoint basis and comparatively little written about the BP-Lilley basis, which I prefer. So here are some more interval in the BP-Lilley basis, sorted by increasing frequency ratio:
Cool.
You might wonder whether the chromatic intervals of the septimal Bohlen Pierce scale lie on a rank-2 subspace of the full rank-3 space. They do not, so you can't make an isomorphic keyboard in two dimensions that has them all. But I've got an idea for the next best thing!
The next best thing is to use the 13-EDT version of BP and play on a one dimensional keyboard that you may well already own. Easy.
But the next best way after that involves some math! Here it comes!
We'll make a rank-2 system in the Pythagorean way. For Pythagorean tuning, we start with the frequency ratio (1/1) and then we multiply by (3/2), dividing by an (2/1) if the result becomes larger than (2/1). Repeat that on and on upward forever. Also, we can start with the frequency ratio of (1/1) and divide by (3/2), multiplying by (2/1) if the result ever goes below (1/1). Repeat that on and on, downward forever. This produces intervals that only have factors of 2 and 3, but not 5 like in 5-limit just intonation. If we tabulate those results, the portion closest to (1/1) looks like this:
(-6, 4) 1024/729 d5
(-5, 3) 256/243 m2
(-4, 3) 128/81 m6
(-3, 2) 32/27 m3
(-2, 2) 16/9 m7
(-1, 1) 4/3 P4
(0, 0) 1/1 P1
(1, 0) 3/2 P5
(2, -1) 9/8 M2
(3, -1) 27/16 M6
(4, -2) 81/64 M3
(5, -2) 243/128 M7
(6, -3) 729/512 A4
(7, -4) 2187/2048 A1
.
The interval coordinates on the far left are in (P5, P8) basis. The middle portion, vertically, consists of the chromatic intervals of octave-based music, and the intervals further toward the tails just get crazier - more and more augmented or diminished. Once you have the notion that (P5 * 2 + P8 * -1) should be a M6, then you can choose a better tuning system, namely quarter comma meantone, that makes things sound more 5-limit and less awful.
What if we do the same thing for Bohlen Pierce? We'll make a tuning system that only tunes intervals to frequency ratios with factors of 3 and 5, use that tuning system to figure out rank-2 interval names, and then find a new tuning system that makes it sound more septimal and less awful! If we start with the frequency ratio and repeatedly multiply or divide by (5/3), normalizing by a factor of (3/1) if things go too low or too high, then we get this table:
(0, 3, 3) : GrGrd4 :: 19683/15625
(3, 9, 7) : GrGrd8 :: 6561/3125
(0, 2, 2) : Grd3 :: 729/625
(3, 8, 6) : Grm7 :: 243/125
(0, 1, 1) : m2 :: 27/25
(3, 7, 5) : P6 :: 9/5
(0, 0, 0) : P1 :: 1/1
(3, 6, 4) : P5 :: 5/3
(6, 12, 8) : M9 :: 25/9
(3, 5, 3) : AcM4 :: 125/81
(6, 11, 7) : AcA8 :: 625/243
(3, 4, 2) : AcAcA3 :: 3125/2187
(6, 10, 6) : AcAcA7 :: 15625/6561
(3, 3, 1) : AcAcA2 :: 78125/59049
.
Like before, this goes off infinitely at both ends. And like before, there's a special subset in the middle surrounding P1 ~ (1/1)! The special subset here is everything but the very top interval and the very bottom interval. Look at the second component of each interval coordinates for that set; that's the A1 component and it tells you how the interval gets tuned in 13-EDT, the number of steps. In that special subset, we have every number from [0, 12]. We have a full chromatic scale! Here it is sorted by A1 the component:
(0, 1, 1) : m2 :: 27/25
(0, 2, 2) : Grd3 :: 729/625
(0, 3, 3) : GrGrd4 :: 19683/15625
(3, 4, 2) : AcAcA3 :: 3125/2187
(3, 5, 3) : AcM4 :: 125/81
(3, 6, 4) : P5 :: 5/3
(3, 7, 5) : P6 :: 9/5
(3, 8, 6) : Grm7 :: 243/125
(3, 9, 7) : GrGrd8 :: 6561/3125
(6, 10, 6) : AcAcA7 :: 15625/6561
(6, 11, 7) : AcA8 :: 625/243
(6, 12, 8) : M9 :: 25/9
Now that we have our chromatic order, let's represent the intervals in the (P5, P10) basis and give them the natural chromatic names that we used to use for the septimal chromatic intervals:
(-2, 1) : m2 :: 27/25 => 27/25
(-4, 2) : M2 :: 25/21 => 729/625
(-6, 3) : P3 :: 9/7 => 19683/15625
(5, -2) : m4 :: 7/5 => 3125/2187
(3, -1) : M4 :: 75/49 => 125/81
(1, 0) : P5 :: 5/3 => 5/3
(-1, 1) : P6 :: 9/5 => 9/5
(-3, 2) : m7 :: 49/25 => 243/125
(-5, 3) : M7 :: 15/7 => 6561/3125
(6, -2) : P8 :: 7/3 => 15625/6561
(4, -1) : m9 :: 63/25 => 625/243
(2, 0) : M9 :: 25/9 => 25/9
.
On each line above we have coordinates for a rank-2 chromatic BP interval, the interval name, the frequency ratio associated with the interval in the 7-limit system and the frequency ratio associated with the interval in the 5-limit system.
I wondered if the 5-limit version of P8, 15625/6561, which otherwise would be tuned to 7/3, is really the best 5-limit ratio for the job. Maybe it just came about from our weird operation of stacking P5s and normalizing by P10? Sadly no. You can do a search for arbitrary ratios with powers of 3 and 5, and ....
... and you'll see that our old friend 15625/6561 is a good approximation to 7/3, and anything better would have a crazy number of digits.
That's the Bohlen Pierce version of Pythagorean tuning. Now for the Bohlen Pierce version of quarter comma meantone: to make our Pythagorean chromatic scale sound more septimal, we'll keep the P10 tuned justly to (3/1), but we'll adjust P5 away from (5/3) so that P8 is exactly (7/3). This is analogous to how quarter comma meantone adjusts fifths to improve the intonation of thirds.
The way to adjust the tuned value of the BP perfect fifth (5/3) is to start with the coordinates for P8 in the (P5, P10) basis:
(6, -2) : P8
Form (6, -2) we can say that we want the tuned value of P5, t(P5), to be such that
t(P5)^6 * t(P10) ^-2 = 7/3
keeping t(P10) = 3/1. Solving this, we get
t(P5) = 21^(1/6)
which is quite close to the old value of 5/3. It's about 6 cents flat. Just barely noticeable. Now you can make a 2D isomorphic keyboard to play Bohlen Pierce music, and it will sound fairly septimal.
There is a little hiccup. The interval differences don't make sense any more. For example, in this rank-2 system,
M2 - m2 = m2
both of those differences happen to equal a minor second now, but they *shouldn't* be equal. The difference between two second intervals should be some kind of unison for example. If you have a solution, I'd love to hear it. I'll keep thinking about it in the meantime. But whatever the correct interval names are, I think you can make a 2D isomorphic keyboard where a step in one cardinal direction increases/decreases the frequency ratio by (3/1) and a step in the other cardinal direction increases/decreases the frequency ratio by 21^(1/6), and then you'll get music that sounds like septimal Bohlen Pierce out of it.
Ooh! I should do a comparison of the 3d septimal just BP frequency ratios against the 1d EDT BP frequency ratios against my 2d meantone BP frequency ratios!
1.08 :: m2_septimal
1.0873803730028921 :: m2_meantone
1.0881822434633168 :: m2_equal
1.1823960755919092 :: M2_meantone
1.184140594988857 :: M2_equal
1.1904761904761905 :: M2_septimal
1.2857142857142858 :: P3_meantone
1.2857142857142858 :: P3_septimal
1.2885607692309613 :: P3_equal
1.4 :: m4_septimal
1.4021889487005645 :: m4_equal
1.404775430545576 :: m4_meantone
1.5258371159564499 :: M4_equal
1.5275252316519465 :: M4_meantone
1.530612244897959 :: M4_septimal
1.6603888560010867 :: P5_equal
1.661000956165023 :: P5_meantone
1.6666666666666667 :: P5_septimal
1.8 :: P6_septimal
1.8061398392728831 :: P6_meantone
1.8068056703447524 :: P6_equal
1.96 :: m7_septimal
1.9639610121239315 :: m7_meantone
1.9661338478579946 :: m7_equal
2.135572657926458 :: M7_meantone
2.1395119415112758 :: M7_equal
2.142857142857143 :: M7_septimal
2.3281789044302967 :: P8_equal
2.333333333333333 :: P8_meantone
2.3333333333333335 :: P8_septimal
2.52 :: m9_septimal
2.5334829434069275 :: m9_equal
2.5372208703400814 :: m9_meantone
2.7568911531325972 :: M9_equal
2.7589241763811203 :: M9_meantone
2.7777777777777777 :: M9_septimal
3.0 :: P10
.
Everything is really close, which is good. The meantone value is closer to the septimal value than is the EDT value for all of (m2, P3, M4, P5, P6, m7, P8, and M9). The EDT value is only closer to the septimal value for (M2, m4, M7, m9), and only by a small amount for each. This is to say that the added dimension helped: a 2d keyboard organized by my meantone scheme really can play Bohlen Pierce music with better intonation than a one dimensional 13-EDT keyboard. I am to be commended. Also, I think it's petty cool that we adjusted the P5s to make the P8s pure, so you might have expected those to be particularly out of tune, yet the P5s are still closer to being pure than the EDT version. Excellent.