Skip to content

A Variation on Steve Reich’s, “Piano Phase”

The following is a variation on Steve Reich’s piece, “Piano Phase”. It adds a bass line, based on the main theme. The result is aesthetically intriguing, as it makes explicit another potential dimension to the piece, with a slow counterpoint that extends and unfolds over time, providing contextual (harmonic) nuances in the underlying musical process.

pianoPhaseWithBass.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# pianoPhaseWithBass.py
#
# Plays a variation on Steve Reich's minimalist piece, Piano Phase (1967).
# This variation adds a harmonic bass line derived from the main theme.
#

from music import *

pianoPart = Part(PIANO, 0) # create piano part

phrase1 = Phrase(0.0) # create three phrases
phrase2 = Phrase(0.0)
phrase3 = Phrase(0.0)

# write music in a convenient way
pitchList = [E4, FS4, B4, CS5, D5, FS4, E4, CS5, B4, FS4, D5, CS5]
durationList = [SN, SN, SN, SN, SN, SN, SN, SN, SN, SN, SN, SN]

# add the same notes to all three phrases
phrase1.addNoteList(pitchList, durationList)
phrase2.addNoteList(pitchList, durationList)
phrase3.addNoteList(pitchList, durationList)

# stretch phrase to play each bass note every 12 regular notes
Mod.elongate(phrase3, 12.0) # elongate (stretch) it 12 times

# transpose down two octaves (to create the harmonic bass line)
Mod.transpose(phrase3, -24)

Mod.repeat(phrase1, 48) # repeat first phrase
Mod.repeat(phrase2, 48) # repeat second phrase
Mod.repeat(phrase3, 48/12) # repeat elongated bass line - since it was
# stretched by 12 - to end at the same time

phrase1.setTempo(100.0) # set tempo to 100 beats-per-minute
phrase2.setTempo(100.5) # set tempo to 100.5 beats-per-minute
phrase3.setTempo(101.0) # set tempo to 101.0 beats-per-minute

pianoPart.addPhrase(phrase1) # add phrases to part
pianoPart.addPhrase(phrase2)
pianoPart.addPhrase(phrase3)

Play.midi(pianoPart) # and play it.

It plays this sound: