ABCp home : news : docs : download : links
a parser for the ABC musical notation

ABCp syntax

9 Dec 2004

Contents
    1. Introduction
    2. File structure
    3. Notes
    4. Fields
    5. Line continuation
    6. Keys
    7. Voices
    8. Clef
    9. Slurs and ties
    10. Meter
    11. Lenght
    12. Tempo
    13. Decorations
    14. Extended fields

1. Introduction

  This section describe the syntax recognized by ABCp. It assumes prior knowledge of ABC syntax and highlights only the relevant differences.

2.File structure

  The order in which the fields X: and K: appear is no longer mandatory so that the following two fragments are equivalent.

X:1
T:Goodbye
K:C
ABCD | EFGa
T:Goodbye
K:C
X:1
ABCD | EFGa

3.Notes

Pitch 

 

Ten octaves supported.
"Middle C" is C4 noted as "C"
Pitch ranges from A,,,, to g'''' (A0 to G9)
Equivalence is supported so that C' == c and a',,' == a

   

Accidentals 

Also "cautionary" accidentals are supported:
(^)C or (=)a'

   

Microtones 

Accidentals may be followed by a fraction to signify microtones. 


   

Duration 

The note duration is expressed as a fraction of the default note length:

C1/2

Both numerators and denominators are in the range 1 .. 255


4. Fields

K: 
V: 
M: 
L: 
Q: 

Covered in "Key" section
Covered in "Voice" section
Covered in "Metric" section
Covered in "Length" section
Covered in "Tempo" section

   

A: 
O: 
C: 
D: 
Z: 

Field will be split in a list of strings. For example:

A: author1, author2, author3

strs[0] = "author1"
strs[1] = "author2"
strs[2] = "author3"
strs[3] = NULL

   

H: 

 

Multiline history field is recognized:

H: This reel was found
in an attic long time ago

   

Others 

 

All other fields are considered strings:

B: The definitive reels book

strs[0] = "The definitive reels book"
strs[1] = NULL

   

[*:] 

 

Fields in the middle of tunes (for example: [P:A]) are treated exactly as they where at the beginning of a line, the only difference is simply that they are marked as "internal".


5. Line continuations

'\' 

Lines can be "continued" placing a "\" at the end of the line.
This is implemented as it is customary in programming language. The following lines are equivalent

B: The definitive reels book

B: The definitive \
reels book

   

T_CONTINUE 

In tunes continuation is reported as a "T_CONTINUE" token.

In fields they are handled transparently:

V:P1 name="flute" clef=treble

V:P1 name="flute"\
          clef=treble

   

Fields 

 

In ABC 1.6, continuations were used to have changes occurring in the middle of a tune:

Ab Cd | \
M:2/4
Ef

ABCp considers the fragment above as equivalent to:

Ab Cd | [M:2/4] \
Ef


6. Keys

Tonic 

 

Any pitch possibly followed by "#" for sharp or "b" for flat (K:F#)
HP for Highland pipes
Hp or hp for Highland pipes
none for no key.

   

Mode 

maj or M

Major

min or m

Minor

mix

Mixolidean

dor

doric

phr

Phrygean

lyd

Lydean

loc

Locridean

ion

Ionic

aeo

Aeolic

exp

Explict.
Accidentals may be added using the "exp" key:

K:C exp ^F

Also "#" and "b" are supported:

K:C exp F#

"exp" is optional.
 

   

Clef 

See "Clef" section


7. Voice

ID 

Voice ID may be up to 32 characters long.

   

Clef 

See "Clef" Section


8. Clef

  Note that all the "=" signes are optional.

clef 

 

The "clef=" is optional except for C,F and G. All keys are case sensitive!

The recognized clefs are:

treble
alto
bass

The main clefs. They may be followed by a number to indicate on which line they should be printed 

K:C bass5

 

french
frenchviolin
violin
soprano
mezzo
mezzosoprano
tenor
baritone
subbass

 

treble1
treble1
treble2
alto1
alto2
alto2
alto4
alto5
bass5

 

perc
drum

Percussion clef

 

none

No clef

 

Doh or doh
Fa or fa

Gregorian Clefs

 

C
F
G

alto
bass
treble

Only after "clef="

V:1 clef=F

   

Transpose 

Transposition can be specified in a short form or with the "octave" and "transpose" keywords.

+22 -22

three octaves

+15 -15

two octaves

+8 -8

one octave

octave
o

transpose by the specified octaves

V:1 octave=-1

transpose
t

 

transpose by the specified semitones

t=+2

   

Tablature 

The following tablature clefs are recognized (abctab2ps)

frenchtab
french4tab
french5tab
guitartab
spanishtab
spanish4tab
spanish5tab
banjo4tab
banjo5tab
ukuleletab
italiantab
italian4tab
italian5tab
italian7tab
italian8tab

Explicit tablature with:

tab=<strings pitch>

tab=eBGDAE,

   

Voice names 

The two names togheter cannot be longer than 200 chars.

name
nm

The "long" name

subname
shortname
snm

The "short" name

  V:T1 name="Main Tenor" snm="T.I"

   

Stafflines 

The number of lines in the staff:

K:perc stafflines=1

Short form is "s"

   

Middle 

The pitch of the middle line in the staff.

K:none stafflines=3 middle=G

Short form is "m"

   

Stems direction 

Stem directions for notes and grace notes can be specified.

stems
stem

Direction for note stems

gstems
gstem

Direction for grace note stems

K:C stems=up gstems=down

   

Grouping 

The extensions used by abctab2ps are recognized:

staves
stv
 

The next n-1 staves will be connected to this one with a bar

brace
brc
 

The next n-1 staves will be connected to this one with a curly brace

bracket
brk

The next n-1 staves will be connected to this one with a bracket

   

Staff spacing 

Modify vertical space between this staff and the one below

K:C space=+20

Short form is "spc"


9. Slurs and ties

Direction 

 

To force the direction of a slur or a tie the "'" and "," characters may be used:

A2('BC-, | CD2)E

The tie should be drawn below and the slur above.


10. Meter

Compound 

 

Compound meters are supported in the following forms:

M:2+3+3/8
M:2 3 3/8  

   

Parenthesis 

Parenthesis can be specified in the following ways:

M:(3/4)
M:(3)/4
M:3/(4)

  

   

Old meter 

Denominator may be omitted to specify ancient meters:

M:3

 


11. Length

Symbolic 

 

The default length may also be specified using a symbolic name:

L:doublewhole

L:2

L:whole

L:1

L:half

L:1/2

L: quarter

L:1/4

L:eighth

L:1/8

L:sixteenth

L:1/16

L:thirtysecond

L:1/32

L:sixtyfourth

L:1/64

L:onetwentyeighth

L:1/128


12. Tempo

Single number 

 

Meaning: play 120 unit note-lengths per minute.

Q:120

 

   

Beats 

Number of beats per minute:

Q:5/4=40
Q:1/4 3/8 1/4 3/8=40

   

1.6 syntax 

The old ABC syntax is recognized:

Q:C3=120
Q:C=120

   

String 

 

A string may be specified at the begininning or at the end. It must be enclosed in quotes. There can be only one string.:

Q:"Andante" 1/4=120
Q:1/4=120 "Andante"


13. Decorations

  The set of decoration has been greatly extended trying to incorporate elements from other notations systems (CMN, PMW, MUP, Lylipond). Also synonims have been included (for example +pp+ and +pianissimo+ are equivalent).

'+' and '!' 

Both formats for decorations are recognized so that all the following forms are equivalent:

!trill! +trill+ T !T! +T+

   

Dynamics 

pppp pianissississimo

ppp pianississimo

pp pianissimo

p piano

mp mezzopiano

mf mezzoforte

f forte

ff fortissimo

fff fortississimo

ffff fortissississimo

fp fortepiano

sfz fz sforzando

rfz rf rinforzando

sfp sforzandopiano

niente n

sffff subitoffff subitofortissississimo

sfff subitofff subitofortississimo

sff subitoff subitofortissimo

sf subitof subitoforte

smf subitomf subitomezzoforte

smp subitomp subitomezzopiano

sp subitop subitopiano

spp subitopp subitopianissimo

sppp subitoppp subitopianississimo

spppp subitopppp subitopianissississimo

crescendo( <(

crescendo) <)

diminuendo( >(

diminuendo) >)

glissando( g(

glissando) g)

glissando g

   

Fingering 

 

1

2

3

4

5

arpeggio

arpeggioup

arpeggiodown

arrow

arrowup

arrowdown

noarpeggio

H.O. hammeringon

P.O. pulloff

SL. sliding

W. wham

   

Articulation 

accent > L emphasis

marcato

staccatissimo

staccato .

tenuto

portato

upbow

downbow

flageolet

thumb

lheel

rheel

ltoe

rtoe

open

stopped

turn

reverseturn invertedturn

trill tr T

prall

mordent lowermordent M

prallprall

prallmordent

upprall

downprall

upmordent uppermordent P pralltriller

downmordent

pralldown

prallup

lineprall

signumcongruentiae

slide J

turnx

reverseturnx invertedturnx

trill( tr(

trill) tr)

roll ~ irishroll
   

Pedaling 

 

Explicit pedal for piano has been included

damppedal ped 

sostpedal mped

softpedal lped



damppedal) ped)

sostpedal) mped)

softpedal) lped)



damppedal( ped(

sostpedal( mped(

softpedal( lped(
   

Misc 

segno S

coda O

D.S.

D.C.

dacoda

dacapo

dalsegno

fine

varcoda

shortphrase

mediumphrase

longphrase

8va(

8va)

8vab(

8vab)

beamon

gmark

invisible

shead

xhead

chead

dhead

sfhead

xfhead

cfhead

dfhead

shead(

xhead(

chead(

dhead(

sfhead(

xfhead(

cfhead(

dfhead(

shead)

xhead)

chead)

dhead)

sfhead)

xfhead)

cfhead)

dfhead)

stemup

stemdown

stemup(

stemdown(

stemup)

stemdown)

X
   

Pause 

breath ,

fermata hold H

shortfermata

longfermata

verylongfermata

generalpause G.P.

caesura pause rr //

reversefermata invertedfermata ufermata udfermata

grandpause
   

Instrument 

 

The entire set of GM Midi instrument is recognized

Mute

AcousticGrandPiano

BrightAcousticPiano

ElectricGrandPiano

HonkyTonkPiano

ElectricPiano1

ElectricPiano2

Harpsichord

Clavi

Celesta

Glockenspiel

MusicBox

Vibraphone

Marimba

Xylophone

TubularBells

Dulcimer

DrawbarOrgan

PercussiveOrgan

RockOrgan

ChurchOrgan

ReedOrgan

Accordion

Harmonica

TangoAccordion

AcousticGuitarNylon

AcousticGuitarSteel

ElectricGuitarJazz

ElectricGuitarClean

ElectricGuitarMuted

OverdrivenGuitar

DistortionGuitar

Guitarharmonics

AcousticBass

ElectricBassFinger

ElectricBassPick

FretlessBass

SlapBass1

SlapBass2

SynthBass1

SynthBass2

Violin

Viola

Cello

Contrabass

TremoloStrings

PizzicatoStrings

OrchestralHarp

Timpani

StringEnsemble1

StringEnsemble2

SynthStrings1

SynthStrings2

ChoirAahs

VoiceOohs

SynthVoice

OrchestraHit

Trumpet

Trombone

Tuba

MutedTrumpet

FrenchHorn

BrassSection

SynthBrass1

SynthBrass2

SopranoSax

AltoSax

TenorSax

BaritoneSax

Oboe

EnglishHorn

Bassoon

Clarinet

Piccolo

Flute

Recorder

PanFlute

BlownBottle

Shakuhachi

Whistle

Ocarina

LeadSquare

LeadSawtooth

LeadCalliope

LeadChiff

LeadCharang

LeadVoice

LeadFifths

LeadBassLead

PadNewage

PadWarm

PadPolysynth

PadChoir

PadBowed

PadMetallic

PadHalo

PadSweep

FXRain

FXSoundtrack

FXCrystal

FXAtmosphere

FXBrightness

FXGoblins

FXEchoes

FXSciFi

Sitar

Banjo

Shamisen

Koto

Kalimba

Bagpipe

Fiddle

Shanai

TinkleBell

Agogo

SteelDrums

Woodblock

TaikoDrum

MelodicTom

SynthDrum

ReverseCymbal

GuitarFretNoise

BreathNoise

Seashore

BirdTweet

TelephoneRing

Helicopter

Applause

Gunshot
   

Percussions 

 

The set of MIDI unpitched percussions (plus some others) is recognized

gong

triangle

halfopenhihat

hardstick

softstick

metalstick

rubberstick

trianglestick

wirebrush

woodstick

tinklebell

agogo

steeldrums

woodblock

taikodrum

melodictom

synthdrum

reversecymbal

acousticbassdrum

bassdrum1

sidestick

acousticsnare snare

handclap

electricsnare

lowfloortom

closedhihat hihat

highfloortom

pedalhihat

lowtom

openhihat

lowmidtom

himidtom

crashcymbal1 cymbal

hightom

ridecymbal1

chinesecymbal

ridebell

tambourine

splashcymbal

cowbell

crashcymbal2

vibraslap

ridecymbal2

hibongo

lowbongo

mutehiconga

openhiconga

lowconga

hightimbale

lowtimbale

highagogo

lowagogo

cabasa

maracas

shortwhistle

longwhistle

shortguiro

longguiro

claves

hiwoodblock

lowwoodblock

mutecuica

opencuica

mutetriangle

opentriangle

14. Extended fields

None 

 

begintext
endtext
newpage
vskip

   

String 

center
text
abc-copyright
abc-version
abc-creator
abc-charset
abc-include
abc-edited-by

   

Font, size 

annotationfont
composerfont
gchordfont
infofont
partsfont
subtitlefont
setfont-1
setfont-2
setfont-3
setfont-4
tempofont
textfont
titlefont
vocalfont
wordsfont

   

Length 

botmargin
composerspace
indent
infospace
leftmargin
musicspace
pageheight
pagewidth
partsspace
rightmargin
staffsep
subtitlespace
sysstaffsep
textspace
titlespace
topmargin
topspace
vocalspace
wordsspace

   

Logical  

continueall
exprabove
exprbelow
freegchord
musiconly
measurebox
graceslurs
infoline
landscape
oneperpage
printtempo
stretchlast
stretchstaff
vocalabove
withxrefs
writehistory

   

Number 

lineskipfac
maxshrink
parskipfac
sep
scale

   

Integer  

barnumbers
barsperstaff
measurefirst
measurenb
setbarnb

   

Misc  

midi
papersize
propagate-accidentals
score
staves
writeout-accidentals
deco
postscript



 
Remo Dentato Last update: 01 Sep 2005 Document made with Nvu  OSI certified  SourceForge.net Logo