[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
hairpin-lyrics interaction bug
From: |
Trevor Baca |
Subject: |
hairpin-lyrics interaction bug |
Date: |
Thu, 11 Aug 2005 12:09:38 -0500 |
You have to have hairpins in a separate context (like the 3.2.4
template) to get this, but when you do you'll find that hairpins take
their horizontal start- and stop-points from the *width of lyric text*
happening at the same rhythmic moment, rather than from the *width of
noteheads* happening at the same rhythmic moment, which can lead to,
for example, really confusing your pianist.
The example here shows this point through a series of four progressive
examples that should render on a single page.
You'll need 2.7.4 to render the \wordwrap correctly and read the explanations.
Possibly a workaround for this already exists? Or possibly the
Dynamics context I've built here for these examples is somehow
deficient. Or perhaps Lily's default behavior for hairpin spanning
should change?
Trevor.
%%%%%%%%%%% hairpin-lyrics interaction %%%%%%%
\version "2.7.4"
\markup {\wordwrap {\bold {Hairpin-lyrics interaction.} Here is some
music. The hairpins attach inline to notes, directly in the note
entry. The hairpins are very beautiful. They each start from left
note-edge and stop at right note-edge:}}
theWords = \lyricmode {
text and even more text,
words and even more words
}
\score {
<<
\new Staff <<
\clef treble
\time 4/4
\context Voice = "theNotes" {
c'2.\< c'4\! |
c'2.\> c'4\! |
c'1\< |
r1\!
c'2.\< c'4\! |
c'2.\> c'4\! |
c'1\< |
r1\!
}
\lyricsto "theNotes" \new Lyrics \theWords
>>
>>
}
\markup {\wordwrap {Here is the same music, but with dynamics in a
special Dyanmics context like the one in template 3.2.4. Here the
hairpins are not so beautiful. They each start at left lyric-edge and
stop at right lyric-edge:}}
\score {
<<
\new Staff <<
\clef treble
\time 4/4
\context Voice = "theNotes" {
c'2. c'4 |
c'2. c'4 |
c'1 |
r1
c'2. c'4 |
c'2. c'4 |
c'1 |
r1
}
\lyricsto "theNotes" \new Lyrics \theWords
>>
\new Dynamics {
s2.\< s4\! |
s2.\> s4\! |
s1\< |
s1\!
s2.\< s4\! |
s2.\> s4\! |
s1\< |
s1\!
}
>>
\layout {
\context {
\name "Dynamics"
\type "Engraver_group_engraver"
\consists "Axis_group_engraver"
\consists "Skip_event_swallow_translator"
\consists "Dynamic_engraver"
}
\context {
\Score
\accepts "Dynamics"
}
}
}
\markup {\wordwrap {The same hairpin-stretching effect obtains no
matter where we put the special Dynamics context:}}
\score {
<<
\new Staff <<
\clef treble
\time 4/4
\context Voice = "theNotes" {
c'2. c'4 |
c'2. c'4 |
c'1 |
r1
c'2. c'4 |
c'2. c'4 |
c'1 |
r1
}
\lyricsto "theNotes" \new Lyrics \theWords
>>
\new Staff {
c'2. c'4 |
c'2. c'4 |
c'1 |
r1
c'2. c'4 |
c'2. c'4 |
c'1 |
r1
}
\new Dynamics {
s2.\< s4\! |
s2.\> s4\! |
s1\< |
s1\!
s2.\< s4\! |
s2.\> s4\! |
s1\< |
s1\!
}
>>
\layout {
\context {
\name "Dynamics"
\type "Engraver_group_engraver"
\consists "Axis_group_engraver"
\consists "Skip_event_swallow_translator"
\consists "Dynamic_engraver"
}
\context {
\Score
\accepts "Dynamics"
}
}
}
\markup {\wordwrap {The idea that hairpin bounds match lyric bounds is
unusual. The following snippet from the first of the Brahms German
folksongs probably gives a good idea why when we look carefully at the
hairpins on either side of the barline between the first two
measures:}}
brahmsLyrics = \lyricmode {
of -- fen schon, komm |
nur in mei -- ne | Hütt __ Ach |
}
\score {
<<
\new Staff <<
\context Voice = "melody" {
\clef treble
\time 6/8
c''4 e''8 d''4 f''8 |
e''4 d''8 c''4 d''8 g'4. ~ g'4 c''8 |
}
\lyricsto "melody" \new Lyrics \brahmsLyrics
>>
\new PianoStaff <<
\new Staff {
\clef treble
\time 6/8
r8 <e' c'' e''>8[ r8 <f' b' e''>8 r8 <d' f' b'>8] |
r8 <c' e' c''>8[ r8 <e' g' c''>8 r8 <c' fis' a'>8] |
r8 <g b g'>8[ r8 <g e' g'>8 r8 <g c' fis' g'>8] |
}
\new Dynamics {
\time 6/8
s8 s4\< s4\> s8\! |
s4. \< s4. | s4. s4 s8\! |
}
\new Staff {
\time 6/8
\clef bass
fis,4( g,4 gis,4) |
a,4( a4 d4) |
g,4( c4 a,4) |
}
>>
>>
\layout {
\context {
\name "Dynamics"
\type "Engraver_group_engraver"
\consists "Axis_group_engraver"
\consists "Skip_event_swallow_translator"
\consists "Dynamic_engraver"
\override Hairpin #'extra-offset = #'(0 . 1.5)
}
\context {
\PianoStaff
\accepts "Dynamics"
\override VerticalAlignment #'forced-distance = #5
}
}
}
\markup {\wordwrap {The end effect is to render the hairpins such that
they frequently look like y have nothing to do with the rhythmic
timevalues in the piano. Maybe we should reconsider this nment
principle?}}
%%%%%%%%%%% hairpin-lyrics interaction %%%%%%%
- hairpin-lyrics interaction bug,
Trevor Baca <=