lilypond-1.3.21
[lilypond.git] / mf / schrift.mf
blob2f55c401ae417e72dbc3963294ebae67e5aed637
1 fet_begingroup("foobars")
4 def draw_fermata =
5         save radius, crook_thinness, crook_fatness, dot_diam;
6         
7         radius# = 1.5 interline#;
8         crook_thinness# = stafflinethickness#;
9         crook_fatness# = 4 stafflinethickness#;
11         radius# + crook_fatness#/2 = h#;
12         radius# + crook_thinness#/2 = w#;
13         set_char_box(w#, w#, 0, h#);
14         
15         define_pixels(radius, crook_thinness, crook_fatness);
16         dot_diam = 4/3 crook_fatness;
19         penpos1(crook_thinness, 0);
20         penpos2(crook_fatness, -90);
21         penpos3(crook_thinness, -180);
22         z1 = (-radius,0);
23         z2 = (0, radius);
24         z3 = (radius,0);
25         
26         fill z1l{down} .. {up}z1r .. z2r .. z3r{down} .. {up}z3l
27                 .. z2l .. cycle;
29         pickup pencircle scaled dot_diam;
30         x4 =0;
31         bot y4 = - crook_thinness/2;
32         draw z4;
33 enddef;
35 fet_beginchar("fermata up", "ufermata", "ufermata")
36         draw_fermata;   
37         penlabels(1,2,3);
38         fet_endchar;
40 fet_beginchar("fermata down", "dfermata", "dfermata")
41         draw_fermata;
42         currentpicture:=currentpicture yscaled -1 ;
43         set_char_box(w#, w#, h#, 0);
44         
45         fet_endchar;
48 % FIXME: rounded endings
50 fet_beginchar("> accent", "accent", "accent")
51         set_char_box(.9 interline#, .9 interline#, .5 interline#, .5 interline#);
52         save thickness, diminish;
54         thickness = 2 stafflinethickness;
56         % prevent blobs at crossing lines
57         diminish = .75;
59         y1 + thickness/2 = h;
60         x1 = -b;
61         x2 = w;
62         y2 = .25 thickness* diminish;
64         z4 = (w,0);
65         x3 =0;
66         z3 = whatever [z1, z4];
68         penpos2(thickness*(2 - diminish)/2 , 90);
69         penpos1(thickness, 90);
70         penpos3(thickness, 90);
72         penstroke z1e .. z3e .. z2e;
73         penstroke (z1e .. z3e .. z2e) yscaled -1;
75         penlabels(1,2,3);
76         fet_endchar;
78 fet_beginchar("staccato dot", "staccato", "staccato")
79         save radius;
80         radius# = 1.25 stafflinethickness#;
81         define_pixels(radius);
82         pickup pencircle scaled 2 radius;
83         draw (0,0);
84         set_char_box(radius#, radius#, radius#, radius#);
85 fet_endchar;
87 def draw_staccatissimo =
88         save radius, height;
89         height# = .8 interline#;
90         radius# = 2 stafflinethickness#;
91         define_pixels(radius, height);
93         brush((0,0), blot_diameter, (0, height),2 radius);
94         set_char_box(radius#,radius#, blot_diameter#/2, height# + radius#);
95 enddef;
97 fet_beginchar("staccatissimo/martellato up", "ustaccatissimo", "ustaccatissimo")
98         draw_staccatissimo;
99 fet_endchar;
102 % FIXEM: scale labels too.
104 fet_beginchar("staccatissimo/martellato down", "dstaccatissimo", "dstaccatissimo")
105         draw_staccatissimo;
106         y_mirror_char;
107 fet_endchar;
109 fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
110         save thick;
111         thick# = 1.2 stafflinethickness#;
112         define_pixels(thick);
114         set_char_box(.9 interline#, .9 interline#, thick#/2,thick#/2);
115         pickup pencircle scaled thick;
116         lft x1 = -b;
117         rt x2 = w;
118         y1 = y2 = 0;
119         draw z1 .. z2;
120 fet_endchar;
123 def draw_marcato = 
124         save fatness, thinness;
125         set_char_box(interline#/2, interline#/2, 0, 1.1 interline#);
127         fatness = 3 stafflinethickness;
128         thinness = .8 stafflinethickness;
129         x2 - x1  + blot_diameter = fatness;
130         x2 + thinness/2 = w;
131         
132         y1 = y2;
133         y1 = thinness/2;
134         z2 - z3 = whatever * (charwd, -charht);
135         z1 - z4 = whatever * (charwd, -charht);
136         z3 - z4 = whatever * (charwd, charht);
137         y3 + thinness/2 = h;
138         draw_rounded_path(z1 -- z2 -- z3 -- z4 -- cycle, thinness);
140         pickup pencircle scaled thinness;
141         z3 - z5 = whatever* (z3 - z4);
142         bot y5 = 0;
143         draw z3 .. z5;
145         labels(1,2,3,4,5);
146 enddef;
148 fet_beginchar("marcato up", "umarcato", "umarcato")
149         draw_marcato;
150 fet_endchar;
151 fet_beginchar("marcato down", "dmarcato", "dmarcato")
152         draw_marcato;
153         y_mirror_char;
154 fet_endchar;
157 fet_endgroup("foobars");