[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
Re: Melisma with manual syllable durations, David Wright, 2017/02/20