> 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 {
Probably the easiest way is to include or exclude a whole \midi block like this:
\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 { }
#(if TrackPerVoice
(begin
(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.")
#{
\midi {
\context {
\Staff
\remove "Staff_performer"
}
\context {
\Voice
\consists "Staff_performer"
}
}
#})
#{ \midi { } #})
}
Alternatively, you can do it more like you were envisioning, but for technical
reasons, you have to start the Scheme code with $ , not # , and you also have
to include an extra \midi { } around the \context blocks (basically because
\context outside \layout or \midi is a different command).
\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 {
$(if TrackPerVoice
(begin
(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.")
#{
\midi {
\context {
\Staff
\remove "Staff_performer"
}
\context {
\Voice
\consists "Staff_performer"
}
}
#}))
}
}
The # vs $ issue is explained here:
https://extending-lilypond.gitlab.io/en/extending/lily-and-scheme.html#hash-vs-dollar
HTH
Jean
signature.asc
Description: This is a digitally signed message part
