A massive amount of recoding today. SFXEngine started as a branch from Prometheus, but the latter has had 150 updates since, and many major changes over the years. Many of the innovations weren't reflected in SFXEngine. There's never been a file format change to SFXEngine, but 5 in Prometheus, each a major feature upgrade.
Now I've added the best Prometheus improvements. The double pointers, variable sample rate, and optional interpolation on a per-sample basis is one feature. Another is dynamic 'floatutility' and 'longutility' variables. Each plugin needs extra variables, some more than others. The reverbs, for example, need to keep track of delays and cycle various sine waves. In early Prometheus, and in SFXEngine until now, these were a fixed quantity of 64-per effect. The new reverbs, however may need more because now the core frequency affects all of the internal delays which used to be constant; and yet the other engines use very few. The sample players only need 1, so it's massively wasteful to have these large (empty) arrays on every engine. 12 engines per program and 12 per environment add up to large memory drain in a project of 100s of sounds.
Years ago I made these variables dynamic in Prometheus, so each effect must specify how many floats and longs it needs and the program reserves these as needed, very much like the effect buffers. Today I decided to add these to SFXEngine too. This is big coding step.
The problem with a lot of this coding is that both programs are hugely complex. It's hard to hold the whole thing in your head at once, so every change and alteration must be meticulously inspected and checked, mostly for silly accidental errors. Knowing what every change does to everything is nigh on impossible. For the most part I'm duplicating Prometheus code and hoping it will slot in. I've already found one SFXEngine bug which I'd fixed in Prometheus years ago.
There's a great advantage to working on two similar programs for this reason. Every time I upgrade SFXEngine I discover improvements to make to Prometheus, and vice versa. There's something about two that makes this error correction and enhancement property optimal. I can quite understand why DNA is a double helix, not a single line, and not a triple.
In addition to these changes, every plugin needs editing and recompiling; another meticulous and exhausting job. I've made a start on the sample players, the reverbs, and the delay effects. Those are the most complex. I have 66 to work on this week.
Meanwhile, the world is watching the American presidential election. The polls are extremely close, but I think that they are wrong and that Kamala Harris will win decisively.