]> git.donarmstrong.com Git - lilypond.git/blob - mf/parmesan-rests.mf
* Documentation/user/refman.itely: Section Custodes: added more
[lilypond.git] / mf / parmesan-rests.mf
1 % -*-Fundamental-*-
2 % parmesan-rests.mf -- implement ancient rests
3
4 % source file of LilyPond's pretty-but-neat music font
5
6 % (c) 2001--2003 Juergen Reuter <reuter@ipd.uka.de>
7
8 % Neo-mensural rests originally by
9 % Christian Mondrup and Mats Bengtsson
10
11
12 fet_begingroup("rests")
13
14
15 %%%%%%%%
16 %
17 %
18 %
19 % NEO-MENSURAL NOTATION
20 %
21 %
22 %
23
24 % Neo-mensural longa and breve are identical with default longa and breve.
25
26 neomens_block_rest_x# = 2/5 staff_space#;
27 neomens_block_rest_y# = 1/1 staff_space#;
28 neomens_half_block_rest_y# = 5/8 staff_space#;
29
30 define_pixels(neomens_block_rest_x,
31               neomens_block_rest_y, neomens_half_block_rest_y);
32
33 def neomens_half_block_rest =
34         draw_block ((0,0), (neomens_block_rest_x, neomens_half_block_rest_y));
35         enddef;
36
37 fet_beginchar("Neo-mensural maxima rest", "-3neo_mensural", "neomensmaximarest");
38        set_char_box(0, neomens_block_rest_x#,
39                     neomens_block_rest_y#, 2 neomens_block_rest_y#);
40        draw_block ((0,-neomens_block_rest_y),
41                    (neomens_block_rest_x, 2 neomens_block_rest_y));
42 fet_endchar;
43
44 fet_beginchar("Neo-mensural longa rest", "-2neo_mensural", "neomenslongarest");
45        set_char_box(0, neomens_block_rest_x#,
46                     neomens_block_rest_y#, neomens_block_rest_y#);
47        draw_block ((0,-neomens_block_rest_y),
48                    (neomens_block_rest_x, neomens_block_rest_y));
49 fet_endchar;
50
51 fet_beginchar("Neo-mensural breve rest", "-1neo_mensural", "neomensbreverest");
52        set_char_box(0, neomens_block_rest_x#,
53                     0, neomens_block_rest_y#);
54        draw_block ((0,0), (neomens_block_rest_x, neomens_block_rest_y));
55 fet_endchar;
56
57 fet_beginchar("Neo-mensural whole rest", "0neo_mensural", "neomenssemibrevisrest");
58         set_char_box(0, neomens_block_rest_x#,
59                      neomens_half_block_rest_y#,  0);
60         neomens_half_block_rest;
61         currentpicture :=
62                 currentpicture shifted (0,- neomens_half_block_rest_y);
63 fet_endchar;
64
65 fet_beginchar("Neo-mensural half rest", "1neo_mensural", "neomensminimahalfrest");
66         set_char_box(0, neomens_block_rest_x#,
67                      0, neomens_half_block_rest_y#);
68         neomens_half_block_rest;
69 fet_endchar;
70
71 neomensrestsize# = 0.8 staff_space#;
72
73 fet_beginchar("Neo-mensural 4th rest","2neo_mensural","neomenssemiminimarest")
74         set_char_box(0,neomensrestsize#,0,neomensrestsize#);
75         pickup pencircle scaled 2 stafflinethickness;
76         lft x1 = 0;
77         bot y1 = 0;
78         lft x2 = 0;
79         top y2 = h;
80         rt x3 = w;
81         bot y3 = h/2;
82         draw z1 .. z2;
83         draw z2 .. z3;
84 fet_endchar
85
86 fet_beginchar("Neo-mensural 8th rest","3neo_mensural","neomensfusarest")
87         set_char_box(0,neomensrestsize#,0,neomensrestsize#);
88         pickup pencircle scaled 2 stafflinethickness;
89         rt x1 = w;
90         bot y1 = 0;
91         rt x2 = w;
92         top y2 = h;
93         lft x3 = 0;
94         bot y3 = h/2;
95         draw z1 .. z2;
96         draw z2 .. z3;
97 fet_endchar
98
99 fet_beginchar("Neo-mensural 16th rest","4neo_mensural","neomenssemifusarest")
100         set_char_box(0,neomensrestsize#,0,staff_space#);
101         pickup pencircle scaled 2 stafflinethickness;
102         rt x1 = w;
103         bot y1 = 0;
104         rt x2 = w;
105         top y2 = h;
106
107         draw z1 .. z2;
108
109         pickup pencircle scaled 2 stafflinethickness;
110         rt x3 = w;
111         top y3 = h;
112         lft x4 = 0;
113         bot y4 = h/2;
114         rt x5 = w;
115         top y5 = 5/8h;
116         lft x6 = 0;
117         bot y6 = h/8;
118
119         draw z3 .. z4;
120         draw z5 .. z6;
121 fet_endchar
122
123
124 %%%%%%%%
125 %
126 %
127 %
128 % MENSURAL NOTATION
129 %
130 %
131 %
132
133 pen_width# = 0.3 staff_space#;
134 pen_height# = 0;
135 pen_rotation = 30;
136 slight_pen_rotation = 15;
137
138 mens_block_rest_y# = 1/1 staff_space#;
139 mens_half_block_rest_y# = 5/8 staff_space#;
140
141 define_pixels(mens_block_rest_y, mens_half_block_rest_y,
142               pen_width, pen_height);
143
144 fet_beginchar("Mensural maxima rest", "-3mensural", "mensmaximarest");
145         set_char_box(0.7pen_width#, 0.7pen_width#,
146                      mens_block_rest_y#, 2mens_block_rest_y#);
147         pickup pencircle
148                 xscaled pen_width
149                 yscaled pen_height
150                 rotated slight_pen_rotation;
151         draw (0, -mens_block_rest_y) -- (0, 2 mens_block_rest_y);
152 fet_endchar;
153
154 fet_beginchar("Mensural longa rest", "-2mensural", "menslongarest");
155         set_char_box(0.7pen_width#, 0.7pen_width#,
156                      mens_block_rest_y#, mens_block_rest_y#);
157         pickup pencircle
158                 xscaled pen_width
159                 yscaled pen_height
160                 rotated slight_pen_rotation;
161         draw (0, -mens_block_rest_y) -- (0, mens_block_rest_y);
162 fet_endchar;
163
164 fet_beginchar("Mensural breve rest", "-1mensural", "mensbreverest");
165         set_char_box(0.7pen_width#, 0.7pen_width#,
166                      0, mens_block_rest_y#);
167         pickup pencircle
168                 xscaled pen_width
169                 yscaled pen_height
170                 rotated slight_pen_rotation;
171         draw (0, 0) -- (0, mens_block_rest_y);
172 fet_endchar;
173
174 fet_beginchar("Mensural whole rest", "0mensural", "menssemibrevisrest");
175         set_char_box(0.7pen_width#, 0.7pen_width#,
176                      mens_half_block_rest_y#, 0);
177         pickup pencircle
178                 xscaled pen_width
179                 yscaled pen_height
180                 rotated slight_pen_rotation;
181         draw (0, 0) -- (0, -mens_half_block_rest_y);
182 fet_endchar;
183
184 fet_beginchar("Mensural half rest", "1mensural", "mensminimahalfrest");
185         set_char_box(0.7pen_width#, 0.7pen_width#,
186                      0, mens_half_block_rest_y#);
187         pickup pencircle
188                 xscaled pen_width
189                 yscaled pen_height
190                 rotated slight_pen_rotation;
191         draw (0, 0) -- (0, mens_half_block_rest_y);
192 fet_endchar;
193
194 mensrestsize# = .8staff_space#;
195
196 fet_beginchar("Mensural 4th rest","2mensural","menssemiminimarest")
197         set_char_box(0,mensrestsize#,0,mensrestsize#);
198         pickup pencircle
199                 xscaled pen_width
200                 yscaled pen_height
201                 rotated pen_rotation;
202         lft x1 =      0;     y1 = 0;
203         lft x2 =      0; top y2 = 5/8 h;
204         rt  x3 =  4/8 w; bot y3 = 6/8 h;
205         rt  x4 = 10/8 w; bot y4 = 4/8 h;
206         draw z1 -- z2 -- z3 -- z4;
207 fet_endchar
208
209 fet_beginchar("Mensural 8th rest","3mensural","mensfusarest")
210         set_char_box(0,mensrestsize#,0,mensrestsize#);
211         pickup pencircle
212                 xscaled pen_width
213                 yscaled pen_height
214                 rotated pen_rotation;
215         rt  x1 = 10/8 w;     y1 = 0;
216         rt  x2 = 10/8 w; top y2 = 5/8 h;
217         lft x3 =  2/8 w; bot y3 = 6/8 h;
218         lft x4 =      0; bot y4 = 4/8 h;
219         draw z1 -- z2 -- z3 -- z4;
220 fet_endchar
221
222 fet_beginchar("Mensural 16th rest","4mensural","menssemifusarest")
223         set_char_box(0,mensrestsize#,0,staff_space#);
224         pickup pencircle
225                 xscaled pen_width
226                 yscaled pen_height
227                 rotated pen_rotation;
228
229         rt  x1 = 10/8 w;     y1 = 0;
230         rt  x2 = 10/8 w; top y2 = 5.5/8 h;
231         lft x3 =  2/8 w; bot y3 = 6.5/8 h;
232         lft x4 =      0; bot y4 = 4.5/8 h;
233         rt  x5 = 10/8 w; top y5 = 2.5/8 h;
234         lft x6 =  2/8 w; bot y6 = 3.5/8 h;
235         lft x7 =      0; bot y7 = 1.5/8 h;
236         draw z1 -- z2 -- z3 -- z4;
237         draw z5 -- z6 -- z7;
238 fet_endchar
239
240 fet_endgroup ("rests")