lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Melisma with manual syllable durations


From: David Kastrup
Subject: Re: Melisma with manual syllable durations
Date: Thu, 23 Feb 2017 15:29:07 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux)

Alexander Kobel <address@hidden> writes:

> On 2017-02-22 17:21, David Sumbler wrote:
>> [...]
>> So I experimented.  I find that, not only does it not matter which
>> voice or stave I name as "associatedVoice", but it does not even matter
>> whether such a voice exists! [...]
>
> Wrong.  Compare the extenders in:

[...]

> It might be surprising that a non-existing voice does not even produce
> a warning; but there *is* a (very sensible) difference.

lily/lyric-engraver.cc:92

[...]
      SCM voice_name = lyrics->get_property ("associatedVoice");
      string nm = lyrics->id_string ();

      if (scm_is_string (voice_name))
        nm = ly_scm2string (voice_name);
      else if (nm == "" || !searchForVoice)
        return 0;
      else
        {
          ssize idx = nm.rfind ('-');
          if (idx != NPOS)
            nm = nm.substr (0, idx);
        }

      SCM voice_type = lyrics->get_property ("associatedVoiceType");
      if (!scm_is_symbol (voice_type))
        return 0;

      Context *voice = find_context_near (lyrics, voice_type, nm);
      if (voice)
        return voice;

      return find_context_near (lyrics, voice_type, "");
    }

The last lines are the fallback.  Like most of the lyric
alignment/synchronization stuff, this seems like a collection of awful
hacks.  If searchForVoice is set (a context property) and this voice has
a name, then this name is shortened by everything following its last
hyphen and used as the corresponding voice name to synchronize to.

Really.  Fortunately, the default has been off for 6 years without
anybody noticing or complaining:

    commit 4133b4e0ec939a427a70361ad838c65a84a0dfda
    Author: Trevor Daniels <address@hidden>
    Date:   Fri Apr 8 08:26:15 2011 +0100

        Search of context hierarchy for voice for lyrics is optional

         - add new context property, searchForVoice, to indicate
           whether the extended search for a voice containing lyric
           rhythms should be conducted

         - fixes 1579

         * lily/lyric-engraver.cc

           test searchForVoice in get_voice_to_lyrics () to decide
           whether to conduct an extended search

         * ly/engraver-init.ly

           set default value of searchForVoice to #f

           (also in passing remove duplicated instrumentname
            and shortInstrumentName settings)

         * scm/define-context-properties.scm

           add and document searchForVoice

Maybe we should remove that -- thing.

-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]