
@@LEIA-ME
$
abcm2ps-4.9.5


$
@@!
$
!

	Abreviao para `bind def'

/!{bind def}bind def

$
@@bdef
$
bdef

	Abreviao para `bind def'.

Ver tambm `!'

/bdef{bind def}!

$
@@T
$
T

	Abreviao para `translate'.

/T/translate load def

$
@@M
$
M

	Abreviao para `moveto'.

/M/moveto load def

$
@@RM
$
RM

	Abreviao para `rmoveto'.

/RM/rmoveto load def

$
@@RL
$
RL

	Abreviao para `rlineto'.

/RL/rlineto load def

$
@@RC
$
RC

	Abreviao para `rcurveto'.

/RC/rcurveto load def

$
@@SLW
$
SLW

	Abreviao para `setlinewidth'.
	(Introduzido com abcm2ps-4.8.3)

/SLW/setlinewidth load def

$
@@defl
$
defl

	Sinalizador para decoraes (deco flags). Retorna um nmero
	que armazena informao sobre o estado de uma decorao longa
	(incio/fim) e a direo da haste da nota (abaixo/acima).
	
	- O bit menos significativo indica se uma decorao longa est
	comeando (0) ou  uma continuao (1) [extremidade esquerda];

	- O segundo bit menos significativo indica se uma decorao
	longa est terminando (0) ou ser continuada (1) [extremidade
	direita];

	- O terceiro bit indica se a haste da nota est para baixo (0) ou
	para cima (1).
	
	(Introduzido com abcm2ps-4.8.0)
	(O cdigo abaixo  apenas para inicializao.)

- defl n

/defl 0 def

$
@@dlw
$
dlw

	Usa (define) a espessura de linha default.

/dlw{0.7 SLW}!

$
@@cshow
$
cshow

	Emulao de um operador PostScript Level 2.

	ESTE OPERADOR SOMENTE  GERADO COM O PARMETRO DE FORMATO:
	%%pslevel 1
	OU NA LINHA DE COMANDO, COM A OPO:
	--pslevel 1

/cshow{exch dup{fh fh 4 index exec}forall pop pop}!

$
@@glyphshow
$
glyphshow

	Emulao de um operador PostScript Level 2.

	ESTE OPERADOR SOMENTE  GERADO COM O PARMETRO DE FORMATO:
	%%pslevel 1
	OU NA LINHA DE COMANDO, COM A OPO:
	--pslevel 1

/glyphshow{currentfont/Encoding get
   0 1 2 index length 1 sub{
      2 copy get 3 index eq{exch pop exch pop null exit}if
      pop
    }
   for null eq{(X) dup 0 4 -1 roll put show}{pop}ifelse
}!

$
@@rectstroke
$
rectstroke

	Emulao de um operador PostScript Level 2.

	ESTE OPERADOR SOMENTE  GERADO COM O PARMETRO DE FORMATO:
	%%pslevel 1
	OU NA LINHA DE COMANDO, COM A OPO:
	--pslevel 1

/rectstroke{
	4 2 roll M 1 index 0 RL 0 exch RL neg 0 RL closepath
	stroke}!

$
@@rectfill
$
rectfill

	Emulao de um operador PostScript Level 2.

	ESTE OPERADOR SOMENTE  GERADO COM O PARMETRO DE FORMATO:
	%%pslevel 1
	OU NA LINHA DE COMANDO, COM A OPO:
	--pslevel 1

/rectfill{
	4 2 roll M 1 index 0 RL 0 exch RL neg 0 RL closepath
	fill}!

$
@@selectfont
$
selectfont

	Emulao de um operador PostScript Level 2.

	ESTE OPERADOR SOMENTE  GERADO COM O PARMETRO DE FORMATO:
	%%pslevel 1
	OU NA LINHA DE COMANDO, COM A OPO:
	--pslevel 1

/selectfont{exch findfont exch dup
	type/arraytype eq{makefont}{scalefont}ifelse setfont}!

$
@@xymove
$
xymove

	Move para o ponto especificado e salva suas coordenadas nas
	variveis `x' e `y'.

x y xymove

/xymove{/x 2 index def/y 1 index def M}!

$
@@showc
$
showc

	Imprime texto centralizado no ponto corrente.

str showc

/showc{dup stringwidth pop .5 mul neg 0 RM show}!

$
@@showr
$
showr

	Imprime texto alinhado  direita.

str showr

/showr{dup stringwidth pop neg 0 RM show}!

$
@@showb
$
showb

	Imprime texto em uma caixa.

str showb

/showb{	dup currentpoint 3 -1 roll show
	.6 SLW
	exch 2 sub exch 3 sub 3 -1 roll
	stringwidth pop 4 add fh 4 add rectstroke}!

$
@@tclef
$
tclef

	Clave de sol (treble clef)

x y tclef

/tclef{	M
	-1.9 3.7 RM
	-3.3 1.9 -3.1 6.8 2.4 8.6 RC
	7 0 9.8 -8 4.1 -11.7 RC
	-5.2 -2.4 -12.5 0 -13.3 6.2 RC
	-0.7 6.4 4.15 10.5 10 15.3 RC
	4 4 3.6 6.1 2.8 9.6 RC
	-2.3 -1.5 -4.7 -4.8 -4.5 -8.5 RC
	0.8 -12.2 3.4 -17.3 3.5 -26.3 RC
	0.3 -4.4 -1.2 -6.2 -3.8 -6.2 RC
	-3.7 -0.1 -5.8 4.3 -2.8 6.1 RC
	3.9 1.9 6.1 -4.6 1.4 -4.8 RC
	0.7 -1.2 4.6 -0.8 4.2 4.2 RC
	-0.2 10.3 -3 15.7 -3.5 28.3 RC
	0 4.1 0.6 7.4 5 10.6 RC
	2.3 -3.2 2.9 -10 1 -12.7 RC
	-2.4 -4.3 -11.5 -10.3 -11.8 -15 RC
	0.4 -7 6.9 -8.5 11.7 -6.1 RC
	3.9 3 1.3 8.8 -3.7 8.1 RC
	-4 -0.2 -4.8 -3.1 -2.7 -5.7 RC
	fill}!

$
@@stclef
$
stclef

	Clave de sol em tamanho pequeno

/stclef{exch 0.85 div exch 0.85 div gsave 0.85 dup scale tclef grestore}!

$
@@octu
$
octu

	Indicao de 8a. acima para claves

x y octu

/octu{/Times-Roman 12 selectfont M -1.5 36 RM(8)show}!

$
@@octl
$
octl

	Indicao de 8a. abaixo para claves

x y octl

/octl{/Times-Roman 12 selectfont M -3.5 -19 RM(8)show}!

$
@@bclef
$
bclef

	Clave de f (bass clef)

x y bclef

/bclef{	M
	-8.8 3.5 RM
	6.3 1.9 10.2 5.6 10.5 10.8 RC
	0.3 4.9 -0.5 8.1 -2.6 8.8 RC
	-2.5 1.2 -5.8 -0.7 -5.9 -4.1 RC
	1.8 3.1 6.1 -0.6 3.1 -3 RC
	-3 -1.4 -5.7 2.3 -1.9 7 RC
	2.6 2.3 11.4 0.6 10.1 -8 RC
	-0.1 -4.6 -5 -10.2 -13.3 -11.5 RC
	15.5 17 RM
	0 1.5 2 1.5 2 0 RC
	0 -1.5 -2 -1.5 -2 0 RC
	0 -5.5 RM
	0 1.5 2 1.5 2 0 RC
	0 -1.5 -2 -1.5 -2 0 RC
	fill}!

$
@@sbclef
$
sbclef

	Clave de f em tamanho pequeno

/sbclef{exch 0.85 div exch 0.85 div gsave 0.85 dup scale 0 3 T bclef grestore}!

$
@@cchalf
$
cchalf

	Elemento de composio para clave de d

/cchalf{0 0 M 0 12 RM
	2.6 5 RL
	2.3 -5.8 5.2 -2.4 4.7 1.6 RC
	0.4 3.9 -3 6.7 -5.1 4 RC
	4.1 0.5 0.9 -5.3 -0.9 -1.4 RC
	-0.5 3.4 6.5 4.3 7.8 -0.8 RC
	1.9 -5.6 -4.1 -9.8 -6 -5.4 RC
	-1.6 -3 RL
	fill}!

$
@@cclef
$
cclef

	Clave de d

x y cclef

/cclef{	gsave T
	cchalf 0 24 T 1 -1 scale cchalf
	-5.5 0 3 24 rectfill
	-0.5 0 M 0 24 RL 0.7 SLW stroke grestore}!

$
@@scclef
$
scclef

	Clave de d em tamanho pequeno

/scclef{exch .85 div exch .85 div gsave .85 dup scale
	2 add cclef grestore}!

$
@@pclef
$
pclef

	Clave de percusso

x y pclef

/pclef{	exch 2.7 sub exch 2 add 5.4 20
	1.4 SLW rectstroke}!

$
@@spclef
$
spclef

	Clave de percusso em tamanho pequeno

/spclef{pclef}!

$
@@bm
$
bm

	Travesso (beam)

Desenha um travesso com profundidade t.

t dx dy x y bm

/bm{	M 3 copy RL neg 0 exch RL
	neg exch neg exch RL 0 exch RL fill}!

$
@@bnum
$
bnum

	Imprime nmero/proporo de quilteras.

str x y num

/bnum{M/Times-Italic 12 selectfont showc}!

$
@@bnumb
$
bnumb

	Imprime nmero/proporo de quilteras em um fundo transparente.

str x y bnumb

/bnumb{	currentgray 3 index stringwidth pop 4 add
        dup .5 mul neg 4 index add 3 index 3 -1 roll 8
        1.0 setgray rectfill setgray bnum}!

$
@@tubr
$
tubr

	Imprime colchete de quiltera (acima).

dx dy x y tubr

/tubr{3 sub M 0 3 RL RL 0 -3 RL dlw stroke}!

$
@@tubrl
$
tubrl

	Imprime colchete de quiltera (abaixo).

dx dy x y tubrl

/tubrl{3 add M 0 -3 RL RL 0 3 RL dlw stroke}!

$
@@r00
$
r00

	Pausa de longa

x y r00

/r00{	xymove
	-1 -6 RM currentpoint 3 12 rectfill}!

$
@@r0
$
r0

	Pausa de breve

x y r0

/r0{	xymove
	-1 0 RM currentpoint 3 6 rectfill}!

$
@@r1
$
r1

	Pausa de semibreve

x y r1

/r1{	xymove
	-3 3 RM currentpoint 7 3 rectfill}!

$
@@r2
$
r2

	Pausa de mnima

x y r2

/r2{	xymove
	-3 0 RM currentpoint 7 3 rectfill}!

$
@@r4
$
r4

	Pausa de semnima

x y r4

/r4{	xymove
	-0.5 8.9 RM
	1.3 -3.4 RL
	-2 -4.5 RL
	3.1 -4.8 RL
	-3.2 3.5 -5.8 -1.4 -1.4 -3.8 RC
	-1.9 2 -0.8 5 2.4 2.6 RC
	-2.2 4.2 RL
	0 0 2 4.7 2.1 4.7 RC
	-3.3 5 RL
	fill}!

$
@@r8e
$
r8e

	Elemento de composio para pausas de colcheia, semicolcheia,
	etc.

/r8e{	-1.5 -1.5 -2.4 -2 -3.6 -2 RC
	2.4 2.8 -2.8 4 -2.8 1.2 RC
	0 -2.7 4.3 -2.4 5.9 -0.6 RC
	fill}!

$
@@r8
$
r8

	Pausa de colcheia

x y r8

/r8{	xymove
	.5 SLW 3.3 4 RM
	-3.4 -9.6 RL stroke
	x y M 3.4 4 RM r8e}!

$
@@r16
$
r16

	Pausa de semicolcheia

x y r16

/r16{	xymove
	.5 SLW 3.3 4 RM
	-4 -15.6 RL stroke
	x y M 3.4 4 RM r8e
	x y M 1.9 -2 RM r8e}!

$
@@r32
$
r32

	Pausa de fusa

x y r32

/r32{	xymove
	.5 SLW 4.8 10 RM
	-5.5 -21.6 RL stroke
	x y M 4.9 10 RM r8e
	x y M 3.4 4 RM r8e
	x y M 1.9 -2 RM r8e}!

$
@@r64
$
r64

	Pausa de semifusa

x y r64

/r64{	xymove
	.5 SLW 4.8 10 RM
	-7 -27.6 RL stroke
	x y M 4.9 10 RM r8e
	x y M 3.4 4 RM r8e
	x y M 1.9 -2 RM r8e
	x y M 0.4 -8 RM r8e}!

$
@@r128
$
r128

	Pausa de quartifusa

x y r128

/r128{	xymove
	.5 SLW 5.8 16 RM
	-8.5 -33.6 RL stroke
	x y M 5.9 16 RM r8e
	x y M 4.4 10 RM r8e
	x y M 2.9 4 RM r8e
	x y M 1.4 -2 RM r8e
	x y M -0.1 -8 RM r8e}!

$
@@dt
$
dt

	Ponto deslocado em relao  cabea da nota por `dy'

x dy dt

/dt{y add M currentpoint 1.2 0 360 arc fill}!

$
@@hld
$
hld

	Fermata

x y hld

/hld{	1.5 add 2 copy 1.5 add M currentpoint 1.3 0 360 arc
	M -7.5 0 RM
	0 11.5 15 11.5 15 0 RC
	-0.25 0 RL
	-1.25 9 -13.25 9 -14.5 0 RC
	fill}!

$
@@dnb
$
dnb

	Arco para baixo

x y dnb

/dnb{	dlw M -3.2 2 RM
	0 7.2 RL
	6.4 0 RM
	0 -7.2 RL
	currentpoint stroke M
	-6.4 4.8 RM
	0 2.4 RL
	6.4 0 RL
	0 -2.4 RL
	fill}!

$
@@upb
$
upb

	Arco para cima

x y upb

/upb{	dlw M -2.6 9.4 RM
	2.6 -8.8 RL
	2.6 8.8 RL
	stroke}!

$
@@grm
$
grm

	Ornamento: ~ (gracing mark)

x y grm

/grm{	M -5 2.5 RM
	5 8.5 5.5 -4.5 10 2 RC
	-5 -8.5 -5.5 4.5 -10 -2 RC fill}!

$
@@stc
$
stc

	Staccato

x y stc

/stc{M currentpoint 1.2 0 360 arc fill}!

$
@@emb
$
emb

	Tenuto (emphasis bar)

x y emb

/emb{	1.2 SLW 1 setlinecap M
	-2.5 0 RM 5 0 RL stroke 0 setlinecap}!

$
@@cpu
$
cpu

	Roll acima da nota

x y cpu

/cpu{	M -6 0 RM
	0.4 7.3 11.3 7.3 11.7 0 RC
	-1.3 6 -10.4 6 -11.7 0 RC fill}!

$
@@sld
$
sld

	Slide

x y sld

/sld{	M -7.2 -4.8 RM
	1.8 -0.7 4.5 0.2 7.2 4.8 RC
	-2.1 -5 -5.4 -6.8 -7.6 -6 RC fill}!

$
@@trl
$
trl

	Trilo (tr)

x y trl

/trl{	/Times-BoldItalic 16 selectfont
	M -4 2 RM(tr)show}!

$
@@umrd
$
umrd

	Mordente superior

x y umrd

/umrd{	4 add M
	2.2 2.2 RL 2.1 -2.9 RL 0.7 0.7 RL
	-2.2 -2.2 RL -2.1 2.9 RL -0.7 -0.7 RL
	-2.2 -2.2 RL -2.1 2.9 RL -0.7 -0.7 RL
	2.2 2.2 RL 2.1 -2.9 RL 0.7 0.7 RL fill}!

$
@@lmrd
$
lmrd

	Mordente inferior

x y lmrd

/lmrd{	2 copy umrd 8 add M
	.6 SLW 0 -8 RL stroke}!

$
@@fng
$
fng

	Imprime nmero de dedilhado.

str x y fng

/fng{/Bookman-Demi 8 selectfont M -3 1 RM show}!

$
@@dacs
$
dacs

	Imprime D.C. ou D.S.

str x y dacs

/dacs{/Times-Roman 16 selectfont 3 add M showc}!

$
@@brth
$
brth

	Cesura (breath)

Imprime uma vrgula.

x y brth

/brth{/Times-BoldItalic 30 selectfont 6 add M(,)show}!

$
@@pf
$
pf

	Imprime sinal de dinmica (p, mf, f etc.)

str x y pf

/pf{/Times-BoldItalic 16 selectfont 5 add M show}!

$
@@sfz
$
sfz

	Sforzando (sfz)

(str no  utilizada)
str x y sfz

/sfz{	M -7 5 RM pop
	/Times-Italic 14 selectfont(s)show
	/Times-BoldItalic 16 selectfont(f)show
	/Times-Italic 14 selectfont(z)show}!

$
@@coda
$
coda

	Coda

x y coda

/coda{	1 SLW 2 add 2 copy M 0 20 RL
	2 copy M -10 10 RM 20 0 RL stroke
	10 add 6 0 360 arc 1.7 SLW stroke}!

$
@@sgno
$
sgno

	Segno

x y sgno

/sgno{	M 0 3 RM currentpoint currentpoint currentpoint
	1.5 -1.7 6.4 0.3 3 3.7 RC
	-10.4 7.8 -8 10.6 -6.5 11.9 RC
	4 1.9 5.9 -1.7 4.2 -2.6 RC
	-1.3 -0.7 -2.9 1.3 -0.7 2 RC
	-1.5 1.7 -6.4 -0.3 -3 -3.7 RC
	10.4 -7.8 8 -10.6 6.5 -11.9 RC
	-4 -1.9 -5.9 1.7 -4.2 2.6 RC
	1.3 0.7 2.9 -1.3 0.7 -2 RC
	fill
	M 0.8 SLW -6 1.2 RM 12.6 12.6 RL stroke
	7 add exch -6 add exch 1.2 0 360 arc fill
	8 add exch 6 add exch 1.2 0 360 arc fill}!

$
@@cresc
$
cresc

	Sinal de crescendo (<)

w x y cresc

/cresc{	1 SLW M dup 5 RM
	defl 1 and 0 eq
	{dup neg 4 RL 4 RL}
	{dup neg 2.2 RL 0 3.6 RM 2.2 RL}
	ifelse stroke}!

$
@@dim
$
dim

	Sinal de diminuendo (>)

w x y dim

/dim{	1 SLW 5 add M
	defl 2 and 0 eq
	{dup 4 RL neg 4 RL}
	{dup 2.2 RL 0 3.6 RM neg 2.2 RL}
	ifelse stroke}!

$
@@dplus
$
dplus

	Decorao `+'

x y dplus

/dplus{	1.2 SLW 0.5 add M 0 6 RL
	-3 -3 RM 6 0 RL stroke}!

$
@@accent
$
accent

	Acento `>'

x y accent

/accent{1.2 SLW M -4 2 RM
	8 2 RL -8 2 RL stroke}!

$
@@turn
$
turn

	Grupeto (turn)

x y turn

/turn{	M 5.2 8 RM
	1.4 -0.5 0.9 -4.8 -2.2 -2.8 RC
	-4.8 3.5 RL
	-3 2 -5.8 -1.8 -3.6 -4.4 RC
	1 -1.1 2 -0.8 2.1 0.1 RC
	0.1 0.9 -0.7 1.2 -1.9 0.6 RC
	-1.4 0.5 -0.9 4.8 2.2 2.8 RC
	4.8 -3.5 RL
	3 -2 5.8 1.8 3.6 4.4 RC
	-1 1.1 -2 0.8 -2.1 -0.1 RC
	-0.1 -0.9 0.7 -1.2 1.9 -0.6 RC
	fill}!

$
@@turnx
$
turnx

	Grupeto (turn) cortado por um trao vertical

x y turnx

/turnx{	2 copy turn M
	.6 SLW 0 1.5 RM 0 9 RL stroke}!

$
@@lphr
$
lphr

	Decorao `longphrase'

x y lphr

/lphr{1.2 SLW M 0 -18 RL stroke}!

$
@@mphr
$
mphr

	Decorao `mediumphrase'

x y mphr

/mphr{1.2 SLW M 0 -12 RL stroke}!

$
@@sphr
$
sphr

	Decorao `shortphrase'

x y sphr

/sphr{1.2 SLW M 0 -6 RL stroke}!

$
@@ltr
$
ltr

	Trilo longo (long trill)

len x y ltr

/ltr{	gsave 4 add T
	0 6 3 -1 roll{
		0 1 1{
			0 0.4 M
			2 1.9 3.4 2.3 3.9 0 curveto
			2.1 0 lineto
			1.9 0.8 1.4 0.7 0 -0.4 curveto
			fill
			pop 180 rotate -6 0 T
		}for
		pop 6 0 T
	}for
	grestore}!

$
@@arp
$
arp

	Arpejo (arpeggio)

len x ylow arp

/arp{gsave 90 rotate exch neg ltr grestore}!

$
@@wedge
$
wedge

	Decorao `wedge'

x y wedge

/wedge{1 add M -1.5 5 RL 3 0 RL -1.5 -5 RL fill}!

$
@@opend
$
opend

	Decorao `open' (corda solta ou harmnico natural)

x y opend

/opend{dlw M currentpoint 3 add 2.5 -90 270 arc stroke}!

$
@@snap
$
snap

	Decorao `snap'

x y snap

/snap{	dlw M currentpoint -3 6 RM
	0 5 6 5 6 0 RC
	0 -5 -6 -5 -6 0 RC
	5 add M 0 -6 RL stroke}!

$
@@thumb
$
thumb

	Decorao `thumb'

x y thumb

/thumb{	dlw M currentpoint -2.5 7 RM
	0 6 5 6 5 0 RC
	0 -6 -5 -6 -5 0 RC
	2 add M 0 -4 RL stroke}!

$
@@hl
$
hl

	Linha suplementar na altura `y'

y hl

/hl{	.8 SLW x -6 add exch M
	12 0 RL stroke}!

$
@@hl1
$
hl1

	Linha suplementar larga na altura `y'

y hl1

/hl1{	.8 SLW x -7 add exch M
	14 0 RL stroke}!

$
@@hl2
$
hl2

	Linha suplementar muito larga na altura `y'
	(Para breve ou longa)

y hl2

/hl2{	.8 SLW x -8 add exch M
	16 0 RL stroke}!

$
@@sh0
$
sh0

	Sustenido

x y sh0

/sh0{	gsave T .9 SLW
	-1.2 -8.4 M 0 15.4 RL
	1.4 -7.2 M 0 15.4 RL stroke
	-2.6 -3 M 5.4 1.6 RL 0 -2.2 RL -5.4 -1.6 RL 0 2.2 RL fill
	-2.6 3.4 M 5.4 1.6 RL 0 -2.2 RL -5.4 -1.6 RL 0 2.2 RL fill
	grestore}!

$
@@ft0
$
ft0

	Bemol

x y ft0

/ft0{	gsave T .8 SLW
	-1.8 2.5 M
	6.4 3.3 6.5 -3.6 0 -6.6 RC
	4.6 3.9 4.5 7.6 0 5.7 RC
	currentpoint fill M
	0 7.1 RM 0 -12.6 RL stroke
	grestore}!

$
@@nt0
$
nt0

	Bequadro (natural)

x y nt0

/nt0{	gsave T .5 SLW
	-2 -4.3 M 0 12.2 RL
	1.3 -7.8 M 0 12.2 RL stroke
	2.1 SLW
	-2 -2.9 M 3.3 0.6 RL
	-2 2.4 M 3.3 0.6 RL stroke
	grestore}!

$
@@dsh0
$
dsh0

	Dobrado sustenido

x y dsh0

/dsh0{	2 copy M .7 SLW
	-2 -2 RM 4 4 RL
	-4 0 RM 4 -4 RL stroke
	.5 SLW 2 copy M 1.3 -1.3 RM
	2 -0.2 RL 0.2 -2 RL -2 0.2 RL -0.2 2 RL fill
	2 copy M 1.3 1.3 RM
	2 0.2 RL 0.2 2 RL -2 -0.2 RL -0.2 -2 RL fill
	2 copy M -1.3 1.3 RM
	-2 0.2 RL -0.2 2 RL 2 -0.2 RL 0.2 -2 RL fill
	M -1.3 -1.3 RM
	-2 -0.2 RL -0.2 -2 RL 2 0.2 RL 0.2 2 RL fill}!

$
@@ftx
$
ftx

	Bemol estreito

x y ftx

/ftx{	-1.4 2.7 RM
	5.7 3.1 5.7 -3.6 0 -6.7 RC
	3.9 4 4 7.6 0 5.8 RC
	currentpoint fill M
	dlw 0 7.1 RM 0 -12.4 RL stroke}!

$
@@dft0
$
dft0

	Dobrado bemol

x y dft0

/dft0{2 copy M -2.5 0 RM ftx M 1.5 0 RM ftx}!

$
@@gsc
$
gsc

	Funo auxiliar para acidentes em notinhas (grace notes)

/gsc{gsave y T .7 dup scale 0 0}!

$
@@sh1
$
sh1

	Sustenido de 1/4 de tom

x y sh1

/sh1{	gsave T .9 SLW
	0 -7.8 M 0 15.4 RL stroke
	-1.8 -2.7 M 3.6 1.1 RL 0 -2.2 RL -3.6 -1.1 RL 0 2.2 RL fill
	-1.8 3.7 M 3.6 1.1 RL 0 -2.2 RL -3.6 -1.1 RL 0 2.2 RL fill
	grestore}!

$
@@sh513
$
sh513

	Sustenido de 3/4 de tom

x y sh513

/sh513{	gsave T .8 SLW
	-2.5 -8.7 M 0 15.4 RL
	0 -7.8 M 0 15.4 RL
	2.5 -6.9 M 0 15.4 RL stroke
	-3.7 -3.1 M 7.4 2.2 RL 0 -2.2 RL -7.4 -2.2 RL 0 2.2 RL fill
	-3.7 3.2 M 7.4 2.2 RL 0 -2.2 RL -7.4 -2.2 RL 0 2.2 RL fill
	grestore}!

$
@@ft1
$
ft1

	Bemol de 1/4 de tom

x y ft1

/ft1{gsave -1 1 scale exch neg exch ft0 grestore}!

$
@@ft513
$
ft513

	Bemol de 3/4 de tom

x y ft513

/ft513{2 copy gsave -1 1 scale exch neg 3 add exch M ftx grestore
	M 1.5 0 RM ftx}!

$
@@sharp_glyph
$
sharp_glyph

	Sustenido para uso em acordes cifrados

/sharp_glyph{
	fh .4 mul 0 RM currentpoint
	gsave T fh .08 mul dup scale 0 7 sh0 grestore
	fh .4 mul 0 RM}!

$
@@flat_glyph
$
flat_glyph

	Bemol para uso em acordes cifrados

/flat_glyph{
	fh .4 mul 0 RM currentpoint
	gsave T fh .08 mul dup scale 0 5 ft0 grestore
	fh .4 mul 0 RM}!

$
@@nat_glyph
$
nat_glyph

	Bequadro para uso em acordes cifrados

/nat_glyph{
	fh .4 mul 0 RM currentpoint
	gsave T fh .08 mul dup scale 0 7 nt0 grestore
	fh .4 mul 0 RM}!

$
@@gchshow
$
gchshow

	Processa (imprime) um caracter de acorde cifrado (guitar
	chord), substituindo os caracteres indicadores de sustenido,
	bequadro e bemol pelos respectivos smbolos.

Ver gcshow

/gchshow{
	pop pop
	dup 129 eq{pop sharp_glyph}
	  {dup 130 eq{pop flat_glyph}
	    {dup 131 eq{pop nat_glyph}
		{currentfont/Encoding get exch get glyphshow}
		ifelse}
	    ifelse}
	  ifelse}!

$
@@gcshow
$
gcshow

	Imprime acorde cifrado (guitar chord).

str gcshow

/gcshow{/gchshow load cshow}!

$
@@box
$
box

	Traa uma `caixa' (retngulo).

x y larg alt box

/box{.6 SLW rectstroke}!

$
@@anshow
$
anshow

	Imprime anotao (annotation).

str anshow

/anshow{/gchshow load cshow}!

$
@@wln
$
wln

	Linha usada em letras (lyrics): slaba prolongada (_)

l x y wln

/wln{M .8 SLW 0 RL stroke}!

$
@@hyph
$
hyph

	Preenche espao entre slabas (em lyrics) com hfens.
	A distncia entre os hfens pode ser personalizada
	substituindo-se o valor `40' (na segunda linha) por outro
	valor.

l x y hyph

/hyph{	.8 SLW 3 add M
	dup cvi 40 idiv 1 add 1 index exch div
	dup 3 sub 3 1 roll
	dup .5 mul dup 1.5 sub 0 RM
	exch 3 -1 roll
	{pop 3 0 RL dup 0 RM} for stroke pop}!

$
@@lyshow
$
lyshow

	Imprime letra (lyrics).

str lyshow

/lyshow{show}!

$
@@bar
$
bar

	Barra de compasso

h x y bar

/bar{M dlw 0 exch RL stroke}!

$
@@dotbar
$
dotbar

	Barra de compasso pontilhada (tracejada)

h x y dotbar

/dotbar{[5] 0 setdash bar [] 0 setdash}!

$
@@thbar
$
thbar

	Barra de compasso grossa (thick bar)

h x y thbar

/thbar{3 -1 roll 3 exch rectfill}!

$
@@rdots
$
rdots

	Pontos usados em ritornello (repeat dots)

x y rdots

/rdots{	9 add M currentpoint 2 copy 1.2 0 360 arc
	6 add M currentpoint 1.2 0 360 arc fill}!

$
@@csig
$
csig

	Metro `C' (C time signature)

x y csig

/csig{	M
	1 17.3 RM
	0.9 0 2.3 -0.7 2.4 -2.2 RC
	-1.2 2 -3.6 -0.1 -1.6 -1.7 RC
	2 -1 3.8 3.5 -0.8 4.7 RC
	-2 0.4 -6.4 -1.3 -5.8 -7 RC
	0.4 -6.4 7.9 -6.8 9.1 -0.7 RC
	-2.3 -5.6 -6.7 -5.1 -6.8 0 RC
	-0.5 4.4 0.7 7.5 3.5 6.9 RC
	fill}!

$
@@ctsig
$
ctsig

	Metro `C|' (C| time signature)

x y ctsig

/ctsig{dlw 2 copy csig 4 add M 0 16 RL stroke}!

$
@@tsig
$
tsig

	Imprime frmula de compasso (time signature). (top) e (bot)
	so respectivamente o ``numerador'' e o ``denominador''.

(top) (bot) x y tsig

/tsig{	M gsave/Times-Bold 16 selectfont 1.2 1 scale
	0 1 RM currentpoint 3 -1 roll showc
	M 0 12 RM showc grestore}!

$
@@stsig
$
stsig

	Imprime metro simples (single time signature), constitudo
	apenas por um nmero no meio da pauta.

(meter) x y stsig

/stsig{	M gsave/Times-Bold 18 selectfont 1.2 1 scale
	0 6 RM showc grestore}!

$
@@staff
$
staff

	Pauta com `n' linhas.
	(O argumento `n' foi introduzido com abcm2ps-4.8.6)

l y n staff

/staff{	dlw 1 1 3 -1 roll{
		pop 0 1 index M 1 index 0 RL 6 add
	}for pop pop stroke}!

$
@@sep0
$
sep0

	Separador (%%sep)

Trao horizontal centralizado.

x1 x2 sep0

/sep0{dlw 0 M 0 RL stroke}!

$
@@hbrce
$
hbrce

	Funo usada por `brace'

/hbrce{	-2.5 1 RM
	-4.5 -4.6 -7.5 -12.2 -4.4 -26.8 RC
	3.5 -14.3 3.2 -21.7 -2.1 -24.2 RC
	7.4 2.4 7.3 14.2 3.5 29.5 RC
	-2.7 9.5 -1.5 16.2 3 21.5 RC
	fill}!

$
@@brace
$
brace

	Chave `{' para conectar pautas em um sistema

h x y brace

/brace{	gsave T 0 0 M .01 mul 1 exch scale hbrce
	0 -100 M 1 -1 scale hbrce grestore}!

$
@@bracket
$
bracket

	Colchete `[' para conectar pautas em um sistema

h x y bracket

/bracket{M dlw -5 2 RM currentpoint
	-1.7 2 RM 10.5 -1 12 4.5 12 3.5 RC
	0 -1 -3.5 -5.5 -8.5 -5.5 RC fill
	3 SLW M 0 2 RM
	0 exch neg -8 add RL currentpoint stroke
	dlw M -1.7 0 RM
	10.5 1 12 -4.5 12 -3.5 RC
	0 1 -3.5 5.5 -8.5 5.5 RC fill}!

$
@@mrest
$
mrest

	Pausa de vrios compassos

(nb_measures deve ser uma string)

nb_measures x y mrest

/mrest{	gsave T 1 SLW
	-20 6 M 0 12 RL 20 6 M 0 12 RL stroke
	5 SLW -20 12 M 40 0 RL stroke
	/Times-Bold 15 selectfont 0 28 M showc grestore}!

$
@@mrep
$
mrep

	Sinal de repetio de compasso

x y mrep

/mrep{	2 copy 2 copy
	M -5 16 RM currentpoint 1.4 0 360 arc
	M 5 8 RM currentpoint 1.4 0 360 arc
	M -7 6 RM 11 12 RL 3 0 RL -11 -12 RL -3 0 RL
	fill}!

$
@@mrep2
$
mrep2

	Sinal de repetio de 2 compassos

x y mrep2

/mrep2{	2 copy 2 copy
	M -5 18 RM currentpoint 1.4 0 360 arc
	M 5 6 RM currentpoint 1.4 0 360 arc fill
	M 1.8 SLW
	-7 4 RM 14 10 RL -14 -4 RM 14 10 RL
	stroke}!

$
@@repbra
$
repbra

	Colchete para repetio (casa 1, casa 2 etc.)

str bracket_type dx x y repbra

/repbra{gsave dlw T 0 -20 M
	0 20 3 index 1 ne{RL}{RM}ifelse 0 RL 0 ne{0 -20 RL}if stroke
	4 -13 M show grestore}!

$
@@SL
$
SL

	Ligadura (slur/tie)

pp2x pp1x p1 pp1 pp2 p2 p1 SL

/SL{M curveto RL curveto closepath fill}!

$
@@dSL
$
dSL

	Ligadura pontilhada (tracejada)

pp2x pp1x p1 pp1 pp2 p2 p1 dSL

/dSL{	M [4] 0 setdash .8 SLW
	curveto stroke [] 0 setdash
	pop pop pop pop pop pop pop pop}!

$
@@strw
$
strw

/strw{stringwidth pop w add/w exch def}!

$
@@jshow
$
jshow

/jshow{w 0 32 4 -1 roll widthshow}!

$
@@wbook
$
wbook

	Operador para imprimir ttulo relativo a determinado campo
	(livro, discografia, histria, notas, ritmo, fonte ou
	transcrio).

	Criado para permitir traduo do texto atravs de sua
	redefinio (abcm2ps-4.8.11).

	Os campos so mostrados usando-se o parmetro de formato
	`writehistory' ou a opo `-n' na linha de comando.

/wbook{0 0 M (Book:)show}!

$
@@wdisco
$
wdisco

	Operador para imprimir ttulo relativo a determinado campo
	(livro, discografia, histria, notas, ritmo, fonte ou
	transcrio).

	Criado para permitir traduo do texto atravs de sua
	redefinio (abcm2ps-4.8.11).

	Os campos so mostrados usando-se o parmetro de formato
	`writehistory' ou a opo `-n' na linha de comando.

/wdisco{0 0 M(Discography:)show}!

$
@@whisto
$
whisto

	Operador para imprimir ttulo relativo a determinado campo
	(livro, discografia, histria, notas, ritmo, fonte ou
	transcrio).

	Criado para permitir traduo do texto atravs de sua
	redefinio (abcm2ps-4.8.11).

	Os campos so mostrados usando-se o parmetro de formato
	`writehistory' ou a opo `-n' na linha de comando.

/whisto{0 0 M(History:)show}!

$
@@wnotes
$
wnotes

	Operador para imprimir ttulo relativo a determinado campo
	(livro, discografia, histria, notas, ritmo, fonte ou
	transcrio).

	Criado para permitir traduo do texto atravs de sua
	redefinio (abcm2ps-4.8.11).

	Os campos so mostrados usando-se o parmetro de formato
	`writehistory' ou a opo `-n' na linha de comando.

/wnotes{0 0 M(Notes:)show}!

$
@@wrhythm
$
wrhythm

	Operador para imprimir ttulo relativo a determinado campo
	(livro, discografia, histria, notas, ritmo, fonte ou
	transcrio).

	Criado para permitir traduo do texto atravs de sua
	redefinio (abcm2ps-4.8.11).

	Os campos so mostrados usando-se o parmetro de formato
	`writehistory' ou a opo `-n' na linha de comando.

/wrhythm{0 0 M(Rhythm:)show}!

$
@@wsource
$
wsource

	Operador para imprimir ttulo relativo a determinado campo
	(livro, discografia, histria, notas, ritmo, fonte ou
	transcrio).

	Criado para permitir traduo do texto atravs de sua
	redefinio (abcm2ps-4.8.11).

	Os campos so mostrados usando-se o parmetro de formato
	`writehistory' ou a opo `-n' na linha de comando.

/wsource{0 0 M(Source:)show}!

$
@@wtrans
$
wtrans

	Operador para imprimir ttulo relativo a determinado campo
	(livro, discografia, histria, notas, ritmo, fonte ou
	transcrio).

	Criado para permitir traduo do texto atravs de sua
	redefinio (abcm2ps-4.8.11).

	Os campos so mostrados usando-se o parmetro de formato
	`writehistory' ou a opo `-n' na linha de comando.

/wtrans{0 0 M(Transcription:)show}!

$
@@hd
$
hd

	Cabea de nota preenchida (para semnima e figuras mais
	curtas)

x y hd

/hd{	xymove
	3.5 2 RM
	-2 3.5 -9 -0.5 -7 -4 RC
	2 -3.5 9 0.5 7 4 RC fill}!

$
@@Hd
$
Hd

	Cabea de mnima (aberta)

x y Hd

/Hd{	xymove
	3 1.6 RM
	-1 1.8 -7 -1.4 -6 -3.2 RC
	1 -1.8 7 1.4 6 3.2 RC
	0.5 0.3 RM
	2 -3.8 -5 -7.6 -7 -3.8 RC
	-2 3.8 5 7.6 7 3.8 RC
	fill}!

$
@@HD
$
HD

	(Cabea de) semibreve

x y HD

/HD{	xymove
	-1.6 2.4 RM
	2.8 1.6 6 -3.2 3.2 -4.8 RC
	-2.8 -1.6 -6 3.2 -3.2 4.8 RC
	7.2 -2.4 RM
	0 1.8 -2.2 3.2 -5.6 3.2 RC
	-3.4 0 -5.6 -1.4 -5.6 -3.2 RC
	0 -1.8 2.2 -3.2 5.6 -3.2 RC
	3.4 0 5.6 1.4 5.6 3.2 RC
	fill}!

$
@@HDD
$
HDD

	Breve (forma redonda)

x y HDD

/HDD{	dlw HD
	x y M -6 -4 RM 0 8 RL
	12 0 RM 0 -8 RL stroke}!

$
@@breve
$
breve

	Breve (forma quadrada)

x y breve

/breve{	xymove
	2.5 SLW -6 -2.7 RM 12 0 RL
	0 5.4 RM -12 0 RL stroke
	dlw x y M -6 -5 RM 0 10 RL
	12 0 RM 0 -10 RL stroke}!

$
@@longa
$
longa

	Longa

x y longa

/longa{	xymove
	2.5 SLW -6 -2.7 RM 12 0 RL
	0 5.4 RM -12 0 RL stroke
	dlw x y M -6 -5 RM 0 10 RL
	12 0 RM 0 -16 RL stroke}!

$
@@pshhd
$
pshhd

	Cabea de nota para percusso (x)
	(percussion sharp head)
	(Nota sustenida quando clef=perc)

x y pshhd

/pshhd{/x 2 index def/y 1 index def dsh0}!

$
@@pflhd
$
pflhd

	Cabea de nota para percusso (x circulado)
	(percussion flat head)
	(Nota bemolizada quando clef=perc)

x y pflhd

/pflhd{/x 2 index def/y 1 index def dsh0
	.7 SLW x y 4 0 360 arc stroke}!

$
@@tw_head
$
tw_head

/tw_head{/Helvetica 8 selectfont
	0 -45 M 90 rotate(WHISTLE)show -90 rotate
	/Helvetica-Bold 36 selectfont
	0 -45 M show .5 SLW newpath}!

$
@@tw_under
$
tw_under

/tw_under{
	1 index 2.5 sub -4 M 2.5 -2.5 RL 2.5 2.5 RL
	-2.5 -2.5 RM 0 6 RL stroke}!

$
@@tw_over
$
tw_over

/tw_over{
	1 index 2.5 sub -3 M 2.5 2.5 RL 2.5 -2.5 RL
	-2.5 2.5 RM 0 -6 RL stroke}!

$
@@tw_0
$
tw_0

/tw_0{7 sub 2 copy 3.5 sub 3 0 360 arc stroke}!

$
@@tw_1
$
tw_1

/tw_1{7 sub 2 copy 3.5 sub 2 copy 3 90 270 arc fill 3 270 90 arc stroke}!

$
@@tw_2
$
tw_2

/tw_2{7 sub 2 copy 3.5 sub 3 0 360 arc fill}!

$
@@tw_p
$
tw_p

/tw_p{pop -55 M 0 6 RL -3 -3 RM 6 0 RL stroke}!

$
@@tw_pp
$
tw_pp

/tw_pp{	pop 3 sub -53.5 M 6 0 RL
	-1.5 -1.5 RM 0 3 RL
	-3 0 RM 0 -3 RL stroke}!
0 setlinecap 0 setlinejoin

$
@@su
$
su

	Haste para cima (stem up)

len su

/su{dlw x y M 3.5 1.0 RM 1.0 sub 0 exch RL stroke}!

$
@@sd
$
sd

	Haste para baixo (stem down)

len sd

/sd{dlw x y M -3.5 -1.0 RM 1.0 add 0 exch RL stroke}!

$
@@sfu
$
sfu

	Haste e `n' bandeirolas para cima

n len sfu

/sfu{	dlw x y M 3.5 1.0 RM
	1.0 sub 0 exch RL currentpoint stroke
	M dup 1 eq
	  {
		pop
		0.6 -5.6 9.6 -9 5.6 -18.4 RC
		1.6 6 -1.3 11.6 -5.6 12.8 RC
		fill
	  }{
		2 1 3 -1 roll{
			pop currentpoint
			0.9 -3.7 9.1 -6.4 6 -12.4 RC
			1 5.4 -4.2 8.4 -6 8.4 RC
			fill -5.4 add M
		}for
		1.2 -3.2 9.6 -5.7 5.6 -14.6 RC
		1.6 5.4 -1 10.2 -5.6 11.4 RC
		fill
	  }
	ifelse}!

$
@@sfd
$
sfd

	Haste e `n' bandeirolas para baixo

n len sfd

/sfd{	dlw x y M -3.5 -1.0 RM
	1.0 add 0 exch RL currentpoint stroke
	M dup 1 eq
	  {
		pop
		0.6 5.6 9.6 9 5.6 18.4 RC
		1.6 -6 -1.3 -11.6 -5.6 -12.8 RC
		fill
	  }{
		2 1 3 -1 roll{
			pop currentpoint
			0.9 3.7 9.1 6.4 6 12.4 RC
			1 -5.4 -4.2 -8.4 -6 -8.4 RC
			fill 5.4 add M
		}for
		1.2 3.2 9.6 5.7 5.6 14.6 RC
		1.6 -5.4 -1 -10.2 -5.6 -11.4 RC
		fill
	  }
	ifelse}!

$
@@sfs
$
sfs

	Haste e `n' bandeirolas retas para baixo

n len sfs

/sfs{	dlw x y M -3.5 -1.0 RM
	1.0 add 0 exch RL currentpoint stroke
	M 1 1 3 -1 roll{
		pop currentpoint
		7 3.2 RL
		0 3.2 RL
		-7 -3.2 RL
		fill 5.4 add M
	}for}!

$
@@ghd
$
ghd

	Cabea para notinhas (grace notes)

x y ghd

/ghd{	xymove
	1.7 1 RM
	-1 1.7 -4.5 -0.2 -3.4 -2 RC
	1 -1.7 4.5 0.2 3.4 2 RC fill}!

$
@@gu
$
gu

	Haste de notinha (grace note) para cima

len gu

/gu{	.6 SLW x y M
	1.6 0 RM 0 exch RL stroke}!

$
@@gd
$
gd

	Haste de notinha (grace note) para baixo

len gd

/gd{	.6 SLW x y M
	-1.6 0 RM 0 exch RL stroke}!

$
@@sgu
$
sgu

	Haste e `n' bandeirolas para notinha

n len sgu

/sgu{	.6 SLW x y M 1.6 0 RM
	0 exch RL currentpoint stroke
	M dup 1 eq
	  {
		pop
		0.6 -3.4 5.6 -3.8 3 -10 RC
		1.2 4.4 -1.4 7 -3 7 RC
		fill
	  }{
		1 1 3 -1 roll{
			pop currentpoint
			1 -3.2 5.6 -2.8 3.2 -8 RC
			1.4 4.8 -2.4 5.4 -3.2 5.2 RC
			fill -3.5 add M
		}for
	  }
	ifelse}!

$
@@sgd
$
sgd

	Haste e `n' bandeirolas para notinha

n len sgd

/sgd{	.6 SLW x y M -1.6 0 RM
	0 exch RL currentpoint stroke
	M dup 1 eq
	  {
		pop
		0.6 3.4 5.6 3.8 3 10 RC
		1.2 -4.4 -1.4 -7 -3 -7 RC
		fill
	  }{
		1 1 3 -1 roll{
			pop currentpoint
			1 3.2 5.6 2.8 3.2 8 RC
			1.4 -4.8 -2.4 -5.4 -3.2 -5.2 RC
			fill 3.5 add M
		}for
	  }
	ifelse}!

$
@@sgs
$
sgs

	Haste e `n' bandeirolas para notinha

n len sgs

/sgs{	.6 SLW x y M 1.6 0 RM
	0 exch RL currentpoint stroke
	M 1 1 3 -1 roll{
		pop currentpoint
		3 -1.5 RL 0 -2 RL -3 1.5 RL
		closepath fill -3 add M
	}for}!

$
@@gua
$
gua

	Acciaccatura - corte em notinhas com haste para cima.

dx dy gua

/gua{x y M -1 4 RM RL stroke}!

$
@@gda
$
gda

	Acciaccatura - corte em notinhas com haste para baixo.

dx dy gda

/gda{x y M -5 -4 RM RL stroke}!

$
@@ghl
$
ghl

	Linha suplementar para notinha

y ghl

/ghl{	.6 SLW x -3 add exch M
	6 0 RL stroke}!

$
@@gsl
$
gsl

	Ligadura para notinhas

x1 y2 x2 y2 x3 y3 x0 y0 gs

/gsl{dlw M curveto stroke}!

$
@@mkfontext0
$
mkfontext0

/mkfontext0{
	findfont dup length dict begin
		{1 index/FID ne{def}{pop pop}ifelse}forall
		/Encoding ISOLatin1Encoding def
		currentdict
	end
	definefont pop}!

$
@@Times-Roman0
$
Times-Roman0

/Times-Roman0/Times-Roman mkfontext0

$
@@F0
$
F0

/F0{dup .8 mul/fh exch def/Times-Roman0 exch selectfont}!

$
@@Times-Italic0
$
Times-Italic0

/Times-Italic0/Times-Italic mkfontext0

$
@@F1
$
F1

/F1{dup .8 mul/fh exch def/Times-Italic0 exch selectfont}!

$
@@Times-Bold0
$
Times-Bold0

/Times-Bold0/Times-Bold mkfontext0

$
@@F2
$
F2

/F2{dup .8 mul/fh exch def/Times-Bold0 exch selectfont}!

$
@@Helvetica0
$
Helvetica0

/Helvetica0/Helvetica mkfontext0

$
@@F3
$
F3

/F3{dup .8 mul/fh exch def/Helvetica0 exch selectfont}!


$
@@MICROTONS
$
MICROTONS

        - Alturas microtonais so indicadas por uma frao depois de
          um acidente, como "^3/4c". Quando omitido, o numerador 
          definido como 1 e o denominador como 2 ("^/c"  o mesmo que
          "^1/2c"). O numerador e o denominador no podem ser maiores
          que 256. Existe suporte para sustenidos e bemis 1/2 e
          3/2. Para outros valores, funes PostScript devem ser
          definidas (atravs de %%postscript).
          O nome de uma tal funo :
                <accidental_type><micro_value>
          onde
                  - <accidental_type> :
		    "sh" (sustenido) ou
		    "ft" (bemol)
                    (ou ainda "nt", "dsh" ou "dft" !)
                  - <micro_value>  computado da frao como:
                        ( <numerador> - 1 ) * 256 + <denominador> - 1

/MICROTONS

$
