I know this has briefly been discussed here but the thread is very old and I was wondering if any new or better approaches have surfaced in the mean time.
Unsurprisingly, with a low number of voices and note-stealing enabled stopNote(false) gets called quite often. This leads to clicks in the output. What I would like to do is be able to call a kill() method in my amplitude envelope which does a very quick ramp (128 samples or there abouts) so the note then gets freed quickly and the new note can then start. This doesn’t appear to be the case as the renderNextBlock() method never gets called after stopNote(false) has been called and hence the clicks.
Is the only way to deal with this sort of thing the one described by Martin and do the quick ramp and note restart in the startNote() method? It seems a bit bulky for a very common task.