Saturday, September 28, 2024

Prometheus v3.43 Finalised

The completion of a few projects. Prometheus v3.43 is now complete, apart from final testing by usage. As stated, there are three major changes: that samples and modulators now have double pointers, so can be longer, and are more accurate. Samples can now be interpolated or not, which can save memory (before now, samples were always interpolated), and the core frequency of the program can be changed, with all projects and programs importing and automatically resampling to the new one. All filters need manual adjustment after this, so it would never be a like-for-like conversion.

These changes needed a file format change and a big part of this was reorganising the file import and conversion to be more memory efficient and easier to read.

I had a panic moment yesterday when I used this code for pointers:

union
{
    float modulatorpointer[16];
    double samplepointer[16];
};

As arrays, the union stores all of modulatorpointer in the first half of the data, rather than spreading it, so using samplepointer[0] will also invalidate modulatorpointer[1], which was not intuitive. I fixed it simply by making both pointers double, which, it strangely appears, may even be faster (though I doubt it, as I expect that double-float comparisons are slower, or perhaps the same speed as float-float).

John Lindley's CD Master has been approved, so I filed that project as complete. This is my first mastering job, an unpaid favour for charity, so I needed to consider what to file. Retaining all of the CD project (3Gb or so) for this doesn't seem efficient, so I've retained one CD archive copy, and deleted everything else. Of course, I gave John full copies of everything.

Now, on to new terrain, to new air to swim and battle through.