lilypond-user
[Top][All Lists]
Advanced

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

Expansion of score for different format


From: Carl Peterson
Subject: Expansion of score for different format
Date: Wed, 8 May 2013 15:27:20 -0400

All,

I'm 95% sure the answer to my question is "no," but I'll ask it anyway.

I'm working on a psalter, and one of the things I want to be able to do is go from a standard book layout with all the verses arranged in parallel to a screen layout for projection with each verse listed sequentially.

I've modularized my scores using variables for each verse and for each voice and each psalm is contained in its own file and included into a master book file. Is there a way to effect this expansion using the same score blocks? The PowerPoint file at http://www.taylorpublications.net/image/data/powerpoint/Come%20Thou%20Fount%20of-SFP.ppt.zip gives an example of what I'm wanting to accomplish (albeit with a much more aesthetically-pleasing result).

The effect would be similar to expanding a Volta repeat. I don't think I've seen anything in the documentation to do this without the Volta.

If something doesn't already exist, I suppose the question would be whether there's a way to accomplish this by Scheme?

The basic score block at present is:

\score {  <<
    \new Staff = "treble"  <<\sopAlto \duplVoiceT >> 
      \new Lyrics \lyricsto "sopranoAlto" { \set stanza = #"1. " \verseOne }
      \new Lyrics \lyricsto "sopranoAlto" { \set stanza = #"2. " \verseTwo }
      \new Lyrics \lyricsto "sopranoAlto" { \set stanza = #"3. " \verseThree }
    \new Staff = "bass" << \tenBass \duplVoiceB >>
>>
}

Where \sopAlto is the main combined part for Soprano and Alto, \tenBass is the combined Bass and Tenor voice, and \duplVoiceT and \duplVoiceB are for when I need to double the voice and have a stem pointing in the opposite direction (or in choruses when I need to differentiate the two voices on the staff).

My problem is that I am not a Scheme programmer (in fact, while I do some programming, I'm not versed in any of the languages used by the LilyPond project). The basic function would be something like this (in pseudo-pseudocode):

((verseOne "sopranoAlto") (verseTwo "sopranoAlto") (verseThree "sopranoAlto"))

function writeScore ( trebleClef, bassClef, splitVerses, listOfLyrics ) {

     if ( splitVerses == false ) {
         \score {  <<
                trebleClef

                verseCounter = 0
                for each verse from listOfLyrics {
                      increment verseCounter
                      \new Lyrics \lyricsto verse.boundVoice { \set stanza = #"verseCounter. " verse.lyrics }
                }

                bassClef
         >> }
     }

   else {
          for each verse from listOfLyrics {
                increment verseCounter

           \score {  <<
                   trebleClef
                    \new Lyrics \lyricsto verse.boundVoice { \set stanza = #"verseCounter. " verse.lyrics }
                   bassClef
                >> }

          }

          }
}

Cheers,
Carl

reply via email to

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