When I initially implemented the moving circular shapes in the background, the majority of the shape’s attributes were randomised.
I then went about changing the randomness and having each attribute be directly affected by an element of the music.

A new circle appears every time there is a beat. Once there are 20 circles on the screen, a new beat takes away a circle in the reverse order that they appeared in.
The size of the shapes correlates to the sum of the FFT readings at the time the beat occurs. On top of this, circles with a size of 150px or less have a larger range of colours than those larger than 150px. The colour is still random, and is something I am thinking about changing but I’m just unsure how to yet.
The stroke weight of the shapes is dependent on the size, with larger shapes having a smaller stroke weight.
The transparency of the fill and of the outside of the shape is also dependent on its size, with smaller shapes being more opaque.
The speed in which the shapes move is dependent on the BPM of the music; faster BPM means a faster speed and vice versa.