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
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
bar
x as needed, y=0
double bar
dobar
x as needed, y=0
end of music bars
e-bar
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 have a default −x for placing at note coords. All accidentals can be placed up to +6px 'x' for tight situations.
a sharp
sharp
at note; for key with T-clef x+150,y=0
with C-clef x+126,y=12
with F-clef x+126,y=24
with G-clf x+102,y=0
minimum spacing between notes; 51px
sharp keys
shrp2, shrp3, etc.
with T-clef x+48,y=0
with C-clef x+24,y=12
with F-clef x+24,y=24
with G-clf 0,0
a flat
flat
at note; for key with T-clef x+150,y=48
with C-clef x+126,y=60
with F-clef x+126,y=72
with G-clf x+102,y=48
minimum spacing between notes; 51px
flat keys
flt2, flt3, etc.
with T-clef x+48,y=0
with C-clef x+24,y=12
with F-clef x+24,y=24
with G-clf 0,0
a natural
ntl
at note
minimum spacing between notes; 48px
a double sharp
doshrp
at note
minimum spacing between notes; 57px
a double flat
doflt
at note
minimum spacing between notes; 66px
time signatures
a2-4, a3-4, a4-4, etc.
com & ct for
common & cut-time
[id's in xml cannot start with a number]
for C major and A minor:
T-clef; x+48 y=0
C-clef and F-clef; x+24 y=0
G-clf; 0,0
for other key signatures add:
x+33 for one accidental, plus 27 for each additional accidental of the key
x−54 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 without accidentals
is 39px.
The minimum spacing for a note after a bar is 51px, to allow for an accidental.
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
half note long stem,
in half-step increments
hanu.1, hanu.2, etc.
hand.1, hand.2, etc.
were needed
one flag and stem up, no note
eistmu, eistmu.1
(.2, .3, etc.)
were needed
one flag and stem down, no note
eistmd, eistmd.1
(.2, .3, etc.)
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)" ±14,±90 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
the possible locations of the following symbols [ mod to sf ]
are too numerous for a standard location
as a rough guide:
y -132 to -138 above a stem / +96 to +102 below a stem (measured from a note head)
y -48 to -60 above a staff / @+120 below a staff
moderato/mezzo symbol
mod
authors choice
forte symbol
forte
authors choice
piano symbol
piano
authors choice
mezzo forte symbol
mf
authors choice
mezzo piano symbol
mp
authors choice
sforzando
sf
authors choice
triplet symbol with slur
no #id
copy 'g'; treat like a slur
triplet symbol backet
no #id
copy 'g'
a fermata
frm
at beat
6th to D
sx2d
0,0 in body 'g'
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
cres1 (small), cres2 (large)
dec1, dec2
were needed; must use:
transform="translate(x,y) scale(n,1)"
when 'scaled' to control 0,0;
the center of the open end is 0,0
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
marcato
marc
above a stem; −114 / above a note head; −48
breath/break
bre
where needed
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: all x±13 / trem8; y±48 /
trem16; y±57 /
trem32; y±66
to place in between notes:
<use xlink:href="#trem8" transform="translate(,) scale(1,1)"/>
where 'translate(,)' is x the mid point between notes plus 14, and
y is whatever you think looks good;
and scale(1,1) is x whatever you think looks good; leave y at 1
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 © 2015 Dana Steven Gormel