Wednesday, March 13, 2024

Finding the Phase Transition

I've been using an algorithmic approach to music composition, based on thermodynamic simulation. One advantage of an algorithmic approach is its generality. One can use the same software to generate music in a wide variety of tuning systems. Other parameters can be adjusted easily, too. Of course, no algorithm is likely to generate music of the quality that a skilled human composer could produce. On the other hand, there can be some value to music that is outside the usual patterns.

These days a different algorithmic approach to composition has gained some traction, an approach that works with a large number of existing compositions, extracts some patterns, and then follows these patterns to generate a new composition that sounds much like the existing compositions. Just to be clear, the approach I am using does not use existing compositions in the execution of the software. I listen to a lot of music, and I listen to the output of my software; I tweak my software in an effort to coax it into producing something as music-like as I can. But this is a long way from the Deep Learning methods of the predominant Artificial Intelligence software.

Thermodynamic simulation is a randomized process that repeatedly adjusts the values of a large number of inter-related variables. The variables are connected in some kind of network, that defines the interactions between the variables. In my music composition software, the variables are the pitches of what is to be played at each particular time by each particular voice. When a voice is to sound a pitch at one time and then a second pitch at a succeeding time, these pitches should be nicely related if the music is to sound good. The pitches should not be too far apart, and should be reasonably consonant. Similarly, if one voice is sounding one pitch, and another voice is sounding another pitch at the same time, these two pitches need to be consonant if the music is to sound good.

If a piece is ten minutes long, each voice might involve a thousand pitch choices. During the simulation, all of these choices have provisional pitch values. Again and again, one or another of these choices is selected at random, and then the pitch selection for that specific time is reevaluated, in the context of the provisional choices in place for what that voice is to sound before and after, etc. The software will choose a new pitch for that voice at that time, preferring pitches that are consonant with the other pitch choices nearby in space and time. Then some other voice and time will have its pitch reevaluated. Over the course of the composition process, each pitch will change hundreds of times. Other related pitches will have changed between one evaluation and the next, so which pitch is most consonant may well change over the course of the simulation.

Thermodynamic simulation is driven by a key parameter, the temperature. At high temperature, the preference for consonant pitches is not very strong. At low temperature, only the most consonant pitches will be assigned. At very high temperature, the simulation will assign pitches essentially at random, so the music will be pure noise. At very low temperature the simulation will strive to maximize consonance. But if the pitches are initially very random and then the simulation is run at very low temperature, very often it will happen that in evaluating the best pitch for a particular voice at a particular time, the related pitches don't pull in a consistent direction. One pitch choice will be consonant with some neighbors but dissonant with others. There will often be no choice that is consonant with all the nearby pitches.

The way to generate pitch assignments that are mutually consonant throughout the network is to start the simulation at a high temperature and then to slowly lower the temperature. Each pitch selection provides some communication between more remote regions of the composition. The entire system can eventually negotiate mutually agreeable pitch choices in this way.

Thermodynamic simulation thus has the capability of generating pure noise at high temperature and pure order at low temperature. Neither of these makes interesting music: either extreme is quite dull! Interesting music happens in the region between total noise and total order.

The fascinating thing about this kind of thermodynamic system, whether simulated or in real physical systems, is that the transition between order and disorder is often not smooth and gradual, but can be quite abrupt. Right at the boundary between the ordered phase and the disordered phase, the system can exhibit fractal fluctuations as it wavers between the behaviors of the different phases. Fractal fluctuations are a characteristic of interesting music. So the approach I generally use for generating interesting music with thermodynamic simulation is to set the temperature to where the phase transition happens and make the pitch choices at that temperature, where consonant choices are preferred but not too strongly.

One challenge with this approach is that the temperature at which the phase transition happens is not something one can calculate in any simple way. One is basically stuck with simulating the system at different temperatures, observing its behaviors, and identifying an abupt shift. That's what the graph at the top of this post illustrates. At each temperature, the system will settle into an overall level of consonance, which corresponds to energy in thermodynamics. A highly consonant system has very low energy; a highly dissonant system has very high energy.

The graph above has a clear enough abrupt shift at a temperature of around 380. There is a sudden drop in the energy with a small change in the temperature. Locating this sudden drop is a bit tricky though, because of the random nature of the simulation. The energy is always bouncing around even at a fixed temperature. What I do to filter out this randomness is to fit a smooth curve through each small family of temperature and energy measurements. Then I look for which such small curve shows the most abrupt change in energy over a small change in temperature. That tells me the temperature of the phase transition.

Once the temperature of the phase transition has been determined, I can set the simulation temperature to that value and let the simulation run so all the pitch choices come to reflect that boundary behavior, to exhibit fractal fluctuations.

Here are two pieces generated using this approach:

No comments:

Post a Comment