Tuesday, November 4, 2025

Loop Search

Recently I was exploring the 270edo tuning system, and a 90 note scale. I wanted a symmetric scale, which this subset is. I also wanted a scale that would traverse the comma 2080:2079, which includes the primes 2, 3, 5, 7, 11, and 13. I was wondering whether that scale might support traversal of other commas, too. This is a lot of notes in a space of rather high dimensionality! So I wrote a program! I can switch the set of primes, the tuning system, and the scale, all very easily, to explore the possibilities for comma traversals.

The program looks at loops for each note in the scale: sometimes the loops that pass through one note are different than those that pass through a different note. Experimenting with this program, I see that happening sometimes. For this particular 90 note subset of 270edo, each note has the same set of loops:

  • | 12 -2 -1 -1 0 -1 > = 4096:4095
  • | -7 -1 2 0 -1 2 > = 4225:4224
  • | -10 -1 -1 1 0 3 > = 15379:15360
  • | 2 1 -1 -3 1 1 > = 1716:1715
These strings of numbers are the powers of the primes 2, 3, 5, 7, 11, and 13, so they give the prime factorization of the ratios. These commas can be combined arbitrarily to form a whole linear space of commas that can be traversed with this scale. My new program looks for a minimal basis for this space.

This 90 note subset is symmetric: the 270 notes of the tuning system are divided into 10 blocks of 27 notes each. The scale picks out 9 notes from each block, at the same positions in each block. I ran the program with only 8 notes per block: then the sets of commas traversable had a basis of three instead of four commas. When I increased the number of notes per block, some notes had a basis set of five commas. So 9 notes per block does seem like a nice threshold.

Another scale I have explored at some point - I don't remember when! - is a 21 note scale in 72edo, generated by the semitone 16:15. 72edo works well with primes 2, 3, 5, 7, and 11, but not with 13. So I ommitted 13 in this analysis. Again, all the notes in the scale had the same space of commas traversable:

  • | -10 1 0 3 0 > = 1029:1024
  • | -5 2 2 -1 0 > = 225:224
  • | -7 -1 1 1 1 > = 385:384

Wednesday, October 22, 2025

Forget the Commas!

Here's another piece in 270edo. This uses the same scale as the piece I posted yesterday. I wanted to make something with more coherence. The earlier piece is more stretched out: it is built from a 12x12=144 array of measures. For this piece I used a 2x2x2x2x2x2=64 array, i.e. a six dimensional hypercube, with measures a bit more than twice as long. The very short sides of the array mean that comma traversals are almost impossible. The harmonic complexity in this new piece is much more immediate, rather than the result of long paths wandering through the woods!

Tuesday, October 21, 2025

Symmetric Scales

Here is a new piece in 270edo.

This is a graphical score for the piece. The horizontal axis is time, in seconds. The vertical axis is pitch classes, from 0 to 269. All the octaves have been folded into a single octave.

The score shows the scale I used for this piece. This scale is an example of what Olivier Messiaen called a "mode of limited transposition" - I am calling it a symmetric scale. A nice feature of 270edo is that 270 factors very nicely: 270 = 2 x 5 x 27. These factors create opportunities for symmetries: a pattern of notes in or out of the scale can be repeated within an octave. In the scale here, the pattern is 27 pitch classes long, and repeats 10 times in an octave, to cover the full 270 pitch classes. From the 27 pitch classes in the pattern, 9 are in the scale and the other 18 are excluded. The 9 included are a simple sequence of every other pitch class in the scale, every other pitch class out of the scale.

So the complete scale starts with pitch classes 0, 2, 4, 6, 8, 10, 12, 14, 16, 27, 29, 31, 33, 35, etc.

My goal with this scale was to support traversal of the comma 2080:2079. This comma is not too complicated but it includes all the primes involved in the notion of consonance I imposed for this piece: 2080 = 32 x 5 x 13; 2079 = 27 x 7 x 11. I figured that if a scale could allow traversal of this comma, it could support a rich harmonic language.

Friday, October 17, 2025

270edo

A tuning system is a set of pitches that enable the making of music. A tuning system can be used in designing a musical instrument, or as the foundation of a system of notation, or as a theoretical construct for composition and analysis. There are countless possible tuning systems, and even the actual systems in use are very many. One simple class of tuning systems consists of those that divide octaves into some number of equal steps. The conventional tuning system that has spread from Europe around the world, 12edo, divides octaves into twelve equal steps. This system is so dominant, governing the design of instruments, tuners, digital audio workstations, etc., that exploring alternatives is not so easy! But there is a vast world available to explore, with just a bit of effort.

What makes a tuning system good? The availability of consonant intervals is a major criterion. What should count as a consonant interval, that's a challenging issue. A classical starting point is that a consonant interval is one that is very close to a simple frequency ratio. How close? How simple? But at least we are getting close to a concrete idea.

The chart above shows, for a quite wide spectrum of simple ratios, how closely they can be approximated by the available intervals of 12edo. The numbers on the top and left margins define the numerator and denominator of a simple ratio. The green square containing 0.02 in the upper left shows the error when 12edo is approximating the simple ratio 3:1. That ratio would be 19.02 steps of 12edo, but of course the closest actual interval in the tuning system is 19 steps, so the error is 0.02. The error for 5:1 is 0.14, which is not so terribly accurate. I have used bright green to flag the very accurate intervals of 12edo and pale green to flag the moderately accurate intervals. The squares in grey are redundant, because the numerator and denominator are not mutually prime.

The simplest intervals are the ones toward the upper left. The more and brighter green cells that a tuning has, the better the tuning, especially when the green cells are toward the upper left.

One of the simplest alternative tunings is 24edo, where each (half) step of 12edo is divided in half, to form quarter tones. These charts measure errors in terms of the size of the step of the tuning. Since the step size of 24edo is half the size of the steps of 12edo, many of the errors double in size. But some are much smaller. The error for 11:1 is only 0.03. 11:1 falls just about half way between steps of 12edo, so when a new note is added in the middle, it comes very close to 11:1. But overall, comparing 24edo to 12edo, it is not clear which is the winner. 24edo adds a lot of notes for not so much gain.

270edo divides octaves into 270 equal steps instead of the conventional 12, so obviously it is adding an awful lot of extra notes! But its chart shows, it really hits a lot of simple ratios quite accurately. Of course its steps are so small that it can't be too far off! But these errors are in terms of the tiny steps of 270edo. For example, 3:1 is 427.94 steps of 270edo. The available interval of 428 steps is just 0.06 of a step sharp.

Here are three snapshots of the evolution of a composition from my thermodynamic composition system:

Even at the final stage, the piece has not settled into monotony:

For this piece I counted as consonant a wide range of simple intervals, such as 14:13, 13:12, 12:11, etc. These ratios can be combined to form commas like 676:675, 1001:1000, and 2401:2400 that 270edo tempers out. Traversals of these commas can get stuck, as topological defects, in the piece. Exactly what pattern of such traversals remains in this final stage... that would be a bit complicated to figure out!

Sunday, October 12, 2025

Emergent Order

I use a thermodynamic simulation in my algorithmic composition software. Randomized decisions are at the heart of this simulation. A piece of music might have ten thousand note events, a voice and a point in time at which a pitch is to be sounded. The pitch to be sounded at each note event is randomly chosen. Each possible pitch that could be played, selected from the options provided by the tuning system, is assigned a probability. A pitch that fits well into the musical context will be assigned a high probability; a pitch that would sound very out of place is assigned a low probability. The musical context is defined by the pitches that have been chosen at related note events:
  • vertical relationships: pitches sounding at the same time in other voices
  • horizontal relationships: pitches immediately before or after in the same voices
  • thematic relationships: pitches sounding at more distant times that are in the same corresponding place in a different expression of a musical phrase or motif or theme.
The choice of the pitch to sound at one note event depends on the pitches chosen to sound at other note events. There is a problem of circularity here! How can the first choices be made? Won't the result depend heavily on the order in which choices are made?

I use a variety of technniques for the initial choices, but the main way around the problem of circularity is that choices are made again and again. After initial pitches have been chosen for all ten thousand note events, those choices are revisited. Some single note event is randomly selected from among the ten thousand. The probabilities are computed for this note event, based on the pitches currently assigned to related note events. A fresh random pitch choice is made, using these probabilities, and the chosen pitch is assigned to this note event. This process is repeated again and again, many millions of times. So the pitch to be assigned to a single note event will be chosen again and again, thousands of times. Between each choice, though, the pitches assigned to the related note events will also have changed, so the probabilities will be different each time the pitch is chosen.

The calculation of the probabilities is based on a cost function. A low cost is assigned to pitches that fit well with pitches at related note events. A system temperature parameter is used in deriving probabilities from the costs. When possible pitches have cost differences that are small relative to the temperature, they will be assigned similar probabilities. When cost differences are large relative to the temperature, then the probabilities will be very different.

The overall process of pitch selection usually involves starting the system at a high temperature, assigning and reassigning pitches to note events again and again, then slowly lowering the temperature, again reassigning pitches many times at each temperature. The pitch choice made at one note event will affect the choices to be made at related note events, and then those choices will affect yet other choices, and this propagation of choices will let the whole system organize itself.

A total cost for the system can be computed, as simply the sum of the costs for all the note events in the system. At high temperatures, high cost pitches have a higher probability, so the total system cost will be high. As the temperature is lowered, the total system cost goes down. A curious feature of thermodynamic systems like this is that the decrease in cost with temperature is often not smooth. Phase transitions occur, where long range order arises and the system cost suddenly decreases. The graph above, with temperature on the horizontal axis and cost on the vertical axis, shows a sudden drop in cost around temperature 230.

A tonal center would be a typical kind of long range order in a musical system. Looking at a particular note event, if the pitches at the related note events are quite unrelated harmonically, then there will be no strong bias in the probabilities for assigning a new pitch at this event. But once the pitches at the related note events are all harmonically close to some tonal center, then there will be a strong bias to assign a harmonically related pitch at this event, too.

The slow decrease in system temperature allows long range order to emerge spontaneously. I took eighteen snapshots of the evolution of the system in a run of this software. The first snapshots are at a very high temperature, so the pitches are quite disordered. The last snapshots are at a very low temperature, after long range order has emerged and established itself. At these extremes of very little order or very strong order, the pieces are rather boring. The most musically interesting pieces are in the middle, at the boundary between order and disorder.

  1. temp=4983.67001252014; cost=10544386.267572;
  2. temp=3178.35877439225; cost=8365076.82243706;
  3. temp=1768.29608835035; cost=6691731.54375484;
  4. temp=907.870229277442; cost=5341434.10767405;
  5. temp=437.105167762909; cost=4254305.00978789;
  6. temp=253.151000149135; cost=3362954.84572504;
  7. temp=226.226281845489; cost=2575694.51859118;
  8. temp=213.857636486513; cost=1992138.33672853;
  9. temp=194.206977218147; cost=1593476.40311909;
  10. temp=168.06408964933; cost=1268744.01912949;
  11. temp=144.276865461673; cost=1010195.00479415;
  12. temp=119.940307483187; cost=804750.28245681;
  13. temp=103.794718800345; cost=639506.147892938;
  14. temp=88.3911327966952; cost=494414.291970105;
  15. temp=77.7312146561222; cost=382966.425501626;
  16. temp=69.4638522645718; cost=300979.198963986;
  17. temp=60.1130776123832; cost=239863.346055088
  18. temp=48.7834419649326; cost=190764.398975199
Even the final piece here has not settled into utter monotony. When a tuning system tempers out simple commas, the system can get stuck in some pattern of comma traversal. That seems to have happened here. The tuning system I used here is 34edo. Studying the scores a bit, I think a traversal of the diaschisma is what got caught.

Thursday, October 9, 2025

Well Temperament

Temperament is tuning with compromises. There are many criteria, that can't all be satisfied perfectly:
  • including many consontant intervals;
  • not including too many notes per octave;
  • symmetry, where the intervals available from one note are also available from other notes;
  • simple paths from a note don't lead to a note that is slightly off the starting point, giving rise to drifting or sounding out of tune.
Well temperament is a class of tunings that allow all twelve key signatures without any sounding too far off. A few years ago I suggested a 12 note subset of 34edo that tempers out the diaschisma rather than the syntonic comma, so it is not too conventional. Lately I have been looking at just tuned diatonic scales. The diaschismic tuning avoids perfect fifths that are too far off, so I had the idea that it could provide a form of well temperament, supporting all twelve key signatures with reasonable diatonic scale shapes.

C Major

An algorithmic example.

G Major

An algorithmic example.

D Major

An algorithmic example.

A Major

An algorithmic example.

E Major

An algorithmic example.

B Major

An algorithmic example.

F# Major

The shapes of the diatonic scales now start to repeat, so their characters will be the same as those already given.

C# Major

Ab Major

Eb Major

Bb Major

F Major

Monday, September 1, 2025

Hanson[19]

A couple days ago I posted a piece in a 19 note scale, using 55edo. This was a classic meantone scale, built from a chain of perfect fifths with the syntonic comma tempered out.

Here is a new piece in a different 19 note scale, using 53edo. This is a Hanson scale, built from a chain of minor thirds with the kleisma tempered out.

I thought it was a nice coincidence that both meantone scales and Hanson scales work with 19 notes per octave: one can shift the scale along the chain of generating intervals by just sharpening or flattening one note of the scale. Initially I just tweak my code to switch the tuning system and scale, but what the software generated was mostly just a single note repeated again and again. Exactly what combinations of parameters will result in anything reasonable musical... I can usually guess the general ballpark, but generally I have to sift through at least a few trials to find something that sounds plausible. So the parameters here have wandered quite a bit from last Saturday's!