Hi Poly fans,
I've done an analysis of the code that sets up the envelopes. The Poly-800 CPU is not fast enough to recalculate the envelope in real time according to velocity value and adjust any envelope parameter in a proportional way. If we were to try to do such a thing there would be a noticeable delay between hitting a key and hearing the note sound (and this is an ongoing challenge that I've faced through this entire project).
So the only option is to use the same sort of set up as I used with the sustain pedal operation. If the sustain pedal is down then the decay and release values are increased by an offset value that is set by extended parameter 74. When you set the extended parameter, the Poly does all of the envelope recalculations right there and then and creates a second set of real time operating variables for the envelope generator to copy and use in real time at note on onset. At the moment, the only variables in the envelope data set that are being adjusted are decay and release. The rest are being copied from the original envelope data set to the secondary data set. But we can indeed adjust the other envelope parameters according to our whims.
If the sustain is off (pedal up) then the original envelope parameters are used to initiate the envelope generator for the next played notes. If sustain is on (pedal down) then the second set of envelope parameters are used for the next played notes. You can imagine how fast this choice can be made in the software during note on events because the code just has to say "if sustain is on then use EG set A but if sustain is off use EG set B instead". It has to be fast because you don't want the CPU dillydallying around when you hit a key or receive a MIDI note on event. You want that note to sound instantaneously.
So this A or B set method can be used to engage velocity sensitivity too. However, the velocity sensitivity would not be proportional. That is, it would not have a gradual increasing effect on any envelope parameter. There would be a velocity threshold over which or under which the envelope would behave differently according to our desired set up.
For example, we might decide that we want the envelope to change behavior when the velocity was above 63. Below 63 the envelope would behave in one manner and above 63 it would behave in some other way (for example, reducing the attack time by some offset).
This concept only applies to adjusting envelope parameters using velocity information. Full proportional control of say - VCF or resonance - is possible because they are not envelopes. They are relatively static parameters which makes them much easier to adjust in real time (and quickly).
Mike