I made this a while ago but I’m posting it here now so I can link to it in a support forum where it might be off-topic to post directly.
Comments are still welcome.
MIDI data was recorded while I played, and I found a python script online to generate primitive meshes by reading a .mid file. Each note is a 4-sectioned cylinder with its length, location and material determined by note values read from the .mid file.
Camera motion was perhaps the most challenging, since at some times I wanted free control of it and at other times I wanted it to follow a circular path, and the transitions made for some wacky IPO jumps and pulling out some trigonometry to manually put the camera in positions that match the followed position in a previous frame, etc.
I initially attempted to line up the notes with the actual piano keys in the video that appears near the middle, but gave up and decided to just let it be a subtle background to be watched or ignored at will.