This page is just to collect things that aren't directly related to my research.
Finding borrowed chords (music theory)
When playing music, the goal is usually to play combinations of chords that sound "good". When learning music theory, you learn the major/minor scales which unlocks a framework in which to play chords from that sound "good". However, from time to time you'd come across a chord progression from a song that is off-key but still sounded "good". This can sometimes be explained by borrowed chords (amongst other things), which is a chord that is taken from a parallel mode. This opens a very large but finite set of non-diatonic chords to add to a chord progression. But what are all these chords?
To the right is an embedded web app written using flask and hosted on pythonanywhere.com that runs a python script to calculate and print out borrowed chords of a given key. Enter a key and choose what sort of chord extensions you want and it will display the chords of the modes in that key. It's also supposed to play the scales using the midi package but I couldn't figure out how to do that through a web app.
Evolutionary algorithms (in-progress)
The goal is to use a genetic algorithm to evolve little buggies to play the "floor is lava" and eventually more complex tasks. Here is a sample of the outcome so far. Their aim is to get to the white safe spots and avoid the black lava. As you can see, they somewhat achieve this, but the solutions (i.e., the weights in their neural network) are converging to a local minimum due to an issue in the algorithm, which tends towards a homogeneous population with little diversity. 😢