Introduction
ABCp is an embeddable library for the musical
notation ABC.
The ABC notation it's simple and yet very
powerful, look at
the links page for a small
collection of ABC related links for more
information.
Latest version of the software can be accessed
through the download page. The documents
section offers both generic and specific
documents on the design and the implementation on ABCp.
Motivations
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 MIT license, and
may be used in both free and
commercial software.
Requirements
ABCp has been
designed with the following requirements in
mind:
- To be able of intepreting 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.
History
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).
The version hosted here it's aimed to
become the release version.
Contributing
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 OSI. 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!
|