Linkable interface, can modulators be recursive?
Captain's Log: Stardate 77316.5
Finally got to get a bit more done work on modulators. Today I added modulation support for more entity types, including sensors and all the exciter types. The modulation framework is now fully in place for these types, and now it's just a matter of writing the code that allows different parameters to be modulated.
The next big thing for modulation will be to make springs "Linkable." The Linkable interface is what's used to tell Anukari which entities can be linked with springs or other connections. But until now there's been no reason for springs themselves to be Linkable (which is kind of insane if you think about it). So I'll have to add this, which includes a bit of GUI work etc. It's necessary to add modulation support for things like spring stiffness, since modulators must be linked to the entities that they modulate.
There's still an open question as to whether modulators can modulate other modulators. I hope to do this, but there are technical challenges. For example, GPUs don't support recursion. (Technically they don't really even support function calls.) I think what I might do is just allow a single layer of modulator-recursion, which can of course be easily implemented without actual recursion. The GUI would disallow trying to modulate a modulator that's modulating a modulator. (This sentence reminds me of: https://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffalo_buffalo_buffalo_Buffalo_buffalo).
So far, the performance of my modulator implementation seems acceptable. The main thing is that if you don't add modulators, there's very little overhead. Having tons of modulators is possible, but it definitely has a cost.
At the moment, the only modulator type I've implemented is MIDI cc knobs/sliders (LFOs and stuff will come later). But it's pretty dang fun to change the mass of a body on the fly with a knob. I can't wait to get LFOs going so I can share some demos.