Developed by Oliver Xu

This project uses an algorithmic approach to explore the concept of resultant patterns as used by Steve Reich in Drumming. It seeks to analyze what it means for a resultant pattern to be interesting and to encode these intuitive musical characteristics into a computer algorithm. The work is presented as an interactive website that can be used to see and hear different patterns that are generated and selected based on adjustable musical parameters.

Drumming is a large-scale work written for bongos, marimbas, glockenspiels, female voices, and piccolo. In Drumming, Reich explores different rhythmic processes, including phasing, build-up and reduction, and resultant patterns. The hour-long piece is built around a single repeated rhythm in 12/8. While composing Drumming, Reich noticed that he could hear women’s voices when playing the rhythm on marimba:

The women’s voices sing patterns resulting from the combination of two or more marimbas playing the identical repeating pattern one of more quarter notes out of phase with each other. By exactly imitating the sound of the instruments, and by gradually fading the patterns in and out, the singers cause them to slowly rise to the surface of the music and then fade back into it, allowing the listener to hear these patterns, along with many others, actually sounding in the instruments1.

In Part I of Drumming, two players build up the basic rhythmic pattern on four pairs of tuned bongo drums, and then phase a quarter note apart from each other. At this point, two more players go back and forth playing different resultant patterns that they hear as a result of the combination of the phased patterns.

Figure 1. Excerpt from Drumming Part I
Figure 1. Excerpt from Drumming Part I

When I learned and performed Drumming with the Eastman Percussion Ensemble, my friend Victor LaBozzetta and I were the ones playing the resultant patterns at the beginning of the piece. With pen and paper, we were able to come up with a handful of interesting patterns that we could use in performance. This was the inspiration for this project, in which I use an algorithm to systematically generate all possible resultant patterns given a composite texture2 created from two-phased patterns. From these patterns, which include 11,664 possibilities for the composite texture notated in Figure I, groups of patterns are selected based on the following musical parameters that characterize each pattern.

  • Number of notes: This parameter measures the density of the pattern. In one measure of 12/8, a pattern can have up to ten eighth notes as in the composite texture, there are rests in the fourth and tenth ‘slots’ in the measure.
  • Number of stable beats: This parameter measures the rhythmic stability of the pattern. If the pattern is heard in 3/2, which is a common way to perceive the 12/8 meter of Drumming, then the pattern can have up to three stable beats: the first, fifth, and ninth ‘slots’ in the measure.
  • Number of melodic turns: This parameter measures the melodic contour of the pattern. One melodic turn is defined as a change in direction of the melodic line, either from ascending to descending or vice versa. From one downbeat to the next, there can exist up to five melodic turns in a pattern.
Annotated Pattern
Figure 2. Example of a pattern with six notes, three stable beats (red arrows), and three melodic turns (blue arrows). This pattern was randomly selected from the 380 possible patterns that match this set of musical parameters.

In my project code, a single pattern is represented using a list of twelve numbers, each corresponding to either a rest or a pitch. These lists are generated, analyzed, and filtered by several algorithms that I wrote. From the group of patterns that match the musical parameters set by the user, a single pattern is randomly selected. This pattern is displayed using standard music notation, which is achieved using code from the JavaScript library, VexFlow. Once selected, a pattern can be heard via MIDI playback of tuned bongo samples. When a pattern is selected, a MIDI track is created using code from the JavaScript library, MidiWriterJS. This MIDI track is repeatedly played using code from the JavaScript libraries, MidiPlayerJS and soundfont-player. To play back the tuned bongo samples, I created a soundfont (MIDI instrument) using MIDI.js.

An important motivation for this project was to discover if I could find a way to teach a computer what it means for a resultant pattern to be interesting for a human listener. By choosing three important musical parameters that characterize a resultant pattern (note density, rhythmic stability, and melodic contour), I was able to organize the vast number of possible patterns into groups of similar patterns. Furthermore, I was able to identify the groups of patterns that would be uninteresting for a human listener. Most of the patterns with less than four notes are uninteresting, while those with more than eight notes have too much going on. Patterns with zero or one stable beats are both difficult for the listener to understand and for the performer to execute. Patterns with zero melodic turns are purely rhythmic, while those with five melodic turns may be difficult to understand.

With these generalities in mind, it is possible to identify the groups of patterns that are likely to be interesting for a human listener. There exist hundreds, if not thousands of these patterns that a performer may not otherwise discover, whether with his or her ear during a performance or by studying the composite texture. I hope that this project will inspire performers to seek out unique patterns, perhaps after finding some interesting ones with this website. Alternatively, those with experience performing Drumming can analyze the patterns that they have played and use my website to discover additional patterns that share some of the same characteristics.

  1. Steve Reich, “Note by the Composer,” in Drumming (New York: Hendon Music, Boosey & Hawkes, 1971, rev. ed. 2011).
  2. I use the phrase composite texture to refer to what Reich calls a complete resulting pattern: the combination of two or more players playing the identical rhythmic pattern one or more quarter notes out of phase with each other.