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 }