On Sun, 27 Mar 2022 04:10:53 +0200
Why do I want to try that out? Because, after this first analysis, the changes
seem straight-forward and "defensive". And in any case for me now simpler to
grasp than having to build special contrived logic to pass an ongoing PAD
wavetable cross-fade on-the-fly from the "pos" to the "posb" note, and all of
this threadsafe and without leaking memory (since NoteON happens concurrently).
Am 27.03.22 um 12:28 schrieb Will Godfrey:
If you can sort this mess out, that would be great. We're not in any hurry.
Upgrades can go out when they are ready.
Hi Yoshimi-developers,
now I'm through with that task; as expected, the new logic was rather easy
to code up, however the real challenge was to identify and clean-up redundant
initialisation and state handling code; some crucial connections were very
well hidden, e.g. the way how Legato mode happened to defeat NoteOff events
from interfering with the legato crossfade. Moreover, I took the opportunity
to undo the copy-n-paste code for the kit-mode and factor out common functions.
Hopefully the Part::NoteOn function is more readable now.
The fact that NoteOn can happen concurrently to Synth code execution turned
out to be yet another challenge. When torture-testing the logic, I was able
to trigger several Segfault conditions, all more or less based on the fact
that the copy-initialisation for Legato Note-On can basically happen at
each point in a Note's lifecycle, and even in the middle of a crossfade.
Incidentally, the reworked Legato scheme is now able to handle poly-notes
still sustained prior to enabling legato mode: You can now hold a chord,
then switch to legato/portamento and play that on top; this became possible,
since Legato does no longer use a fixed scheme of two "pos"/"posb" slots,
but rather works similar to normal notes, which are just connected to
their predecessor after spawning.
-- Hermann
_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel