I acutally just finished some “thats all very easy” post, but while typing it I realized alot of tricky things, so I had to remove it.
Its actually a thing with quite some things to look at.
Basically we have different ways to set values, automation and trackeffects (the 1xxx values for VSTs)
- a pattern has an automation for an effect :
if I scroll through the pattern with my keys, just read the values out the curve and fill them in.
- a pattern does not have automation :
the tricky thing is that, if I have pattern 01 with automation, 02,03 and 04 without and 05 with again, and I am currently in pattern 05 and switch to pattern 04, then, to make it work, renoise has to read the last automation value from pattern 01 (because thats the value which would be “it” if I just play from 01 to 04).
the bigger problem is if I have another automation in pattern 02 only, then renoise has to read the one automation from pattern 02 and the other one from 01.
- trackeffects :
and thats the real tricky part, because these things are set once and can be set for every value possible.
so, my first idea was to go “backwards” in the song everytime I start to play and get the values for every effect that way, or to go from start to the position I am currently at, but this sucks, because :
this might be a huge CPU-hog because of browsing the song-structure internally all the time, and if renoise does this only when I start play then I cant see the correct calues in the dsp effects window when I am in pause mode.
so the other possibility, which is not a CPU- but a possible memory-hog :
have a table with every track and pattern which monitors effect changes.
the point is : I am sure you already have a table for that to store the inital effect values for the song.
now you would need to expand that table in this way :
create a column for every effectvalue which gets changed anywhere in the song (no need to do that for the ones which never leave their initial state) and put their value for every line-position in there, so that renoise can simply read out each value which applies to a certain position within the song.
the point (as I just realize) is, these could be a kind of “hidden” automation-curves, except they dont have those “aliasing” options like linear or curve, because they switch from one to next without ramping. (and isnt that the point vs. line option in the automation window ?)
So, the conclusion after typing down alot of chaotic thoughts (sorry, I am drunk again )
the best way to implement this without having to change the renoise format at all (or at least not much) is to create a automation curve through the whole song for a value whenever it gets changed within the song (no matter if done by trackeffects or by a automationcurve itself) and hide it.
this way you can read out and display the correct value for any effect at any songposition without having to change the renoise format or the renoise code too much.
now the question is if I am stupid or brilliant.