I finally got round to fix the timing issues I wrote about yesterday. So I can proudly say that the envelopes are back into shape! o\ \o/ /o
However, I'm not totally happy with these envelopes. Since I want to keep things simple --and editable with a simple GUI such as the one that Renoise / VST hosts provide-- I'm using ADSR style envelopes. But although I added a time scale parameter to each envelope (so that I can make each one span a different time range), I'm not happy with using pre-defined value ranges for the resulting output of the envelopes. Which boils down to this: I might add some extra parameters such as the values for sustain, release, decay ... so that they do not always need to be in the [0..1] range.
Those changes would allow me to start the envelope with values other than zero, and with this I could do things such as setting the starting value of the pitch envelope to be +12 (notes), make the sustain value 0 and the final value (when the release finishes) -12 (notes), and if this happens quickly enough, it looks like some sort of cheapo snare like the ones we use when we do cheapo chiptunes with very small samples using a manually drawn ADSR envelope which makes the pitch of the sample go from C-5 to C-3 (or something like that, depends on the particular sample) super quickly :D
Since I will add parameters in the middle of the VSTi instrument, all the test files I've saved are going to have several nonsense values. So I decided to leave it for today, not to add any more parameters after the ones I have already, and add the new stuff to the current envelopes tomorrow.
I find all this whole business of sending parameters to and fro the VST host quite of a chore, but I think it will pay off later -- although I'm really willing to finish the synth as soon as possible (or at least leave it in a usable state) and begin work with the export affairs (didn't it sound very ministerial/clerk/public servant speaking? ha!)
Today's gift is the same sample from a couple of days before, but the lead sound has non zero attack, decay and release values. So it slowly fades in, decays and fades out.
It's better to see it in the screenshot: a render of the song (to make sure I hadn't screwed anything with the changes for fixing the timing), reloaded in Renoise. Hooray for apparent recursivity!! (and very bad references to Propellerhead's product naming philosophy) ;-)
Pending tasks with the synth:
- Polish envelopes
- Add the filter
- Add the cheap saturation
- Add the cheap EQ
- Add the cheap BASS boost
The code for all these fixed pipeline units will be the same from the previous reincarnation of the synth. I will probably change things here and there, of course. So if you've got any suggestion or improvement about the code of the previous one, here's your chance to enter Sorollet's epic hall of fame and list of amazing contributors :-)