Zerberus: add support for filter envelope
Now that basic filter support has been added to Zerberus, it would be quite useful to also have a working envelope for shaping the filter. The necessary opcodes would be:
. fileg_delay, fileg_attack, fileg_hold, fileg_decay, fileg_sustain, fileg_release (all of the usual envelope stages)
. fileg_depth (value in Hz that the envelope adds to the base cutoff frequency).
So, the following region:
<region> sample=saw.wav fil_type=lpf_1p cutoff=200 fileg_depth=8000 fileg_attack=1 fileg_decay=1 fileg_sustain=50 fileg_release=1
...would play a note with the filter starting at 200 Hz, ramping up to 8200 Hz, down to 4200 Hz, and then staying there until note release, where the filter would ramp back down to 200 Hz.
The following test file features a filter envelope test that can be used when developing this feature: https://musescore.org/sites/musescore.org/files/2018-05/Zerberus_filter…