Hi all,

So… At the bottom of this email, I’ve included a somewhat-M W E of something 
I’m wrestling with around all this stuff. You’ll see I have a ScoreMarks.ily 
file (one of many \includes, but needed here because the structure of the vc 
and pc are slightly different!), a notes.ily file (with all the note-code), and 
output files.

There are *so* many variables on the input side in this industry (musical 
theatre): show version (cuts, etc.), voicing (different characters can be 
played by people singing in different clefs), chorus voicing (SATB? just SA?), 
etc. I’m trying to come up with a structure/workflow/plan that gives me maximum 
control and flexibility with minimum complexity (all terms relative, 
obviously!).

Questions:

1. Should I have one output file per score, or use \book? I assume if it’s 
multiple files, and I want to keep them synchronized, I would want to use make 
(or similar) to trigger a compilation of all of them at once?

2. Am I <<>>-ing the \global at the best spot(s)?

3. Compare the voicing of m3 in the SATB and SA voicings: mm1-2 are different, 
but m3 is the same. How can I do this kind of thing with the least amount of 
code duplication? I don’t believe quoted music can be transposed directly 
(i.e., you need to create a second, pre-transposed, quotation); I can’t see how 
to inject a transposition (e.g., using the Edition-Engraver) into a specific 
part of a score/variable; I really don’t want to have to break every variable 
into multiple subvariables to handle every difference between voicings (nor do 
I want to have complete duplicates, one per voicing!); etc.

Given Lilypond’s current powers and limitations, what’s my best path forward? 
At this point, even a high-level discussion would be really appreciated: As you 
can probably imagine, the number of permutations and combinations are ganging 
up on me, and I can’t grapple with them all myself.

Thanks,
Kieren.
____________________________________

\version "2.25.10"
\language "english"

\paper { tagline = ##f ragged-bottom = ##t indent = 0 }


%%%  ScoreMarks.ily

\layout {
  \context {
    \type "Engraver_group"
    \name ScoreMarks
    keepAliveInterfaces = #'( metronome-mark-interface )
    rehearsalMarkFormatter = #format-mark-box-alphabet
    \consists "Axis_group_engraver"
    \override VerticalAxisGroup.staff-affinity = #DOWN
    \override VerticalAxisGroup.nonstaff-relatedstaff-spacing =
        #'((basic-distance . 3) (minimum-distance . 3) (padding . 1.5))
    \consists "Metronome_mark_engraver"
    \override MetronomeMark.Y-offset = #0
    \override MetronomeMark.outside-staff-priority = #50
    \override MetronomeMark.break-align-symbols =
      #'(left-edge staff-bar clef time-signature key-signature)
    \override MetronomeMark.non-break-align-symbols =
      #'(paper-column-interface)
    \consists "Mark_engraver"
    \override RehearsalMark.Y-offset = #0
    \override RehearsalMark.outside-staff-priority = #100
    \override RehearsalMark.break-align-symbols =
      #'(left-edge staff-bar clef time-signature key-signature)
    \override RehearsalMark.self-alignment-X = #CENTER
    \override RehearsalMark.extra-spacing-width = #'(-0.5 . 0.5)
    \consists "Text_spanner_engraver"
    \override TextSpanner.font-size = #2
    \consists "Time_signature_engraver"
    \override TimeSignature.stencil = #point-stencil
  }
  \context {
    \Staff
    \consists "Staff_collecting_engraver"
  }
  \context {
    \Score
    \remove "Metronome_mark_engraver"
    \remove "Mark_engraver"
    \accepts ScoreMarks
  }
}


%%%   notes.ily

global = {
  \tempo "Fast"
  \key c \major
  s1
  \tag #'full { s1 }
  \bar "||"
  \key d \major
  s1
  \bar "|."
}

Michael_notes = {
  \tag #'Michael-treble { \clef treble }
  \tag #'Michael-tenor { \clef "treble_8" }
  c'4 4 4 4
  \tag #'full { g4 4 a4 4 }
  d4 4 4 4
}

chorus_notes = {
  \tag #'satb {
    <g c' e'>4 4 4 4
    \tag #'full { <g b d'>4 4 <a cs' e'>4 4 }
    <a d' fs'>4 4 4 4
  }
  \tag #'sa {
    <c' e' g'>4 4 4 4
    \tag #'full { <b d' g'>4 4 <cs' e' a'>4 4 }
    <a d' fs'>4 4 4 4
  }
}

theChords = \chordmode {
  c1
  \tag #'full { g2 a }
  d1
}

acc_notes_upper = {
  c''4 4 4 4
  \tag #'full { g'4 4 a'4 4 }
  d'4 4 4 4
}
acc_notes_lower = {
  \clef bass
  c4 4 4 4
  \tag #'full { g,4 4 a,4 4 }
  d,4 4 4 4
}


%%%  full.ly (i.e., full version, Michael at pitch)

vox =
  <<
    \new Staff \new Voice << \global \Michael_notes >>
    \new Staff \new Voice << \global \chorus_notes >>
    %%  there would potentially be a lot of other vocal/choral parts in this 
blob
  >>

vc =
  <<
    \new ScoreMarks \global
    \new ChordNames \theChords
    \vox
  >>

pc =
  <<
    \new ScoreMarks \global
    \vox
    \new PianoStaff <<
      \new Staff << \global \acc_notes_upper >>
      \new ChordNames \theChords
      \new Staff << \global \acc_notes_lower >>
    >>
  >>

\markup "Vocal/Choral Score, Full Version, Michael tenor-clef, SATB chorus"
\score {
  \keepWithTag #'(Michael-tenor satb full) \vc
}

\markup "Piano/Conductor Score, Full Version, Michael tenor-clef, SATB chorus"
\score {
  \keepWithTag #'(Michael-tenor satb full) \pc
}

\pageBreak

\markup "Vocal/Choral Score, Short Version, Michael tenor-clef, SATB chorus"
\score {
  \keepWithTag #'(Michael-tenor satb short) \vc
}

\markup "Piano/Conductor Score, Short Version, Michael tenor-clef, SATB chorus"
\score {
  \keepWithTag #'(Michael-tenor satb short) \pc
}

\pageBreak

\markup "Vocal/Choral Score, Full Version, Michael treble-clef, SA chorus"
\score {
  \keepWithTag #'(Michael-tenor sa full) \vc
}

\markup "Piano/Conductor Score, Full Version, Michael treble-clef, SA chorus"
\score {
  \keepWithTag #'(Michael-tenor sa full) \pc
}

Reply via email to