Christian Schoenebeck
2017-07-18 11:46:41 UTC
Hi everybody,
after reviewing the code of the envelope generators, I noticed that I
implemented the state machine of the EGs incorrectly years ago. The common
behavior of EGs is that the attack, decay and decay hold phases are always
played entirely according to their defined duration in the instrument patch.
With our current EGs however the attack and decay phases are aborted as soon
as a note-off arrives, so the EG immediately switches into the release phase
too early on short notes. That's especially problematic for percussive
instruments.
So if there are no vetoes, I am going to change that, so that even if a note-
off arrives very early, the attack, decay and decay hold phases are always
played entirely to their stage end, and after the attack and decay phases
completed their defined durations, the EG would then switch into release phase
afterwards.
That will obviously change the behavior and thus the sound of existing sounds.
But I think that change really makes sense, and probably this behavior change
does not even have a negative impact on existing sounds.
Another change I planned regarding the EGs: we currently have a behavior which
is probably a bit exotic compared to common EG implementations; if a voice is
in release phase and a new note-on arrives on that respective MIDI note, our
EGs abort the release phase and switch back to the previous phase (i.e. back
to sustain phase). Now that behavior is sometimes useful, sometimes negative,
depends on the sound. So maybe I make that configurable, I am not very sure
about this particular change yet.
If you have an opinion on these two EG issues, let me know!
CU
Christian
after reviewing the code of the envelope generators, I noticed that I
implemented the state machine of the EGs incorrectly years ago. The common
behavior of EGs is that the attack, decay and decay hold phases are always
played entirely according to their defined duration in the instrument patch.
With our current EGs however the attack and decay phases are aborted as soon
as a note-off arrives, so the EG immediately switches into the release phase
too early on short notes. That's especially problematic for percussive
instruments.
So if there are no vetoes, I am going to change that, so that even if a note-
off arrives very early, the attack, decay and decay hold phases are always
played entirely to their stage end, and after the attack and decay phases
completed their defined durations, the EG would then switch into release phase
afterwards.
That will obviously change the behavior and thus the sound of existing sounds.
But I think that change really makes sense, and probably this behavior change
does not even have a negative impact on existing sounds.
Another change I planned regarding the EGs: we currently have a behavior which
is probably a bit exotic compared to common EG implementations; if a voice is
in release phase and a new note-on arrives on that respective MIDI note, our
EGs abort the release phase and switch back to the previous phase (i.e. back
to sustain phase). Now that behavior is sometimes useful, sometimes negative,
depends on the sound. So maybe I make that configurable, I am not very sure
about this particular change yet.
If you have an opinion on these two EG issues, let me know!
CU
Christian