6. What OrchestralLily does

Say you have the following structure of your score:

@c
'(
  ("V" GrandStaff ("VI" "VII"))
  ("Strings" StaffGroup ("V" "Va"))
  ("FullScore" ParallelMusic ("Strings" "SSolo"))
)@c

in you score structure definition. This means you have two violins, one viola and a soprano solo.


6.1 How a score is generated

If you call

createScore #"PieceA" #"FullScore"

in your lilypond file, OrchestralLily will generate a score for you that is similar to the following hand-written score:

@c
score @{
  <<
    PieceAStringsStaff
    PieceASSoloStaff
  >>
  header @{ piece = PieceA[FullScore]PieceName @}
@}@c

If there exists e.g. a variable \PieceAStringsStaff, it is used, otherwise the staff (group) will be generated by OrchestralLily as described below.

If none of the sub-staves (and their sub-staves, etc.) contains any music, OrchestralLily will instead create a title to indicate no music is to be played:

markup piece-title PieceA[FullScore]PieceNameTacet

Here, piece-title is the function used by OrchestralLily to format piece headings. It simply returns the proper markup definition for the given string.


6.2 How a staff group is generated

If there is no definition for \PieceAStringsStaff, it is generated (as a StaffGroup as defined in the score structure) by OrchestralLily and is equivalent to the following manual definition:

@c
context StaffGroup = "PieceAStringsSt" with @{
         instrumentName = PieceAStringsInstrumentName
         shortInstrumentName = PieceAStringsShortInstrumentName 
@} <<
  PieceAVStaff
  PieceAVaStaff  
>>@c

Again, if any of the PieceAVStaff or PieceAVaStaff variable is defined, it is inserted, otherwise the corresponding staff or staff group is created automatically (unless there is no music definition for it, in which case it is simply ignored). If any of the instrument name variables is not defined, the corresponding assignment is left out (without any error or warning message!).

If the definition of the Strings group in the score structure were a ParallelMusic or SimultaneousMusic, the generated code would be equivalent to

@c
<<
  PieceAVStaff
  PieceAVaStaff  
>>@c

without the possibility to have an instrument name attached.


6.3 How a staff is generated

If the staff for e.g. "SSolo" is not manually defined, OrchestralLily generates it in a form equivalent to

@c
context Staff = "PieceASSoloSt" with @{
         instrumentName = PieceASSoloInstrumentName
         shortInstrumentName = PieceASSoloShortInstrumentName 
@} <<
  context Voice = "PieceASSoloVoice" << 
    dynamicUp
    PieceA[SSolo]Settings
    [PieceA]SSoloClef
    PieceA[SSolo]Key
    PieceASSoloMusic
  >>
  context Lyrics = "PieceASSoloLyrics" lyricsto "PieceASSoloVoice" PieceASSoloLyrics
>>@c

If no lyrics are defined (i.e. the variable \PieceASSoloLyrics is not defined), the \dynamicUp as well as the lyrics context is left out. Similarly, if any of the variables shown above is not defined, it is simply left out without any warning or error. If no music is defined (e.g. the variable \PieceASSoloMusic is not defined), no staff will be generated and it will simply be left out in the parent group.


Table of Contents

This document was generated by Reinhold Kainhofer on June, 4 2008 using texi2html 1.79.