On Sat, 26 Mar 2022 19:42:49 +0100 Ichthyostega <p...@ichthyostega.de> wrote:
>Hi Yoshimi-developers, > >right now I'm having a hard time getting Legato and portamento >play nice with an ongoing cross-fade. This made me stumble into >the way how Legato gets its job done.... > >Does anyone know why Legato uses this seemingly indirect approach? > > >Right now it works as follows: > >- at begin of a chain of legato notes, immediately two notes are > spawned. The "posb"-Note is a clone copy of the "pos"-Note > and remains muted. > >- when the next real legato NoteON happens... > > + the dormant "posb"-Note is /again/ clone-initialised with the > current Values of the "pos"-Note and proceeds with legatoFadeOut() > Thus there is a flying takeover from the "pos"-note to the "posb"-note > > + while the "pos"-Note is re-initialised with the new note frequency > and then proceeds with legatoFadeIn() > > >Now this seems needlessly indirect. > >- why do we always waste the allocation for a dormant Note-Instance >- why is the "posb"-Note clone-copied two times? >- why even bother with a seamless switch from "pos" to "posb"? > > >Wouldn't it be much more natural if... > >- when the next real legato NoteON happens.... > > + a new Note is created at "posb" as usual, but this time using > the copy constructor, so most note prams are retained. This > new note instance then proceeds with legatoFadeIn() > > + the existing Note instance does not need to be reinitialised. > just invoke legatoFadeOut() and discard it, when it's mute. > > > >Probably the reason is that all of this stuff is rather hard to see through >and no one is inclined to take the risk of a change? Or is there any >obvious musical reason to cross the roles of the two note instances >on each new legato note? > > >Honestly, I am not decided yet if *I* want to take the risk of changing >that *right now*, assuming there is in fact no real reason for this indirect >approach to legato and portamento. > >But at the moment I am fighting with some rather insidious instance management >problems due to all this clone copying (ending up with a whole chain of cloned >cross-fade delegates when playing lots of legato notes during an ongoing >XFade), >and I am looking for a half way sane way to get out of this mess. > >-- Hermann I can't offer any suggestions on why it was done this way, but I don't believe it has *significantly* changed since we forked from Zyn. The last one I know of was with V 1.3.0 copying across two controls that were added to Zyn. I seem to remember there was something about a catchup system. I think the idea was that when the actual switchover was made both would be at the same phase angle (or something like that). I've found both of these can go a bit strange, although I don't use either very much. -- Will J Godfrey https://willgodfrey.bandcamp.com/ http://yoshimi.github.io Say you have a poem and I have a tune. Exchange them and we can both have a poem, a tune, and a song. _______________________________________________ Yoshimi-devel mailing list Yoshimi-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/yoshimi-devel