Enumerating Rhythms By Density

by Chris Korda

When writing in polymeter it’s useful to conceptualize rhythm patterns in terms of their density. In order to clarify this, let’s examine some simple patterns. To keep it simple, we’ll assume that each pattern step is either 0 (off) or 1 (on). We’ll ignore velocity variation, and also ignore duration variation (tied notes) and triplets. We’ll also ignore completely empty patterns (silence). The simplest useful example is the two step patterns, of which there would appear to be three: 01, 10, and 11.

However in a polymeter context, 01 and 10 are actually the same pattern. Why? In polymeter, because each pattern length is shifting phase relative to other pattern lengths, any given pattern will eventually be heard in all of its possible phases or orientations. Since 10 is the same as 01 rotated by one step, the two patterns can be grouped together and viewed as a single pattern: 10.

This observation leads us to a more central idea of enumerating rhythmic patterns by their density. Density in this context means the proportion of 1s (steps that are on) to 0s (steps that are off). For example let’s look at all the possible three-step patterns, eliminating duplicates:

100
110
111

Here we eliminated 010 and 001 as duplicates of 100, and eliminated 011 as a duplicate of 110. Notice that of the remaining patterns, we now have only one pattern for each of three possible densities, excluding zero.

We could plausibly name these patterns using a three-level naming system, in which the first number is the pattern length, the second number is the number of 1s (the density), and the third number is an index uniquely identifying each pattern of that length and density. According to this scheme, the three-step patterns above would be named as follows:

NameSet
3-1-1100
3-2-1110
3-3-1111

It’s more instructive to examine the five-step patterns. The number of possible five-step patterns is 2 to the fifth power, or 32 patterns. But in our system, there are only seven five-step patterns, because most of them are eliminated as duplicates:

NameSet
5-1-110000
5-2-111000
5-2-210100
5-3-111100
5-3-211010
5-4-111110
5-5-111111

This method of enumerating rhythm patterns is useful when composing polymeter, because it greatly reduces the number of possibilities, so that we can focus on the relatively few patterns that will actually be distinguishable in polymeter. It’s also similar to the scheme that atonal composers use to classify pitch sets.

The scheme is primarily useful for fairly short patterns. Here’s a table of rhythms by density.