The ABC Plus Project


Слава Україні!

Versione italiana   Versione italiana

Introduction

One of my hobbies is music: I play folk and early music on a bunch of wind instruments. I find that the ABC music notation language is a wonderful tool to typeset sheet music. ABC is one of the best designed, easy to use, well-thought out, and nicely implemented notation formats I've ever seen. It's an excellent alternative to other good notation languages like GNU Lilypond, or MusiXTeX, or Philip's Music Writer. You can write music in a very simple ASCII format and convert it to MIDI, or typeset it to make professional-looking scores.

ABC was originally designed for simple melodies, but there have been efforts to extend the notation. The ABC Music Standard is now at version 2.2, and supports polyphony and lots of other features.

Some ABC applications implement most of the the ABC 2 language; low-level details (formatting and MIDI effects) are supported too. The purpose of the ABC Plus project is to provide software and documentation for this extended ABC release. This is an example of classical music written in ABC Plus; it sounds like this. What I informally call ABC Plus is, in practice, the current implementation of ABC 2.

All RPMs and .deb packages available on this site were built on a Mint GNU/Linux 20.0 system. I built the RPM packages first, then I made the .deb package using the alien converter.






A couple of notes.

First of all: please note that I am not the author of abcm2ps, abc2svg, abcmidi, and EasyABC. I wish I were such a great programmer! I just provide the packages or the links. Please refer to the authors for any questions.

Secondly: please refer to The ABC Notation software page for a full and quite long list of ABC software.

Finally: please, please, don't write to me asking how to do this or that. I've run out of time. I recommend that you join the abcusers mailing list, and ask questions there. Thanks!


Making Music with ABC 2

I have written a manual that explains how to write music using ABC 2. It focuses on using abcm2ps, abc2svg, abcmidi, and the ABC/MusicXML translators, but most of the information it contains can be applied (at least to some extent) to all ABC applications. Many thanks to Norman Schmidt who helped me translate parts of the manual.

I release this manual under the GNU Free Documentation License 1.3. This basically means that it's free and that you can freely modify it, as long as you make your modifications publicly available.

Read the manual here or download the latest release (please report errors and omissions!):

Previous versions:

I rely on your feedback to fix errors and omissions, and in general to make this manual more useful. Please feel free to make translations!

Back to top


Some ABC 2 choral music

As a demonstration of the capabilities of ABC 2, I have prepared a few examples of choral sheet music. They're free to use and share. Please report bugs, should you find any.

All scores include this choral.abc file. MusicXML files were created with Wim Vree's abc2xml version 79. The sources are compatible with both abcm2ps and abc2svg.

Description ABC PDF MIDI MusicXML
"Ave Maria"
Jacob Arcadelt (c. 1514-1557)
Ave_Maria_Arcadelt.abc Ave_Maria_Arcadelt.pdf Ave_Maria_Arcadelt.mid Ave_Maria_Arcadelt.xml
"Ave Maria"
Nicolas Gombert (c. 1490-1560)
Ave_Maria_Gombert.abc Ave_Maria_Gombert.pdf Ave_Maria_Gombert.mid Ave_Maria_Gombert.xml
"Ave Maria"
Giovanni Pierluigi da Palestrina (1525-1594)
Ave_Maria_Palestrina.abc Ave_Maria_Palestrina.pdf Ave_Maria_Palestrina.mid Ave_Maria_Palestrina.xml
"Ave Regina Coelorum"
Guillaume Dufay (c. 1400-1474)
Ave_Regina_Coelorum.abc Ave_Regina_Coelorum.pdf Ave_Regina_Coelorum.mid Ave_Regina_Coelorum.xml
"Ave Verum"
Wolfgang Amadeus Mozart (1756-1791)
Ave_Verum.abc Ave_Verum.pdf Ave_Verum.mid Ave_Verum.xml
"Il bianco e dolce cigno"
Jacob Arcadelt (c. 1514-1557)
Bianco_Dolce_Cigno.abc Bianco_Dolce_Cigno.pdf Bianco_Dolce_Cigno.mid Bianco_Dolce_Cigno.xml
"Son questi i crespi crini"
Claudio Monteverdi (1567-1643)
Son_questi.abc Son_questi.pdf Son_questi.mid Son_questi.xml
"Coro della notte"
Pietro Alessandro Yon (1866-1943)
Coro_Della_Notte.abc Coro_Della_Notte.pdf Coro_Della_Notte.mid Coro_Della_Notte.xml
"Gaudeamus igitur"
music by Johannes Brahms (1833-1897)
Gaudeamus_Igitur.abc Gaudeamus_Igitur.pdf Gaudeamus_Igitur.mid Gaudeamus_Igitur.xml
"Halleluia"
Philipp Heinrich Erlebach (1657-1714)
Halleluja_Erlebach.abc Halleluja_Erlebach.pdf Halleluja_Erlebach.mid Halleluja_Erlebach.xml
"Magnificat" (RV. 610 in Re minore)
Antonio Vivaldi (1678-1741)
Magnificat.abc Magnificat.pdf Magnificat.mid Magnificat.xml
"O sacrum convivium"
Andrea Gabrieli (c. 1510-1586)
O_Sacrum_Convivium.abc O_Sacrum_Convivium.pdf O_Sacrum_Convivium.mid O_Sacrum_Convivium.xml
"O vos omnes"
Carlo Gesualdo (c. 1561 - 1613)
O_Vos_Omnes.abc O_Vos_Omnes.pdf O_Vos_Omnes.mid O_Vos_Omnes.xml
"Otche nash" (Pater Noster)
Nikolai Kedrov Sr. (1871-1954)
Otche_Nash.abc Otche_Nash.pdf Otche_Nash.mid Otche_Nash.xml
"Pater Noster"
Igor F. Stravinskij (1882-1971)
Pater_Noster.abc Pater_Noster.pdf Pater_Noster.mid Pater_Noster.xml
"Selig sind die Toten"
Heinrich Schutz (1585-1672)
Selig_Sind_Die_Toten.abc Selig_Sind_Die_Toten.pdf Selig_Sind_Die_Toten.mid Selig_Sind_Die_Toten.xml
"Tourdion"
Pierre Attaignant (c.1494 - c.1551)
Tourdion.abc Tourdion.pdf Tourdion.mid Tourdion.xml
"Unendliche Freude"
Franz Schubert (1797-1828)
Unendliche_Freude.abc Unendliche_Freude.pdf Unendliche_Freude.mid Unendliche_Freude.xml

Back to top


An ABC package for LaTeX

Prof. Enrico Gregorio (University of Verona, Italy) has written a LaTeX package for including ABC/ABC Plus music in LaTeX documents. Thanks a lot!

The package is available from all CTAN mirrors, e.g. http://www.ctan.org/tex-archive/macros/latex/contrib/abc/. Here's a local copy.


ABC command line tools bundles

The following archives contain the latest abcm2ps, abcmidi, beep.exe, abcpp, and abc2prt binaries for ARM Android, Windows, and macOS:

Installing on Android is possible even on non-rooted devices; please refer to the included INSTALL.txt file.

Only SVG output is usable, since Ghostscript is not (yet) available on Android; so you'll want to typeset your ABC music using a command like:

$ abcm2ps -X -O= music.abc

and display the resulting music.xhtml file with Firefox or other browsers.


Portable abc2svg

The great ABC scorewriter abc2svg can be used in three ways:

The latter is quite handy: it turns abc2svg to a portable app that can be run from, say, a pendrive. All you need is a web browser, and there you are: ABC music on the go!

The latest version of portable abc2svg is here: abc2svg-1.22.12.zip

To run the abc2svg editor, unzip the archive then click on abc2svg.xhtml.


abc2svg Scripts

The simplest and most portable way to install abc2svg is the Node Package Manager NPM, which provides the abc2svg, abc2odt, and abctopdf scripts. Other scripts that use different JavaScript engines are available, though; for instance, abcqjs is a very fast script that uses QuickJS. These GNU/Linux packages provide the commands abcjsc, abcjs60, abcjs24, abcjs52, abcnode, abcqjs, abcv8, and abctopdf. A JavaScript engine must be installed; QuickJS GNU/Linux and macOS packages are provided for your convenience. Windows binaries are available here.

Version 1.22.12:


abcm2ps binaries

  New stable release
abcm2ps-8.14.14-win32.zip binary for Windows without Pango support.
abcm2ps-8.14.14-5-w64-pango.zip binary for Windows with Pango support
abcm2ps-8.14.14 static 64-bit GNU/Linux binary, without Pango support. It should run on any GNU/Linux distribution.
abcm2ps_8.14.14-5_amd64.deb binary for Debian
abcm2ps-8.14.14-5.x86_64.rpm binary RPM
abcm2ps-8.14.14-5.src.rpm source RPM
abcm2ps-8.14.14-5-osx.zip macOS x86_64 binary, without Pango support
abcm2ps-8.14.14-5-osx-pango.zip macOS x86_64 binary with Pango support. To make it work, you need the Pango library, installed with brew.

Binaries for Sun Solaris are available here.

abcm2ps can include graphics in the score, but only in EPS format (the %%EPS command). An excellent program for turning JPG, PNG and other bitmaps into compact EPS files is bmeps. For convenience, the static Windows command-line executable is here: bmeps.exe


toadflax binaries

From the Toadflax home page:

Toadflax is a graphical tool built using GTK. It allows the user to load in abc music notation files and work on each one independently. The music is displayed on-screen, making it a lightweight notation viewer. The source can be hand-edited or transformed in various ways using an adaptation of the abc2abc program.

Preliminary binaries are available here, for GNU/Linux only at the moment. Binaries for Windows and macOS will follow.

Version 20220902:

Back to top


abcm2ps/abc2svg extensions

An exciting feature of abcm2ps and abc2svg is the possibility of writing extensions as PostScript or SVG code. Some of the ABC files included in the abcm2ps distribution include some examples of such extensions.

I have gathered some code and written a few .fmt files. I remind you that to use the code in external .fmt files one has to write this command line:

abcm2ps file.abc -F formatfile

where formatfile refers to the file formatfile.fmt. In addition to format files, one could also write so-called header files (extension .abh) that can be included in ABC sources using %%abc-include. Optimally, they could be used by both abcm2ps and abc2svg.

There you are a list of my .fmt files, which will grow as I finish writing and testing them.

itachords.fmt

itachords-caps.fmt

Accompaniment chords using Italian note names (Do Re Mi).

Written by Jean-François Moine.

demo-itachords.pdf

demo-itachords.abc

guitarchords.fmt Guitar chords diagrams, version 1.3.

demo-guitarchords.pdf

demo-guitarchords.abc

percussions.abh Percussion notes.

These maps work in abcm2ps, abc2svg, and abc2xml.

demo-percussions.pdf

demo-percussions.abc

newheads.fmt This format file provides slender black note heads, i.e. less round than the default shape. Version 1.4. For abcm2ps-8.* only.

demo-newheads.pdf

demo-newheads.zip

dacapo.abh This header file provides missing decorations:
D.C.alcoda, D.C.alfine, D.S.alcoda, D.S.alfine, dacapo, dacoda.

demo-dacapo.pdf

demo-dacapo.abc

bravura.fmt This format file uses the Bravura font, redefines dynamics glyphs, and provides a few extensions.
Version 1.3, for abcm2ps-8.* only.

demo-bravura.pdf

demo-bravura.zip

smufl.fmt Extension to bravura.fmt to use any SMuFL-compliant music font.
Version 1.3, for abcm2ps-8.* only.

demo-smufl.pdf

demo-smufl.zip

deco-marks.fmt Position marks. Obsolete: should be rewritten to make it work on both abcm2ps and abc2svg. demo-marks.pdf
renaissance.fmt Format file for Renaissance music, by Eric Forgeot charlotte.pdf
thinlines.fmt Draw thinner lines n/a
ps.zip Lots of new decorations and symbols, by David Lacroix Symbols.pdf

SpecialHeadsAndMarks.pdf

Easy Notes Easy notes: note heads including the note name. By Jeremy Cowgar. easynotes.png

Back to top


abcmidi binaries

I provide win32, Linux, and macOS binaries for this very important piece of software. The latest version is available as source from http://ifdo.ca/~seymour/runabc/top.html.

abcmidi-20231228-win32.zip Windows binaries
abcmidi_20231228-1_amd64.deb binary for Debian
abcmidi-20231228-1.x86_64.rpm binary RPM
abcmidi-20231228-1.src.rpm source RPM
abcmidi-20231228-osx.zip macOS binaries

Back to top


EasyABC

screenshot EasyABC loading an ABC collection. Click to enlarge.

EasyABC is an open source ABC editor for Windows, macOS and Linux. It uses abcm2ps and abc2midi, and it has a rich feature list. Most notably, it can import MusicXML files and export tunes in SVG format.

Kudos to Nils Liberg, original author, and to Seymour Shlien, current maintainer!

EasyABC sources and binaries for Windows and macOS can be downloaded from this page: http://sourceforge.net/projects/easyabc/files/

easyabc_1.3.8.6-1_all.deb binary for Debian. You'll also need python-wxgtk*, python-wxgtk-media*, python-pygame, and python-pyparsing.
easyabc-1.3.8.6-1.noarch.rpm latest release for RPM-based distributions
easyabc-1.3.8.6-1.src.rpm source RPM

Back to top


JedABC

screenshot A.k.a. ABC mode for Jed. Click to enlarge.
screenshot JedABC in index mode. Click to enlarge.

JedABC is an extension to the Jed editor that turns it into a powerful and easy to use IDE (Integrated Development Environment) for ABC files, with full integration with preprocessors, converters, players and previewers. It's similar in concept to BarFly or runabc, with several advantages.

Warning: JedABC is meant for geeks, that is for people who are computer proficient and are comfortable editing files by hand.

To use JedABC, install the Jed editor first. Packages should exist for your platform or Linux distribution. Windows users may use this binary Jed package. Also, make sure you have GhostView and a MIDI player installed. Then download JedABC:

Put abc.sl and jedabc.txt where all the other .sl files reside (usually /usr/share/jed/lib), then edit the system-wide jed.rc (/etc/jed.d/05jed-common.sl on Debian) or .jedrc in your home directory to add these lines:

variable abc_encoding="utf8";
% Italian users only
define variable abc_language = "it";
autoload ("abc_mode", "abc");
add_mode_for_extension ("abc", "abc"); % plain ABC
add_mode_for_extension ("abc", "abp"); % ABC with abcpp macros

Back to top


abcpp

abcpp is a simple yet powerful preprocessor designed for, but not limited to, ABC music files. It provides conditional output, macros, symbol renaming, and file inclusion. I wrote it for two reasons: first, I wanted to overcome incompatibilities between ABC packages; secondly, I wanted to be able to write portable and more readable ABC files.

Inspired by the C and S-Lang ( http://www.s-lang.org) preprocessor, abcpp supports some directives that allow you to play a few tricks. You write your ABC music files with directives lines like #define or #ifdef, defining macros or excluding portions of text according to specific conditions. Then you preprocess your file with abcpp, producing an output file suitable for each ABC application or voice. Interestingly, abcpp is actively used with MusiXTeX-related programs.

In a nutshell, have your ABC cake and eat it too!

Download abcpp

Version 1.4.6 new!

The archive also contains the documentation. Many thanks to the developers who sent me patches!

Back to top


abc2prt

abc2prt is a simple tool to extract parts from multivoice ABC music files.

I wrote it because it's often desirable to give singers their own part in addition to the complete score. I know that Perl scripts exist that do the trick, and Unix users will be happy with them. However, installing Perl on a Windows machine only for running a script is quite an overkill.

abc2prt is a command line tool. Usage is

$ abc2prt -v voicename [inputfile] [outputfile]

If inputfile and outputfile are not specified, abc2prt will use standard input and standard output. An example is

$ abc2prt -v TII music.abc music-tii.abc

which will output the whole header and all the lines that belong to the voice defined as V:TII, including w: lines. At most five -v fields are allowed.

If there's enough request, I'll write a graphical version. The multivoice extensions were written by Matthew K. Junker, junker at alum dot mit dot edu. Many thanks, Matthew!

Download abc2prt

Back to top


This site is maintained by Guido Gonzato, Ph.D.

For information, suggestions, etc, please drop me a line: guido.gonzato at gmail.com


Stand with...

Made with Jed Abcplus at SourceForge.net