I’ve been composing/improvising old school techno songs where I don’t use any presets but program the patches manually, and I remembered Animusic where they use midi to automate the animation process. This also gives me practice for writing algorithms in preparation of AP CS A(yeah it’s in java, I’ll be writing a post about a Minecraft collaborative master and client soon and how I modded Baritone.)
An animation tool called “Blender” has a python scripting API and there’s a python library called “mido” that allows ease in processing midi files.
Eventually, this project will broaden into a python package and blender plugin that will make midi-based animations very easy.
No strobe, but Minimal seziure warning!:
Nothing heavy, but given the rhythmic nature of the “light drums” then it may be worth a thought.
Here is the render that took 11 long hours. Pretty minimal demo:
It may not be obvious, but the light flash is flawed. So a hit will start at 1 and then linearly goes down to 0 like a sawtooth wave. However, since the keyframes are interpolated, the “triangles” when far apart.
The keyframes are generated for every frame, this is inefficient and reduces the ability to take advantage of splines. The power of reticulating splits should never be ignored. The reason for writing frame by frame is so that when a hit happens, the “curve” will immediately go up no matter the current position or state of moving down.
Here is the code:
As it is a proof-of-concept style sandbox thing, the code is uploaded as a gist, not a git. One day… one day…
The song is called “Mayhem” and it’s on Bandcamp here:
Hope you enjoy the old-school PowerPoint style cover art. The album is a preview album which is why the mixing sucked. But that’s also the style with early rave music to some extent so I’ll have to learn how to balance between perfection and grunge.
Also, do you know that Animusic is not dead but is actually starting to resurrect itself? Check out https://www.animusic.com/
Thoughts on Python:
I do understand the rationale between “duck typing”; however, there should be a way to specify what data type a function should have. Also, having member functions to have (self) even though they are member functions is kinda boilerplate for a language not bent on boilerplate. Development is relatively peaceful.
One fascinating feature in python is that code need not exist in any function, not even main. And any script can be typed by hand to an interpreter and run like so without any compilation It is slow however and baking times were sometimes long. Perhaps using compiled python could be worth a shot in more large scale instruments and general projects.