Rich instrument playback support (in MusicXML 3.0 as opposed to pure MIDI number). Richer metadata (arranger, copyright ), precise control over bar numbering schemes.
#Abc to musicxml full
full in Lilypond some in MusicXML) control over positioning of grace notes, in particular grace note groups in multiple parts (useful for a Beethoven symphony) different key signatures in different parts (very important for Beethoven symphonies needed even after the transposition settings are complete since trumpets should not have marked key signatures in any transposition). If the OP wants more specific limitations rather than philosophical, some important ones: little or support for tuplets beyond basic information (how they should be displayed (number, ratio, no sign), nested tuplets, placement in metronome/metric modulation marks) many fewer ornament (decoration) signs support for early music signs (full in Lilypond a few in MusicXML) and contemporary notation symbols (diamond harmonics cluster chords microtones etc. Important constants or attributes, especially in these directive signs, are left undefined: one can see that there is a "%%papersize" directive, which can be followed by "A4", but is the US version of this directive "letter" or "8.5x11" or "8.5" or "8.5/11"? In Lilypond or MusicXML such constants are well-defined. Such non-standard additions let the format grow according to the needs of the community, but make parsing of important features difficult and leave a somewhat non-standard standard. For instance, the 2.1.1 (dev) spec says, "A percent symbol (%) will cause the remainder of any input line to be ignored." however, later "A stylesheet directive is a line that starts with %%, followed by a directive that gives instructions to typesetting or player programs." (as in the %%score directive above). With ABC notation, it can be extremely difficult to skip information that may be correct but from a different (older or future) standard.īecause it evolved from a (great) way of simply editing music, some aspects of the implied grammar are contradictory or and can lead to very different output depending on which parser or interpreter is used. The difference means that MusicXML readers (or the few Lilypond readers) can know whether a file is well-formed in advance, and selectively parse or read elements that may or may not be relevant to the task. (Lilypond is harder to parse or generate in this way, but it does have a grammar specification that can help). Contrast with MusicXML where the XML format of contents has a sort of encapsulation that is easy to parse and can be tolerant towards future changes in the specification. As far as I am aware, there is no formal grammar for a well-formed ABC document that would let a programmer know where the following chain of elements (lyrics, voices, etc.) would end. The limitations arise in that an ABC parser cannot know from the data format what types of ABC extensions or seldom-used features it may encounter at any moment or how the language may evolve in the future. As both Kevin and Chris noted above, the ABC format has the capacity to encode much of the complexity of MusicXML and Lilypond and other formats, so it is not especially limited with respect to those formats (though the precise formatting and layout options of MusicXML and Lilypond, necessary for storage of a score that can be reconstructed, are rudimentary). My sense (after writing parsers for ABC, MusicXML, Cappella, Noteworthy, and about 6 other formats and output to Lilypond, etc.) is the limitations of ABC, the format, cannot be completely separated from the limitations of ABC parsers. I'm also curious about how major or important these missing features are, but that's probably too subjective of a question for this site, since everyone will have different goals. So what, specifically, are the limitations of ABC notation, compared to a fuller-featured system? Note that I'm especially looking for limitations inherent to the format, rather than limitations of any tools that work with the format. I get the feeling that it is not as fully-featured as other text-based score-writing formats (such as lilypond or MusicXML), but I've not used any of these systems enough to get a good feel for what the differences are.
It was originally written for folk tunes, but is general-purpose enough that it has been used, for example, to notate a movement of a Beethoven Symphony. This question came up in a discussion on Meta, and I thought it might be a good question to ask on the general site.ĪBC notation is a relatively simple text-based format for writing music scores and sharing them online.