Sunday, February 8, 2026

The More I Look, the More I See!

Yet another piece in 87edo: 87edo scale 10.

Some of my fascination here just comes from the comma 1029:1024. It's a very small comma but it is also quite simple.

As I was staring at the scale diagrams from my last post, I thought it ought to be easy enough to make a scale with a nicer structure:

The step sizes in this scale are also nice: 11, 6, 11, 6, 11, 6, 11, 6, 11, 8.

Thursday, February 5, 2026

A Loop of Pentatonics

Here's a new piece in 87edo: 87edo pentaloop.

I was mulling over the 26 note scale of the pieces I posted recently. This scale has five bands of closely spaced notes. What if I made pentatonic scales by picking one note from each band? There could be a sequence through these scales that traverses a comma. So that's what I made here, a traversal of the comma 1029:1024 using sixteen pentatonic scales, with a total of sixteen notes among those scales, chosen out of the full 26 note scale. Moving from one scale to the next shifts just one note of the scale. So the piece is a bit like a chord progression, but the full five notes of the pentatonic scale played all together would probably not make a very pleasant chord!

This new piece has 256 measures. The sixteen scale traversal is repeated sixteen times.

The green horizontal arrows represent perfect fifths; the blue vertical arrows represent major thirds.

The red diagonal arrows represent the not very conventional interval 7:4.

The shape of this scale is the same as the starting scale. All the notes have been shifted by 8:7. The next scales shift in the same pattern by another 8:7.

We are again back at the starting shape. A third move of 8:7 will bring us back to the actual starting scale, but the sequence will also have to move by 4:3 to form the traversal of 1029:1024.

This next step is where the 4:3 move begins:

From here, pitch class 66 can be shifted to pitch class 64, which completes the loop back to the starting scale.

This is a diagram of the full set of sixteen notes from all the pentatonic scales here.

Monday, February 2, 2026

Just Keep Going

The piece I posted a few days sounded fun enough, so I thought I would make another piece in the same tuning and scale:

87edo 4x4x4x4 scale 26.

Both pieces have 256 measures. The earlier piece had the pieces arranged in a 16x16 square, which provides plenty of room for wandering around the tuning space. The 4x4x4x4 arrangement of the new piece constrains things to be more orderly, to provide more structure for the ear to recognize. This piece is also a snapshot of the thermodynamic evolution at a somewhat cooler point relative to the phase transition, which should also provide more structure.

My fascination with phase transitions goes back to my sophomore year in college. Professor Stephen Schnatterly gave a wonderful demo of an inverted pendulum showing a transition and spontaneous symmetry breaking, as an analogy for a phase transition. That got me to look into Stanley's book Introduction to Phase Transitions and Critical Phenomena. In that book there are some images from a computer simulation of the Ising model. Nowadays, of course, computer simulations are not so exotic as they were in the early 1970s! Professor Dan Schroeder has a nice one on the web: Ising Model Simulation.

My interests in software and phase transitions led me to work under Professor Elliott Lieb for my first semester junior independent research. Lieb's idea was to look at the partition functions for lattice gasses. Lattice gasses are similar to the Ising model. Their partition functions are polynomials. If the zeroes of these polynomials approach the positive real axis as the size of the system increases, that would be a sign of a phase transition. Lieb pointed to a theorem in Marden's book Geometry of Polynomials: one can construct a set of matrices from the coefficients of a polynomial; if the determinants of these matrices all have, hmmm, some particular sign, then the zeroes of the polynomial will be in the negative half plane, i.e. will not be anywhere near the positive real line. If I could compute these determinants from the partition functions of larger and larger lattice gasses, and they all showed zeroes in the negative half plane, well, that'd be good evidence that lattice gasses don't have phase transitions! Ha, I do wonder how much of this am I remembering correctly!

So my research project was to compute determinants for a bunch of largish matrices. I had told Lieb that I was a computer programmer. Well, one with very limited skills, it turned out! The textbook formula for determinants has a daunting computational complexity, growing as the factorial of the size of the matrix. That's the formula I ended up using, which limited me to very small matrices. That was pretty much the end of my physics career!

Here's a curious later development, if anyone wants to pick up the ball. Some 25 years after that disastrous semester, I found myself once again in the land of large matrices. I don't remember the exact details, but we were computing reached states in finite state machines, using binary decision diagrams. Professor Edmund Clarke noticed a similarity to Gaussian elimination in sparse matrices. His observation led me to the theory of Tree Decomposition, a part of graph theory.

Gaussian elimination is how one should properly compute determinants. Gaussian elimination can transform a matrix to half-diagonal form, and then one simply multiplies the matrix elements along the diagonal. Gaussian elimination can still be a bit costly for large matrices. If the matrix can be kept sparse the cost can stay low. Tree decomposition is a way to see how the sparsity of a matrix can be preserved during Gaussian elimination. Tree width is the measure of this preservable sparsity.

So here is a grand research proposal: those matrices of Marden, whose determinants I was to compute - how does their tree width grow as the size of the lattice gas system grow? Ha, I am still trying to salvage my physics career, fifty years later!

Here is someone poking around in this general territory, as a starting point: Phase Transition of Tractability in Constraint Satisfaction and Bayesian Network Inference

Monday, January 26, 2026

1029:1024

Dividing octaves into 87 equal steps, 87edo, has some quite precise approximations for consonant intervals. But the details of how these approximations combine, the algebra of the intervals, is worth exploring too.

This is a tonnetz diagram for 87edo. Each cell represents a pitch class, i.e. a pitch with octaves treated as equivalent. To the right of a 0 cell is a 51 cell: a perfect fifth is 51 steps of 87edo. Above a 0 cell is a 28 cell: a major third is 28 steps of 87edo. 87edo also has a good approximation for the less conventional 8:7 interval: 17 steps. A nice feature of all this is that 3*17 = 51, i.e. moving by 8:7 three times, one arrives at 3:2, at least as those intervals are approximated by 87edo. This is the same as saying that 87edo tempers out the comma 1029:1024.

This feature of 87edo can be used to construct a nice scale, as highlighted in the diagram above. This scale is generated by the 17 step approximation of 8:7. The scale has 26 notes per octave, with the gaps between the scale notes being 2 and 9 steps of 87edo. 87edo also tempers out 245:243, which this scale also traverses. So there are nine different major thirds in the scale: three clusters of three major thirds. Each cluster is in the shape of a diatonic scale. So this scale looks like three diatonic scales with a bit of connective tissue.

87edo does not temper out the syntonic comma, so conventional music will not work very well in this tuning system. The diatonic clusters have some unresolved tension. We can associate the white keys on a piano with some pitch classes on this tonnetz diagram: F=0, C=51, G=15, A=28, E=79, B=43. The challenge is with the D. It could be 64, to make it a perfect fourth from A. Or it could be 66, to make it a perfect fifth from G. This gap of two steps of 87edo is how 87edo represents the syntonic comma.

Some sound: 87edo scale 26.

Sunday, January 25, 2026

Tamp It Down

I am always hunting for a balance between order and chaos in the music I create. The software I have been tweaking for the last several years always builds music from a sequence of measures of equal length. I can have many short measures or fewer long measures, but the measures in a single piece have the same length.

The measures are broken up into a rhythmic pattern of notes. The measures in a piece will often have a variety of patterns. In today's piece there are 8 different patterns for the measures. There are 216 measures in the piece. This piece introduces a new bit of code, which decides how to distribute the 8 patterns across the 216 measures. In the past, I used a sort of random walk. This new approach uses a recursive approach that provides a lot more repetition: a lot more order. The pattern sequence looks a bit like DDCDDCBDDCDDCBA.

Another source of increased order is how the rhythmic patterns are correlated between the voices. In the past, the random walks were independent between the voices. In the new code, the rhythmic patterns vary the same way in all the voices.

This piece is in 87edo, using a consonance function based on the primes 2, 3, 5, and 7: 87edo recurse.

Thursday, January 22, 2026

Lost in Space

There are many parameters in the computer code that I've written to generate musical scores. Really the whole program is one big parameter! Someday maybe I will have a single program that can read a parameter file, so there will be a clear distinction between the code and the parameters that control it. But what I do instead is just edit the program itself for each new piece.

The program uses a random number generator to decide many of the details in the score. The random number generator is controlled by a seed. I can just change the seed to get multiple pieces that are all similar, with the same gross structure.

A fundamental parameter is the tuning system. I have some code that can work with more general tuning systems, but most of the code is limited to dividing octaves into some number of equal steps. So the number of steps per octave is a fundamental parameter. The piece linked below uses the tuning system where octaves are divided into 53 equal steps.

A table of interval scores is constructed based on a set of prime numbers. So another parameter is the prime numbers that are to define consonance. The primes 2, 3, and 5 are a common choice, which is used in the piece linked below. Sometimes I will add the prime 7. So far the largest prime I have used is 19, but the code isn't really limited. The construction of the interval score table does slow down as the number of primes increases, though. The table construction code has some other paramters that I'll tweak. The program writes the table to a file, so I can check that file to see if the table looks reasonable. If it doesn't, I can tweak some parameters in the code to make the table look better. Mostly it's just a matter of getting a good range of scores, so some intervals will be much preferred over other intervals. But the range shouldn't be too extreme, or the pitch selection algorithm can get stuck too easily.

The rhythmic topology is another key parameter. The basic rhythmic parameters are the length of each measure and the number of measures. The measures are arranged in a cubical array of arbitrary dimensionality. In the piece linked below, each measure is about 35 seconds long, and there are 64 measures, arranged as a 4x4x4 array.

Measures are divided into individual notes of varying length. I have used several different algorithms to divide up measures, each of which has multiple parameters.

The number of voices in the piece is another parameter. Here I am using 3 voices.

That's a sketch of the control I have over what gets generated! Here's the latest output: 53edo 4x4x4 scale 34.

Saturday, January 17, 2026

Neutral Thirds

I saw some discussion on a facebook tuning group about neutral thirds in Persian music, attributed to Mansour Zalzal in the 9th Century. A neutral third is between a major third and a minor third. Since a major third and a minor third combine to form a perfect fifth, a neutral third should be about half of a perfect fifth. Zalzal evidently proposed 27:22 as a neutral third. Squaring this gives 729:484. A perfect fifth would be 726:484, so Zalzal's neutral third is quite accurate.

This looked worth exploring. What equal divisions of the octave work well with ratios involving the prime number 11? 87edo is very good, but it is a bit strange: it doesn't temper the schisma, it has three circles of fifths, etc. 65edo looks good, though!

The Persian scales discussed in the tuning group have 17 notes per octave. The neutral third corresponds to 19 steps of 65edo, or 19\65. A 17 note scale generated by neutral thirds has the Moment of Symmetry property, e.g. the scale has two different step sizes: 3\65 and 5\65.

This is a table of the 17 notes, in terms of cents.

Here's an example of what it sounds like: 65edo scale 17.