Best Just Intonation Intervals

This table demonstrates some of the logic behind the Lambda scale.  It shows the 17-limit just intonation (JI) intervals that are closest to the equally tempered Bohlen Pierce scale.  Notice that there are no close JI intervals for the F#, H#, and A# notes.  Also, melody fragments in the D E F G range are virtually equal tempered with respect to one another.

The original JI scale has accidentals that are beyond the 17 limit: C# is 25/21, F# is 75/49, H# is 49/25, and A# is 63/25. Using those ratios would bring the accidentals within 10 cents of the ET notes, but the ear gravitates towards ratios with lower denominators.  In any case, it’s good to avoid H# because of its proximity to the octave. 49/25 can’t compete with 2/1. Same with A# against a strong C – most listeners will hear it as a too-sharp 10th.

Bohlen Pierce ET to JI intervals
best match, 17 limit
  ET cents JI  JI cents diff  
0 0.0 1/1 0.0 +0.0 C
1 146.3 12/11 150.6 +4.3  
2 292.6 13/11 289.2 -3.4 D
3 438.9 9/7 435.1 -3.8 E
4 585.2 7/5 582.5 -2.7 F
5 731.5 17/11 753.6 +22.1  
6 887.8 5/3 884.4 -3.4 G
7 1024.1 9/5 1017.6 -6.5 H
8 1170.4 2/1 1200.0 +29.6  
9 1316.7 15/7 1319.4 +2.7 J
10 1463.0 7/3 1466.9 +3.9 A
11 1609.3 5/2 1586.3 -23.0  
12 1755.7 11/4 1751.3 -4.4 B
13 1902.0 3/1 1902.0 +0.0 C

Lambdafamily

Tuning a Kalimba to BP

I acquired a nice little 17-key kalimba (thumb piano), and tuned it to BP with a Korg AT-1 chromatic tuner. It sounds real nice. Here’s a demo just fooling around with it:

 

IMG_1147

Kalimba BP notes

17-key Kalimba BP Notes
(highest to lowest)

BP note 12 EDO Tuning
H C -37
G Bb +17
Gb A -30
F G +24
E F# -22
D E -32
Db Eb -15
C Db +39
B C -7
Bb Bb +46
A A (440 Hz)
J Ab -47
Jb F# +7
H F -39
G Eb +14
Gb D -32
F C +22

SuperCollider

SuperCollider is an algorithmic music language that can be used to generate microtonal music. Here’s a quick example of random Bohlen-Pierce notes.

Screen Shot 2015-12-25 at 10.53.02 PM

Reichish Phase

This is a tribute to the early music of Steve Reich. It was realized on the Sonic Pi, using the Bohlen-Pierce scale, equal tempered as MIDI notes.

 

Source code:

# Reichish Phase

tritave = 19.02 # a 3/2 tritave is 1902 cents, or 19.02 in MIDI
half = tritave / 13 # size of the BP half step in MIDI
whole = half * 2

a3 = 69 # MIDI 69 is A440
b3 = a3 + whole
c3 = b3 + half
d3 = c3 + whole
e3 = d3 + half
f3 = e3 + half
g3 = f3 + whole
h3 = g3 + half
j3 = h3 + whole
a4 = a3 + tritave

a2 = a3 - tritave
b2 = b3 - tritave
c2 = c3 - tritave
d2 = d3 - tritave
e2 = e3 - tritave
f2 = f3 - tritave
g2 = g3 - tritave
h2 = h3 - tritave
j2 = j3 - tritave

notes = (ring a2, a3, f2, c2, c3, h2, e2, e3, b2, g2, g3, d2, j2)

in_thread(name: :slower) do
use_synth :pretty_bell
for i in 0..326
print i
n = notes.tick
np = n / a4
play n, amp: 1.0 - np, pan: -np / 2
sleep rrand(0.298,0.302)
i +=1
end
end

in_thread(name: :faster) do
use_synth :pretty_bell
for i in 0..329
print i
n = notes.tick
np = n / a4
play n, amp: 1.0 - np, pan: np / 2
sleep rrand(0.294,0.3)
i +=1
end
end

More BP on the Sonic Pi

Using a sampled A=440Hz piano note, I squished and stretched it to play a BP chromatic scale. Here it is juxtaposed against random MIDI BP notes using the Sonic Pi’s FM synth.

Code:

# Bohlen-Pierce notes

tritave = 19.02         # a 3/2 tritave is 1902 cents, or 19.02 in MIDI
half = tritave / 13     # size of the BP half step in MIDI
whole = half * 2

a = 69  # MIDI 69 is A440
b = a + whole
c = b + half
d = c + whole
e = d + half
f = e + half
g = f + whole
h = g + half
j = h + whole
a_ = a + tritave

bpScale = [a,b,c,d,e,f,g,h,j,a_]

exp = 3 ** (1.0/13)

# play random notes with FM synth

divs = [1.0/exp,exp,1] # divisors add random BP flavor for FM synth
in_thread do
  use_synth :fm
  for i in 0..48
    highN = bpScale.choose
    lowN = highN - tritave
    play highN, divisor: divs.choose, depth: 0.5, pan: 49/highN, amp: rrand(0.1,0.2), attack: rrand(0,0.01), sustain: 0.2, release: rrand(0.1,0.5)
    sleep 0.15
    play lowN,  divisor: divs.choose, depth: 0.7, pan: -34/lowN, amp: rrand(0.1,0.2), attack: rrand(0,0.01), sustain: 0.2, release: rrand(0.1,0.5)
    sleep 0.15
  end 
end

# play chromatic BP scale with sampled piano

speed = 5.0/9 # initial sample speed yields BP E note (JI) calculated from A=440Hz
for i in 1..36
  sample "~/Sonic Pi/piano-a440.wav", rate: speed, pan: speed - 1.5, amp: rrand(1.0/3,2.0/3)
  speed = i < 18 ? speed * exp : speed / exp
  sleep 0.4
end

BP on the Sonic Pi

Way back in 1991, I produced an album of algorithmic music. It has recently been re-released by Fixture Records.  Renewed interest in the project sent me on a quest for a comparable modern programming environment, one that would also support BP compositions.

I’m pleased to report that I’ve found such a platform in a program called Sonic Pi.  Originally written for the Raspberry Pi miniature computer, the program is now also available for Mac OS X and Windows.  My first quick attempt at producing BP tones was incredibly easy.  I’m very excited at the possibilities here.

Here is a screen shot of the program, followed by an MP3 of the sounds it produced.

Sonic Pi

BP Prelude

This minimalist algorithmic piece is intended to be played before a Bohlen-Pierce concert or demonstration, to acclimate an audience to the general sound of BP pitches and harmonies.

It was generated using Java and the JMusic library.

Fuse Blue

This is a 12 bar blues I wrote using the Bohlen Pierce scale C D E F G H Jb A B C. The lead part is pedal steel and the other parts (except drums) were played on the Roland Handsonic. Recently remixed with real drums by my good friend Oscar Calderon.

BP on the Roland HandSonic HPD-15

The Roland HandSonic HPD-15 hand drum includes some tuned percussion instruments. You can edit the pitch of each pad in cents. The pads are grouped into 3 sets of 5, as shown:

HPD-15-pads

You can edit the pitch of each pad individually, and further adjust the pitch of an entire set (A, B or C). The pad set adjustment is very helpful when creating a patch for any HPD-15 instrument that is voiced for a higher or lower octave.

After several experiments, I finally settled on this arrangement of the Bohlen-Pierce scale notes. It is fully chromatic from D to D’. I didn’t include a low Db as it seemed less important than the high D’ for modal music.

Handsonic-BP-pads

I tuned the notes to the C Lambda scale in just intonation with A=440 Hz (pad A2). The first song recorded with this system was Fuse Blue. The HPD-15 is somewhat buried in the final mix. I’ve created a separate MP3 file of just the HandSonic tracks so that you can hear what it sounds like:

I’m happy to answer any technical questions from other HandSonic players who are into BP or other alternate scales. The HPD-15 isn’t a real sensitive instrument, but its fine tuning capabilities make it a very useful tool for creating a variety of sounds in real time performance.  I advise using a good frequency meter when tuning, as the readout of cents isn’t really very accurate.  The tables below contain the fine tuning adjustments that I developed for several of the unit’s virtual instrument voices.
Continue reading

Sierra Pedal Steel

Most steel guitars can be adapted fairly easily to the Bohlen-Pierce scale. I made a fretboard from a piece of aluminum and some gold pinstripe tape. On this 12-string instrument, I configured the pedals and knee levers to the B Moll II mode (relative to J Lambda), which places the C Lambda mode nicely at the 4th fret. Here is the copedent chart:

Sierra 12-string BP Copedent

The 12-bar blues tune Fuse Blue was written and performed on this instrument:

While writing the song, I discovered that C Lambda sounds more bluesey if you flat the J note.  The scale used is C D E F G H Jb A B C – a mode I haven’t seen documented anywhere.  Background chords and the bass line were played on the Roland Handsonic.  The drum tracks were generated by Band-in-a-Box (I got lazy).

The chords for this Fuse Blue’s pseudo I IV V progression are:

  • I – C F A
  • IV – E H A
  • V – F G A
Sierra Pedal Steel with Bohlen-Pierce fretboard
%d bloggers like this: