I would like to include some Staff and Voice context settings in the \midi 
block only if a flag is set to ##t and I have not been able to figure out how 
to do this.  When I try to wrap the \context blocks in a code block with #{…#} 
I get this error:
trackPerVoiceMWE.ly:31:16: error: syntax error, unexpected '{', expecting 
SCM_IDENTIFIER or SCM_TOKEN or STRING or SYMBOL
      \context                 {
Is there any way to conditionally change the Staff_performer based on a flag 
setting?

This is my non-working MWE:

\version "2.24.0"
\include "english.ly"

global = {
  \key c \major
  \time 4/4
}
TrackPerVoice = ##t
\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice = "soprano" <<
        \global
        \relative c' { c'4 d e f << g1 \\ { g4 f e2 } >> }
      >>
      \new Voice = "alto" <<
        \global
        \voiceTwo
        \relative c' { c'4 b a g | f e d2 }
      >>
    >>
  >>          
  \layout {}
  \midi {
    #(display (format #f "TrackPerVoice is ~a\n" TrackPerVoice))
    #(if TrackPerVoice #{              
      #(display "One track per Voice (may make too many voices with polyphony)")
      #(display "Turn this off to get sop and alto combined in one track.")
      \context {
        \Staff
        \remove "Staff_performer"
      }
      \context {
        \Voice
        \consists "Staff_performer"
      }
    #} )
  }    
}

Thanks,
Carolyn

Reply via email to