[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: explicit duration within \lyricsto
From: |
Aaron Hill |
Subject: |
Re: explicit duration within \lyricsto |
Date: |
Tue, 10 Nov 2020 02:14:59 -0800 |
User-agent: |
Roundcube Webmail/1.4.9 |
(Re-adding mailing list for visibility...)
On 2020-11-10 12:35 am, Christ van Willegen wrote:
Hi Aaron,
Op ma 9 nov. 2020 23:39 schreef Aaron Hill:
Above I show using a NullVoice so the notes do not appear though you
can
still attach lyrics to them for timing.
NOTE: As documented in the Notation Reference, changing
associatedVoice
must occur one syllable early to have the desired effect.
Still, it would be very nice (TM) to be able to write "a lyric with
embedded4 lyrics8 lengths" within them.
Perhaps a feature request?
Technically, every lyric event has a duration whether or not you specify
one. If unspecified, the default duration is used similar to how you
can specify a note event with just a pitch alone. Something like the
Lyric_combine_music_iterator would be unable to know when a duration is
meant to be obeyed or not, as lyrics events with or without an explicit
duration are indistinguishable.
Perhaps a property could be introduced that temporarily disables
automatic alignment, similar to how melismata can be ignored:
%%%%
\lyricsto melody {
some words that fol -- low the mel -- o -- dy
\set ignoreVoice = ##t
these4 syl8 -- la8 -- bles4 do not2
\unset ignoreVoice
back to a -- lign -- ing with the voice
}
%%%%
I don't have a build environment setup, so I cannot easily tinker with
the C++. But I wonder if this would work:
//// lyric-combine-music-iterator.cc
lyrics_found_ = true;
if (to_boolean (lyrics_context_->get_property ("ignoreVoice"))) {
Moment m = lyric_iter_->pending_moment ();
lyric_iter_->process (m);
return;
}
if (!music_context_)
return;
////
But I do not understand the iterator system well enough, so that could
be utter gibberish.
-- Aaron Hill