instead of the current shambles, add a timerframe method to Note (or perhaps a method each for noteon/noteoff) in which you can write code just like in the regular methods, and instead of executing the code we use static analysis to apply a performant timer effect, and reject anything too fancy - as a first step, a low-level api so that songs can implement their own effects similar to PWMEffect, SinusEffect
it would also be good to have a nudge method to apply changes, the use-case for this is tone waveform reset by setting period to a small number. this may be a separate ticket - yes, see https://github.com/combatopera/Lurlene/issues/22