Thursday, January 19, 2023

Bits of Plugin Recompiling

I had a couple of hours gap in the middle of the day to get out and around Crewe with Deb, a delightful snowy trip. Because of this I decided to work on programming to make the best use of the hours each side. As I now have Visual Studio 2022, I could benefit from re-compiling the 120 Prometheus plugins to make use of its (hopefully) more efficient and (certainly) more up-to-date compilation, so that's one reason. While doing this though, I'm making a few changes:

First, making the random algorithms used by any plugins, from white noise to random volumes etc., use defines for the seeds and processing. I'm also putting the seed initialisation in the initialiser for the plugins. Currently the seed is either set when the plugin first loads, or (in some circumstances) when a note (or track) is played. If it's in the initialiser I can call that to reset the seed and create an indentical 'random' outcome of a playing song. I've never needed this, but these changes at least make it possible.

Second, to set the master frequency in the plugins (currently always 44100hz) to a define too, to make it easier to change this. Plugins which use gates or slopes will not convert perfectly as these are based on sample-by-sample multiplications (it would be hard to make these comply with time-based values efficiently). Playback, however, should work on any master frequency.

Thirdly, checking the defines for note limits, some of which weren't updated for 10-octaves; in particular maximum pitch shifts and sample starts. My synth can shift/transpose an instrument up or down, but Prometheus can now shift a sound 120 semitones up or down - way beyond what's audible or useful, but that gives it the maximum power and flexibility.

These changes aren't urgent and will take a day or two, but they are something that is ultimately needed. The Visual Studio 2022 programs are smaller and faster, it seems, but I'm destined to compile everything on it, so it's neater to compile everything on it at once. Visual Studio crashed several times when saving code under extant filenames, all due to IntellSense. When my 1KB code hit a project size of 1.3GB, I switched it off. VS works fine now, my project is very small and still picks up Warnings and Errors correctly. I don't know what use IntellSense is at all.