A long day of complex upgrade programming on Prometheus, but I've got a plain sample working and a reverb.
The reverbs are complicated as now I'm programming for variable sample rate, and there are a lot of delays in reverbs. They are a series of small delays, and a big one too, which can be up to 500ms. The smaller ones are of fixed sample size, but now those delays are multiplied by the relative core sample rate, so can vary.
I can have any number of effect buffers, but they are divided equally, not differently sized per buffer. For 90% of effects, this is fine, I tend to only need one buffer anyway, but it's a problem with reverbs as the 500ms delay is huge compared to the lots of little ones, so I create lots of little ones and use a spread of 14 buffers in a row to constitute the 500ms delay. This works (the buffer is one buffer that merely appears to be several via evenly-spread pointers) but it's a bit complicated to calculate the maximum buffer needed, partly because the little delays also vary in a sinusoidal cycle, and buffers need to divide by 4. Well, all of the variables were jiggled and everything seems to work.
The sample playing is now linked to a personalised sample table for each sample, so some samples can be interpolated, some not. The interpolation definitely improves the audio quality of some sounds, but it hardly makes any difference playing at the root frequency, so can now be switched off to save lots of memory. This seems to work too.
These test elements allow me to eventually recode all of the 119 plugins, as many share elements. The reverbs and sample playback are perhaps the most complex... time will tell.
It will take until the end of the month, I expect, which will include more work to master John Lindley's latest album. I can't wait to create and use this new musical toy! There's so much work to do, I must try to race through it.
Onwards we charge.