lilypond-user
[Top][All Lists]
Advanced

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

Re: questions about lyric hyphens and extender lines


From: Jan Nieuwenhuizen
Subject: Re: questions about lyric hyphens and extender lines
Date: Thu, 30 May 2002 16:07:03 +0200
User-agent: Gnus/5.090006 (Oort Gnus v0.06) Emacs/21.2 (i386-debian-linux-gnu)

jeff covey <address@hidden> writes:

Hi Jeff,

> i have some questions about lyrics on this:

I've had a look, sorry for this to take so long.

It seems that what you have here are three issues

> http://jeffcovey.net/music/scores/victoria/o_magnum_mysterium/
>
> 1. in measures 11-12 of the soprano part, the extender line should
>    stretch from "gnum" to "my".  because i have two blank lyrics in
>    there (o ma -- gnum __ _ _ my), it only stretches between the first
>    two notes.  i see in the example in the manual that if i were to
>    group the notes with a slur, the line would extend the correct
>    distance.  can i accomplish the same without adding a slur?
> 2. in the alto part in measures 19-21, the line extends across two
>    rests.  how could i make it stop at the second half note?

  * do manual melisma

> 3. at the end, there should be extender lines from the last syllable
>    in each part to the double bar.  since there's no following note,
>    lily says "warning: unbound spanner `LyricExtender'" and doesn't
>    draw them.  how could i convince it to do it?

  * lilypond bug

I'm adding this file input/bugs/melisma-tie-rest.ly:

    \header{
        texidoc = "Lyric extenders that start because of an autmatic tie 
melisma,
    extend during a subsequent rest, and cannot be forced to stop."
    }
    \score{
        <
            \addlyrics
            \context Staff = soprano {
                \property Staff.automaticMelismata = ##t
                \context Voice=soprano\notes\relative c'' {
                    c4 ~ c r2 r1 c
                    c4 ~ c
                    \melismaEnd
                    \property Staff.tieMelismaBusy = ##f
                    r2 r1 c
                }
            }
            \context Lyrics = "soprano" \lyrics {
                hey __ stop?
                hey __ STOP!!!
            }
        >
    }

> 4. a question to see whether i'm missing a feature:  when a melisma
>    stretches across many notes, i'm slipping hyphens in where it seems
>    best, and the result looks like morse code:
>
>   al -- le _ -- _ _ _ -- lu _ _ -- _ _ -- _ _ -- _ -- _ _ _ -- _ -- _ -- _ ja,
>
>    is there a way i can say to lily, "a melisma lasts from this note
>    to this note.  compute the distance and tastefully insert hyphens
>    at regular intervals."?  i'm sure it would do a much better job
>    than i do.  :)

  * feature request?

Attached are some workarounds, have a look if it's ok for you.

It may be that your message was just overlooked, but I suspect that
the people at lilypond-user (that includes me), are too lazy to
download a .ly file and look into your issues.  It's a lot less fuss
if you'd provide a snippet with a specific problem.

Greetings,
Jan.


\header {
  mydate = 
  "Time-stamp: \"o_magnum_mysterium.ly was last updated on Wed, 29 May 2002 
10:04am\""
  filename =    "o_magnum_mysterium.ly"
  title =       "O Magnum Mysterium"
  subtitle =    "for mixed chorus, a cappella"
  opus =        ""
  composer =    "Tom\\'as Luis de Victoria (1549-1611)"
  
 mutopiatitle = "O Magnum Mysterium"
 mutopiacomposer = "Tomas Luis de Victoria (1549-1611)"
 mutopiaopus = ""
 mutopiainstrument = "Voice (SATB)"
 source = "Arista Edition"
 style = "Renaissance"
 copyright = "Public Domain"
 maintainer = "jeff covey"
 maintainerEmail = "address@hidden"
 maintainerWeb = "http://pobox.com/~jeff.covey/";
 lastupdated = "2002/05/29"
}

%{
i can't get answers to my questions about this score on lilypond-user,
so i'll just contribute it to mutopia as is.  here's a copy of my
message:


i have some questions about lyrics on this:

http://jeffcovey.net/music/scores/victoria/o_magnum_mysterium/

1. in measures 11-12 of the soprano part, the extender line should
   stretch from "gnum" to "my".  because i have two blank lyrics in
   there (o ma -- gnum __ _ _ my), it only stretches between the first
   two notes.  i see in the example in the manual that if i were to
   group the notes with a slur, the line would extend the correct
   distance.  can i accomplish the same without adding a slur?

do manual melisma see score

2. in the alto part in measures 19-21, the line extends across two
   rests.  how could i make it stop at the second half note?

lily bug? -> workarounds, see score

3. at the end, there should be extender lines from the last syllable
   in each part to the double bar.  since there's no following note,
   lily says "warning: unbound spanner `LyricExtender'" and doesn't
   draw them.  how could i convince it to do it?

do manual melimsa

4. a question to see whether i'm missing a feature:  when a melisma
   stretches across many notes, i'm slipping hyphens in where it seems
   best, and the result looks like morse code:

  al -- le _ -- _ _ _ -- lu _ _ -- _ _ -- _ _ -- _ -- _ _ _ -- _ -- _ -- _ ja,

   is there a way i can say to lily, "a melisma lasts from this note
   to this note.  compute the distance and tastefully insert hyphens
   at regular intervals."?  i'm sure it would do a much better job
   than i do.  :)

feature request?

%}

\version "1.3.148"

global = \notes {
  \key aes \major
  \time 4/4
  \skip 1*39  \bar "||"
  \skip 1*13  \bar "||" \time 3/4
  \skip 2.*14 \bar "||" \time 4/4
  \skip 1*8   \bar "|."
}

sopranoMelody = \notes \relative c'' {
  c1 f,2 c' ~ c4 c des des c2 r4
  f des ees f4. f8 f4 c des c ~ 
  [c8 bes aes g aes bes c aes] [bes aes] [aes g16 f] g2 ~ g f 
  % 10
  %% melisma without slur -- jcn
  %% a1 bes2 a4. bes8 c4 des4. c8 bes4 ~ bes a bes [aes8 g] f4 g aes2
  a1 bes2 a4. \melisma bes8 c4 \melismaEnd
  des4. c8 bes4 ~ bes a bes [aes8 g] f4 g aes2
  % 15 
  r4 f' des ees f4. f8 f4 des bes c des4. des8 des4 c4. bes8 bes4 ~ bes a bes2
  % 20
  r1 r4 des4 c4. a8 bes4 c des bes des4. des8 des4 des c2 c
  % 25
  a4 c c4. c8 c4 d ees2 des?4 [c8 bes] c2 des c r1
  % 30
  r4 f, bes2 aes4 f g a bes4. c8 des!4 des c2 r r1
  % 35
  r4 bes ees2 des4 bes c d ees4. [des8 c bes] bes4 ~
  bes [a8 g] a4 a bes2 r
  % 40
  a2. a4  a2 bes a4. bes8 c4 des ~ [des8 c] c4. bes8 bes4
  c a2 a4 bes4. bes8 bes2 
  % 46
  r4 bes4. [c8 des bes] c4 f ees2 des4 f ees c des4. [c8 bes aes] [aes g16 f]
  % 50
  g4 g f c' ~ c aes2 des4 ~ [des8 c] bes2 a4
  % 53
  \property Staff.TimeSignature \override #'style = #'1style
  bes2 des4 c2 a4 bes4. [aes?8 bes c] des4 c2
  des2 bes4 aes2 f4 g4. [f8 g aes]
  % 60
  bes2 a4 bes2. r4 r ees des4. [c8 des bes]
  c4 [aes8 bes c des] ees2 ees4 des4 f2
  % 67
  \property Staff.TimeSignature \override #'style = #'C
  f1 r4 f [f8 ees des c] bes4 ees4. [des8 c bes]
  %%  a4 bes2 a4 bes1 ~ bes ~ bes ~ bes
  \property Staff.automaticMelismata = ##f
  a4 bes2 a4 bes1\melisma ~ bes ~ bes ~ \melismaEnd bes 
}

altoMelody = \notes \relative c' {
  r1 r2 f2 ~ f bes, f'2. f4 ges ges f2 r4
  f des ees f4. f8 f4 c des f2 [e8 d] e2 f 
  % 10
  f1 f2 f4. g8 aes?4 aes, bes4. c8 des4 c bes f'
  f ees c4. c8 
  % 15
  %% manual melisma.  LilyPond (<= 1.5.58) will automatically start
  %% a melisma with a tie, but will not stop it just before or during a rest,
  %% and cannot be convinced to do so. --jcn
  %% c4 des4. c8 bes4 ~ bes a bes bes' f aes aes4. aes8 aes2 f4 ges4 f2 f ~ 
  c4 des4. c8 bes4 ~ bes a bes bes' f aes aes4. aes8 aes2 f4 ges4 f2
  \property Staff.automaticMelismata = ##f 
  f \melisma ~
  % 20
  %% f2 r r4 bes aes4. f8 g4 a bes f f4. f8 f4 g aes2 g
  \melismaEnd f2
  \property Staff.automaticMelismata = ##t
  r2 r4 bes aes4. f8 g4 a bes f f4. f8 f4 g aes2 g
  % 25
  f4 aes? aes4. aes8 aes4 aes bes c ~ [c8 bes] bes2 a4
  bes f aes?4. [g16 aes] bes4 [aes8 g] f4 c
  % 30
  r2 r4 bes f'2 ees4 c d ees [f8 ees f g]
  aes4. [g16 aes] bes4 [aes8 g] f2 r4 c
  % 35
  f2 ees4 c [des8 ees f g] aes2 bes4. [aes8 ges f] ges4
  f2. f4 d2 r
  % 40
  f2. f4 f2 f f1 ~ f f2 r4 f ~ f f ges4. ges8
  % 46
  f4 [bes,8 c des ees f g] aes4 aes aes2 f4 f g a
  bes4. [aes?8 g f] f4 ~ f e f aes ~ [aes8 g f ees] f2
  des4 ees f2
  % 53
  \property Staff.TimeSignature \override #'style = #'1style
  f2 bes4 aes2 f4 g4. [f8 g aes] bes2 a4 bes2 f4 f2 c4 ees2 ees4
  % 60
  f4 f2 f2 des4 bes2 a4 bes2 bes'4 aes2 f4
  g4. [f8 g aes] bes2 a4
  % 67
  \property Staff.TimeSignature \override #'style = #'C
  bes2 r4 f4 [f8 ees des c] bes4 bes' ~ [bes8 aes ges f] es4 ges
  %f2 r4 c des4. ees8 f4 ges ~ ges f ees4. f8 ges2 f ~ f1
  f2 r4 c des4. ees8 f4 ges ~ ges f ees4. f8 ges2
  \property Staff.automaticMelismata = ##f
  f \melisma ~  \melismaEnd f1
}

tenorMelody = \notes \relative c' {
  r1 r r r r r r r2 
  c2 ~ c f,2 
  % 10
  c'2. c4 des des c2 r4 f des ees
  f4. f8 f4 c des c4. [bes8 aes g] 
  % 15
  aes2 bes c des4 f des ees f4. f8 f4 ees des ees c2 bes4 des
  % 20
  c4. a8 bes4 c des bes f'4. f8 ees4 c bes des des4. des8 des4 des
  ees f2 e4
  % 25
  f f, f'4. f8 f4 f ees2 ges f r4 bes, f'2 ees4 c d ees
  % 30
  [f8 ees des c bes c des bes] c2. c4 bes2 r4 bes
  f'2 ees4 c des c4. [bes8 aes g]
  % 35
  aes4 bes2 a4 bes des ees f ges4. [f8 ees des] ees4
  des [c8 bes] c4 c bes2 r
  % 40
  c2. c4 c2 des c2. bes4 c2 des c4 c2 c4
  % 45
  d4. d8 ees4 [bes8 c des ees] f2 des4
  ees des2 c4 des des ees f bes,2. des4 c1 aes bes2 c
  % 53
  \property Staff.TimeSignature \override #'style = #'1style
  bes2 bes4 f'2 f4 ees2 ees4 bes4 f'2 bes,2 des4
  c2 aes4 bes4. [aes8 bes c]
  % 60
  des4 c2 bes2 f4 g4 ees2 f2 des'4 c2 aes4 bes2 bes4 bes4 c2
  % 67
  \property Staff.TimeSignature \override #'style = #'C
  bes4 des [c8 bes aes g] f4 [bes8 c des ees f des]
  ees4. f8 [ges f ees des] c4 bes c f [f8 es des c] bes4 des
  %%ees f ges4. f8 ees2. [d?8 \( c] \) d1 
  ees f ges4. f8 ees2. [d?8 \( \melisma
  \property Staff.automaticMelismata = ##f
  c] \melismaEnd \) d1 
}

bassMelody = \notes \relative c {
  r1 r r r r r r r r
  % 10
  f1 bes,2 f' ~ f4 f ges ges f2 r4 f des ees f4. f8 
  % 15
  f4 des ges2 f2 bes,4 bes bes' aes des,4. des8 des4 aes' bes ees, f2
  bes,4 bes'
  % 20
  aes4. f8 g4 a bes2 r r r4 bes, bes'4. bes8 bes4 bes aes4. bes8 c2
  % 25
  f,2 r r1 r2 r4 f4 bes2 aes4 f4 g aes bes [aes8 g]
  % 30
  f4. aes8 ges4 ges f2 r
  r4 ees4 bes'2 aes4 f g aes bes [aes8 g] f4. ees8
  % 35
  des4 [c8 bes] c4 c bes bes' aes f ees1 f2. f4 bes,2 r
  % 40
  f'2. f4 f2 bes, f'4. g8 a4 bes ~ [bes8 a] a4 bes2
  f4 f2 f4 bes4. bes8 ees,2
  % 46
  bes'2. bes4 aes des, aes'2 des, r
  r1 r2 f ~ f des ges f
  % 53
  \property Staff.TimeSignature \override #'style = #'1style
  bes,2 r4 r2. r r r2 bes4 f'2 f4 ees2 ees4
  % 60
  bes f'2 bes,2 bes4 ees4 c2 bes2 bes4 f'2 f4
  ees2 ees4 ges4 f2
  % 67
  \property Staff.TimeSignature \override #'style = #'C
  bes,4 bes' [aes8 g f ees des c bes aes] bes2 ees1 f
  %%bes,4 bes' [bes8 aes ges f] ees4 d ees2 ~ ees bes ~ bes1
  bes,4 bes' [bes8 aes ges f] ees4 d ees2 ~ ees
  \property Staff.automaticMelismata = ##f
  bes \melisma ~ \melismaEnd bes1
}

sopranoLyrics = \lyrics {
  O ma -- gnum __ my -- ste -- ri -- um
  et ad -- mi -- ra -- bi -- le sa -- cra -- men --
  _ _ _ -- _ _ _ -- _ _ _ -- _ _ -- _ _ --
  % (yikes, that's a kludge!)
  tum,
  % remove extra extenders between gnum and my -- jcn
  %o ma -- gnum __ _ _ my -- _ _ -- _ -- ste -- _ _ _ ri -- um
  o ma -- gnum __ my -- _ _ -- _ -- ste -- _ _ _ ri -- um
  et ad -- mi -- ra -- bi -- le, et ad -- mi -- ra -- bi -- le
  sa -- cra -- men -- _ -- tum,
  % 21
  ut a -- ni -- ma -- li -- a vi -- de -- rent Do -- mi -- num na --
  tum, vi -- de -- rent Do -- mi -- num na -- _ _ _ -- _ -- tum
  % 30
  ja -- cent -- tem in prae -- _ se -- _ _ -- pi -- o,
  % 35
  ja -- cent -- tem in prae -- _ se -- _ _ _ -- _ _ -- _ _ pi -- o,
  % 40
  O be -- a -- ta Vir _ -- _ -- _ -- _ _ -- _ _ go,  cu -- jus
  % 45
  vi -- sce -- ra me -- _ _ -- _ _ -- ru -- e -- runt por -- ta -- re
  % 49
  Do -- _ _ _ -- _ _ -- _ _ -- mi -- num Je -- sum Chri  -- _ _ -- _ --
  % 53
  stum.
  Al -- le -- lu -- ja, al _ -- _ -- le -- lu -- ja,
  al -- le -- lu -- ja, al _ -- _   le -- lu -- ja,
  % 62
  al -- le _ -- _ _ -- _ lu _ _ -- _ ja, al -- le -- lu --
  % 67
  ja, al -- le _ _ -- _ _ -- lu -- _ _ -- _ _ -- _ -- _ --
  ja. __ _
}

altoLyrics = \lyrics {
  % 2
  O __ ma  -- gnum my -- ste -- ri -- um
  et ad -- mi -- ra -- bi -- le sa -- cra -- men -- _ _ _ tum,
  % 10
  o ma -- gnum __ _ _ my -- ste -- _ -- _ ri -- um,
  et ad -- mi -- ra -- bi -- le sa -- cra -- men -- _ tum,
  %% move ut --jcn
  %% et ad -- mi -- ra -- bi -- le sa -- cra -- men -- tum, __
  et ad -- mi -- ra -- bi -- le sa -- cra -- men -- tum, __ _
  % 21
  ut a -- ni -- ma -- li -- a
  vi -- de -- rent Do -- mi -- num  na -- tum,
  vi -- de -- rent Do -- mi -- num na -- _ _ -- _ tum,
  ja -- cen _ _ _ -- _ _ -- _ tem
  % 30
  ja -- cent -- tem in prae -- se _ -- _ _ _ -- _ -- _ _ -- _ pi _ -- o,
  ja -- cen -- tem in prae _ _ -- _ _ -- se _ -- _ _ _ -- _ -- pi -- o.
  % 40
  O be -- a -- ta Vir -- go,
  cu -- jus vi -- sce -- ra me _ -- _ _ _ -- _ _ -- ru -- e -- runt por -- ta 
-- re
  % 49
  Do -- _ _ _ -- _ -- mi -- num Je -- _ _ -- _ _ -- sum __ _ Chri --
  % 53
  stum.
  Al -- le -- lu -- ja, al _ -- _ le -- lu -- ja,
  al -- le -- lu -- ja, al -- le -- lu -- ja,
  al -- le -- lu -- ja, al -- le -- lu -- ja,
  al _ -- _ le -- lu --
  % 67
  ja, al -- le _ -- _ _ _ -- lu -- _ -- _ _ -- _ _ -- ja,
  al -- le -- _ _ -- lu -- _ -- _ -- _ _ -- ja. __ _
}

tenorLyrics = \lyrics {
  % 8
  O __ ma -- gnum my -- ste -- ri -- um
  et ad -- mi -- ra -- bi -- le sa -- cra -- men --
  _ _ -- _ _ -- _ -- _ -- tum,
  et ad -- mi -- ra -- bi -- le sa -- cra -- _ men -- tum, 
  % 19
  ut a -- ni -- ma -- li -- a,
  ut a -- ni -- ma -- li -- a,
  vi -- de -- rent Do -- mi -- num na -- _ --
  % 25
  tum, vi -- de -- rent Do -- mi -- num na -- tum
  % 28
  ja -- cen -- tem in prae _ -- se _ _ -- _ _ _ -- _ _ -- _ -- pi -- o,
  ja -- cen -- tem in prae -- se -- _ _ _ -- _ _ -- pi -- o,
  in prae -- se -- _ _ -- _ _ _ -- _ -- _ _ _ -- pi --o.
  % 40
  O be -- a -- ta Vir -- _ -- _ -- _ -- go, cu -- jus vi -- sce -- ra
  me _ -- _ _ _ -- ru -- e _ -- _ -- runt por -- ta -- re
  % 49
  Do -- mi -- num Je -- sum Chri --
  % 53
  stum.
  Al -- le -- lu -- ja, al -- le -- lu -- ja, al -- le -- lu -- ja, al _ -- _ 
le -- lu -- ja,
  al -- le -- lu -- ja, al -- le -- lu ja, al -- le -- lu --
  % 67
  ja, al -- le _ -- _ _ _ -- lu _ _ -- _ _ -- _ _ -- _ -- _ _ _ -- _ -- _ -- _ 
ja,
  al -- le _ -- _ _ _ -- lu -- _ _ -- _ _ -- _ -- ja. __ _
}

bassLyrics = \lyrics {
  % 10
  O ma -- gnum __ my -- ste -- ri -- um
  et ad -- mi -- ra -- bi -- le sa -- cra -- men -- tum,
  et ad -- mi -- ra -- bi -- le sa -- cra -- _ men -- tum,
  % 19
  ut a -- ni -- ma -- li -- a,
  vi -- de -- rent Do -- mi -- num __ _ na --
  % 25
  tum,
  % 27
  ja -- cen -- tem in prae -- se -- _ _ -- _ _ -- _ -- _ pi -- o,
  ja -- cen -- tem in prae _ -- se _ -- _ _ -- _ _ -- _ _ -- _ -- pi --
  o, in prae -- se -- _ -- _ -- pi -- o.
  % 40
  O be -- a -- ta Vir _ -- _ _ -- _ _ -- _ -- go,
  cu -- jus vi -- sce -- ra me -- ru -- e _ -- _ -- runt
  % 50
  Je -- sum Chri -- _ --
  % 53
  stum.
  al -- le -- lu -- ja, al -- le -- lu -- ja,
  al -- le -- lu -- ja, al -- le -- lu -- ja,
  al -- le -- lu --
  % 67
  ja, al -- le _ -- _ _ _ -- _ _ _ -- _ -- lu -- _ -- ja,
  al -- le _ -- _ _ -- _ _ -- lu -- ja. __ _
}


sopranoTotal = \simultaneous {
              \addlyrics
              \context Staff = soprano { 
                \property Staff.instrument = "Soprano"
                \property Staff.midiInstrument = "voice oohs"
                \clef "violin"
                \property Staff.automaticMelismata = ##t
                                \notes \context Voice=soprano< 
                                                \global
                                                \sopranoMelody
                                                >
                                        }
                     \context Lyrics = "soprano" \sopranoLyrics
              }

altoTotal = \simultaneous {
              \addlyrics
              \context Staff = alto { 
                \property Staff.instrument = "Alto"
                \property Staff.midiInstrument = "voice oohs"
                \clef "violin"
                \property Staff.automaticMelismata = ##t
                                \notes \context Voice=alto< 
                                                \global
                                                \altoMelody
                                                >
                                        }
                     \context Lyrics = "alto" \altoLyrics
              }

tenorTotal = \simultaneous {
              \addlyrics
              \context Staff = tenor { 
                \property Staff.instrument = "Tenor"
                \property Staff.midiInstrument = "voice oohs"
                \clef "violin_8"
                \property Staff.automaticMelismata = ##t
                                \notes \context Voice=tenor< 
                                                \global
                                                \tenorMelody
                                                >
                                        }
                     \context Lyrics = "tenor" \tenorLyrics
              }

bassTotal = \simultaneous {
              \addlyrics
              \context Staff = bass { 
                \property Staff.instrument = "Bass"
                \property Staff.midiInstrument = "voice oohs"
                \clef "bass"
                \property Staff.automaticMelismata = ##t
                                \notes \context Voice=bass< 
                                                \global
                                                \bassMelody
                                                >
                                        }
                     \context Lyrics = "bass" \bassLyrics
              }

        
\score {
     \context ChoirStaff = choir <
       \sopranoTotal
       \altoTotal
       \tenorTotal
       \bassTotal
     >

  \paper { interscoreline = 5 }
  \midi  { \tempo 4=110 }
}

% EOF

-- 
Jan Nieuwenhuizen <address@hidden> | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien       | http://www.lilypond.org




reply via email to

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