For you mathy musicians!
This all started as a way to make flashcards for myself to help improve my sight reading. I wanted to make flashcards of “all the possible rhythm combinations”. ![]()
I started with quarter notes and rests in 4/4 time. This was pretty straightforward because it’s just counting in binary.
Next I wanted to do the same thing, but using eighth notes in 4/4 time.
Again, you count in binary, but this time it’s from 00000000 to 11111111.
Here’s how a little bit of that looked, from 00000100 to 00010001
There were 256 measures of it – it ran 6 pages.
(By the way, I played it as a midi file, and some parts in the middle had wonderful syncopation!)
OK, this is all well and good, but it’s all eighth notes. This is fine if you’re playing a percussion instrument with no sustain, but if you’re playing flute, piano, etc. there’s whole notes, half notes, quarter notes, dotted notes, etc. In other words, the eighth notes can be tied in various combinations.
I started working on this problem last night and was able to generate all the combinations for 2 eighth notes in a measure, 3 eighth notes in a measure, 4 in a measure, 5 in a measure – all the way up to 6/8 time. At that point the air got too thin and I had to turn back ![]()
Here is an example of what made it so difficult.
Consider the case of 00001111, in other words, four rests and and four eighth notes. How many ways can you tie those eighth notes together?
The top staff has the eighth notes with their varying pattern of ties, the bottom staff is the same information written in a more standard way.
Eight combinations! And that’s just for 00001111 !
Side note – here’s the way I figured out how to find all the combinations of ties for 1111.
Look at the 4 notes, there’s 3 spaces between them.
Each space can either be tied, or not tied. One, or zero…so it’s counting in binary again!
If you got this far, I’m impressed. Or a little worried… ![]()
Can anyone think of an algorithm for computing all the rhythm combinations from 00000000 to 11111111?
I’m just going after it by brute force and trying to see patterns.








