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