Reciting tones

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Reciting tones

Br. Samuel Springuel
While typesetting chant, I have a pair of functions for dealing with recitation notes: one applies to the notes, the other to the lyrics (see MWE below).  This works, but I’m wondering if there isn’t a way to combine the two functions into one that has a few extra features:

1) The function automatically detects whether it’s in a musical or lyrics context and applies the appropriate settings/overrides which are exclusive to that context.
2) The function looks to make sure that it’s always in parallels with itself (that is, when the function is applied in the notes, there should be a corresponding application of the function in the lyrics at the same musical moment), raising an error when it’s not (or at least a warning like a bar check).
3) Line breaks are allowed between the words encapsulated in the function in the lyrics, in which case the reciting tone note will be repeated at the beginning of the new line.

Are any of these things possible?  Priority wise, I’d say that #3 is the most important for me (as it would allow me to use the same source on different sized paper and/or with different sized staves), while the others are more “nice-to-have” things that would help my workflow without being critical.  On the other hand, I naively expect #1 to be easy to implement, perhaps by looking at the associatedVoice property (which would be set for a lyrics context, but presumably not for a music one).

%%%%% MWE

\version "2.19.84"

% apply to lyrics in chant which should all appear below a single note
recite-words = { \once \override LyricText.self-alignment-X = #LEFT }

% a note in chant which is sustained for multiple words
% argument for ly:make-duration is 1 for half notes, 0 for whole, -1 for breve
% also has second optional argument for number of dots
recite-note = #(define-music-function (note) (ly:music?)
            (withMusicProperty 'duration (ly:make-duration 1) note))

% remove stems and auto bar lines
chant = {
    \set Score.timing = ##f
    \omit Stem

music = {\chant \recite-note c' d' e' f' }

words = \lyricmode{ \recite-words "A phrase all sung on one note" mov -- ing words. }

\new Staff <<
    \new Voice = "mel" { \music \music }
    \new Lyrics \lyricsto "mel" { \words \words }

Fr. Samuel, OSB
(R. Padraic Springuel)
St. Anselm’s Abbey
4501 South Dakota Ave, NE
Washington, DC, 20017
(c) 202-853-7036