
It was around seven years ago that I started to get interested in “algorithmic composition” – i.e. using rule-based computer algorithms to create music. I’m not talking about AI here, which involves gigantic, data-intensive programs that absorb millions of human-created musical works and use them to work out the compositional rules for themselves. As I’ve written about before, present-day AIs can produce very credible-sounding results, and I’m sure they’ll get even better in future. But what about more traditional algorithms, where human programmers encode the rules one by one themselves? Music naturally lends itself to this kind of treatment, because it’s inherently a rule-based process to start with. If you give a computer the rules for creating a nice-sounding pop song, then it will churn out strings of notes that sound like they might have come from a nice-sounding pop song – and similarly for jazz or baroque or avant-garde or any other musical style you care to think of.
I included some of my earlier experiments in two previous posts, Algorithmic Beatles from 2018 and Science of Music playlist from 2023. The biggest weakness is that the results only sound convincing if you listen to short snippets, but it becomes increasingly obvious they’re computer-generated when you listen to the whole piece. That’s easy to understand in the case of Markov-type algorithms (as discussed in the first of those two posts), but it seems to be a common failing of most simple algorithms in general. They’re great at following one note with another, or one bar with another – but hopeless at, say, making bars 5 to 8 of an 8-bar phrase sound reminiscent of, but not the same as, bars 1 to 4. Yet that’s a characteristic of a large amount of “real” music in all sorts of genres.
So I was pleased to find an online app (with a free option) that creates algorithmic music which really does have some notion of large-scale structure. It’s called midimaker.io, and I was particularly intrigued to see it has a “classical” option. I assumed this meant it would sound like Mozart or Beethoven, but it really means contemporary classical music à la Ludovico Einaudi or Max Richter. But it does a very good job all the same – though I should stress that (a) you have to run the app numerous times with different parameters before you get something you might like, and (b) if you’re anything like me, you’ll then spend hours tinkering with it till you’re really happy with the way it sounds.
To start with, here are three short examples in that “contemporary classical” style, which I’ve tried to organize into a classical three-movement (fast – slow – fast) piano sonata. The two outer movements have quite catchy tunes, while the middle one has a fashionably chilled-out feel:
If those examples have one big weakness, it’s that they’re harmonically very simple. Not only are most of the chords triadic (e.g. C – E – G or G – B – D etc), but the melodies tend to favour those notes too. Fortunately the app lets you turn up the harmonic complexity, which is what I’ve done in the following standalone piano piece:
Note that the price you pay for more interesting chords is less memorable melodies! Finally (and mainly to justify the robot quartet in my header image!) I maxed out the harmonic parameters for the following string quartet fragment. Ironically, the sound here has gone right back to the kind of algorithmic music I was complaining about earlier – it sounds nice enough if you listen to it for a few seconds, but it doesn’t have the sense of overall unity that the earlier examples do: