Alexander Kobel <a-ko...@a-kobel.de> 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 <t.dani...@treda.co.uk> 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 _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user