lilypond

from 2003? as of writing 2.25 https://lists.gnu.org/mailman/listinfo/lilypond-user Lilypond is a music notation programming language which automates engraving. The music-notation software Lilypond generates high-quality music typography from a plain-text input format; almost every aspect of the program can be customized and programmed, and the system lends itself well to automation and batch processing. Lilypond offers a “minimal computing” alternative to bloated, costly, and hegemonic graphical programs. Like many free software tools, however, Lilypond still exacts a cost in time and training needed to overcome an unwieldly interface and adapt the tool for scholarly purposes. The author developed a system called lirio that enabled the production of two critical editions and a monograph in Lilypond (integrated with LaTeX). The system provides a new semantic-markup interface to Lilypond that enables scholars to think about typography separately from musical content; a range of expanded Lilypond functionality including incipit staves, mensural coloration brackets, and editorial annotations; and a stricter input format that makes Lilypond files easier to maintain. The author also developed the prototype ly2mei compiler to demonstrate how Lilypond files can be converted to MEI-XML, overcoming a major limitation in Lilypond’s export abilities. The article argues that scholars will be best served by a simple, consistent, meaningful interface in a format that can be shared and converted. An extension of Lilypond like lirio demonstrates the considerable potential of this tool for enterprising and patient scholars whose needs are not met by other tools. Lilypond provides a case study for how to make open-source, free-license tools work for our own needs as digital humanists.

utility

picture of facsimile

design

page setup

#(set-global-staff-size 17)
#(set-default-paper-size "a4")
left-margin = 12\mm
print-page-number = ##f

fonts

Fonts for text are grouped as roman (serif), sans (sans serif), and typewriter (monospace) fonts. Each can be globally set to a default in a \paper block:
#(define fonts
  (set-global-fonts
    #:roman "..."
    #:sans "..."
    #:typewriter "..."
    #:factor (/ staff-height pt 20)
  ))
...text fonts can be set locally alongside the text in a \markup block:
\markup {
  \override #'(font-name . "...")
}
Music fonts are more invovled, both to design and use. The modern ecosystem of music fonts target the SMuFL standard, which defines how standard Unicode fonts can map reserved private use space to notation glyphs. This has the upside of non-specialized installation (the fonts require no special file format, and are highly cross-platform), however, a helper library is currently required for use with Lilypond. esmufily (file esmufl.ily) and ekmelily (file ekmel.ily).
ekmFont = ...
\include "esmufl.ily"
\include "ekmel.ily"
ekmSet = { \ekmSmuflOn #'all }
\layout {
	\context { \Score \ekmSet }
}

references

fonts

https://github.com/MutopiaProject/MutopiaProject https://lilypond.org/doc/v2.23/Documentation/notation/fonts