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

Reply via email to