CHARACTER

#ID

POSITIONING

indented staff

staff-1

if inside 'body g'; x=0, y=0, but remember the lines themselves begin at x216

staff

staff

if inside 'body g'; x=0, y as needed

The system templates already have clefs included, but for using them independently, 0,0 is the upper left corner of their box.

treble clef

T-clef

0,0 - except for indented staff: x+216

alto clef

C-clef

0,0 - except for indented staff: x+216

bass clef

F-clef

0,0 - except for indented staff: x+216

This is the 'G' clef I designed for guitar music if you want to use it.

"G"

G-clf

0,0 - except for indented staff: x+216

bar
for a single staff

bar

x as needed, y=0

2 staff bar

sysbar

x as needed, y=0

double 2 staff bar

dobar2

0,x is the right edge, y=0

end of music bars

e-bar2

0,0

brace

brace

0,0

accolade

acld

0,0

pre-made indented system with clefs and brace

sys2-1

0,0; but remember the lines themselves begin at x,216

pre-made full system with clefs and brace

sys2

0,0

ledger lines
shorter ones for close notes
extra short
and grace notes et. al.
wide ledger lines
when a half step note is along side

ldg
sldg
xsldg
gldg
ldgw

x at note, y as needed (top line is 0)
ledgers are a narrow section of staff (5 lines); y="24" gives one ledger line below the staff at the y120 position

All accidentals can be placed up to +5px 'x' for tight situations. All accidentals have a default −x for placing at note coords.
The widest accidental is a double flat, and the minimum spacing between notes for that is 69px.

a sharp

sharp

at note; for key x+156,y=0

sharp keys

shrp2, shrp3, etc.

0,0

a flat

flat

at note; for key x+156,y+48

flat keys

flt2, flt3, etc.

0,0

a natural

ntl

at note

a double sharp

doshrp

at note

a double flat

doflt

at note

time signatures

a3-4, a4-4, a5-4, etc.
com & ct for common & cut-time
[id's in xml cannot start with a number]

0,0 for C major and A minor; x+33 for one accidental, plus 27 for each additional accidental of the key;
x−75 following a bar line

solid note head

note

were needed; when adding a half-step note to a chord: x±27

hollow note head

holno

were needed

whole note

whln

were needed

stem

stem

at note;
for stem down:
<transform="translate(x,y) rotate(180)">

The minimum spacing between notes is 39px.
The minimum spacing for a note after a bar is 51px, to allow for an accidental.

To create a longer stem on a note simply place another 'stem' at the note coords and scale it's 'y'; for stem down rotate(180,x,y); or use long and short stemmed notes listed below.

solid note stem up

solnu

were needed

solid note stem down

solnd

were needed

solid note long stem,
in half-step increments

solnu.1, solnu.2, etc.
solnd.1, solnd.2, etc.

were needed

solid note short stem

solnu-1, solnu-2
solnd-1, solnd-2

were needed

half note stem up

hanu

were needed

half note stem down

hand

were needed

eighth note stem up

eitnu, eitnu.1
(.2, .3, etc.)

were needed

eighth note stem down

eitnd, eitnd.1
(.2, .3, etc.)

were needed

sixteenth note stem up

sxtnu

were needed

sixteenth note stem down

sxtnd

were needed

32nd note stem up

thr2nu

were needed

32nd note stem down

thr2nd

were needed

64th note stem up

sx4nu

were needed

64th note stem down

sx4nd

were needed

grace notes with slur

no slur, same note

grace_ (lower to upper)
grace- (upper to lower)
grace-w (wide)

gracex

at note; all
 
'wide' allows room for chromatics

double acciaccatura, lower to upper, two beams

doac

at parent note

double acciaccatura, lower to upper, three beams

doac3

at parent note

half note harmonic stem up

hahru

were needed

half note harmonic stem down

hahrd

were needed

solid hamonic stem up

slhru

were needed

solid hamonic stem down

slhrd

were needed

beams will often need to be skewed and scaled: always skew first!
slurs will often need to be rotated and scaled: rotate first!
when using a matrix with both scale and skew, the tangent (not the angle) must be multiplied by the scale to get the correct angle;
with matrix, rotate in combination with skew or scale is overly complex: use rotate() and matrix() for flipping;
unlike 'rotate', + and −, x,y are not reoriented with a matrix flip; use + or − as usual
 
beams and slurs in the library are drawn horizontal at 100px in length

1, 2, 3 and 4 beams;
beam and ½ beam left or right
beam with a short beam left or right;
beam with two short beams left and right
beam with two partial beams right

be, be2, be3, be4
be1.5l, be1.5r
 
be.1l, be.1r
 
be.2
 
be.3r

needs a transform="translate(x,y)" that moves +14,−85 (for stem up) or −14, +70 (for a single beam, stem down) from the note coords to put it at the stem head (85−15);
flipped beams can stay at +85y;
beams at an angle will need to be scaled y regardless of the x scaling (if any) to compensate for the thinning of the beam as the angle increases;
to find the amount of scale do:
15 ÷ cos(angle°) ÷ 15 = scale y;
so if your angle is 12.42°: 15 ÷ .977 = 15.359 ÷ 15 = 1.024
the code would be: transform="skewY(12.42) scale(1,1.02)"

a slur / tie

slr

from stem to stem

needs a transform="translate(x,y)" ±15,±93 from the note coords to put it @ stem head

from note to note

x ±21, y ±18 (@)

a 'slr' will work as a tie, as long as it doesn't extend too far; this tie is for very long ties

tie

tie

same as slur/tie
the left point is 0,0

half slurs/ties

hslrl (left half)
hslrr (right half)

same as slur/ties
the point is 0,0 for both

half ties

htiel (left half)
htier (right half)

same as half slur/ties
the point is 0,0 for both

a dot and double dot for notes and rests

dot, dodot

at beat from a space; y,±9 from a line

a larger dot for repeats
et. al.

dotl

were needed

a whole / half rest

hlfr

whole; x at beat; y at line (any) / half; x at beat; y at space (any)

a quarter rest

qrr

were needed; at beat (x,y are centered)

an eighth rest

etr

x at beat, y on any line

a sixteenth rest

sxtr

x at beat, y on any line

a thirty second rest

thr2r

x at beat, y on any line

fingering numbers

f1, f2, f3, etc.

x 30px from note at stem side, 15px at opposite side, and y at next space up or down;
in many cases you will have to decide for yourself

Roman numerals

I, II, III, etc.

at note; (default y−150)

a dashed line

no #id

must copy 'g' and use directly, default y−150 of note

numbers for Roman numerals

n2, n3, n4 etc.

x @−27 to −54 from the first numeral: will vary with numeral;
y at note

moderato/mezzo symbol

mod

y=156 is midway between staves

forte symbol

forte

y=144 is midway between staves

piano symbol

piano

y=156 is midway between staves

mezzo forte symbol

mf

y=144 is midway between staves

mezzo piano symbol

mp

y=144 is midway between staves

sforzando

sf

y=144 is midway between staves

triplet symbol

no #id

copy 'g'; treat like a slur

a fermata

frm

at beat

an arpeggio

arpe, arpe.1, (.2 to .5)
in one segment increments
a segment is @ one 5th

at upper note; arpe is @ one octave

a trill

tr

at note

crescendo / decrescendo

dec1 (small), dec2 (large)

were needed; must be put in a 'g' when 'scaled' and or 'flipped' to control 0,0; the center of the open end is 0,0
I drew these as decrescendos; use 'matrix' flip for crescendo

repeat bars, left and right

repl, repr

were needed; 0,0 is upper outside corner of the wide bar

similes, measure repeats

msrrp1, msrrp2

were needed; center of symbol is 0,0

segno

segno

x at bar line, y=0

coda

coda

x at bar line, y=0

mordents; from upper note and lower note

moru, mord

at highest note

page numbers

pg1, pg2, etc.

0,0 in 'titles g'

first and second ending brackets

no #id
use <g>

at highest note

octava symbol

no #id
use <g>

at highest note

tenuto

tenu

a tenuto can go above or below a note head; these are drawn with the center of the rectangle as 0,0; so x at note y ±24 as a suggestion (33 to clear a staff or ledger line)

staccato

stac

same as tenuto

accent

acc

at note coordinates

pedal

ped

y=144 is midway between staves

release pedal

relpd

y=150 is midway between staves

marcato

marc

above a stem; −108 / above a note; −48

tremulos are drawn with 0,0 at the center of the first polygon to make it easier to place between notes

tremulo(s)

trem8, trem16, trem32

to place on a stem: x±13, y±48: trem8; / y±57: trem16 / y±66: trem32

glissando(s)

glis, glis.1, (.2,.3, etc.)
glis is 112px long before a rotate; the 'points' are 40px increments

at first note
use transform="rotate(n°,x,y)", where x,y is the same as the note and the glissando; calculate angle the same as a beam or slur

a turn

turn

x at note; y−108 above a stem / y−36 above a note head

Copyright © 2014 Dana Steven Gormel