* mf/feta19.mf: remove.
* mf/feta-klef.mf (test_staff): more tweaks
* mf/feta-toevallig.mf: more small size tweaks.
* mf/feta-eindelijk.mf (lower_brush): adjust quarter and shorter
rests for smaller sizes.
* mf/feta-bolletjes.mf: fix cross heads.
* mf/parmesan-heads.mf: idem.
* mf/feta-bolletjes.mf (slash_slope): set WX/WY fields for
attachment coordinates.
* mf/feta-bolletjes.mf: rewrite note head MF code.
(test_outlines): make heads more rotund for smaller sizes.
2003-12-30 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ * input/mutopia/F.Schubert/GNUmakefile: add morgenlied.ly
+
+ * mf/feta19.mf: remove.
+
+ * mf/feta-klef.mf (test_staff): more tweaks
+
+ * mf/feta-toevallig.mf: more small size tweaks.
+
+ * mf/feta-eindelijk.mf (lower_brush): adjust quarter and shorter
+ rests for smaller sizes.
+
+ * mf/feta-bolletjes.mf: fix cross heads.
+
+ * VERSION: release 2.1.4
+
* scripts/convert-ly.py (FatalConversionError.func): add rule for
deprecated #'ancient font family
generated from the <tt>.ly</tt> source file, without any further touch
up.
-<p>The PostScript files were generated using TeX and dvips at 600 dpi.
+<p>
+
The pictures are 90 dpi anti-aliased snapshots of the printed output.
-The images are in PNG format, and should be viewable with any current
-browser.
+If you want a better impression of the appearance, do print out one of
+the PDF or PostScript files; they use scalable fonts, and should look
+good at any resolution.
-<p>If you want a better impression of the appearance, do print out one of
-the postscript files.
"""
headertext_nopics= r"""
depth = ../../..
examples=standchen
-mutopia-examples=standchen
+mutopia-examples=morgenlied
LOCALSTEPMAKE_TEMPLATES=ly mutopia
include $(depth)/make/stepmake.make
--- /dev/null
+\header {
+ title = "Sängers Morgenlied"
+ composer = "Franz Schubert"
+ date = "27. Februar 1815"
+ source = "Edition Peters"
+ editor = "Paul Losse"
+ enteredby="Rune Zedeler"
+ maintainer="rune@zedeler.dk"
+
+ texidoc = "The source is a rather tightly set Peters in Edition is
+ a heavy font. The Peters edition (4622c) was `herausgegeben' by
+ Paul Losse, whose name also appears on a 1956 edition of some
+ other music. Strictly speaking, his edititorial enhancements will
+ not be in the PD - but I am assuming there are no notable ones in
+ this small piece.
+
+ The original compresses the entire music onto a single page, in 4
+systems. "
+
+}
+
+\version "2.1.3"
+
+\paper {
+ staffheight = 6.0 \mm
+
+ #(define fonts (scale-font-list (/ (* 6 mm) (* 20 pt)) ))
+
+ \include "params-init.ly"
+ linewidth = #(* mm 159)
+ indent = 8\mm
+ }
+
+
+melody = \notes \relative c'' \repeat volta 2 \context Voice = singer {
+ \time 6/8
+ \autoBeamOff
+ \property Voice.automaticMelismata = ##t
+ s1*0^\markup { \bold \bigger\bigger { \hspace #-3.0 Lieblich, etwas geschwind } }
+ R2.
+ r4 r8 c4 g8 |
+ e4 c8 << { f8. g16 } \\ { f8.[ g16] } >> a8 |
+ fis4 g8 c16[ b a g] f[ e] |
+ d4 f8 a16[ g fis g] f[ d] |
+ g4. r8 gis gis |
+ a4 a16.[ b32] c4 fis,8 |
+ g4.~ g8-\fermata g8 g |
+ as4 as8 g4 g8 |
+ fis4 fis8 r8 g g |
+ a4 a8 g4 g8 |
+ fis4 fis8 d'16[ c b a] g[ f] |
+ e4 g8 d4 g8 e4 r8 b'16[ c d b] g[ f] |
+ e4 g8 d4 a'16[ g] |
+ c,4 r8 r4 r8 |
+ R2.\fermata
+}
+
+
+firstVerse = \lyrics {
+ Sü -- ßes Licht! Aus gol -- de -- nen Pfor -- ten brichst du __ \break
+ sie -- gend durch __ die Nacht. Schö -- ner Tag, du __ bist er -- wacht. __ Mit \break
+ ge -- heim -- nis -- vol -- len Wor -- ten, in me -- lo -- di -- schen Ak -- kor -- den, grüß __ ich __ \break
+ dei -- ne Ro -- sen -- pracht, grüß ich __ dei -- ne Ro -- sen -- pracht.
+ }
+
+secondVerse = \lyrics {
+ Ach, der Lie -- be sanf "" -- tes We -- hen schwellt mir
+ das be -- weg -- te __ Herz, sanft, wie ein ge -- lieb -- ter Schmerz. __ Dürft ich
+ nur auf gold -- nen Hö -- hen mich im Mor -- gen -- duft er -- ge -- hen! Sehn -- sucht
+ zieht mich him -- mel -- wärts, Sehn -- sucht zieht mich him -- mel -- wärts
+ }
+
+pianoRH = \notes \relative c''' \repeat volta 2 {
+ g16( fis a g fis g f e d c b a ) |
+ <g e>8( <es fis a> <d f b> <c e c'>) r8 r |
+ r8 c'( e,) f r a |
+ r8 << { fis( g)} \\ { c,4 } >> r8 <e c g> <e c g> |
+ <d c a>4. r8 \clef bass <d b f> <d b f> |
+ e,16 g c g e g d gis b gis d g |
+ c, e a e c e a,-\f d fis d a d |
+ b d g d b g r4\fermata \clef treble g''8 |
+ as4.( g 4.) | fis4. r4 <d g>8 ( |
+ <f a>4.) <e g>4.( <es fis> ) <d f>\sf |
+ r8 <e c g> <e c g> r <d b g > <d b g> |
+ r <e c g> <e c g> r <f d b g> <f d b g> |
+ r <e c g> <e c g> r <d b f> <d b f> |
+ c16( b c e g b c b c e g <e b'>) |
+ <c c'>8 r r <c, g e>8 r r\fermata |
+}
+
+pianoLH = \notes \relative c'' \repeat volta 2 {
+ g16( fis a g fis g f e d c b a) |
+ \clef bass g4.( c,8) r r
+ \clef treble r4 <bes' c>8( <a c>) r <f c'> |
+ \clef bass r8 dis( e) r c c |
+ f,4. r8 g g |
+ <c, c,>4. <e e,>4. |
+ a,4. <d d,>4. |
+ g,8 r r g16 r16\fermata r8 g''8 |
+ as4.( g ) |
+ fis r4 <g b>8( |
+ <f c'>4.) <g c>4.( | <a c>4.) <g b,> |
+ c,4 r8 g4 r8 |
+ c4 r8 g4 r8 |
+ c4 r8 g4 r8 |
+ <c g e c>8 <c e g> <c e g> <c e g> <c e g> <c e g> |
+ <c e g> r r <c, c,>8 r r\fermata \clef treble
+ }
+
+\score {
+
+ << \time 6/8
+ \addlyrics
+ \new Staff { \melody }
+ \new Lyrics <<
+ \context LyricsVoice = "singer-1" \firstVerse
+ \context LyricsVoice = "singer-2" \secondVerse
+ >>
+ \new PianoStaff <<
+ \property PianoStaff.instrument = #"2 "
+ \new Staff \pianoRH
+ \new Staff \pianoLH
+ >>
+ >>
+
+ \paper {
+ \translator {
+ \LyricsContext
+ minimumVerticalExtent = ##f
+ LyricText \set #'font-size = #1.5
+ }
+ \translator {
+ \ScoreContext
+ SpacingSpanner \set #'common-shortest-duration = #(ly:make-moment 1 8)
+ }
+ \translator { \PianoStaffContext
+ VerticalAlignment \override #'forced-distance = #10
+ }
+
+}
+}
\include "deutsch.ly"
-%% 19 is broken --hwn.
-%\include "paper19.ly"
-\include "paper16.ly"
+\include "paper19.ly"
\version "2.1.1"
\header {
}
-
-
/*
Return I-th element, or last elt L. If I < 0, then we take the first
element.
% & Juergen Reuter <reuter@ipd.uka.de>
%
+test_outlines := 0;
+
% most beautiful noteheads are pronounced, not circular,
% and not even symmetric.
% These examples are inspired by [Wanske], see literature list
-save black_notehead_width;
-numeric black_notehead_width;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% NOTE HEAD VARIABLES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+save black_notehead_width, noteheight,
+ slash_thick, slash_slope, overdone_heads;
+numeric black_notehead_width, noteheight, slash_thick;
fet_begingroup("noteheads");
-test_outlines := 0;
+
+% slope of slash. From scm/grob-description.scm. How to auto-copy?
+slash_slope := 1.7;
+
+% thickness of slash lines. quarter notes get 1.5slt width.
+slash_thick# := 2/3*0.48staff_space#;
+
+
+%
+% Hand-engraved music often has balls extending above and below
+% the lines. If you like that, modify overdone heads (unit:
+% stafflinethickness)
+%
+overdone_heads = 0.0;
noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
+define_pixels(slash_thick, noteheight);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SLANT moves both extremes on the long axis (by SLANT * ELLIPSIDITY,
% so SLANT = -1, puts the extreme on the long axis next to the short axis one.)
-% whole note
-% Wanske, p.38
fet_beginchar("Whole notehead", "0", "wholehead")
draw_outside_ellipse (1.80 - puff_up_factor / 3.0, 0, 0.707, 0);
undraw_inside_ellipse (1.30, 125 - puff_up_factor *10,
fet_endchar;
-% half note
-% Wanske, p.39
fet_beginchar("Half notehead", "1", "halfhead")
draw_outside_ellipse (1.53 - puff_up_factor / 3.0, 34, 0.66, 0.17);
undraw_inside_ellipse (3.25, 33, 0.81,
fet_endchar;
-% quarter note
-% Wanske p.38
fet_beginchar("Quart notehead", "2", "quarthead")
draw_outside_ellipse (1.54 - puff_up_factor / 2.0, 32, 0.707, 0);
black_notehead_width# := charwd;
fet_endchar;
-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fet_beginchar("Whole diamondhead", "0diamond", "wholediamondhead")
fet_endchar;
-% half note
-% Wanske, p.39
fet_beginchar("Half diamondhead", "1diamond",
"halfdiamondhead")
fet_endchar;
-% quarter note
-% Wanske p.38
fet_beginchar("Quart diamondheadh", "2diamondh", "diamondheadh")
draw_outside_ellipse (1.80, 35, 0.495, -0.25);
fet_endchar;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-save pen_thick;
-pen_thick# = stafflinethickness# + .1 staff_space#;
-define_pixels(pen_thick);
-begingroup;
-
-
-def def_triangle_old =
- save triangle,kern; path triangle;
- kern = 1/3(x2-x1);
- z2 = z1 rotated 120;
- z3 = z1 rotated 240;
- z12 = caveness[.5[z1,z2],z3];
- z23 = z12 rotated 120;
- z31 = z12 rotated 240;
- triangle = z1 .. z12 .. z2 ..
- z2 .. z23 .. z3 ..
- z3 .. z31 .. z1 ..
- cycle;
- triangle := triangle shifted (-x1+pent/2-kern,0) xscaled xs;
- pickup pencircle scaled pent xscaled xs;
- hei = max(y1,-y2)+pent/2;
- %set_char_box(-kern*xs*fac, ((x3-x1)*fac+pent#)*xs,hei*fac,hei*fac);
- set_char_box(0, ((x3-x1-kern)*fac+pent#)*xs,hei*fac,hei*fac);
-enddef;
def def_triangle =
save triangle,kern; path triangle;
save left_point, height, width;
pair exact_left_point;
+ save pen_thick;
+ pen_thick# = stafflinethickness# + .1 staff_space#;
+ define_pixels(pen_thick);
exact_left_point := llap# * dir (90 + tilt);
height# = max (ypart exact_left_point,
filldraw triangle;
fet_endchar;
-endgroup;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Editable values:
-
-
-% slope of slash. From scm/grob-description.scm. How to auto-copy?
-slash_slope := 1.7;
-
-% thickness of lines. quarter notes get 1.5slt width.
-slash_thick# := 2/3*0.48staff_space#;
+def draw_slash(expr hwid_hash) =
-define_pixels(slash_thick);
-def draw_slash(expr hwid_hash) =
set_char_box (0, staff_space# / slash_slope + hwid_hash,
staff_space#/2 + stafflinethickness#/2,
staff_space#/2 + stafflinethickness#/2);
z5 -- z6 -- z7 -- z8 -- cycle;
fi
labels (range 1 thru 10);
-
-
enddef;
-
-
-
fet_beginchar("Whole slashhead","0slash","wholeslashhead")
draw_slash(2 slash_thick# + 0.5 staff_space#);
fet_endchar;
draw_slash(slash_thick#);
fet_endchar;
-% thick is the distance between the two parallel lines in the cross (distance between centres of lines)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% thick is the distance between the NE/SW parallel lines in the cross
+% (distance between centres of lines)
+% in stafflinethickness def
+%
def draw_cross(expr thick) =
save pent, slant, ne_dir;
pair ne_dir;
pickup pencircle scaled pent;
top y3 = h;
- ne_dir := (1, (2 h -pent)/(w - pent));
+ ne_dir := unitvector ((1, (2 h -pent)/(w - pent)));
rt x4 = w/2;
y5 = 0;
z4 - z5 = whatever * ne_dir;
z6 - z3 = whatever * ne_dir;
z3 - z4 = whatever * (ne_dir yscaled -1);
- z1 = (0, charht - 1.5 pent#);
- y2 = 0;
- z2 = z1 + whatever * (ne_dir yscaled -1);
- z7 = z2 + whatever * ne_dir;
- x7 = charwd/2 - .5 pent#;
- top y6 = h - pent;
+ z4 - z3 = whatever * (ne_dir) + (ne_dir rotated -90) * thick * stafflinethickness;
+
+ x1 = charwd/2 - .5 pent#;
+ z1 = whatever * ne_dir + thick * stafflinethickness * (ne_dir rotated -90);
labels (1,2,3,4,5,6);
crz = (z6 -- z3 -- z4 -- z5) ;
+
draw crz shifted(w/2,0);
draw crz xscaled -1 shifted(w/2,0);
draw crz yscaled -1 shifted(w/2,0);
draw crz scaled -1 shifted(w/2,0);
charwx := charwd;
- charwy := y7;
+ charwy := y1;
enddef;
fet_beginchar("Whole Crossed notehead", "0cross", "wholecrossedhead")
hei# := noteheight#+stafflinethickness#;
set_char_box(0, wid#,hei#/2,hei#/2);
- draw_cross(3.75stafflinethickness);
+ draw_cross (3.75);
fet_endchar;
fet_beginchar("Half Crossed notehead", "1cross", "halfcrossedhead")
wid# := black_notehead_width#+2stafflinethickness#;
hei# := noteheight#+stafflinethickness#/2;
set_char_box(0, wid#,hei#/2,hei#/2);
- draw_cross(3stafflinethickness);
+ draw_cross(3.0);
fet_endchar;
fet_beginchar("Crossed notehead", "2cross", "crossedhead")
wid# := black_notehead_width#;
hei# := noteheight#;
set_char_box(0, wid#,hei#/2,hei#/2);
- draw_cross(stafflinethickness/4);
+ draw_cross(1.0);
fet_endchar;
fet_beginchar("X-Circled notehead", "2xcircle", "xcircledhead")
fet_endgroup("noteheads");
+
define_pixels(black_notehead_width);
begingroup
-thick#:=1/16designsize;
-define_blacker_pixels(thick);
-
-rthin:=1/8*staff_space;
-% rthick:=2rthin;
-rthick:=2thick+rthin;
-
-def shift_pic (expr pone, ptwo) =
- currentpicture:=currentpicture shifted (round(pone),round(ptwo))
-enddef;
-
-% stuff for 8th,16th etc rests
-%
-save stem, ball_crook_stem, ball_crook_balldiam, flare;
-
-% stem#:=1/8*staff_space#;
-stem# = 1/5staff_space#;
-% flare# = 2/3staff_space#;
-flare# = 2/3staff_space# - 1/8stafflinethickness#;
-
-define_pixels(stem,flare);
-
-ball_crook_stem = stem;
-ball_crook_balldiam =flare;
-
save block_rest_y, block_rest_x;
-
save breve_rest_y, breve_rest_x;
breve_rest_y# = staff_space#;
% draw_staff (-2, 2, 0.0);
save alpha, yshift, height;
alpha:=-50;
+
+
+ thick# := 1/4 staff_space#;
+ define_blacker_pixels(thick);
+
+ rthin := 1.25 stafflinethickness;
+ rthick := 2 thick+rthin;
+
+
+
yshift# = -1.25 staff_space#;
height# = 2.8125 staff_space#;
+
define_pixels (yshift, height);
save xcenter;
xcenter = -0.1 staff_space;
-yshift#,
yshift# + height#);
- save ne,nw,se,sw; pair ne,nw,se,sw;
+ save ne,nw, se, sw; pair ne, nw, se, sw;
se=dir alpha; nw=dir (alpha+180);
ne=dir (alpha+90); sw=dir (alpha-90);
- penpos1(rthin,alpha+90);
- penpos2(5/4rthick,alpha);
- penpos4(5/4rthick,alpha);
- penpos5(rthin,alpha+90);
- penpos3(3/4rthick,alpha);
-% penpos6(5/8rthick,alpha);
- penpos6(2/3rthick,alpha);
- penpos7(1/2rthin,alpha+90);
+ penpos1(rthin, alpha+90);
+ penpos2(5/4rthick, alpha);
+ penpos4(5/4rthick, alpha);
+ penpos5(rthin, alpha+90);
+ penpos3(3/4rthick, alpha);
+% penpos6(5/8rthick, alpha);
+ penpos6(2/3rthick, alpha);
+ penpos7(1/2rthin, alpha+90);
z10=z2l+1/2rthin*sw;
% z11=z4l+1/2rthin*sw;
y1r = h;
x1l=xcenter + 1/3staff_space;
z2r=z1+staff_space*se;
- z3=1/2[z2,z4];
+ z3=1/2[z2, z4];
x4= xcenter + 3/8staff_space;
y4= 0;
z5=z4l+1.3staff_space*se;
fill z1l{se}..{se}z10..z3l..z11{se}..{se}z5l..z5r{nw}..{nw}z12..z3r..z13{nw}..{nw}z1r.. cycle;
fill z5r{nw}..tension1.4..z6l..tension1.4..{se}z7l..z7r{nw}..tension1.4..z6r..tension1.4..{se}z5l..cycle;
- penlabels(1,2,3,4,5,6,7);
- penlabels(10,11,12,13);
+ penlabels(1, 2, 3, 4, 5, 6, 7);
+ penlabels(10, 11, 12, 13);
-% 3/4 staff_space# + yshift#,
-% 18/5staff_space# + yshift#)
-
- fet_endchar;
+fet_endchar;
def rest_crook(expr a, w) =
balled_crook(a, w, ball_crook_balldiam, ball_crook_stem)
%
%
+save bulb_diam, thin, thick;
+
+bulb_diam# := 0.64 staff_space#;
+thin# := 1.2 stafflinethickness#;
+thick# := 2.2 stafflinethickness#;
+crook_thin := 0.5 stafflinethickness + 0.08 staff_space;
+
+lower_brush := 1.5 stafflinethickness;
+
+define_pixels ( bulb_diam, thin, thick);
def draw_rest_bulb(expr ycenter, ycut, pat, stretch) =
begingroup;
z3 = z10+bulb_diam/2.15*dir(-72) ;
-
-
- x4 = x10+bulb_diam*.62 ;
- y4 := ceiling (y10 - 2 stafflinethickness + crook_thin);
-
z5 = z10 + up*bulb_diam/2 + right*stafflinethickness/3;
-
- z7 = 0.5 [z4, z5] + (0.45 stafflinethickness,0.4 stafflinethickness);
+ z7 = 0.5 [z4, z5] + crook_thin * (0.45 ,0.4 ) / 1.3;
x8 = x10-0.4bulb_diam;
y8 = y10 + 0.25 stafflinethickness;
z6 = whatever [z1l, z2l];
- z6 = z3+whatever * dir(12);
+ z6 = z3 + whatever * dir(12);
+
+ z4 = z3 + whatever * (z6-z3)
+ + 1.1 crook_thin *(unitvector (z6 -z3) rotated 90);
+ x4 = x10+bulb_diam*.62 ;
+ y4 := ceiling (y4);
(pt,whatever) = pat intersectiontimes ((0,ycut)--(w,ycut));
.. z5{left} .. z8 .. z3{right}
.. {curl 0.2} z6 {right} .. tension 10 .. {left} point pt of pat -- cycle;
- labels(3, 4, 5, 6, 7, 8, 9, 10);
+ labels(3, 4, 5, 6, 7, 8, 9, 10, 11);
endgroup;
enddef;
def draw_eighth_rest =
- save width, bulb_diam, thin, thick;
- save ycenter, crook_thick, crook_thin;
- save crook_dir, lower_brush, pat;
+ save width;
+ save ycenter;
+ save crook_dir, pat;
pair crook_dir;
path pat;
width# := 1.0 staff_space#;
- bulb_diam# := 0.64 staff_space#;
- thin# := 1.2 stafflinethickness#;
- thick# := 2.2 stafflinethickness#;
- crook_thick# := 1.8 stafflinethickness#;
- crook_thin := 1.3 stafflinethickness;
-
- lower_brush := 1.5 stafflinethickness;
- define_pixels (width, bulb_diam, thin, thick, crook_thick);
+ define_pixels (width);
set_char_box (0, width#,
1.0 staff_space# + 0.5 stafflinethickness#, 0.5 staff_space# + bulb_diam#/2);
%
fet_beginchar("16th rest","4","sixteenthrest");
- save width, bulb_diam, thin, thick;
- save ycenter, crook_thick, crook_thin;
- save crook_dir, lower_brush, pat;
+ save width;
+ save ycenter;
+ save crook_dir, pat;
pair crook_dir;
path pat;
width# := 1.2 staff_space#;
- bulb_diam# := 0.64 staff_space#;
- thin# := 1.2 stafflinethickness#;
- thick# := 2.2 stafflinethickness#;
- crook_thick# := 1.8 stafflinethickness#;
- crook_thin := 1.3 stafflinethickness;
- lower_brush := 1.5 stafflinethickness;
-
- define_pixels (width, bulb_diam, thin, thick, crook_thick);
+ define_pixels (width);
set_char_box (0, width#,
2.0 staff_space# + 0.5 stafflinethickness#, 0.5 staff_space# + bulb_diam#/2);
fet_endchar;
fet_beginchar("32th rest","5","thirtysecondrest");
- save width, bulb_diam, thin, thick;
- save ycenter, crook_thick, crook_thin;
- save crook_dir, lower_brush, pat;
+ save width;
+ save ycenter;
+ save crook_dir, pat;
pair crook_dir;
path pat;
width# := 1.3 staff_space#;
- bulb_diam# := 0.64 staff_space#;
- thin# := 1.2 stafflinethickness#;
- thick# := 2.2 stafflinethickness#;
- crook_thick# := 1.8 stafflinethickness#;
- crook_thin := 1.3 stafflinethickness;
-
- lower_brush := 1.5 stafflinethickness;
- define_pixels (width, bulb_diam, thin, thick, crook_thick);
+ define_pixels (width);
set_char_box (0, width#,
2.0 staff_space# + 0.5 stafflinethickness#, 1.5 staff_space# + bulb_diam#/2);
fet_endchar;
fet_beginchar("64th rest","6","sixtyfourthrest");
- save width, bulb_diam, thin, thick;
- save ycenter, crook_thick, crook_thin;
- save crook_dir, lower_brush, pat;
+ save width;
+ save ycenter;
+ save crook_dir, pat;
pair crook_dir;
path pat;
width# := 1.4 staff_space#;
- bulb_diam# := 0.64 staff_space#;
- thin# := 1.2 stafflinethickness#;
- thick# := 2.2 stafflinethickness#;
- crook_thick# := 1.8 stafflinethickness#;
- crook_thin := 1.3 stafflinethickness;
- lower_brush := 1.5 stafflinethickness;
-
- define_pixels (width, bulb_diam, thin, thick, crook_thick);
+ define_pixels (width);
set_char_box (0, width#,
3.0 staff_space# + 0.5 stafflinethickness#, 1.5 staff_space# + bulb_diam#/2);
fet_endchar;
fet_beginchar("128th rest","7","hundredtwentyeighthrest");
- save width, bulb_diam, thin, thick;
- save ycenter, crook_thick, crook_thin;
- save crook_dir, lower_brush, pat;
+ save width;
+ save ycenter;
+ save crook_dir, pat;
pair crook_dir;
path pat;
width# = 1.5 staff_space#;
- bulb_diam# := 0.64 staff_space#;
- thin# := 1.2 stafflinethickness#;
- thick# := 2.2 stafflinethickness#;
- crook_thick# := 1.8 stafflinethickness#;
- crook_thin := 1.3 stafflinethickness;
-
- lower_brush := 1.5 stafflinethickness;
- define_pixels (width, bulb_diam, thin, thick, crook_thick);
+ define_pixels (width);
set_char_box (0, width#,
3.0 staff_space# + 0.5 stafflinethickness#, 2.5 staff_space# + bulb_diam#/2);
input feta-pendaal;
input feta-accordion;
input feta-solfa;
-
else:
input feta-test-generic.mf;
fet_begingroup("clefs");
+test_staff = 0;
% [Wanske] says the bulbs should be positioned about 1/4 right of the
draw_block ((0,-d), (3/4norm+1/2hair,h));
draw_block ((3/4norm+2hair,-d),
(3/4norm+7/2hair,h));
+
save xoff;
xoff=3/4norm+7/2hair;
+ z5l = (xoff - 3/4 hair, 0);
+ z5r = (x4, 0);
+
penpos1(hair,-90);
z1l=(xoff+norm+hair,h);
penpos2(norm-3/2hair,180);
penpos4(hair,0);
z4=(xoff+1/2norm+1/2hair, reduced_ss - stafflinethickness - .2 hair);
-
- penpos5(4hair,0);
- z5=(xoff+5/4hair,0);
penpos6(norm-hair,90);
z6=(xoff+3/4norm,0);
enddef;
fet_beginchar ("C clef", "C", "altoclef")
- if test = 1:
+ if test_staff = 1:
draw_staff (-2,2, 0.0);
fi;
draw_c_clef (1.0);
fet_endchar;
fet_beginchar ("C clef", "C_change", "caltoclef")
- if test = 1:
+ if test_staff = 1:
draw_staff (-2,2, 0.0);
fi;
draw_c_clef (.8);
fet_beginchar("F clef ", "F", "bassclef")
- if test = 1:
+ if test_staff = 1:
draw_staff(-3,1, 0.0);
fi;
draw_bass_clef((0, 0), 1.0);
fet_beginchar("G clef", "G", "trebleclef")
- if test = 1:
+ if test_staff = 1:
draw_staff(-1,3, 0.0);
fi;
draw_gclef(1.0);
define_pixels(staff_space, stemthickness);
define_pixels(stafflinethickness,ledgerlinethickness);
-%
-% Hand-engraved music often has balls extending above and below
-% the lines. If you like that, modify overdone heads (unit:
-% stafflinethickness)
-%
-
-numeric overdone_heads;
-overdone_heads = 0.0;
%
% Because of the engraving/stamping process, no traditional
define_pixels(blot_diameter);
+
+
%
%
-input feta-bolletjes;
+%input feta-bolletjes;
%input feta-banier;
%input feta-slag;
%input feta-eindelijk;
-%input feta-klef;
+input feta-klef;
% input feta-toevallig;
% input feta-schrift;
% input feta-haak;
interbeam := 1.05 staff_space;
beamheight := 0.3 staff_space + stafflinethickness;
beamwidth := width;
- stemwidth := 1.5 stafflinethickness;
+ stemwidth := 1.0 stafflinethickness + .05 staff_space;
roundness := 2 blot_diameter;
center := (.5 w, 0);
stemwidth;
save top_stem_thick;
- beamheight# = 0.3 staff_space# + stafflinethickness#;
+ beamheight# = 0.35 staff_space# + .5 stafflinethickness#;
height# = 1.5 staff_space#;
set_char_box(0, 2/3 staff_space#, height#, height#);
define_pixels(height);
define_blacker_pixels(beamheight);
- % The +0.4 is a lowres fix to ensure that
- % the brush doesn't turn into a knob on 600dpi or lower.
- top_stem_thick = round (1.9 stafflinethickness) + 0.4;
+ top_stem_thick = round (1 stafflinethickness + .09staff_space ) + 0.4;
+ stemwidth = 0.08 staff_space + .5 stafflinethickness;
interstem + stemwidth = w;
- stemwidth = 0.03 staff_space + stafflinethickness;
z2 -z1 = (interstem, slope * interstem);
xpart .5 [z2,z1] = xcenter ;
else:
smaller_hole = 0.0 stafflinethickness;
fi
- crook_thinness = 1.3 stafflinethickness;
- top_crook_thinness = 1.65 stafflinethickness;
+ crook_thinness = .7 stafflinethickness + .06 staff_space;
+ top_crook_thinness = 1 stafflinethickness + .065 staff_space ;
% this is a somewhat heuristic. We should probably make it
% straight for low resolution (300 dpi and less).
top_stem_thick = round (0.1 staff_space + 1.2 stafflinethickness) + 0.74;
bottom_overshoot = stafflinethickness;
- bottom_stem_thick =0.06 staff_space + 0.6 stafflinethickness;
+ bottom_stem_thick = 0.06 staff_space + 0.6 stafflinethickness;
z1 = (0, 2 staff_space) + center - (0, stafflinethickness/2
+ clearing);
y4l - y4r = top_crook_thinness ;
- y5r = .20 staff_space + ypart center;
+ y5r = .15 staff_space + ypart center;
x5l = w + xpart center;
y4 = ypart center + staff_space/2;
x4r = .45 [x5r, x3r];
- penpos5(crook_fatness, -185);
+ penpos5(crook_fatness, -175);
save bot_crook_dir ;
pair bot_crook_dir ;
y10 = -1/10 staff_space;
% draw_staff (-2, 2, 0.5);
- draw_staff (-2, 2, 0.0);
+% draw_staff (-2, 2, 0.0);
unfill z3r{z3r-z10} .. z4r{right} .. z5r{down}
-
.. z7{- bot_crook_dir}
& z7 % .. tension 1.3
.. z10{z3r-z10}
save klaverblad, klaversteel;
klaversteel = 1/15 staff_space;
- klaverblad = .35 staff_space;
+ klaverblad = .40 staff_space - .5 stafflinethickness;
z1 = (klaversteel, 0);
z2 = (w/2 - klaverblad / 10, h - klaverblad);
z3 = (leftindent,-d);
penpos1(stafflinethickness, 35);
- penpos2(2 stafflinethickness, 0);
+ penpos2(.1 staff_space + stafflinethickness, 0);
penpos3(stafflinethickness, -35);
penlabels(1,2,3);
+++ /dev/null
-% feta16.mf
-% part of LilyPond's pretty-but-neat music font
-
-% font_identifier:="feta16";
-% font_size 16pt#;
-
-input feta-autometric;
-fet_beginfont("feta", 19);
-staffsize#:=19pt#;
-test:=0;
-
-
-input feta-generic;
-
-fet_endfont("feta");
-
-end.
-
% collision handling.
%
-noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
-define_pixels(noteheight);
-
save between_staff_lines, on_staff_line, anywhere;
between_staff_lines = 0;
on_staff_line = 1;
%
input feta-macros;
-
-make_pen_stack;
-make_picture_stack;
input feta-params;
font_x_height staff_space#;
% collision handling.
%
-noteheight#:=staff_space# + (1 + overdone_heads)*stafflinethickness#;
+overdone_heads = 0;
+noteheight# := staff_space# + (1 + overdone_heads)*stafflinethickness#;
define_pixels(noteheight);
%
%
%
-brevis_wid# := 2 staff_space#;
def draw_neo_brevis(expr brevwid) =
save beamheight, head_width;
x6 = x7 = head_width - stem_width/2;
y6 = y5;
- y7 = y5 - 2.25staff_space;
+ y7 = y5 - 2.25 staff_space;
pickup pencircle scaled stem_width;
draw z6 .. z7;
enddef;
fet_beginchar("Left stemmed notehead", "lneo_mensural", "mensuralleftstemmedhead");
- draw_neo_left_stemmed_head (brevis_wid#)
+ draw_neo_left_stemmed_head (2 staff_space#);
fet_endchar;
%
% (ze is wel breed)
%
fet_beginchar("Maxima notehead", "-3neo_mensural", "mensuralmaximahead");
- draw_neo_longa (1.3 brevis_wid#)
+ draw_neo_longa (2.6 staff_space#)
fet_endchar;
fet_beginchar("Longa notehead", "-2neo_mensural", "mensurallongahead");
- draw_neo_longa (brevis_wid#)
+ draw_neo_longa (2 staff_space#)
fet_endchar;
fet_beginchar("Brevis notehead", "-1neo_mensural", "mensuralbrevishead")
- draw_neo_brevis(brevis_wid#);
+ draw_neo_brevis(2 staff_space#);
fet_endchar;
def draw_neo_mensural_black_head (expr wid) =
fet_endchar;
-brevis_wid# := 1 staff_space#;
def draw_brevis (expr wid) =
% TODO. For the moment, fall back to draw_neo_brevis.
enddef;
fet_beginchar("Left stemmed notehead", "lmensural", "mensuralleftstemmedhead");
- draw_left_stemmed_head (brevis_wid#)
+ draw_left_stemmed_head (staff_space#)
fet_endchar;
def draw_longa (expr wid) =
enddef;
fet_beginchar("Maxima notehead", "-3mensural", "mensuralmaximahead");
- draw_longa (2.0 brevis_wid#)
+ draw_longa (2.0 staff_space#)
fet_endchar;
fet_beginchar("Longa notehead", "-2mensural", "mensurallongahead");
- draw_longa (brevis_wid#)
+ draw_longa (staff_space#)
fet_endchar;
fet_beginchar("Brevis notehead", "-1mensural", "mensuralbrevishead")
- draw_brevis(brevis_wid#);
+ draw_brevis(staff_space#);
fet_endchar;
def draw_diamond_head (expr head_h, pen_w, pen_h, angle, open) =
(cons (- (car iv) amount)
(+ (cdr iv) amount)))
-
(define-public (interval-union i1 i2)
(cons (min (car i1) (car i2))
(max (cdr i1) (cdr i2))))