A parser for the ABC music notation

ABCp is a C library to interpret the simple, but very powerful, music notation ABC.

The documents section offers documents on the design and the implementation on ABCp.

Latest released version of the software can be accessed through the download page but the most current version is in the subversion repository.


Authors of ABC software have done an excellent job to provide the ABC community the tools they need. So far, though, they had to spend time and effort in dealing with different syntax flavours, extend the syntax to suit their needs and other "parsing related" tasks.

They could have spent that time on their software (e.g. enhancing the expressiveness of the MIDI output, the look of the printed score or the user interface) to their greater satisfaction and everybodys greater benefit.

I would really like them to be able to focus on their respective areas of interest (I'd never been able to devote enough time on those complex tasks), so I thought I could ease their job providing them a library that could take care of all the parsing details for them.

ABCp is such a library, it accomodates syntax flavours and includes concepts found in other notation systems reporting higher level ABC objects to the real application.

It is released as open source, under the terms of the BSD license, and may be used in both free and commercial software.


ABCp has been designed with the following requirements in mind:

  • To be able to handle the ABC 2.0 standard as well as (to the maximum possible extent) the 1.6, the 1.7 standard and the extensions introduced by the most widely used tools (abcm2ps, abcmidi, barfly, ...);
  • To be fast: nobody would use a library with poor performance;
  • To be small: there must be a fair tradeoff between size and functionalities;
  • To be easily embeddable: no big restriction on the programming language to use;
  • To be usable: no complex API or class hierarchy to remember.

I'm not claiming I met all of them, anyway it's my intention to improve any aspect of ABCp to reach the best tradeoff between all requirements.


The idea of a generic embeddable parser was raised in the abcusers mailing list by Christian M. Cepel in April 2004. Between September and December 2004, following some discussion on the same list, I created a proof of concept to demonstrate its feasibility (the old site is archived here).

After long time I've revamped the project to see if I can move it some step forward.

The version hosted here it's aimed to become the release version.


An open source project is nothing without feedbacks from the users community so, please, feel free to provide your comments directly to me or in the discussion forum. If the topic is general enough, consider also using the abcusers mailing list.

If you think you could help this project in any way, please let me know! My spare time is tight and your help could really make the difference!