On Aug 22, 2017, at 09:44, David Kastrup <d...@gnu.org> wrote: > >> I stumbled at this when I tried to define a predicate for void music, >> used (B) as an example, and found that it didn’t catch ##{#}. I’m not >> sure what to do. > > What is it that you are trying to predicate? The void flag is typically > set on music that is the result of an error.
I am using it in a conditional function to support various subsets of an SATB staff in one include file. \ifThenElse \aNotes << \ifThenElse \bNotes << … \partcombine \aNotes \bNotes ... >> << … \aNotes … >> >> << … \bNotes … >> "Void music" sounded like a natural way to represent a lack of music. An alternative is to leave the variable undefined, but I couldn’t figure out a way to do that without resorting to Scheme, something like this: #(if (defined? aNotes) #{ << … >> #} #{ << … >> #} That is much more difficult for me to read. >> Are these different concepts that have been given the same name, or >> are they different valid representations of void music? ... or is the >> difference an error? > > ly-syntax-constructors.scm is internal. void-music is not > user-callable. OK, but according to the Extending guide, section 2.1, "an empty LilyPond block corresponds to a void music expression,” so there is a user-accessible way to get void music. aNotes = ##{#} Thanks for pointing out the age of this code and the unsuccessful attempt to clean it up. I’m not keen to try cleaning it up myself now. I’ll work with what I have, which in spite of not making complete sense internally, looks fine on the surface. Regards, -- Dan _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel