lilypond-user
[Top][All Lists]
Advanced

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

Re: Mixing notation and lyric entry


From: Michael Ellis
Subject: Re: Mixing notation and lyric entry
Date: Wed, 15 Dec 2010 10:13:22 -0500

Jan Warchol wrote "I don't know how it could be done, and i strongly recommend not doing
this. Separating different types of content is in my opinion very
beneficial"

I agree that separating content is useful.  As you point out, it allows one to easily recombine it in various formats.  It's just that I prefer to have the computer do the work whenever possible.  Let me see if I can clarify what I mean by that.

Conceptually, I could write a preprocessor that would use special comment prefixes '%!T' and '%!!T' to take input like 

%!T  These are lyr- rics
%!!T do8  re mi fa

%!T  and a few more.
%!!T sol la ti do

and output the music and the lyrics in separate variable assignments

\tenormelody = \relative do { do8 re mi fa sol la ti do }
\tenorlyric   =  \lyricmode  { These are ly-rics and a few more }

and then use these in your template, right?  I can code that up in Python in a heartbeat, but it's an unappealing solution for obvious reasons.   Hence the query about how to do it with LilyPond and Scheme. 

Cheers,
Mike


On Wed, Dec 15, 2010 at 1:52 AM, Jan Warchoł <address@hidden> wrote:
Hi,

2010/12/14 Michael Ellis <address@hidden>:
> Is there a clean way to enter a phrase followed by the corresponding notes
> in a \relative block?  The example given in the docs,
>
> {
>   \time 3/4
>   \relative c' { c2 e4 g2. }
>   \addlyrics { play the game }
> }
>
> is fine for a small example, but it gets messy for longer music.   I do a
> lot of transcribing choral parts out of printed scores and would like to be
> able to keep the lyrics together with the music in chunks of a few bars

I don't know how it could be done, and i strongly recommend not doing
this. Separating different types of content is in my opinion very
beneficial, for example i use the following template for choral music
and i find it very logically structured, clear to read and easy to
maintain (for example i can easily change an existing piece to be
written on two staves instead of four just by changing structure in
"choir" block):

\version "2.12.3"
\pointAndClickOff
\header {
       title = ""
       subtitle = ""
       poet = "słowa: "
       composer = "muzyka: "
       arranger = "opracowanie: "
}
global = {
       \autoBeamOff
       \key
       \time
}
scoretempomarker = {
       \tempo
       \set Score.tempoHideNote = ##t
}
%--------------------------------MUSIC--------------------------------
sopranomelody = \relative c'' {

       \bar "|."
}
altomelody = \relative f' {

       \bar "|."
}
tenormelody = \relative c' {

       \bar "|."
}
bassmelody = \relative f {

       \bar "|."
}
akordy = \chordmode {

}
%--------------------------------LYRICS--------------------------------
sopranotext =  \lyricmode { \set stanza = "1. "

}
altotext =  \lyricmode { \set stanza = "1. "

}
tenortext =  \lyricmode { \set stanza = "1. "

}
basstext =  \lyricmode { \set stanza = "1. "

}
stanzas = \markup {
}
%--------------------------------THE BIG STRUCTURE
VARIABLE--------------------------------

choirpart = {
       \new ChoirStaff <<
               \scoretempomarker
               \new ChordNames { \germanChords \akordy }
               \new Staff = soprano {
                       \clef treble
                       \set Staff.instrumentName = "S "
                       \set Staff.shortInstrumentName = "S "
                       \new Voice = soprano {
                               \global
                               \set Voice.midiInstrument = "clarinet"
                               \sopranomelody
                       }
               }
               \new Lyrics = sopranolyrics \lyricsto soprano \sopranotext

               \new Staff = alto {
                       \clef treble
                       \set Staff.instrumentName = "A "
                       \set Staff.shortInstrumentName = "A "
                       \new Voice = alto {
                               \global
                               \set Voice.midiInstrument = "english horn"
                               \altomelody
                       }
               }
               \new Lyrics = altolyrics \lyricsto alto \altotext

               \new Staff = tenor {
                       \clef "treble_8"
                       \set Staff.instrumentName = "T "
                       \set Staff.shortInstrumentName = "T "
                       \new Voice = tenor {
                               \global
                               \set Voice.midiInstrument = "english horn"
                               \tenormelody
                       }
               }
               \new Lyrics = tenorlyrics \lyricsto tenor \tenortext

               \new Staff = bass {
                       \clef bass
                       \set Staff.instrumentName = "B "
                       \set Staff.shortInstrumentName = "B "
                       \new Voice = bass {
                               \global
                               \set Voice.midiInstrument = "clarinet"
                               \bassmelody
                       }
               }
               \new Lyrics = basslyrics \lyricsto bass \basstext
       >>
}

%---------------------------------MIDI---------------------------------
\score {
       \unfoldRepeats \choir
       \midi {
               \context {
                       \Staff \remove "Staff_performer"
               }
               \context {
                       \Voice
                               \consists "Staff_performer"
                               \remove "Dynamic_performer"
               }
       }
}

%--------------------------------LAYOUT--------------------------------
\score {
       \choir
       \layout {
               indent = 0\cm
               \context {
                       \Staff \consists "Ambitus_engraver"
               }
       }
}

\stanzas

(if anyone wants to use this template, feel free to do it).

cheers,
Janek


reply via email to

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