Macros for typesetting music in TeX first appeared in 1987 (MuTeX) and were limited to one-staff systems.
In 1991, Daniel Taupin created MusicTeX, whose macros allowed the production of systems with multiple staves, but which presented a few problems in controlling the horizontal positioning of notes. MusicTeX used a one-pass compilation.
In 1997 the positioning problems were corrected in MusiXTeX, which includes the external application musixflx to control the horizontal distances. This new module requires a three-pass compilation: TeX, musixflx and TeX again. MusiXTeX requires ghostscript.
When compiling a TeX source file named file.tex, a file.mx1 is generated, containing information about the distances between staves and bar lengths. This file is processed by the program musixflx, which determines the distances between notes for each beat and writes them in file.mx2, which is used in compiling the final TeX file. Any changes in the score that affect the horizontal distances require file.mx2 to be deleted and all three passes to be performed again; otherwise, only one compilation in TeX is required.
In 1996, Han-Wen Nienhuys and Jan Nieuwenhuizen, who were working in the MusiXTeX PreProcessor (MPP) project since the previous year, decided to create a new music engraving program loosely based on MusiXTeX's concepts, named LilyPond. LilyPond 1.0 was released on 31 July 1998, highlighting the development of a custom music font, Feta, and the complete separation of LilyPond from MusiXTeX.
PMX is a preprocessor for MusiXTeX written by Don Simons.