]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.1.20 release/0.1.20
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 8 Oct 1997 14:17:24 +0000 (16:17 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 8 Oct 1997 14:17:24 +0000 (16:17 +0200)
59 files changed:
AUTHORS.text
BUGS
Documentation/mudela-man.doc
INSTALL.text
NEWS
README
TODO
VERSION
bin/genheader.in [deleted file]
bin/genheader.py [new file with mode: 0644]
bin/make-website.in
bin/mf-deps.py
bin/mf-to-table.py
init/engraver.ly
init/font-en-tja16.ly
init/font-en-tja20.ly
init/script.ly
init/table16.ly
init/table20.ly
input/font.ly
input/gallina.tex
input/scsii-menuetto.tex
input/standchen-16.tex
input/standchen-20.tex
lily/VERSION
lily/rest.cc
lily/script.cc
lily/stem.cc
make/lelievijver.lsm
make/lilypond.lsm
make/lilypond.spec
mf/TODO
mf/autometric.mf
mf/bolletjes.mf [deleted file]
mf/dimen.tex
mf/eindelijk.mf [deleted file]
mf/feta-banier.mf [new file with mode: 0644]
mf/feta-bolletjes.mf [new file with mode: 0644]
mf/feta-eindelijk.mf [new file with mode: 0644]
mf/feta-generic.mf [new file with mode: 0644]
mf/feta-macros.mf [new file with mode: 0644]
mf/feta-params.mf [new file with mode: 0644]
mf/feta-puntje.mf [new file with mode: 0644]
mf/feta-schrift.mf [new file with mode: 0644]
mf/feta-toevallig.mf [new file with mode: 0644]
mf/font-en-tja16.mf
mf/font-en-tja20.mf
mf/generic-macros.mf [deleted file]
mf/generic-params.mf [deleted file]
mf/generic-tja.mf [deleted file]
mf/klef.mf [deleted file]
mf/mfbug.mf [new file with mode: 0644]
mf/puntje.mf [deleted file]
mf/schrift.mf [deleted file]
mf/toevallig.mf [deleted file]
tex/fetdefs.tex
tex/font-en-tja16.tex
tex/font-en-tja20.tex
tex/lilyponddefs.tex

index 96d40df9e381dc20887f584fba5669b69f7c0c6a..59490e17be9e4d4888fb76df6f545c4c402cf0f5 100644 (file)
@@ -61,6 +61,6 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNT\bT\bT\bTR\bR\bR\bRI\bI\bI\bIB\bB\bB\bBU\bU\bU\bUT\bT\bT\bTO\bO\bO\bOR\bR\bR\bRS\bS
 
 
 
-23/Sep/97                LilyPond 0.1.19                        1
+23/Sep/97                LilyPond 0.1.20                        1
 
 
diff --git a/BUGS b/BUGS
index 95493cbd7d6c827a58935f9177862edbbb07e0ef..40be3fcf2895f97369cf4522f400cb4e46261e4f 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,18 +1,5 @@
 Document Really Ugly Bugs (coredumps, assert fails, etc)
 
-[Solaris, fixed in pl13]
-
-Stack frame overwrite on Solaris 2.x (this will produce a seg
-fault, signal 11).  Stacktrace
-
-       Engraver_group_engraver::Engraver_group_engraver(int)
-       Score_engraver::Score_engraver( )
-       get_group_engraver_p()
-
-We don't know a fix or workaround, but compiling without optimisation
-might help (Without -O2 optimisation, my execs run fine on Solaris;
-without -O2, but with purify, it dumps core)
-
 
 [Linux Intel]
 
@@ -39,4 +26,8 @@ Typical stacktrace:
 
 
 I get bitten by this every once in a while, and I am very interested
-in hints what might be wrong.
+in hints what might be wrong.  This problem has only been identified
+with libc-5.3 and libc-5.4 platforms, so you might try upgrading to
+6.0, ie. GNU libc-2.
+
+
index ddf19760d6334971a008dad3af056d3471421eb1..498ba8b756dc85f440c16570da989273114612bb 100644 (file)
@@ -342,7 +342,7 @@ Symbols which can be put at either side (above or below) of a staff
 are entered as follows:
 \begin[verbatim,fragment]{mudela}
         a-^     % marcato, direction: default
-        a^-     % portato, direction: above note
+        %a^-     % portato, direction: above note
         a_.     % staccato, direction: below note
         a^\fermata      % predefined identifier
         c_"marcato"     % add a text
index c660fb1603b7823fc4c4a634c1023e9602b4a3e3..20f340f20a009560789de1ebfef4c187b6a6fae5 100644 (file)
@@ -61,7 +61,7 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-7/Oct/97                 LilyPond 0.1.19                        1
+8/Oct/97                 LilyPond 0.1.20                        1
 
 
 
@@ -127,7 +127,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-7/Oct/97                 LilyPond 0.1.19                        2
+8/Oct/97                 LilyPond 0.1.20                        2
 
 
 
@@ -193,7 +193,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 
-7/Oct/97                 LilyPond 0.1.19                        3
+8/Oct/97                 LilyPond 0.1.20                        3
 
 
 
@@ -259,7 +259,7 @@ I\bI\bI\bIN\bN\bN\bNS\bS\bS\bST\bT\bT\bTA\bA\bA\bAL\bL\bL\bLL\bL\bL\bLI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-7/Oct/97                 LilyPond 0.1.19                        4
+8/Oct/97                 LilyPond 0.1.20                        4
 
 
 
@@ -325,7 +325,7 @@ R\bR\bR\bRE\bE\bE\bED\bD\bD\bDH\bH\bH\bHA\bA\bA\bAT\bT\bT\bT L\bL\bL\bLI\bI\bI\bIN\bN\bN\bNU\bU\bU\bUX\bX\bX\bX
 
 
 
-7/Oct/97                 LilyPond 0.1.19                        5
+8/Oct/97                 LilyPond 0.1.20                        5
 
 
 
@@ -391,6 +391,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-7/Oct/97                 LilyPond 0.1.19                        6
+8/Oct/97                 LilyPond 0.1.20                        6
 
 
diff --git a/NEWS b/NEWS
index 8e1a22a644be6919f17cfa27edbf5c7581575a77..facfa0b0fc55884f2390bd650019b2d3c0ae6b2a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+pl 20
+       - don't swallow non lyric-stuff in lyrics
+       - x-position of Stem
+       - more feta changes
+       - move scripts to right
+       - genheader.py replaces genheader.perl
+
 pl 19.jcn2
        - bf's mi2mu:
          * Midi_track_parser::note_end_all
diff --git a/README b/README
index 6b8828bc889e2f002c1ed3e41a897245be4735d0..4a359b0efd685f5c60487e6f2ebffd9d05c14efb 100644 (file)
--- a/README
+++ b/README
@@ -66,5 +66,5 @@ The website also contains the complete documentation
 
 7. CAVEATS
 
-Please read the file BUGS for some ugly bugs.  This especially 
-applies to Solaris 2.x and Linux-Intel unix users.
+Please read the file BUGS for some ugly bugs.  This especially applies
+Linux-Intel unix users.
diff --git a/TODO b/TODO
index 85db7d288ddc49876eb342cc43a28fdb5e1a4ba0..3c414d5349250705ac48519c40becba85d28185c 100644 (file)
--- a/TODO
+++ b/TODO
@@ -6,9 +6,13 @@ done, or is an idea that I want to think about
 Most of the items are marked in the code as well, with full explanation. 
 grep for TODO and ugh/ugr
 
-       * adapt Script for new font conventions
+       * accidental placement
 
-       * AFM for font input.
+       * bar-checking lyrics.
+
+       * check IO error on writing (disk full?)
+
+       * AFM for font input?
 
        * Make general "spanning"-elements and "placer"-elements
 
@@ -36,8 +40,6 @@ grep for TODO and ugh/ugr
        - MIDI instrument
        - staff title
 
-       * check out egcs
-
        * give Items/Spanners access to unbroken originals      
 
        * Score_bar/Piano_braces, are *not* ordinary bars 
diff --git a/VERSION b/VERSION
index 04ce9ca7fc5ad1cc1accfaa82a24591dbf1a61ff..b99cf5a2f12e8add7396ae7b3d24d858b37f70c0 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 19.jcn2
+TOPLEVEL_PATCH_LEVEL = 20
 TOPLEVEL_MY_PATCH_LEVEL = 
 
 # use the above to send patches, always empty for released version:
diff --git a/bin/genheader.in b/bin/genheader.in
deleted file mode 100644 (file)
index 8643a37..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!@PERL@ -w
-
-# generate the standard header of a LilyPond source file.
-my $fn;
-
-sub
-    do_init
-{
-    $MAILADDRESS=$ENV{MAILADDRESS};
-     @pw=(getpwuid($<));
-     $username=$pw[6];
-
-    die "arg needed\n" if (!($#ARGV+1));
-     $fn = $ARGV[0];
-
-     $hh_b =  ($fn =~ /hh$/ );
-     $inc_b=  ($hh_b || $fn =~ /[ti]cc$/);
-}
-
-sub 
-    do_head
-{
-    
-    my $what="implement ";
-    $what = "declare " if ($hh_b);
-    my ($PROJECT, $cwd);
-    $PROJECT = "the GNU LilyPond music typesetter";
-    chop($cwd = `pwd`);
-    
-    $PROJECT= "the Flower Library" if ($cwd =~ /flower/);
-    
-    my $headstr ="/*
-  $fn -- $what
-
-  source file of $PROJECT
-
-  (c) 1997 $username <$MAILADDRESS>
-*/\n";
-    print $headstr;
-}
-sub do_inc
-{
-    my $headstr="";
-    my $startdef= $fn;
-    $startdef =~ s/[\.-]/_/g;
-    $startdef =~ tr/a-z/A-Z/;
-    my $terminatestr="\n";
-
-    if ($inc_b) {
-       $headstr = "\n\n#ifndef $startdef\n#define $startdef\n";
-       $terminatestr .= "#endif // $startdef\n"  
-       }
-
-    print $headstr, $terminatestr;
-}
-do_init;
-do_head;
-do_inc;
-
-
diff --git a/bin/genheader.py b/bin/genheader.py
new file mode 100644 (file)
index 0000000..f8c1cc3
--- /dev/null
@@ -0,0 +1,132 @@
+#!@PYTHON@
+
+# 
+# genheader.py -- do headers (like these) 
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# 
+
+
+
+import posix
+import pwd
+import regex
+import regsub
+import string
+import sys
+import os
+import getopt
+
+class My_options:
+    def __init__(self):
+       self.commentify = None
+       self.add_hdr_def = 0
+       self.classname = ''
+
+my_options = My_options()
+
+def mail():
+    return os.environ['MAILADDRESS']
+
+def name():
+    return pwd.getpwuid(posix.getuid())[4]
+
+def c_commentify(str):
+    return  '/* ' + regsub.gsub('^','  ', str) + '\n */';
+
+def sh_commentify(str):
+    return regsub.gsub('^', '# ', str)
+
+def tex_commentify(str):
+    return regsub.gsub('^', '% ', str)
+
+def project_str():
+    cwd = posix.getcwd()
+    if regex.search('flower', cwd) <> -1:
+       PROJECT = "the Flower Library"
+    elif regex.search('mf$', cwd) <> -1:
+       PROJECT = "the Feta (Font-En-Tja) music font"
+    else:
+       PROJECT = "the GNU LilyPond music typesetter"
+    return PROJECT
+
+def head_str(filename):
+    if my_options.add_hdr_def:
+       what = "declare " 
+    else:
+       what=" implement "
+
+
+    headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) 1997 %s <%s>\n' \
+             %(filename, what, project_str(), name(), mail())
+    return headstr
+
+
+def c_include(filename):
+    startdef= filename;
+    trans = string.maketrans( string.lowercase + '.', string.uppercase + '_')
+    startdef = string.translate(filename, trans)
+
+   
+    headstr = "\n\n#ifndef %s\n#define %s\n" % (startdef, startdef)
+    terminatestr = "#endif /* %s */\n"  % (startdef);
+
+    return headstr+ '\n\n'+ terminatestr;
+
+
+
+
+
+(options, files) = getopt.getopt(sys.argv[1:], 'tcsh', ['class']) 
+
+for opt in options:
+    o = opt[0]
+    a = opt[1]
+    if o == '-c':
+       my_options.commentify = c_commentify
+    elif o == '-t':
+       my_options.commentify = tex_commentify
+    elif o == '-s':
+       my_options.commentify = sh_commentify
+    elif o == '-h':
+       my_options.add_hdr_def = 1
+    elif o == '--class':
+       my_options.classname = a
+
+
+
+#
+# FIXME:  should create xxx.cc and include/xxx.hh, with implement/declare Xxx
+# in  one run
+if my_options.classname:
+    pass
+       
+def do_file(nm):
+    s = my_options.commentify(head_str(nm)) 
+    if my_options.add_hdr_def:
+       s = s + c_include(nm)
+    return s
+
+
+def extension(ext,nm):
+    ext = '\.' + ext
+    return regex.search(ext, nm) <> -1
+
+def select_commentification(nm):
+    if extension('hh',nm) or extension('cc',nm):
+       return c_commentify
+    elif extension('py',nm) or extension('pl',nm) or extension('sh',nm):
+       return  sh_commentify
+    elif extension('mf',nm) or extension('tex',nm) or extension('ly',nm):
+       return tex_commentify
+    else: 
+       raise 'help'
+
+for nm in files:
+    if extension('hh', nm): 
+       my_options.add_hdr_def = 1
+    if my_options.commentify == None:
+       my_options.commentify = select_commentification(nm)
+    print do_file(nm)
index 37d318957ddf36bf96ebf0e1f348507e944e2a6e..9830035556f42862800f981a0371713e3a56e00c 100644 (file)
@@ -94,7 +94,8 @@ local @examples=("twinkle-pop",
                 "gallina",
                 "twinkle", 
                 "collisions",
-                "scales", 
+                "font",
+                #"scales", 
                 "rhythm", 
                 "multi" );
 
index 700b9ccf35606baf1483a54cb5c3b63681045849..c17e5d949a61e8155921f82f6a46682ba277a28a 100644 (file)
@@ -1,5 +1,14 @@
 #!@PYTHON@
 
+# 
+# mf-deps.py -- dependencies for metafont 
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# 
+
+
 """look into metafont source for dependencies.
 
  fixme: python path
index 1ebf973d6cfd6825e1e635ebf11c5a1c57da24b2..bf680f93779f75af04417c93a69185b60797b1f5 100644 (file)
@@ -1,5 +1,13 @@
 #!@PYTHON@
 
+# 
+# mf-to-table.py -- convert spacing info in  MF logs .ly and .tex
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# 
+
 import getopt
 from string import *
 import regex
@@ -7,6 +15,7 @@ import regsub
 import os
 import sys
 import time
+
 begin_autometric_re = regex.compile('@{')
 end_autometric_re = regex.compile('@}')
 autometric_re = regex.compile('@{\([^@]*\)@}')
index ffb57a5dc5c05851ccc9681381563216a92ebd3f..0852b4ca8c2d335f6bd40bd845e0c1822e6144a8 100644 (file)
@@ -66,7 +66,7 @@ Lyric_voice =
 
        \consists "Lyric_engraver";
        \consists "Line_group_engraver";
-       \consists "Swallow_engraver";
+       %\consists "Swallow_engraver";
 }
 
 Lyrics = \translator {
index 4d99069a89671a112551181785691123cba912fb..0ff3a8cdc0b3f0afe6ae07757f4d1952fac41622 100644 (file)
@@ -1,14 +1,14 @@
 % generated automatically by mf-to-table.py version 0.3
-% on Mon Oct  6 20:23:06 1997
+% on Wed Oct  8 16:18:13 1997
 % Do not edit
 
 % input from out/font-en-tja16.log
 % name=\symboltables {
     "rests"  = \table {
-        "0" "\wholerest" -0.00\pt 6.00\pt 2.00\pt 4.00\pt 
-        "1" "\halfrest" -0.00\pt 6.00\pt -0.00\pt 2.00\pt 
-        "0o" "\outsidewholerest" -2.00\pt 8.00\pt 2.00\pt 4.00\pt 
-        "1o" "\outsidehalfrest" -2.00\pt 8.00\pt -0.00\pt 2.00\pt 
+        "0" "\wholerest" -0.00\pt 6.00\pt 1.50\pt 4.00\pt 
+        "1" "\halfrest" -0.00\pt 6.00\pt -0.00\pt 2.50\pt 
+        "0o" "\outsidewholerest" -2.50\pt 8.50\pt 1.50\pt 4.00\pt 
+        "1o" "\outsidehalfrest" -2.50\pt 8.50\pt -0.00\pt 2.50\pt 
         "2" "\quartrest" -0.00\pt 4.00\pt 3.00\pt 14.00\pt 
         "3" "\eighthrest" -0.00\pt 5.33\pt 4.00\pt 11.47\pt 
         "4" "\sixteenthrest" -0.00\pt 5.33\pt -0.00\pt 11.47\pt 
         "dot" "\dot" -0.00\pt 1.80\pt -0.90\pt 0.90\pt 
         }
     "balls"  = \table {
-        "0" "\wholeball" -0.00\pt 8.28\pt -2.30\pt 2.30\pt 
-        "1" "\halfball" -0.00\pt 5.76\pt -2.30\pt 2.30\pt 
-        "2" "\quartball" -0.00\pt 5.52\pt -2.30\pt 2.30\pt 
-        "-1" "\breveball" -0.00\pt 8.00\pt -2.00\pt 2.00\pt 
-        "-2" "\longaball" -0.00\pt 8.00\pt -2.00\pt 2.00\pt 
+        "-1" "\brevisball" -0.00\pt 8.00\pt -2.20\pt 2.20\pt 
+        "-2" "\longaball" -0.00\pt 8.00\pt -2.20\pt 2.20\pt 
+        "0" "\wholeball" -0.00\pt 7.92\pt -2.20\pt 2.20\pt 
+        "1" "\halfball" -0.00\pt 5.51\pt -2.20\pt 2.20\pt 
+        "2" "\quartball" -0.00\pt 5.28\pt -2.20\pt 2.20\pt 
         }
     "foobars"  = \table {
         "ufermata" "\ufermata" -6.30\pt 6.30\pt -0.00\pt 6.80\pt 
         "dfermata" "\dfermata" -6.30\pt 6.30\pt -6.80\pt 0.00\pt 
-        "accent" "\accent" -3.60\pt 3.60\pt -2.00\pt 2.00\pt 
+        "accent" "\sforzatoaccent" -3.60\pt 3.60\pt -2.00\pt 2.00\pt 
         "staccato" "\staccato" -0.50\pt 0.50\pt -0.50\pt 0.50\pt 
         "ustaccatissimo" "\ustaccatissimo" -0.80\pt 0.80\pt -0.20\pt 4.00\pt 
         "dstaccatissimo" "\dstaccatissimo" -0.80\pt 0.80\pt -4.00\pt 0.20\pt 
         "tenuto" "\tenuto" -3.60\pt 3.60\pt -0.24\pt 0.24\pt 
         "umarcato" "\umarcato" -2.00\pt 2.00\pt -0.00\pt 4.40\pt 
         "dmarcato" "\dmarcato" -2.00\pt 2.00\pt -4.40\pt 0.00\pt 
+        "open" "\ouvert" -1.40\pt 1.40\pt -0.00\pt 3.50\pt 
+        "stopped" "\plusstop" -2.20\pt 2.20\pt -2.20\pt 2.20\pt 
+        "upbow" "\upbow" -2.60\pt 2.60\pt -0.00\pt 7.80\pt 
+        "downbow" "\downbow" -3.50\pt 3.50\pt -0.00\pt 4.00\pt 
+        "turn" "\turn" -4.38\pt 4.38\pt -2.12\pt 2.12\pt 
+        }
+    "floogbars"  = \table {
+        "3u" "\eighthflag" -0.20\pt 5.17\pt -12.77\pt 0.20\pt 
+        "3d" "\deighthflag" -0.20\pt 5.17\pt -0.20\pt 12.77\pt 
         }
     %  } % $name
index 2c2230c08d82b9e6a829516a697c34ebd766b4df..4746d6ce47ee3ddc0d1c64f65cd2492610d8a40a 100644 (file)
@@ -1,14 +1,14 @@
 % generated automatically by mf-to-table.py version 0.3
-% on Mon Oct  6 20:23:19 1997
+% on Wed Oct  8 16:18:16 1997
 % Do not edit
 
 % input from out/font-en-tja20.log
 % name=\symboltables {
     "rests"  = \table {
-        "0" "\wholerest" -0.00\pt 7.50\pt 2.50\pt 5.00\pt 
-        "1" "\halfrest" -0.00\pt 7.50\pt -0.00\pt 2.50\pt 
-        "0o" "\outsidewholerest" -2.50\pt 10.00\pt 2.50\pt 5.00\pt 
-        "1o" "\outsidehalfrest" -2.50\pt 10.00\pt -0.00\pt 2.50\pt 
+        "0" "\wholerest" -0.00\pt 7.50\pt 1.88\pt 5.00\pt 
+        "1" "\halfrest" -0.00\pt 7.50\pt -0.00\pt 3.13\pt 
+        "0o" "\outsidewholerest" -3.13\pt 10.62\pt 1.88\pt 5.00\pt 
+        "1o" "\outsidehalfrest" -3.13\pt 10.62\pt -0.00\pt 3.13\pt 
         "2" "\quartrest" -0.00\pt 5.00\pt 3.75\pt 17.50\pt 
         "3" "\eighthrest" -0.00\pt 6.67\pt 5.00\pt 14.33\pt 
         "4" "\sixteenthrest" -0.00\pt 6.67\pt -0.00\pt 14.33\pt 
         "dot" "\dot" -0.00\pt 2.25\pt -1.13\pt 1.13\pt 
         }
     "balls"  = \table {
-        "0" "\wholeball" -0.00\pt 10.35\pt -2.88\pt 2.88\pt 
-        "1" "\halfball" -0.00\pt 7.20\pt -2.88\pt 2.88\pt 
-        "2" "\quartball" -0.00\pt 6.91\pt -2.88\pt 2.88\pt 
-        "-1" "\breveball" -0.00\pt 10.00\pt -2.50\pt 2.50\pt 
-        "-2" "\longaball" -0.00\pt 10.00\pt -2.50\pt 2.50\pt 
+        "-1" "\brevisball" -0.00\pt 10.00\pt -2.75\pt 2.75\pt 
+        "-2" "\longaball" -0.00\pt 10.00\pt -2.75\pt 2.75\pt 
+        "0" "\wholeball" -0.00\pt 9.90\pt -2.75\pt 2.75\pt 
+        "1" "\halfball" -0.00\pt 6.89\pt -2.75\pt 2.75\pt 
+        "2" "\quartball" -0.00\pt 6.61\pt -2.75\pt 2.75\pt 
         }
     "foobars"  = \table {
         "ufermata" "\ufermata" -7.88\pt 7.88\pt -0.00\pt 8.50\pt 
         "dfermata" "\dfermata" -7.88\pt 7.88\pt -8.50\pt 0.00\pt 
-        "accent" "\accent" -4.50\pt 4.50\pt -2.50\pt 2.50\pt 
+        "accent" "\sforzatoaccent" -4.50\pt 4.50\pt -2.50\pt 2.50\pt 
         "staccato" "\staccato" -0.63\pt 0.63\pt -0.63\pt 0.63\pt 
         "ustaccatissimo" "\ustaccatissimo" -1.00\pt 1.00\pt -0.20\pt 5.00\pt 
         "dstaccatissimo" "\dstaccatissimo" -1.00\pt 1.00\pt -5.00\pt 0.20\pt 
         "tenuto" "\tenuto" -4.50\pt 4.50\pt -0.30\pt 0.30\pt 
         "umarcato" "\umarcato" -2.50\pt 2.50\pt -0.00\pt 5.50\pt 
         "dmarcato" "\dmarcato" -2.50\pt 2.50\pt -5.50\pt 0.00\pt 
+        "open" "\ouvert" -1.75\pt 1.75\pt -0.00\pt 4.38\pt 
+        "stopped" "\plusstop" -2.75\pt 2.75\pt -2.75\pt 2.75\pt 
+        "upbow" "\upbow" -3.25\pt 3.25\pt -0.00\pt 9.75\pt 
+        "downbow" "\downbow" -4.38\pt 4.38\pt -0.00\pt 5.00\pt 
+        "turn" "\turn" -5.47\pt 5.47\pt -2.65\pt 2.65\pt 
+        }
+    "floogbars"  = \table {
+        "3u" "\eighthflag" -0.25\pt 6.46\pt -15.91\pt 0.25\pt 
+        "3d" "\deighthflag" -0.25\pt 6.46\pt -0.25\pt 15.91\pt 
         }
     %  } % $name
index 9f37993065cb8df2811dcb772bf67ac767f48262..508e43223f96f88fcb7e21cedee38e5e95ebf875 100644 (file)
@@ -26,6 +26,7 @@ rfheel = \script { "fheel" 0 0 1 0 0 }
 lftoe = \script { "ftoe" 0 0 -1 0 0 }
 rftoe = \script { "ftoe" 0 0 1 0 0 }
 turn = \script { "turn" 0 0 1 0 0 }
+open = \script { "open" 0 0 1 0 0 }
 
 %
 % left toe:      right heel:
index 4e77e6ac0bae2fc853f12160b414501a64db40e7..0fe26c3108dc2336becf48112f1945e5412037f3 100644 (file)
@@ -11,13 +11,15 @@ table_sixteen=
    % index TeXstring,  xmin xmax ymin ymax
 
     "scripts" = \table {
+        "stopped" "\plusstop" -2.20\pt 2.20\pt -2.20\pt 2.20\pt 
+        "open" "\ouvert" -1.07\pt 1.07\pt -0.00\pt 2.67\pt 
        "fermata" "\ufermata"           0.0\pt 0.0\pt   0.0\pt 6.0\pt
        "-fermata" "\dfermata"          0.0\pt 0.0\pt   -6.0\pt 0.0\pt
        "portato" "\portato"            0.0\pt 4.0\pt   0.0\pt  2.0\pt
        "-portato" "\iportato"          0.0\pt 4.0\pt   -2.0\pt 0.0\pt
        "tenuto" "\utenuto"                     0.0\pt 4.0\pt   -1.0\pt 1.0\pt
        "-tenuto" "\dtenuto"            0.0\pt 4.0\pt   -1.0\pt 1.0\pt
-       "sforzato" "\accent"            -0.8\pt 4.0\pt  -1.92\pt 1.92\pt
+       "sforzato" "\sforzatoaccent"            -0.8\pt 4.0\pt  -1.92\pt 1.92\pt
        "marcato" "\umarcato"           0.0\pt 4.0\pt   0.0\pt  4.0\pt
        "-marcato" "\dmarcato"          0.0\pt 4.0\pt   -4.0\pt 0.0\pt
        "staccato" "\staccato"          0.0\pt  0.0\pt  -1.1\pt 1.1\pt
@@ -80,17 +82,9 @@ table_sixteen=
        "half"  "\hslurchar%{%}"
      }
 
-     "accidentals" = \table {
-       "-2"    "\flatflat"     0.0\pt  8.16\pt -2.5\pt 7.5\pt
-       "-1"    "\flat"         0.0\pt  4.8\pt  -2.5\pt 7.5\pt
-       "0"     "\natural"      0.0\pt  4.0\pt  -6.\pt 6.\pt
-       "1"     "\sharp"        0.0\pt  4.4\pt  -6.\pt 6.\pt
-       "2"     "\sharpsharp"   0.0\pt  4.8\pt  -2.5\pt 7.5\pt
-     }
-
      "streepjes" = \table {
-       "toplines"      "\toplines{%}{%}"       -1.0\pt 7.0\pt  0.0\pt  0.0\pt
-       "botlines"      "\botlines{%}{%}"       -1.0\pt 7.0\pt  0.0\pt  0.0\pt
+       "toplines"      "\topledgerlines{%}{%}" -1.0\pt 7.0\pt  0.0\pt  0.0\pt
+       "botlines"      "\botledgerlines{%}{%}" -1.0\pt 7.0\pt  0.0\pt  0.0\pt
      }
 
      "bars" = \table {
@@ -163,12 +157,9 @@ table_sixteen=
      }
 
      "beamslopes" = \table {
-       "slope"         "\beamslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt        
+       "slope"         "\beamslope{%}{%}"  2.0\pt 64.0\pt 0.0\pt 0.0\pt
        "horizontal"    "\rulesym{%}{%}"        
      }
-     % ugh what's our outdir called?
      \include "font-en-tja16.ly"
-
-
 }
 
index 5c62d243112442c5e9c8c57ad4036e1381a41056..b98a254235befaa941c40b56c231916773059691 100644 (file)
@@ -12,13 +12,15 @@ table_twenty =
     % index TeXstring,         xmin xmax ymin ymax
 
     "scripts" = \table {
-       "fermata" "\ufermata"           0.0\pt 0.0\pt   0.0\pt 6.0\pt
+           "open" "\ouvert" -1.33\pt 1.33\pt -0.00\pt 3.33\pt 
+        "stopped" "\plusstop" -2.75\pt 2.75\pt -2.75\pt 2.75\pt 
+    "fermata" "\ufermata"              0.0\pt 0.0\pt   0.0\pt 6.0\pt
        "-fermata" "\dfermata"          0.0\pt 0.0\pt   -6.0\pt 0.0\pt
        "portato" "\portato"            0.0\pt 4.0\pt   0.0\pt  2.0\pt
        "-portato" "\iportato"          0.0\pt 4.0\pt   -2.0\pt 0.0\pt
        "tenuto" "\utenuto"                     0.0\pt 4.0\pt   -1.0\pt 1.0\pt
        "-tenuto" "\dtenuto"            0.0\pt 4.0\pt   -1.0\pt 1.0\pt
-       "sforzato" "\accent"            -0.8\pt 4.0\pt  -1.92\pt 1.92\pt
+       "sforzato" "\sforzatoaccent"            -0.8\pt 4.0\pt  -1.92\pt 1.92\pt
        "marcato" "\umarcato"           0.0\pt 4.0\pt   0.0\pt  4.0\pt
        "-marcato" "\dmarcato"          0.0\pt 4.0\pt   -4.0\pt 0.0\pt
        "staccato" "\staccato"          0.0\pt  0.0\pt  -1.1\pt 1.1\pt
@@ -92,8 +94,8 @@ table_twenty =
     }
 
     "streepjes" = \table {
-       "toplines"      "\toplines{%}{%}"       -3.0\pt 9.0\pt  0.0\pt  0.0\pt
-       "botlines"      "\botlines{%}{%}"       -3.0\pt 9.0\pt  0.0\pt  0.0\pt
+       "toplines"      "\topledgerlines{%}{%}" -3.0\pt 9.0\pt  0.0\pt  0.0\pt
+       "botlines"      "\botledgerlines{%}{%}" -3.0\pt 9.0\pt  0.0\pt  0.0\pt
     }
 
     "bars" = \table {
index b724a49ef7a316b176aaf9b22fc8c8b1664c3283..ff68d5bce764bd3eabbfdef9a54fb34ae443248d 100644 (file)
@@ -1,7 +1,8 @@
 \header{
 enteredby      jcn
 copyright      PD
-TestedFeatures font-en-tja
+TestedFeatures  This file tests the Feta music-font
+       (Feta definitively is not an abbreviation of Font-En-TjA)
 }
 
 \version "0.1.6";
@@ -10,25 +11,26 @@ TestedFeatures      font-en-tja
        \melodic{ 
                \octave c';
                \meter 4/4;
-               a\longa
-               a\breve |
+               \multi 2  < { \stemup g''\longa a''\breve | }
+               { \stemdown
                c1 g c' a'
-               c2 g c' a'
+               c2 g } >
+               \stemboth
+               c' a'
                c4 g c' a' |
-               a\ppp a\pp a\p a\mp |
-               a\mf a\f a\ff a\fff|
-               a\fp a\sf a\sfz a | % a\fz a\rf
+               a\ppp-\upbow a\pp-\downbow a\p^\turn a\mp^\fermata |
+               a\mf_\fermata a\f-\stopped a\ff-\open a\fff|
+               a\fp a4.\sf a4.\sfz | % a\fz a\rf
                [c8 c] [a' a']
                [c a'] [a' c] |
                [c d e f] [as' ges' f' e']
                [cis' dis' c' des'] [cisis' disis' ceses' deses'] |
                  r1 r2 r4 r8 r16 r32 r64 r128 r128 |
-                 c'1.^\fermata c'1._\fermata
                \multi 2 < { \stemup r1} {\stemdown c''}>
                \multi 2 < { \stemup c1 } {\stemdown r1}>               
                \stemboth
                
-               c4_. c4-> c4^^ c4_^ 
+               c8_. c''8-> c4^^ c4_^ 
                c4 _| c4^|
                }
        \paper{ 
index c04c51db0d92decd6936fb2914d15e55d34947c7..5edf749d49308b46ffd3cde04c81d7dc3f20fbe8 100644 (file)
@@ -8,6 +8,7 @@
 \addtolength{\topmargin}{-1cm}
 \setlength{\textwidth}{15cm}
 \input lilyponddefs
+\musixsixteendefs
 \input titledefs
 \begin{document}
 
index 095e50328a0754947cf6a7adba0ae0d6af644336..dc5daa4fcdf4cca6aea1915e28fec5e9650feca4 100644 (file)
@@ -6,8 +6,9 @@
 \textwidth\hsize\advance\textwidth-15mm
 \begin{document}
 \input lilyponddefs
+\musixsixteendefs
 \input titledefs
-\def\interscoreline{\vskip12pt}
+\def\interscoreline{\vskip6pt}
 \title{Solo Cello Suites\normalsize\\[2ex]Suite II}
 % \subtitle{Suite II}
 \composer{J.\ S.\ Bach}
index b30bb0031812fdf165c1e663bacb6d790943cc34..7f7ab47f174f22e261690bf26cf8686c2bc9d014 100644 (file)
@@ -9,6 +9,7 @@
 %\pagestyle{empty}
 \begin{document}
 \input lilyponddefs
+\musixsixteendefs
 \input titledefs
 \def\interscoreline{\vskip3mm}
 \title{St\"andchen\normalsize\\[2ex](Serenade)}
index 9870b620ead60373634ac19d2e1eaaec1c5acc14..b38054c5abb40b56186b35abe744841fb2942d76 100644 (file)
@@ -9,6 +9,7 @@
 \pagestyle{empty}
 \begin{document}
 \input lilyponddefs
+\musixtwentydefs
 \input titledefs
 \def\interscoreline{\vskip3mm}
 \title{St\"andchen\normalsize\\[2ex](Serenade)}
index dc8420e3e3b3e7a4a1421286c7bc576d5fb143ee..c9923f9d22eb29a3a09840964f6bd2601bc7b6d1 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 19
+PATCH_LEVEL = 20
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
index e11eef1489d230da2d852e94d8aca89441b2b534..6dc7dab8584483e009377c3f8c4cec8764ee4a8d 100644 (file)
@@ -36,6 +36,8 @@ Rest::brew_molecule_p () const
 {
   int staff_size_i_ =8;
   bool streepjes_b = (position_i_<-1) || (position_i_ > staff_size_i_+1);
+  if  (balltype_i_ < 0 || balltype_i_ > 1)
+    streepjes_b = false;
   
   Atom s(paper ()->lookup_l()->rest (balltype_i_, streepjes_b));
   Molecule * m = new Molecule ( Atom (s));
index 073fc7cd93f996ad40719bba68b8a6110bd77e6c..df80dabd37045b38f865d7d2b0f2425420776f21 100644 (file)
@@ -99,9 +99,11 @@ Molecule*
 Script::brew_molecule_p() const
 {
   Real dy = paper()->internote_f ();
+  Real dx = paper()->note_width()/2;
   
   Molecule*out = new Molecule (specs_l_->get_atom (paper(), dir_));
   out->translate (dy * pos_i_, Y_AXIS);
+  out->translate (dx, X_AXIS); // FIXME! ugh
   return out;
 }
 
index 6ddb44f685e2a4bf970dd4cd6f82aec0e17c1b4a..462567a47e67b923ed75bd231bdb4581ff93f2c7 100644 (file)
@@ -320,7 +320,7 @@ Stem::abbrev_mol () const
 }
 
 Molecule*
- Stem::brew_molecule_p () const 
+Stem::brew_molecule_p () const 
 {
   Molecule *mol_p =new Molecule;
   
@@ -361,9 +361,10 @@ Stem::note_delta_f () const
   Real r=0;
   if (head_l_arr_.size())
     {
-      r += head_l_arr_[0]->width ().length() * (stem_xdir_+1.0)/2.0;
-      if (stem_xdir_ == RIGHT)
-       r -= paper ()->rule_thickness ();
+      Interval head_wid(0,  head_l_arr_[0]->width ().length ());
+      Real rule_thick(paper ()->rule_thickness ());
+      Interval stem_wid(-rule_thick/2, rule_thick/2);
+      r = head_wid[stem_xdir_] - stem_wid[stem_xdir_];
     }
   return r;
 }
index b4d5b465bea0b997c5f195e22ad9065372afd9a8..ad7e8f6372b44f96f95b944835aa7505552994be 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.19.jcn2
-Inschrijf datum: 07OCT97
+Versie: 0.1.20
+Inschrijf datum: 08OCT97
 Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
                Het programma genereert muziek in zichtbare of 
                hoorbare vorm uit uit een muzikale definitie file: 
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-0.1.19.jcn2.tar.gz 
+       395k lilypond-0.1.20.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-0.1.19.jcn2.tar.gz 
+       395k lilypond-0.1.20.tar.gz 
 Copi"eer politie: GPL
 End
index fbffa124b8c91e6e1c4e50514290f9014f659357..176eb4fecc2c67f9ab88a9c854b9e5ec55bfc42c 100644 (file)
@@ -1,21 +1,21 @@
 Begin3
 Title: LilyPond
-Version: 0.1.19
-Entered-date: 07OCT97
-Description:   LilyPond is the GNU Project music typesetter. This
-               program converts music definition files into
-               visual or auditive output: it can typeset formatted
-               sheet music to a TeX file and and (mechanical)
-               performances to MIDI files. Features include multiple
-               staffs, meters, clefs, keys, lyrics, versatile
-               input-language, cadenzas beams, slurs, triplets.
+Version: 0.1.20
+Entered-date: 08OCT97
+Description: LilyPond is the GNU Project music typesetter.  The program
+               generates visual or auditive output from a music 
+               definition file: it can typeset formatted sheet music 
+               to a TeX file and play (mechanical) performances to a 
+               MIDI file.  Features include multiple staffs, meters, 
+               clefs, keys, lyrics, versatile input-language, 
+               cadenzas, beams, slurs, triplets.
 Keywords: music typesetting midi notation
 Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-0.1.19.tar.gz 
+       395k lilypond-0.1.20.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-0.1.19.tar.gz 
+       395k lilypond-0.1.20.tar.gz 
 Copying-policy: GPL
 End
index e5695f922ef5a388cb382de17244b30bb6bc0e1d..7eaca4df99783e656825485eaec4571898bfb291 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.1.19
+Version: 0.1.20
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.19.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.20.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
diff --git a/mf/TODO b/mf/TODO
index 111de76aaf3f22939215b036b097191af187a651..a13e94503a5a070fb03d1d82c8286593112a1cfd 100644 (file)
--- a/mf/TODO
+++ b/mf/TODO
@@ -1,4 +1,5 @@
 
+       - design macro for penstroke with rounded endings
        - y-refpoint for rests should be the 4th staffline (gclef: b')
        - more symbols
          * flags
@@ -7,8 +8,9 @@
            - {up, down}bow
            - toe/heel
            - piano pedals,
-           - braces.
-           - trills
+         * braces.
+         * trills
+         * maxima notehead
          * coda signs.
          * 0 - 9
 
@@ -17,5 +19,6 @@
        - lilyrules.mf for different rules (lines) ?
        - check out Adobe Sonata/Petrucci font layout.  They are the
 standard for Music fonts
-       - hack up GS to do round pixels iso. square pixels.
+       - hack up GS to do round pixels iso. square pixels.  (Printers
+don't do square pixels.)
 
index 6cffec3caacf9ec68e7c6585b0281bda427413b7..9912d70d59e1af77295c828d7c07042c13560653 100644 (file)
@@ -1,9 +1,13 @@
-% autometric.mf
-% part of LilyPond's pretty-but-neat music font
+% 
+% autometric.mf -- administrative MF routines
+% 
+% source file of the Feta (Font-En-Tja) pretty-but-neat music font
+% 
+% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 % 
 % these macros help create ascii logging output
 % to automate generation of lily tables and tex backend
-% parsed by the mf-to-table script
+% The output should be parsed by the mf-to-table script
 
 
 
@@ -24,12 +28,14 @@ def fet_endfont(expr name) =
 def fet_begingroup(expr name) =
        message "@{group:"&name&"@}";
        message "";
-       enddef;
+       begingroup
+enddef;
 
 def fet_endgroup(expr name) =
+       endgroup;
        message "@{puorg:"&name&"@}";
        message "";
-       enddef;
+enddef;
 
 def autometric_output_char=
        message "@{char:"&charnamestr&":"&decimal charcode&":"&decimal charbp&":"&decimal charwd&":"&decimal chardp&":"&decimal charht&":"&idstr&":"&texstr&"@}";
diff --git a/mf/bolletjes.mf b/mf/bolletjes.mf
deleted file mode 100644 (file)
index c41f5d0..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-% bolletjes.mf
-% part of LilyPond's pretty-but-neat music font
-
-% most beautiful noteheads are pronounced, not circular, 
-% and not even symmetric.
-% These examples are inspired by [Wanske] [see literature list]
-
-%noteheight#:=interline#;
-
-% even more pronounced (almost overdone), just like the original
-noteheight#:=interline#+1.5stafflinethickness#;
-
-
-% setup user vars
-def setup_notehead_vars =
-       save a_b,err_y_a,tilt,superness;
-       save ai_a,ai_bi,err_y_ai,err_x_bi,inner_tilt,inner_superness;
-       save b_h,a_w;
-       enddef;
-
-% setup addititional vars and calc them
-def notehead_calc =
-       save a,beta,ai,bi, ht, wd;
-       ht# =noteheight#;
-       2beta#=ht#*b_h;
-       a# = beta#*a_b;
-       wd# = 2a# / a_w;
-       ai# = a# * ai_a;
-       bi# = ai#/ai_bi;
-       define_pixels(a,beta);
-       define_pixels(ai,bi);
-       set_char_box(0, wd#, .5 ht#, .5 ht#);
-       enddef;
-
-
-% draw the outer and inner ellipse.
-def notehead_draw =
-       path black,white;
-       black=distorted_ellipse(a,beta,a*err_y_a,0,superness);
-       white=distorted_ellipse(ai,bi,ai*err_y_ai,bi*err_x_bi,inner_superness);
-if test>1: %fixme
-               save x;
-               x1=-x3=a; x2=x4=0; y1=y3=0; y2=-y4=b;
-               penlabels(1,2,3,4);
-               test_grid;
-else:
-               black:=black rotated tilt;
-               black:=black shifted (w/2,0);
-               white:=white rotated inner_tilt;
-               white:=white shifted (w/2,0);
-fi
-               fill black;
-               unfill white;
-
-               
-       enddef;
-
-
-fet_begingroup("balls");
-
-% whole note
-% Wanske, p.38
-fet_beginchar("Whole notehead", "0", "wholeball")
-       setup_notehead_vars;
-       
-       a_b:=1.80;
-       err_y_a:=0; % no slant
-       tilt:=0;
-       superness:=0.707;
-       ai_a:=0.508;
-       % ai_bi:=1.23;
-       ai_bi:=1.30; % jcn
-       % err_y_ai:=0.0938;
-       % err_x_bi:=0;
-       err_y_ai:=0;
-       err_x_bi:=0.115;
-       % inner_tilt:=135;
-       inner_tilt:=125; % jcn
-       % inner_superness:=0.69;
-       inner_superness:=0.68; % jcn
-       b_h:=1; %no rotate-> no height correction
-       a_w:=1; % no rotate-> no width correction
-
-       notehead_calc;
-       notehead_draw;
-fet_endchar;
-
-
-% half note
-% Wanske, p.39
-fet_beginchar("Half notehead", "1", 
-       "halfball")
-       setup_notehead_vars;
-               % a_b:=1.49; % after text
-       a_b:=1.50; % after drawing
-       err_y_a:=0.157;
-       tilt:=34;
-       % superness:=0.66;
-       superness:=0.67; % jcn
-       % ai_a:=0.863;
-       ai_a:=0.850; % jcn
-       % ai_bi:=3.14;
-       ai_bi:=3.30; % jcn
-       err_y_ai:=0;
-       err_x_bi:=-0.12;
-       inner_tilt:=tilt;
-       inner_superness:=0.80;
-       b_h:=0.935;
-       a_w:=1.12;
-
-       notehead_calc;
-       notehead_draw;
-fet_endchar;
-
-
-% quarter note
-% Wanske p.38
-fet_beginchar("Quart notehead", "2", "quartball")
-       setup_notehead_vars;
-       % a_b:=1.57; % after text
-       a_b:=1.54; % after drawing
-       err_y_a:=0.044;
-       tilt:=32;
-       superness:=0.707;
-       ai_a:=0;
-       ai_bi:=1;
-       err_y_ai:=0;
-       err_x_bi:=0;
-       inner_tilt:=0;
-       inner_superness:=0.707;
-       b_h:=0.85;
-       a_w:=1.09;
-
-       notehead_calc;
-       notehead_draw;
-fet_endchar;
-
-
-
-% from MO*gen.mf; (pass the barfbag?)
-def add_mirror (expr pone, ptwo) =
-  addto currentpicture also currentpicture
-        reflectedabout (round(pone), round(ptwo))
-enddef;
-
-def fill_square (expr xwidth, ywidth, zshift) =
-  fill unitsquare xscaled xwidth yscaled ywidth shifted zshift
-enddef;
-
-% ugh
-nhh#:=interline#;
-nhw#:=6/5interline#;
-define_pixels(nhh,nhw);
-
-fet_beginchar("Brevis notehead","-1","breveball"); 
-       set_char_box(0, 2interline#,.5 interline#, .5interline#);
-       fill_square (5/4nhw, .25nhh, (0,.25nhh));
-       add_mirror (origin, right);
-       x1=x2=0; x3=x4=5/4nhw; y1=-y2=y3=-y4=.7nhh;
-       pickup pencircle scaled stafflinethickness;
-       draw z1--z2; draw z3--z4;
-       push_picture(currentpicture);
-fet_endchar;
-
-fet_beginchar("Longa notehead","-2","longaball");
-       set_char_box(0, 2 interline#,.5interline#, .5interline# );
-       currentpicture := pop_picture;
-       pickup pencircle scaled stafflinethickness;
-       draw (5/4nhw,-.7nhh)--(5/4nhw,-1.7nhh);
-fet_endchar;
-
-% fet_endgroup("noteheads");
-fet_endgroup("balls");
-
index 78fc5369afad7e1e06a2bf8f65888adb1b57decf..9d809332d7096dc4566243b1bbe5b8ec771758c5 100644 (file)
@@ -7,7 +7,8 @@
 \font\vet=vette-beams16
 \font\slurs=xslhd16
 \font\specfont=musixspx
-\def\thefont{\slurs}
+\font\egler=opus16
+\def\thefont{\egler}
 %\def\thefont{\specfont}
 
 \def\mb#1{{\thefont\char#1}}
diff --git a/mf/eindelijk.mf b/mf/eindelijk.mf
deleted file mode 100644 (file)
index 362ed9a..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-% eindelijk.mf
-% LilyPond's own rest(s)
-
-% todo breve/longa rests
-
-
-fet_begingroup("rests");
-
-begingroup
-
-med#:=1/33designsize;
-thick#:=1/16designsize;
-define_blacker_pixels(med,thick);
-pen med_pen;
-med_pen:= pencircle scaled med;
-
-rthin:=1/8interline;
-% 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;
-
-define_pixels(stem,flare);
-% stem#:=1/8interline#;
-stem# = 1/5interline#;
-ball_crook_stem = stem;
-ball_crook_balldiam =flare;
-flare# = 2/3interline#;
-
-save block_rest_y, block_rest_x;
-
-block_rest_y# = 1/2 interline#;
-block_rest_x# = 3 block_rest_y#;
-
-define_pixels(block_rest_y, block_rest_x);
-
-def block_rest=
-       pickup pencircle scaled blot_diameter;
-
-       bot y1 = 0;
-       top y2 = block_rest_y;
-       y3 = y2;
-       y4 = y1;
-
-       rt x1 = block_rest_x;
-       x2 = x1;
-       lft x3 = 0;
-       x4 = x3;
-       save p;
-       path p;
-       p:=z1 -- z2 -- z3 -- z4 -- cycle;
-       draw_rounded_path(p, blot_diameter);
-enddef;
-
-fet_beginchar( "whole rest", "0", "wholerest");
-set_char_box(0, block_rest_x#, -block_rest_y#, 2 block_rest_y# );
-       block_rest;
-       currentpicture := currentpicture shifted (0,block_rest_y);
-fet_endchar;
-
-fet_beginchar("half rest", "1", "halfrest");
-       set_char_box(0, block_rest_x#, 0, block_rest_y#);
-       block_rest;
-fet_endchar;
-
-
-%
-% should use ledgerline thickness?
-%
-fet_beginchar( "whole rest (outside staff)", "0o", "outsidewholerest");
-       set_char_box(block_rest_y#, block_rest_x# + block_rest_y#, -block_rest_y#, 2 block_rest_y# );
-       block_rest;
-       currentpicture := currentpicture shifted (0,block_rest_y);
-       pickup pencircle scaled stafflinethickness;
-       draw (-block_rest_y, interline) .. (block_rest_x + block_rest_y, interline);
-fet_endchar;
-
-fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
-       set_char_box(block_rest_y#, block_rest_x#+ block_rest_y#, 0, block_rest_y#);
-       block_rest;
-       pickup pencircle scaled stafflinethickness;
-       draw (-block_rest_y,0) .. (block_rest_x + block_rest_y,0);
-fet_endchar;
-
-def rest_crook(expr a, w) =
-       balled_crook(a, w, ball_crook_balldiam, ball_crook_stem)
-enddef;
-
-fet_beginchar("Quarter rest","2","quartrest");
-       alpha:=-50;
-       penpos1(rthin,alpha+90);
-       penpos2(5/4rthick,alpha);
-       penpos4(5/4rthick,alpha);
-       penpos3(3/4rthick,alpha);
-       penpos6(rthin,alpha-20);
-%      penpos6(rthick,alpha-20);
-%      penpos7(4/3thick,alpha);
-       penpos7(5/8rthick,alpha);
-       penpos8(rthin,-10);
-       y1l=7/2interline; x1l=1/3interline;
-       z2r=z1+(interline*right) rotated alpha;
-       z3=1/2[z2,z4];
-       x4=3/8interline; y4=2interline;
-       z6=z4l+(5/4interline*right) rotated alpha;
-%      x7l=x4l; y7r=y6l;
-       x7l=x4l; y7l=y4r;
-       x8=2/5interline; y8= 3/4 interline;
-       z5=z6r shifted (sqrt(2)*rthin/4,sqrt(2)*rthin/4);
-
-       pickup penrazor scaled rthin rotated 45;
-       draw z1--z2r; 
-       draw z4l--z5;
-       penstroke z2e..z3e..z4e;
-       penstroke z6e..tension1.4..z7e..tension1.4..z8e;
-       penlabels(1,2,3,4,5,6,7,8);
-       set_char_box(0, interline#, -3/4 interline#, 7/2 interline#);
-       fet_endchar;
-
-fet_beginchar("8th rest","3","eighthrest");
-       set_char_box(0, 4/3interline#,-interline#, 8/3interline#+2stafflinethickness#);
-       save x,y, ht;
-       ht = h + d;
-       x1=w-stem/6; y1=ht-flare/4;
-       rest_crook (z1,w-stem/6);
-       z2-z1=whatever*dir70;
-       y2=stem/2;
-       brush (z1,stem/3,z2,stem);
-       % ugh
-       currentpicture:=currentpicture shifted (0,interline);
-%      currentpicture:=currentpicture shifted (0,interline+2stafflinethickness);
-       fet_endchar;
-
-fet_beginchar("16th rest","4","sixteenthrest");
-       set_char_box(0,4/3interline#,0, 5/3interline#+interline#+2stafflinethickness#);
-       save x,y;
-       x1=w-stem/6; y1=h-flare/4;
-       z2-z1=whatever*dir74;
-       y2=stem/2;
-       brush (z1,stem/2,z2,stem);
-       rest_crook (z1,7/8w);
-       z3-z1=whatever*dir74;
-       y3=y1-interline;
-       rest_crook (z3,7/8w);
-%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
-       fet_endchar;
-
-fet_beginchar("32th rest","5","thirtysecondrest");
-       set_char_box(0,4/3interline#,0, 5/3interline#+2interline#+2stafflinethickness#);
-       save x,y;
-       x1=w-stem/6; y1=h-flare/4;
-       z2-z1=whatever*dir76;
-       y2=stem/2;
-       brush (z1,stem/2,z2,stem);
-       rest_crook (z1,7/8w);
-       z3-z1=whatever*dir76;
-       y3=y1-interline;
-       rest_crook (z3,7/8w);
-       z4-z1=whatever*dir76;
-       y4=y1-2interline;
-       rest_crook (z4,7/8w);
-%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
-       fet_endchar;
-
-fet_beginchar("64th rest","6","sixtyfourthrest");
-       set_char_box(0,4/3interline#,0, 5/3interline#+3interline#+2stafflinethickness#);
-       save x,y;
-       x1=w-stem/6; y1=h-flare/4;
-       z2-z1=whatever*dir78;
-       y2=stem/2;
-       brush (z1,stem/2,z2,stem);
-       rest_crook (z1,7/8w);
-       z3-z1=whatever*dir78;
-       y3=y1-interline;
-       rest_crook (z3,7/8w);
-       z4-z1=whatever*dir78;
-       y4=y1-2interline;
-       rest_crook (z4,7/8w);
-       z5-z1=whatever*dir78;
-       y5=y1-3interline;
-       rest_crook (z5,7/8w);
-%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
-       fet_endchar;
-
-fet_beginchar("128th rest","7","hundredtwentyeighthrest"); 
-       set_char_box(0, 4/3interline#, 0, 5/3interline#+4interline#+2stafflinethickness#);
-       save x,y;
-       x1=w-stem/6; y1=h-flare/4;
-       z2-z1=whatever*dir80;
-       y2=stem/2;
-       brush (z1,stem/2,z2,stem);
-       rest_crook (z1,7/8w);
-       z3-z1=whatever*dir80;
-       y3=y1-interline;
-       rest_crook (z3,7/8w);
-       z4-z1=whatever*dir80;
-       y4=y1-2interline;
-       rest_crook (z4,7/8w);
-       z5-z1=whatever*dir80;
-       y5=y1-3interline;
-       rest_crook (z5,7/8w);
-       z6-z1=whatever*dir80;
-       y6=y1-4interline;
-       rest_crook (z6,7/8w);
-%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
-       fet_endchar;
-
-endgroup;
-fet_endgroup("rests");
-
diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf
new file mode 100644 (file)
index 0000000..f845fac
--- /dev/null
@@ -0,0 +1,84 @@
+% flags 
+%
+
+
+fet_begingroup("floogbars")
+
+save flag_angle, flare;
+save hip_thickness, hip_depth, hip_width;
+save foot_thickness, foot_depth, foot_width;
+
+flag_angle = 32;
+
+hip_thickness# = stafflinethickness#;
+foot_thickness# = blot_diameter#;
+flare# = 1.0 interline#;
+
+hip_depth# = 15/7 interline#; 
+hip_width# = 8/7 interline# + hip_thickness# /2 + stemthickness#/2;
+
+foot_depth# = flare# + 15/7 interline#;
+foot_width# = .885 hip_width#;
+
+
+define_pixels(flare, 
+       hip_depth, hip_width, hip_thickness,
+       foot_depth, foot_width, foot_thickness
+);
+
+%treq;
+
+
+%
+% Inspired by Adobe Sonata,
+% for example, see POSTSCRIPT Language -- program design, 
+% page 119
+%
+def draw_eight_flag =
+
+
+       penpos0(stemthickness, 0);
+       penpos1(flare, 90);
+       penpos2(hip_thickness, 0);
+       penpos3(foot_thickness, 0) ;
+       penpos4(stemthickness, 0);
+
+       z0r = z1r;
+       z0  = (0,0);
+       z2 = (hip_width, -hip_depth);
+       z3 = (foot_width, -foot_depth);
+       z4r = z1l;
+
+       save bot_dir, bot_path;
+       pair bot_dir;
+       path bot_path;
+       bot_path := z2{down} .. z3;
+       bot_dir := direction 1 of bot_path;
+
+       fill z1l{dir -flag_angle} .. z2l{down} .. 
+               z3l{bot_dir}  .. z3r{-bot_dir} ..
+               {up}z2r .. {up}z1r .. 
+               z0l{down} -- z4l -- cycle;
+               
+               ;
+
+enddef;
+
+
+fet_beginchar("8th Flag (up)", "3u", "eighthflag")
+       set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2, 
+               foot_depth# + foot_thickness#/2, stemthickness#/2)
+
+       draw_eight_flag;        
+       penlabels(0, 1, 2, 3, 4);
+fet_endchar;
+
+fet_beginchar("8th Flag (down)", "3d", "deighthflag")
+       set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2, 
+               foot_depth# + foot_thickness#/2, stemthickness#/2)
+
+       draw_eight_flag;
+       y_mirror_char;
+fet_endchar;
+
+fet_endgroup("floogbars")
diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf
new file mode 100644 (file)
index 0000000..cef0590
--- /dev/null
@@ -0,0 +1,201 @@
+% bolletjes.mf
+% part of LilyPond's pretty-but-neat music font
+
+% most beautiful noteheads are pronounced, not circular, 
+% and not even symmetric.
+% These examples are inspired by [Wanske] [see literature list]
+
+
+fet_begingroup("balls");
+
+noteheight#:=interline#+ (1 + overdone_heads) *stafflinethickness#;
+
+define_pixels(noteheight);
+
+
+
+def draw_brevis =
+       save beamheight, head_width;
+       save holeheight, stem_width;
+       save serif_size;
+
+       head_width# = 2 interline#;
+       holeheight = 3 stafflinethickness;
+       stem_width = 1.2 stafflinethickness;
+
+
+       define_pixels(head_width);
+       set_char_box(0, head_width#, noteheight#/2, noteheight#/2);
+       
+       2 beamheight + holeheight = noteheight;
+       serif_size = (holeheight - stafflinethickness)/2;
+
+       penpos1(stem_width, 0);
+       penpos2(stem_width, 0);
+       penpos3(beamheight, 90);
+       penpos4(beamheight, 90);
+       penpos5(stem_width, 180);
+
+       z1l = (0, 0);
+       z2l = (0, -stafflinethickness/2);
+       z3r = z2r + serif_size *(1,-1);
+       y4r = y3r;
+       x4r = head_width/2;
+       z5l = z3l + serif_size * (-1,-1);
+
+       penlabels(1,2,3,4, 5);
+       fill z1r -- z1l -- z5r{down} .. z5l{up} .. z3l{right}
+               -- z4l -- z4r -- z3r{left} .. z2r{up} -- cycle;
+
+       addto currentpicture also currentpicture yscaled -1;
+       addto currentpicture also currentpicture reflectedabout(z4r, z4l);
+enddef;
+
+fet_beginchar("Brevis notehead", "-1", "brevisball")
+       draw_brevis;
+fet_endchar;
+
+
+%
+% Some sources (eg Musix/OpusTeX think that the appendage should be on
+% the right, my only other ref [Willemze], shows an appendage to the left
+%
+fet_beginchar("Longa notehead", "-2", "longaball");
+       draw_brevis;
+       save theta;
+       z7 = z5;
+       z6 - z7 = (-stem_width/2, -interline);
+       theta = angle(z6-z7)+ 90;
+       penpos7(stafflinethickness, theta);
+       penpos6(stem_width, theta);
+       
+       fill z7r .. z6r{z6-z7} .. {z7-z6} z6l -- z7l -- cycle;
+       penlabels(6,7);
+fet_endchar;
+
+% setup user vars
+def setup_notehead_vars =
+       save a_b,err_y_a,tilt,superness;
+       save ai_a,ai_bi,err_y_ai,err_x_bi,inner_tilt,inner_superness;
+       save b_h,a_w;
+       enddef;
+
+% setup addititional vars and calc them
+def notehead_calc =
+       save a,beta,ai,bi, ht, wd;
+       ht# =noteheight#;
+       2beta#=ht#*b_h;
+       a# = beta#*a_b;
+       wd# = 2a# / a_w;
+       ai# = a# * ai_a;
+       bi# = ai#/ai_bi;
+       define_pixels(a,beta);
+       define_pixels(ai,bi);
+       set_char_box(0, wd#, .5 ht#, .5 ht#);
+       enddef;
+
+
+% draw the outer and inner ellipse.
+def notehead_draw =
+       path black,white;
+       black=distorted_ellipse(a,beta,a*err_y_a,0,superness);
+       white=distorted_ellipse(ai,bi,ai*err_y_ai,bi*err_x_bi,inner_superness);
+if test>1: %fixme
+               save x;
+               x1=-x3=a; x2=x4=0; y1=y3=0; y2=-y4=b;
+               penlabels(1,2,3,4);
+               test_grid;
+else:
+               black:=black rotated tilt;
+               black:=black shifted (w/2,0);
+               white:=white rotated inner_tilt;
+               white:=white shifted (w/2,0);
+fi
+               fill black;
+               unfill white;
+
+               
+       enddef;
+
+% whole note
+% Wanske, p.38
+fet_beginchar("Whole notehead", "0", "wholeball")
+       setup_notehead_vars;
+       
+       a_b:=1.80;
+       err_y_a:=0; % no slant
+       tilt:=0;
+       superness:=0.707;
+       ai_a:=0.508;
+       % ai_bi:=1.23;
+       ai_bi:=1.30; % jcn
+       % err_y_ai:=0.0938;
+       % err_x_bi:=0;
+       err_y_ai:=0;
+       err_x_bi:=0.115;
+       % inner_tilt:=135;
+       inner_tilt:=125; % jcn
+       % inner_superness:=0.69;
+       inner_superness:=0.68; % jcn
+       b_h:=1; %no rotate-> no height correction
+       a_w:=1; % no rotate-> no width correction
+
+       notehead_calc;
+       notehead_draw;
+fet_endchar;
+
+
+% half note
+% Wanske, p.39
+fet_beginchar("Half notehead", "1", 
+       "halfball")
+       setup_notehead_vars;
+               % a_b:=1.49; % after text
+       a_b:=1.50; % after drawing
+       err_y_a:=0.157;
+       tilt:=34;
+       % superness:=0.66;
+       superness:=0.67; % jcn
+       % ai_a:=0.863;
+       ai_a:=0.850; % jcn
+       % ai_bi:=3.14;
+       ai_bi:=3.30; % jcn
+       err_y_ai:=0;
+       err_x_bi:=-0.12;
+       inner_tilt:=tilt;
+       inner_superness:=0.80;
+       b_h:=0.935;
+       a_w:=1.12;
+
+       notehead_calc;
+       notehead_draw;
+fet_endchar;
+
+
+% quarter note
+% Wanske p.38
+fet_beginchar("Quart notehead", "2", "quartball")
+       setup_notehead_vars;
+       % a_b:=1.57; % after text
+       a_b:=1.54; % after drawing
+       err_y_a:=0.044;
+       tilt:=32;
+       superness:=0.707;
+       ai_a:=0;
+       ai_bi:=1;
+       err_y_ai:=0;
+       err_x_bi:=0;
+       inner_tilt:=0;
+       inner_superness:=0.707;
+       b_h:=0.85;
+       a_w:=1.09;
+
+       notehead_calc;
+       notehead_draw;
+fet_endchar;
+
+
+
+
+fet_endgroup("balls");
+
diff --git a/mf/feta-eindelijk.mf b/mf/feta-eindelijk.mf
new file mode 100644 (file)
index 0000000..5e9c67b
--- /dev/null
@@ -0,0 +1,218 @@
+% eindelijk.mf
+% LilyPond's own rest(s)
+
+% todo breve/longa rests
+
+
+fet_begingroup("rests");
+
+begingroup
+
+med#:=1/33designsize;
+thick#:=1/16designsize;
+define_blacker_pixels(med,thick);
+pen med_pen;
+med_pen:= pencircle scaled med;
+
+rthin:=1/8interline;
+% 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;
+
+define_pixels(stem,flare);
+% stem#:=1/8interline#;
+stem# = 1/5interline#;
+ball_crook_stem = stem;
+ball_crook_balldiam =flare;
+flare# = 2/3interline#;
+
+save block_rest_y, block_rest_x;
+
+block_rest_y# = 5/8 interline#;
+block_rest_x# = 3/2 interline#;
+
+define_pixels(block_rest_y, block_rest_x);
+
+def block_rest=
+       pickup pencircle scaled blot_diameter;
+
+       bot y1 = 0;
+       top y2 = block_rest_y;
+       y3 = y2;
+       y4 = y1;
+
+       rt x1 = block_rest_x;
+       x2 = x1;
+       lft x3 = 0;
+       x4 = x3;
+       save p;
+       path p;
+       p:=z1 -- z2 -- z3 -- z4 -- cycle;
+       draw_rounded_path(p, blot_diameter);
+enddef;
+
+fet_beginchar( "whole rest", "0", "wholerest");
+set_char_box(0, block_rest_x#, -interline# + block_rest_y#,  interline# );
+       block_rest;
+       currentpicture := currentpicture shifted (0,interline - block_rest_y);
+fet_endchar;
+
+fet_beginchar("half rest", "1", "halfrest");
+       set_char_box(0, block_rest_x#, 0, block_rest_y#);
+       block_rest;
+fet_endchar;
+
+
+%
+% should use ledgerline thickness?
+%
+fet_beginchar( "whole rest (outside staff)", "0o", "outsidewholerest");
+       set_char_box(block_rest_y#, block_rest_x# + block_rest_y#, 
+               -interline# + block_rest_y#, interline#);
+       block_rest;
+       currentpicture := currentpicture shifted (0,interline - block_rest_y);
+       pickup pencircle scaled ledgerlinethickness;
+       draw (-block_rest_y, interline) 
+             .. (block_rest_x + block_rest_y, interline);
+fet_endchar;
+
+fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
+       set_char_box(block_rest_y#, block_rest_x#+ block_rest_y#, 
+               0, block_rest_y#);
+       block_rest;
+       pickup pencircle scaled ledgerlinethickness;
+       draw (-block_rest_y,0) .. (block_rest_x + block_rest_y,0);
+fet_endchar;
+
+def rest_crook(expr a, w) =
+       balled_crook(a, w, ball_crook_balldiam, ball_crook_stem)
+enddef;
+
+fet_beginchar("Quarter rest","2","quartrest");
+       alpha:=-50;
+       penpos1(rthin,alpha+90);
+       penpos2(5/4rthick,alpha);
+       penpos4(5/4rthick,alpha);
+       penpos3(3/4rthick,alpha);
+       penpos6(rthin,alpha-20);
+%      penpos6(rthick,alpha-20);
+%      penpos7(4/3thick,alpha);
+       penpos7(5/8rthick,alpha);
+       penpos8(rthin,-10);
+       y1l=7/2interline; x1l=1/3interline;
+       z2r=z1+(interline*right) rotated alpha;
+       z3=1/2[z2,z4];
+       x4=3/8interline; y4=2interline;
+       z6=z4l+(5/4interline*right) rotated alpha;
+%      x7l=x4l; y7r=y6l;
+       x7l=x4l; y7l=y4r;
+       x8=2/5interline; y8= 3/4 interline;
+       z5=z6r shifted (sqrt(2)*rthin/4,sqrt(2)*rthin/4);
+
+       pickup penrazor scaled rthin rotated 45;
+       draw z1--z2r; 
+       draw z4l--z5;
+       penstroke z2e..z3e..z4e;
+       penstroke z6e..tension1.4..z7e..tension1.4..z8e;
+       penlabels(1,2,3,4,5,6,7,8);
+       set_char_box(0, interline#, -3/4 interline#, 7/2 interline#);
+       fet_endchar;
+
+fet_beginchar("8th rest","3","eighthrest");
+       set_char_box(0, 4/3interline#,-interline#, 8/3interline#+2stafflinethickness#);
+       save x,y, ht;
+       ht = h + d;
+       x1=w-stem/6; y1=ht-flare/4;
+       rest_crook (z1,w-stem/6);
+       z2-z1=whatever*dir70;
+       y2=stem/2;
+       brush (z1,stem/3,z2,stem);
+       % ugh
+       currentpicture:=currentpicture shifted (0,interline);
+%      currentpicture:=currentpicture shifted (0,interline+2stafflinethickness);
+       fet_endchar;
+
+fet_beginchar("16th rest","4","sixteenthrest");
+       set_char_box(0,4/3interline#,0, 5/3interline#+interline#+2stafflinethickness#);
+       save x,y;
+       x1=w-stem/6; y1=h-flare/4;
+       z2-z1=whatever*dir74;
+       y2=stem/2;
+       brush (z1,stem/2,z2,stem);
+       rest_crook (z1,7/8w);
+       z3-z1=whatever*dir74;
+       y3=y1-interline;
+       rest_crook (z3,7/8w);
+%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
+       fet_endchar;
+
+fet_beginchar("32th rest","5","thirtysecondrest");
+       set_char_box(0,4/3interline#,0, 5/3interline#+2interline#+2stafflinethickness#);
+       save x,y;
+       x1=w-stem/6; y1=h-flare/4;
+       z2-z1=whatever*dir76;
+       y2=stem/2;
+       brush (z1,stem/2,z2,stem);
+       rest_crook (z1,7/8w);
+       z3-z1=whatever*dir76;
+       y3=y1-interline;
+       rest_crook (z3,7/8w);
+       z4-z1=whatever*dir76;
+       y4=y1-2interline;
+       rest_crook (z4,7/8w);
+%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
+       fet_endchar;
+
+fet_beginchar("64th rest","6","sixtyfourthrest");
+       set_char_box(0,4/3interline#,0, 5/3interline#+3interline#+2stafflinethickness#);
+       save x,y;
+       x1=w-stem/6; y1=h-flare/4;
+       z2-z1=whatever*dir78;
+       y2=stem/2;
+       brush (z1,stem/2,z2,stem);
+       rest_crook (z1,7/8w);
+       z3-z1=whatever*dir78;
+       y3=y1-interline;
+       rest_crook (z3,7/8w);
+       z4-z1=whatever*dir78;
+       y4=y1-2interline;
+       rest_crook (z4,7/8w);
+       z5-z1=whatever*dir78;
+       y5=y1-3interline;
+       rest_crook (z5,7/8w);
+%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
+       fet_endchar;
+
+fet_beginchar("128th rest","7","hundredtwentyeighthrest"); 
+       set_char_box(0, 4/3interline#, 0, 5/3interline#+4interline#+2stafflinethickness#);
+       save x,y;
+       x1=w-stem/6; y1=h-flare/4;
+       z2-z1=whatever*dir80;
+       y2=stem/2;
+       brush (z1,stem/2,z2,stem);
+       rest_crook (z1,7/8w);
+       z3-z1=whatever*dir80;
+       y3=y1-interline;
+       rest_crook (z3,7/8w);
+       z4-z1=whatever*dir80;
+       y4=y1-2interline;
+       rest_crook (z4,7/8w);
+       z5-z1=whatever*dir80;
+       y5=y1-3interline;
+       rest_crook (z5,7/8w);
+       z6-z1=whatever*dir80;
+       y6=y1-4interline;
+       rest_crook (z6,7/8w);
+%      currentpicture:=currentpicture shifted (0,2stafflinethickness);
+       fet_endchar;
+
+endgroup;
+fet_endgroup("rests");
+
diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf
new file mode 100644 (file)
index 0000000..97c2dab
--- /dev/null
@@ -0,0 +1,19 @@
+
+input feta-macros;
+
+make_pen_stack;
+make_picture_stack;
+input feta-params;
+
+
+test:= 0;
+if test = 0: 
+       input feta-eindelijk;
+       input feta-toevallig;
+       input feta-puntje;
+       input feta-bolletjes;
+       input feta-schrift;
+       input feta-banier;
+else:
+       input foo;
+fi
diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf
new file mode 100644 (file)
index 0000000..7666427
--- /dev/null
@@ -0,0 +1,143 @@
+%
+% debugging
+%
+def test_grid =
+if test>1:
+       proofrulethickness 1pt#;
+       makegrid(0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor)
+               (0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor);
+       proofrulethickness .1pt#;
+       makegrid(0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor)
+               (0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor);
+fi
+       enddef;
+
+def treq =
+       tracingequations := tracingonline := 1;
+enddef;
+
+
+%
+% Transforms
+%
+
+def scaledabout(expr point, scale) =
+       shifted -point scaled scale shifted point
+enddef;
+
+%
+% Urgh! Want to do parametric types
+%
+
+def del_picture_stack=
+       save save_picture_stack, picture_stack_idx;
+enddef;
+
+% better versions of Taupin/Egler savepic cmds
+%
+%
+def make_picture_stack = 
+       % override previous stack.
+       del_picture_stack;
+       picture save_picture_stack[];
+       numeric picture_stack_idx;
+       picture_stack_idx := 0;
+       def push_picture(expr p) = 
+               save_picture_stack[picture_stack_idx] := p ;
+               picture_stack_idx := picture_stack_idx + 1;
+       enddef;
+       def pop_picture =  save_picture_stack[decr picture_stack_idx] enddef;
+       def top_picture = save_picture_stack[picture_stack_idx] enddef;
+enddef;
+
+
+% save/restore pens
+% why can't I delete individual pens?
+def make_pen_stack =
+       del_pen_stack;
+       pen save_pen_stack[];
+       numeric pen_stack_idx;
+       pen_stack_idx := 0;
+       def push_pen(expr p) = 
+               save_pen_stack[pen_stack_idx] := p ;
+               pen_stack_idx := pen_stack_idx +1;
+       enddef;
+       def pop_pen =  save_pen_stack[decr pen_stack_idx] enddef;
+       def top_pen = save_pen_stack[pen_stack_idx] enddef;
+enddef;
+def del_pen_stack=
+       save save_pen_stack, pen_stack_idx;
+enddef;
+
+%
+% drawing
+%
+
+% a: x diameter
+% b: y diameter
+% err_x: drift of y axis at top
+% err_y: drift of x axis at right
+def distorted_ellipse(expr a,b,err_y,err_x,super) =
+       superellipse((a,err_x),(-err_y,b),(-a,-err_x),(err_y,-b),super);
+       enddef;
+
+def draw_brush(expr a,w,b,v) =
+       save x,y;
+       z1=a; z2=b;
+       penpos3(w,angle(z2-z1)+90);
+       penpos4(w,angle(z2-z1));
+       penpos5(v,angle(z1-z2)+90);
+       penpos6(v,angle(z1-z2));
+       z3 = z4 = z1;
+       z5 = z6 = z2;
+
+       fill z3r{z3r-z5l}..z4l..{z5r-z3l}z3l..z5r{z5r-z3l}..z6l..{z3r-z5l}z5l..cycle;
+enddef;
+
+def brush(expr a,w,b,v) =
+       begingroup;
+       draw_brush(a,w,b,v);    
+       penlabels(3,4,5,6);
+       endgroup;
+enddef;
+
+def draw_rounded_path(expr p, thick) =
+       push_pen(currentpen);
+       fill p;
+       pickup pencircle scaled thick;
+       draw p;
+       currentpen := pop_pen;
+enddef;
+
+%
+%
+%
+def balled_crook(expr a, w, balldiam, stem) =
+begingroup;
+       save x,y;
+       penpos1(balldiam/2,-90);
+       penpos2(balldiam/2,0);
+       penpos3(balldiam/2,90);
+       penpos4(balldiam/2,180);
+       x4r=xpart a-w; y3r=ypart a+balldiam/4;
+       x1l=x2l=x3l=x4l;
+       y1l=y2l=y3l=y4l;
+       penpos5(stem,250);
+       x5=x4r+9/8balldiam; y5r=y1r;
+       penpos6(stem,260);
+       x6l=xpart a; y6l=ypart a;
+       penstroke z1e..z2e..z3e..z4e..z1e..z5e{right}..z6e;
+       penlabels(1,2,3,4,5,6);
+endgroup;
+enddef;
+
+def y_mirror_char =
+       currentpicture := currentpicture yscaled -1;
+       set_char_box(charbp, charwd, charht, chardp);
+enddef;
+
+
+def xy_mirror_char =
+       currentpicture := currentpicture scaled -1;
+       set_char_box(charwd, charbp, charht, chardp);
+enddef;
diff --git a/mf/feta-params.mf b/mf/feta-params.mf
new file mode 100644 (file)
index 0000000..ea95ec3
--- /dev/null
@@ -0,0 +1,35 @@
+
+interline#:=staffsize#/(stafflines-1);
+
+%
+%  [D.K.Roush & J.S.Gourlay] say this should be 0.072
+% We know better
+% generally, the "blackness" of most chars depends on this.
+%
+stafflinethickness#:=0.1 interline#;
+
+stemthickness# := stafflinethickness#;
+ledgerlinethickness# := 1.5 stafflinethickness#;
+
+define_pixels(interline, 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
+% characters have sharp edges and corners
+% The following variable controls the amount of "roundness"
+%
+% this is not a meta variable: it is related to absolute sizes.
+%
+numeric blot_diameter;
+blot_diameter# = .4pt#;
+define_pixels(blot_diameter);
diff --git a/mf/feta-puntje.mf b/mf/feta-puntje.mf
new file mode 100644 (file)
index 0000000..7675bef
--- /dev/null
@@ -0,0 +1,13 @@
+fet_begingroup("dots");
+
+fet_beginchar("duration dot","dot", "dot")
+       save dot_diam;
+       2 dot_diam# = interline# - stafflinethickness#;
+       define_pixels(dot_diam)
+       pickup pencircle scaled dot_diam;
+       draw (dot_diam/2,0);
+       set_char_box(0, dot_diam#, dot_diam#/2, dot_diam#/2);
+fet_endchar;
+
+
+fet_endgroup("dots");
diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf
new file mode 100644 (file)
index 0000000..4600513
--- /dev/null
@@ -0,0 +1,329 @@
+%
+% scripts
+%
+
+
+fet_begingroup("foobars")
+
+
+def draw_fermata =
+       save alpha, radius, crook_thinness, crook_fatness, dot_diam;
+       
+       % [Wanske] and some  Baerenreiter editions
+       % suggest ca 80 degrees iso half-circle
+       alpha := 10;
+
+       radius# = 1.5 interline#;
+       crook_thinness# = 1.5stafflinethickness#;
+       crook_fatness# = 4 stafflinethickness#;
+
+       radius# + crook_fatness#/2 = h#;
+       radius# + crook_thinness#/2 = w#;
+       set_char_box(w#, w#, 0, h#);
+       
+       define_pixels(radius, crook_thinness, crook_fatness);
+       dot_diam = 4/3 crook_fatness;
+
+
+       penpos1(crook_thinness, 0);
+       penpos2(crook_fatness, -90);
+       z1 = (-radius,0);
+       z2 = (0, radius);
+
+       fill z1l{dir (-alpha-90)}..{dir (90-alpha)}z1r..
+               {right}z2r -- z2l{left} .. cycle;
+
+       addto currentpicture also 
+               currentpicture xscaled -1;
+
+       pickup pencircle scaled dot_diam;
+       x4 =0;
+       bot y4 = - crook_thinness/2;
+       draw z4;
+enddef;
+
+fet_beginchar("fermata up", "ufermata", "ufermata")
+       draw_fermata;   
+       penlabels(1,2,4);
+fet_endchar;
+
+fet_beginchar("fermata down", "dfermata", "dfermata")
+       draw_fermata;
+       currentpicture:=currentpicture yscaled -1 ;
+       set_char_box(w#, w#, h#, 0);
+       
+fet_endchar;
+
+
+%
+% FIXME: rounded endings
+%
+% `\accent' is TeX reserved.
+fet_beginchar("> accent", "accent", "sforzatoaccent")
+       set_char_box(.9 interline#, .9 interline#, .5 interline#, .5 interline#);
+       save thickness, diminish;
+
+       thickness = 2 stafflinethickness;
+
+       % prevent blobs at crossing lines
+       diminish = .75;
+
+       y1 + thickness/2 = h;
+       x1 = -b;
+       x2 = w;
+       y2 = .25 thickness* diminish;
+
+       z4 = (w,0);
+       x3 =0;
+       z3 = whatever [z1, z4];
+
+       penpos2(thickness*(2 - diminish)/2 , 90);
+       penpos1(thickness, 90);
+       penpos3(thickness, 90);
+
+       penstroke z1e .. z3e .. z2e;
+       penstroke (z1e .. z3e .. z2e) yscaled -1;
+
+       penlabels(1,2,3);
+fet_endchar;
+
+fet_beginchar("staccato dot", "staccato", "staccato")
+       save radius;
+       radius# = 1.25 stafflinethickness#;
+       define_pixels(radius);
+       pickup pencircle scaled 2 radius;
+       draw (0,0);
+       set_char_box(radius#, radius#, radius#, radius#);
+fet_endchar;
+
+def draw_staccatissimo =
+       save radius, height;
+       height# = .8 interline#;
+       radius# = 2 stafflinethickness#;
+       define_pixels(radius, height);
+
+       draw_brush((0,0), blot_diameter, (0, height),2 radius);
+       set_char_box(radius#,radius#, blot_diameter#/2, height# + radius#);
+enddef;
+
+fet_beginchar("staccatissimo/martellato up", "ustaccatissimo", 
+               "ustaccatissimo")
+       draw_staccatissimo;
+fet_endchar;
+
+%
+% FIXEM: scale labels too.
+%
+fet_beginchar("staccatissimo/martellato down", "dstaccatissimo", "dstaccatissimo")
+       draw_staccatissimo;
+       y_mirror_char;
+fet_endchar;
+
+fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
+       save thick;
+       thick# = 1.2 stafflinethickness#;
+       define_pixels(thick);
+
+       set_char_box(.9 interline#, .9 interline#, thick#/2,thick#/2);
+       pickup pencircle scaled thick;
+       lft x1 = -b;
+       rt x2 = w;
+       y1 = y2 = 0;
+       draw z1 .. z2;
+fet_endchar;
+
+
+def draw_marcato = 
+       save fatness, thinness;
+       set_char_box(interline#/2, interline#/2, 0, 1.1 interline#);
+
+       fatness = 3 stafflinethickness;
+       thinness = .8 stafflinethickness;
+       x2 - x1  + blot_diameter = fatness;
+       x2 + thinness/2 = w;
+       
+       y1 = y2;
+       y1 = thinness/2;
+       z2 - z3 = whatever * (charwd, -charht);
+       z1 - z4 = whatever * (charwd, -charht);
+       z3 - z4 = whatever * (charwd, charht);
+       y3 + thinness/2 = h;
+       draw_rounded_path(z1 -- z2 -- z3 -- z4 -- cycle, thinness);
+
+       pickup pencircle scaled thinness;
+       z3 - z5 = whatever* (z3 - z4);
+       bot y5 = 0;
+       draw z3 .. z5;
+enddef;
+
+fet_beginchar("marcato up", "umarcato", "umarcato")
+       draw_marcato;
+       labels(1,2,3,4,5);
+fet_endchar;
+
+
+%
+% The down marcato char (not very much used). 
+% Contrary to what some MF/TeX `gurus' believe
+% it is *point*-symmetric with the "up" version; (at least [Chlapik] 
+% agrees with us)
+%
+fet_beginchar("marcato down", "dmarcato", "dmarcato")
+       draw_marcato;
+       xy_mirror_char;
+fet_endchar;
+fet_beginchar("open (unstopped)", "open", "ouvert")
+       save thin, height, width, thick;
+       height# = 5/4 width#;
+       height# = 7/8 interline#;
+       thin = 1.2 stafflinethickness;
+       thick =  1.4 thin;
+       set_char_box(width#/2, width#/2, 0, height#);
+       
+       penpos1(thick, 0);
+       penpos2(thin, 90);
+       z1r = (w,h/2);
+       z2r = (0, h);
+       penlabels(1,2);
+       penstroke z1e{up} .. {left}z2e;
+       addto currentpicture also currentpicture xscaled -1;
+       addto currentpicture also currentpicture reflectedabout((w,h/2), (0,h/2));
+fet_endchar;
+
+
+fet_beginchar("plus (stopped)", "stopped", "plusstop")
+       save thick, size;
+       thick = 2 stafflinethickness;
+       size# = 1.1 interline#;
+
+       set_char_box(size#/2, size#/2, size#/2, size#/2);
+       pickup pencircle scaled thick;
+
+       rt x1 = w;
+       y1 = 0;
+       z2 = -z1;
+
+       draw z1 .. z2;
+       draw (z1 .. z2) rotated 90;
+fet_endchar;
+
+%
+% FIXME: blotting 
+%
+fet_beginchar("Upbow", "upbow", "upbow")
+       save ht, wd, thick;
+
+       thick = 1.4 stafflinethickness;
+       wd# = 1.3 interline#;
+       ht# = 3/2 wd#; 
+
+       
+       set_char_box(wd#/2, wd#/2, 0, ht#);
+       pickup pencircle scaled thick;
+
+       x1 = 0;
+       bot y1 = 0;
+       rt x2 =  w;
+       top y2 = h;
+
+       labels(1,2);
+       draw z2 -- z1 -- (z2 xscaled -1);
+fet_endchar;
+
+
+fet_beginchar("Downbow", "downbow", "downbow")
+       save stemthick, beamheight;
+       save wd;
+       define_pixels(wd)
+
+       wd# = 7/4 interline#;
+       stemthick = 1.2 stafflinethickness;
+
+       set_char_box(wd#/2, wd#/2, 0, interline#);
+
+       beamheight = 4/10 h;
+
+
+       pickup pencircle scaled blot_diameter;
+       top y2 - bot y1  = beamheight;
+       top y2 = h;
+       rt x1 = w;
+       x1 = x2;
+       y2 = y3;
+       y1 = y4;
+       x3 = 0;
+       x4 = x3;
+       save p;
+       path p;
+       p := z1 -- z2 -- z3 -- z4 --cycle;
+       draw_rounded_path(p, blot_diameter);
+       pickup pencircle scaled stemthick;
+
+       bot y5 =0;
+       rt x5 = rt x6 = w;
+       y6 = h - beamheight;
+       draw z6 -- z5;
+       labels(1, 2,3,4,5,6);
+       addto currentpicture also currentpicture xscaled -1;
+fet_endchar;
+
+%
+% FIXME the middle part (NW -> SE) may have some more (ok; it is
+% negative: less) slope
+%
+fet_beginchar("Turn","turn","turn")
+       save thin, thick, ball_diam, darkness;
+       save wd, ht, thick_nibangle, ball_nib_thick;
+       save turndir;
+       pair turndir;
+
+       wd# = 35/16 interline#;
+       ht# = 18/17 interline#;
+       darkness = 1.3 stafflinethickness;
+
+       set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);
+
+       thick_nibangle = 60;
+       thick = 3 darkness;
+       thin = darkness;
+       ball_nib_thick = 2.7 darkness;
+       ball_diam = ball_nib_thick + (h - ball_nib_thick) / 10;
+
+       
+       x3l = w;
+       y3 = 0;
+       y4l = h;
+       x4 = x2;
+       x2l = w/2;
+       y2l = -d;
+       z1 = (0,0);
+
+       penpos1(1.1 thick, thick_nibangle);
+       penpos2(thick, thick_nibangle);
+       penpos3(thin, 180);
+       penpos4(ball_nib_thick, -90);
+
+       path swoosh, ploop;
+       swoosh :=  z1l{curl 0} .. z2l .. z3l{up} .. {left}z4l 
+         -- z4r .. z3r{down} .. z2r{left} ;
+       fill swoosh .. (swoosh scaled -1) .. cycle;
+       penlabels(2,3,4);
+
+       x5r = x4;
+       y5r = y4l - ball_diam /2;
+       z6r = z5r;
+
+       penpos5(1.6 ball_diam/2, 10);
+       penpos6(ball_diam/2, 150);
+
+       ploop := z4l{left} .. z5l .. z6l -- cycle;
+       fill ploop;
+       fill ploop scaled -1;
+
+
+       penlabels(5,6,7);
+       
+fet_endchar;
+
+fet_endgroup("foobars");
diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf
new file mode 100644 (file)
index 0000000..a0865df
--- /dev/null
@@ -0,0 +1,199 @@
+%
+% Accidentals from various sources, notably
+%
+%   Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural, flat)
+%   F Hofmeister edition of Muellers `Etueden fuer Horn'  (double sharp)
+%
+
+
+%tracingall;
+%proofing := 2;
+%\tracingequations:= tracingonline := 1;
+
+fet_begingroup("accidentals");
+
+fet_beginchar("Sharp" , "1", "sharp");
+       set_char_box(0, 1.1 interline#, 1.5 interline#, 
+               1.5 interline#);
+
+       save interbeam, interstem, beamheight, beamwidth, 
+               stemwidth;
+
+       interbeam := 1.1 interline;
+       interstem := 7/16 ;
+       beamheight := 4 stafflinethickness;
+       beamwidth := w;
+       stemwidth := 1.3 stafflinethickness;
+       roundness := blot_diameter;
+       pair center;
+       center := (.5 w, 0);
+       
+       roundness + 2 spanwidth = beamwidth;
+       roundness + 2 spanheight = beamheight;
+
+       2 horizontal_protrusion  + interstem * beamwidth + stemwidth
+               = beamwidth;
+       
+% wanske: whole beamheight; or ca 18 degrees
+%      z2 - z1 = (beamwidth - roundness, beamheight/2);
+       z2 - z1 = (beamwidth - roundness, beamheight);
+       z1 + z2 = 2*center;
+       beamslope = (y2-y1)/(x2-x1);
+
+       pair hspan, vspan;
+       hspan = (spanwidth, beamslope * spanwidth);
+       vspan = (0, spanheight);
+
+       
+       path beam;
+       beam := (hspan + vspan -- -hspan 
+               +  vspan -- -hspan -vspan -- hspan - vspan -- cycle )
+               shifted center;
+
+       draw_rounded_path((beam shifted (0,-interbeam/2)), roundness);
+       draw_rounded_path((beam shifted (0,interbeam/2)), roundness);
+
+       pickup pencircle scaled stemwidth;
+       x3 = x4 = xpart center;
+       bot y3 = -1.5 interline + ypart center;
+       top y4 = 1.5 interline + ypart center;
+
+       path stem;
+       stem := z3 .. z4;
+       numeric xs;
+       xs := interstem* beamwidth / 2;
+       draw stem shifted (- xs, - xs* beamslope);
+       draw stem shifted (xs , xs *beamslope);
+       labels(1,2,3,4);
+       fet_endchar;
+
+fet_beginchar( "Natural", "0", "natural")
+       set_char_box(0, 8/12 interline#, 1.5 interline#, 1.5 interline#);
+
+       save interbeam, interstem, beamheight, beamwidth, 
+               stemwidth;
+
+       beamheight = 4.5 stafflinethickness;
+       interstem + stemwidth =  w;
+       stemwidth = 1.3 stafflinethickness;
+
+       z2 -z1 = (interstem, slope * interstem);
+       xpart .5 [z2,z1] = xcenter ;
+       xcenter = w/2;
+
+
+       pickup penrazor scaled beamheight rotated 90;
+       top y2 = interline - 3/2 stafflinethickness ;
+       slope =  stafflinethickness / interstem;
+       
+       draw z1 .. z2;
+       draw (xpart z1, -y2) .. (xpart z2, -y1);
+       beamtop = top y2;
+       
+       pickup pencircle scaled stemwidth;
+       xpart z3 = xpart z1;
+       xpart z4 = xpart z2;
+       top y3 = 1.5 interline;
+       top y4 = beamtop;
+
+       draw (xpart z1, -y4) .. z3;
+       draw (xpart z2, -y3) .. z4;
+
+       labels(1,2,3,4);
+       fet_endchar;
+
+%
+% Dedicated to my mom.    (3/10/97)
+%
+% Mamma, ik hou van je; kom je alsjeblieft terug? 
+%    -- HW
+%
+
+%
+% FIXME more metaness
+% FIXME distribution of the crooks' thickness
+%
+% FIXME probably doesn't look quite right. 
+%
+
+def flat_meta_symbol(expr w, d, h, 
+        stemwidth, crook_fatness, crook_thinness,
+       bottom_stem_thick, top_stem_thick)=
+
+       z1 = (0, h);
+       z2 = (0, -d);
+       brush(z1, top_stem_thick , z2, bottom_stem_thick);
+       
+       z3 = (0, 7/16 interline);
+       z4 = z3 + whatever * (dir 30);
+       y4 = 1/2 interline ;
+       y5 = 4/16 interline;
+       x5 + crook_fatness/2 = w;
+       z6 = z2 + (0,-1) * (bottom_stem_thick - crook_thinness);
+
+       penpos3(crook_thinness, 90);
+       penpos4(crook_thinness, 90);
+       penpos5(crook_fatness, 0);
+       penpos6(crook_thinness, -90);
+       labels(1,2,3,4,5,6);
+       penstroke z3e{dir 32} .. z4e{dir 30} .. z5e{down} .. {dir 220}z6e;
+       enddef;
+       
+def flat_symbol (expr w, d, h)=
+       save stemwidth, bottom_stem_thick, top_stem_thick, 
+               crook_thinness, crook_fatness;
+       stemwidth = stafflinethickness;
+       crook_fatness = 1/4 interline;
+       crook_thinness =  stemwidth;
+       bottom_stem_thick =  5/4 stemwidth;
+       top_stem_thick = 2 stemwidth;
+       flat_meta_symbol(w,d,h, stemwidth, crook_fatness, crook_thinness, 
+               bottom_stem_thick, top_stem_thick);
+       enddef;
+
+%
+% unfortunately, 600dpi is not enough to show the brush of the stem.
+%
+fet_beginchar("Flat", "-1", "flat")
+       set_char_box(0, 9/12 interline#, .5 interline#, 2 interline#);
+       flat_symbol (w, d, h);
+       fet_endchar;
+
+fet_beginchar("Double flat", "-2", "flatflat")
+       set_char_box(0, 18/12 interline#, .5 interline#, 2 interline#);
+       flat_symbol(w/2, d, h);
+       addto currentpicture also currentpicture
+               shifted (w/2 - stafflinethickness/2,0);
+       fet_endchar;
+       
+
+fet_beginchar("Double sharp", "2", "sharpsharp")
+       set_char_box(0, interline#, .5 interline#, .5 interline#);
+       save klaverblad, klaversteel;
+
+       klaversteel = 1/12 interline;
+       klaverblad = 1/3 interline;
+
+       z1 = (klaversteel, 0);
+       z2 = (w/2 - klaverblad / 10, h - klaverblad);
+       z3 = (w/2, h);
+       z4 = z2 reflectedabout((0,0), (1,1));
+       z5 = z1 reflectedabout((0,0), (1,1));
+
+%      labels(1,2,3,4,5);
+       draw_rounded_path(  
+               z1{dir 45} .. {right}z2 -- z3 -- z4{down} .. {dir 225}z5 .. cycle,
+       1/20 interline);
+
+       addto currentpicture also currentpicture yscaled (-d/h);
+       addto currentpicture also currentpicture xscaled (-1);
+
+       % ugh
+       currentpicture := currentpicture  shifted (w/2,0);
+
+
+       fet_endchar;
+
+
+fet_endgroup("accidentals");
+
index 62ad5259427d871c65847650886459a054c67758..80ccfadeec197b758159fa9afaccac70b13e795d 100644 (file)
@@ -13,7 +13,7 @@ staffsize#:=16pt#;
 stafflines:=5;
 code:=-1;
 
-input generic-tja;
+input feta-generic;
 
 fet_endfont("font-en-tja");
 
index abc685f41796c439ad0f7a7fab138c8e99443afc..c7e35a13ed98dc51e3d38937e29f43a7d0f3c73b 100644 (file)
@@ -11,7 +11,7 @@ stafflines:=5;
 stafflinethickness#:=0.4pt#;
 code:=-1;
 
-input generic-tja;
+input feta-generic;
 
 fet_endfont("font-en-tja");
 
diff --git a/mf/generic-macros.mf b/mf/generic-macros.mf
deleted file mode 100644 (file)
index b6b26ed..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-
-%
-% debugging
-%
-def test_grid =
-if test>1:
-       proofrulethickness 1pt#;
-       makegrid(0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor)
-               (0pt,0pt for i:=-5pt step 1pt until 5pt: ,i endfor);
-       proofrulethickness .1pt#;
-       makegrid(0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor)
-               (0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor);
-fi
-       enddef;
-%
-% Transforms
-%
-
-def scaledabout(expr point, scale) =
-       shifted -point scaled scale shifted point
-enddef;
-
-%
-% Urgh! Want to do parametric types
-%
-
-def del_picture_stack=
-       save save_picture_stack, picture_stack_idx;
-enddef;
-
-% better versions of Taupin/Egler savepic cmds
-%
-%
-def make_picture_stack = 
-       % override previous stack.
-       del_picture_stack;
-       picture save_picture_stack[];
-       numeric picture_stack_idx;
-       picture_stack_idx := 0;
-       def push_picture(expr p) = 
-               save_picture_stack[picture_stack_idx] := p ;
-               picture_stack_idx := picture_stack_idx + 1;
-       enddef;
-       def pop_picture =  save_picture_stack[decr picture_stack_idx] enddef;
-       def top_picture = save_picture_stack[picture_stack_idx] enddef;
-enddef;
-
-
-% save/restore pens
-% why can't I delete individual pens?
-def make_pen_stack =
-       del_pen_stack;
-       pen save_pen_stack[];
-       numeric pen_stack_idx;
-       pen_stack_idx := 0;
-       def push_pen(expr p) = 
-               save_pen_stack[pen_stack_idx] := p ;
-               pen_stack_idx := pen_stack_idx +1;
-       enddef;
-       def pop_pen =  save_pen_stack[decr pen_stack_idx] enddef;
-       def top_pen = save_pen_stack[pen_stack_idx] enddef;
-enddef;
-def del_pen_stack=
-       save save_pen_stack, pen_stack_idx;
-enddef;
-
-%
-% drawing
-%
-
-% a: x diameter
-% b: y diameter
-% err_x: drift of y axis at top
-% err_y: drift of x axis at right
-def distorted_ellipse(expr a,b,err_y,err_x,super) =
-       superellipse((a,err_x),(-err_y,b),(-a,-err_x),(err_y,-b),super);
-       enddef;
-
-def brush(expr a,w,b,v) =
-       begingroup;
-       save x,y;
-       z1=a; z2=b;
-       penpos3(w,angle(z2-z1)+90);
-       penpos4(w,angle(z2-z1));
-       penpos5(v,angle(z1-z2)+90);
-       penpos6(v,angle(z1-z2));
-       z3 = z4 = z1;
-       z5 = z6 = z2;
-
-       fill z3r{z3r-z5l}..z4l..{z5r-z3l}z3l..z5r{z5r-z3l}..z6l..{z3r-z5l}z5l..cycle;
-       penlabels(3,4,5,6);
-       endgroup;
-enddef;
-
-def draw_rounded_path(expr p, thick) =
-       push_pen(currentpen);
-       fill p;
-       pickup pencircle scaled thick;
-       draw p;
-       currentpen := pop_pen;
-enddef;
-
-%
-%
-%
-def balled_crook(expr a, w, balldiam, stem) =
-begingroup;
-       save x,y;
-       penpos1(balldiam/2,-90);
-       penpos2(balldiam/2,0);
-       penpos3(balldiam/2,90);
-       penpos4(balldiam/2,180);
-       x4r=xpart a-w; y3r=ypart a+balldiam/4;
-       x1l=x2l=x3l=x4l;
-       y1l=y2l=y3l=y4l;
-       penpos5(stem,250);
-       x5=x4r+9/8balldiam; y5r=y1r;
-       penpos6(stem,260);
-       x6l=xpart a; y6l=ypart a;
-       penstroke z1e..z2e..z3e..z4e..z1e..z5e{right}..z6e;
-       penlabels(1,2,3,4,5,6);
-endgroup;
-enddef;
-
-def y_mirror_char =
-       currentpicture := currentpicture yscaled -1;
-       set_char_box(charbp, charwd, charht, chardp);
-enddef;
-
diff --git a/mf/generic-params.mf b/mf/generic-params.mf
deleted file mode 100644 (file)
index 690e415..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-
-interline#:=staffsize#/(stafflines-1);
-
-%
-%  [D.K.Roush & J.S.Gourlay] say this should be 0.072
-% We know better
-% generally, the "blackness" of most chars depends on this.
-%
-stafflinethickness#:=0.1 interline#;
-
-define_pixels(interline);
-define_pixels(stafflinethickness);
-
-% 
-% Because of the engraving/stamping process, no traditional
-% characters have sharp edges and corners
-% The following variable controls the amount of "roundness"
-%
-numeric blot_diameter;
-
-%
-% this is not a meta variable: it is related to absolute sizes.
-%
-blot_diameter# = .4pt#;
-define_pixels(blot_diameter);
diff --git a/mf/generic-tja.mf b/mf/generic-tja.mf
deleted file mode 100644 (file)
index 2d890ee..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-input generic-macros;
-
-make_pen_stack;
-make_picture_stack;
-input generic-params;
-
-
-test:=0;
-if test = 0: 
-       input eindelijk;
-       input toevallig;
-       input puntje;
-       input bolletjes;
-       input schrift;
-else:
-%      input klef;
-fi
diff --git a/mf/klef.mf b/mf/klef.mf
deleted file mode 100644 (file)
index 47980e1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-
-% implement clefs 
-fet_begingroup("foobars")
-
-
-fet_beginchar("F clef", "bassclef", "bassclef");
-       set_char_box(0,0,0,0);
-fet_endchar;
-
-fet_beginchar("G clef", "evolinclef", "evolinclef");
-       save tilt;
-       tilt = 15;
-
-       inner_fatness = 5 stafflinethickness;
-       upstroke_fatness = 7 stafflinethickness;
-       top_curl_fatness = 4 stafflinethickness;
-       inner_thinness = 2 stafflinethickness;  
-       downstroke_thinness = 1.5 stafflinethickness;
-
-       z1 = 6/10 interline * dir(-135);
-       z3 = (0, interline - inner_fatness/2);
-       x5 = x1;
-       y5 = -interline;
-       z7 = (-1.25 interline, -.5 interline);
-       z9 = whatever * dir (90 + tilt);
-       y9 = 2.1 interline;
-       y12 + top_curl_fatness = 4 interline;
-       x12 = 0;
-       z13 = z9;
-       z15 = 1.5 interline * dir (tilt -90);
-       
-
-       penpos1(blot_diameter, 45);
-       penpos3(inner_fatness, -90);
-       penpos5(inner_thinness, 90);
-       penpos7(inner_thinness, 45);
-       penpos9(upstroke_fatness, tilt -90);
-       penpos12(top_curl_fatness, 90);
-       penpos13(downstroke_thinness, tilt-90);
-       penpos15(downstroke_thinness, tilt-90);
-       set_char_box(0,0,0,0);
-
-       penstroke z1e{dir 135} .. z3e ..  {left}z5e .. z7e ..  tension 1.2 .. z9e;% & z9e..  z12e .. z13e .. z15e;
-       penlabels(1,3,5,7, 9,12,13,15);
-fet_endchar;
-fet_endgroup("foobars");
diff --git a/mf/mfbug.mf b/mf/mfbug.mf
new file mode 100644 (file)
index 0000000..5837988
--- /dev/null
@@ -0,0 +1,21 @@
+% is this OK? Or is it a bug;
+% changing the order of z1l and z1r in reflectedabout 
+% stops mf from complaining
+fet_beginchar("open (unstopped)", "open", "ouvert")
+       save thin, height, width, thick;
+       height# = 5/4 width#;
+       height# = 2/3 interline#;
+       thin = .9 stafflinethickness;
+       thick =  1.4 thin;
+       set_char_box(width#/2, width#/2, 0, height#);
+       
+       penpos1(thick, 0);
+       penpos2(thin, 90);
+       z1r = (w,h/2);
+       z2r = (0, h);
+       penlabels(1,2);
+       penstroke z1e{up} .. {left}z2e;
+       addto currentpicture also currentpicture xscaled -1;
+       addto currentpicture also currentpicture reflectedabout(z1l, z1r);
+fet_endchar;
+fet_endgroup("foobars");
diff --git a/mf/puntje.mf b/mf/puntje.mf
deleted file mode 100644 (file)
index 7675bef..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-fet_begingroup("dots");
-
-fet_beginchar("duration dot","dot", "dot")
-       save dot_diam;
-       2 dot_diam# = interline# - stafflinethickness#;
-       define_pixels(dot_diam)
-       pickup pencircle scaled dot_diam;
-       draw (dot_diam/2,0);
-       set_char_box(0, dot_diam#, dot_diam#/2, dot_diam#/2);
-fet_endchar;
-
-
-fet_endgroup("dots");
diff --git a/mf/schrift.mf b/mf/schrift.mf
deleted file mode 100644 (file)
index d53b016..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-fet_begingroup("foobars")
-
-
-def draw_fermata =
-       save alpha, radius, crook_thinness, crook_fatness, dot_diam;
-       
-       radius# = 1.5 interline#;
-       crook_thinness# = 1.5stafflinethickness#;
-       crook_fatness# = 4 stafflinethickness#;
-
-       radius# + crook_fatness#/2 = h#;
-       radius# + crook_thinness#/2 = w#;
-       set_char_box(w#, w#, 0, h#);
-       
-       define_pixels(radius, crook_thinness, crook_fatness);
-       dot_diam = 4/3 crook_fatness;
-
-
-       penpos1(crook_thinness, 0);
-       penpos2(crook_fatness, -90);
-       penpos3(crook_thinness, -180);
-       z1 = (-radius,0);
-       z2 = (0, radius);
-       z3 = (radius,0);
-       
-%      fill z1l{down} .. {up}z1r .. z2r .. z3r{down} .. {up}z3l
-%              .. z2l .. cycle;
-       % wanske, baerenreiter suggest ca 80 degrees iso half-circle
-       % ugh?
-       alpha := 10;
-%      penstroke z1e{dir (90-alpha)}..z2e..{dir (alpha-90)}z3e;
-       % isn't this ugly to get rounded edges?
-       fill z1l{dir (-alpha-90)}..{dir (90-alpha)}z1r..z2r..
-               z3r{dir (alpha-90)}..{dir (90+alpha)}z3l..z2l..cycle;
-
-       pickup pencircle scaled dot_diam;
-       x4 =0;
-       bot y4 = - crook_thinness/2;
-       draw z4;
-enddef;
-
-fet_beginchar("fermata up", "ufermata", "ufermata")
-       draw_fermata;   
-       penlabels(1,2,3);
-       fet_endchar;
-
-fet_beginchar("fermata down", "dfermata", "dfermata")
-       draw_fermata;
-       currentpicture:=currentpicture yscaled -1 ;
-       set_char_box(w#, w#, h#, 0);
-       
-       fet_endchar;
-
-
-% FIXME: rounded endings
-%        and thickness at point of join==thickness at end, like ">"
-%
-fet_beginchar("> accent", "accent", "accent")
-       set_char_box(.9 interline#, .9 interline#, .5 interline#, .5 interline#);
-       save thickness, diminish;
-
-       thickness = 2 stafflinethickness;
-
-       % prevent blobs at crossing lines
-       diminish = .75;
-
-       y1 + thickness/2 = h;
-       x1 = -b;
-       x2 = w;
-       y2 = .25 thickness* diminish;
-
-       z4 = (w,0);
-       x3 =0;
-       z3 = whatever [z1, z4];
-
-       penpos2(thickness*(2 - diminish)/2 , 90);
-       penpos1(thickness, 90);
-       penpos3(thickness, 90);
-
-       penstroke z1e .. z3e .. z2e;
-       penstroke (z1e .. z3e .. z2e) yscaled -1;
-
-       penlabels(1,2,3);
-       fet_endchar;
-
-fet_beginchar("staccato dot", "staccato", "staccato")
-       save radius;
-       radius# = 1.25 stafflinethickness#;
-       define_pixels(radius);
-       pickup pencircle scaled 2 radius;
-       draw (0,0);
-       set_char_box(radius#, radius#, radius#, radius#);
-fet_endchar;
-
-def draw_staccatissimo =
-       save radius, height;
-       height# = .8 interline#;
-       radius# = 2 stafflinethickness#;
-       define_pixels(radius, height);
-
-       brush((0,0), blot_diameter, (0, height),2 radius);
-       set_char_box(radius#,radius#, blot_diameter#/2, height# + radius#);
-enddef;
-
-fet_beginchar("staccatissimo/martellato up", "ustaccatissimo", "ustaccatissimo")
-       draw_staccatissimo;
-fet_endchar;
-
-%
-% FIXEM: scale labels too.
-%
-fet_beginchar("staccatissimo/martellato down", "dstaccatissimo", "dstaccatissimo")
-       draw_staccatissimo;
-       y_mirror_char;
-fet_endchar;
-
-fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
-       save thick;
-       thick# = 1.2 stafflinethickness#;
-       define_pixels(thick);
-
-       set_char_box(.9 interline#, .9 interline#, thick#/2,thick#/2);
-       pickup pencircle scaled thick;
-       lft x1 = -b;
-       rt x2 = w;
-       y1 = y2 = 0;
-       draw z1 .. z2;
-fet_endchar;
-
-
-def draw_marcato = 
-       save fatness, thinness;
-       set_char_box(interline#/2, interline#/2, 0, 1.1 interline#);
-
-       fatness = 3 stafflinethickness;
-       thinness = .8 stafflinethickness;
-       x2 - x1  + blot_diameter = fatness;
-       x2 + thinness/2 = w;
-       
-       y1 = y2;
-       y1 = thinness/2;
-       z2 - z3 = whatever * (charwd, -charht);
-       z1 - z4 = whatever * (charwd, -charht);
-       z3 - z4 = whatever * (charwd, charht);
-       y3 + thinness/2 = h;
-       draw_rounded_path(z1 -- z2 -- z3 -- z4 -- cycle, thinness);
-
-       pickup pencircle scaled thinness;
-       z3 - z5 = whatever* (z3 - z4);
-       bot y5 = 0;
-       draw z3 .. z5;
-
-       labels(1,2,3,4,5);
-enddef;
-
-fet_beginchar("marcato up", "umarcato", "umarcato")
-       draw_marcato;
-fet_endchar;
-fet_beginchar("marcato down", "dmarcato", "dmarcato")
-       draw_marcato;
-       y_mirror_char;
-fet_endchar;
-
-
-fet_endgroup("foobars");
diff --git a/mf/toevallig.mf b/mf/toevallig.mf
deleted file mode 100644 (file)
index 60aff66..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-%
-% Accidentals from various sources, notably
-%
-%   Baerenreiter edition of Schuberts `Auf dem Strom' (sharp, natural, flat)
-%   F Hofmeister edition of Muellers `Etueden fuer Horn'  (double sharp)
-%
-
-
-%tracingall;
-%proofing := 2;
-%\tracingequations:= tracingonline := 1;
-
-fet_begingroup("accidentals");
-
-fet_beginchar("Sharp" , "1", "sharp");
-       set_char_box(0, 1.1 interline#, 1.5 interline#, 
-               1.5 interline#);
-
-       save interbeam, interstem, beamheight, beamwidth, 
-               stemwidth;
-
-       interbeam := 1.1 interline;
-       interstem := 7/16 ;
-       beamheight := 4 stafflinethickness;
-       beamwidth := w;
-       stemwidth := 1.3 stafflinethickness;
-       roundness := blot_diameter;
-       pair center;
-       center := (.5 w, 0);
-       
-       roundness + 2 spanwidth = beamwidth;
-       roundness + 2 spanheight = beamheight;
-
-       2 horizontal_protrusion  + interstem * beamwidth + stemwidth
-               = beamwidth;
-       
-% wanske: whole beamheight; or ca 18 degrees
-%      z2 - z1 = (beamwidth - roundness, beamheight/2);
-       z2 - z1 = (beamwidth - roundness, beamheight);
-       z1 + z2 = 2*center;
-       beamslope = (y2-y1)/(x2-x1);
-
-       pair hspan, vspan;
-       hspan = (spanwidth, beamslope * spanwidth);
-       vspan = (0, spanheight);
-
-       
-       path beam;
-       beam := (hspan + vspan -- -hspan 
-               +  vspan -- -hspan -vspan -- hspan - vspan -- cycle )
-               shifted center;
-
-       draw_rounded_path((beam shifted (0,-interbeam/2)), roundness);
-       draw_rounded_path((beam shifted (0,interbeam/2)), roundness);
-
-       pickup pencircle scaled stemwidth;
-       x3 = x4 = xpart center;
-       bot y3 = -1.5 interline + ypart center;
-       top y4 = 1.5 interline + ypart center;
-
-       path stem;
-       stem := z3 .. z4;
-       numeric xs;
-       xs := interstem* beamwidth / 2;
-       draw stem shifted (- xs, - xs* beamslope);
-       draw stem shifted (xs , xs *beamslope);
-       labels(1,2,3,4);
-       fet_endchar;
-
-fet_beginchar( "Natural", "0", "natural")
-       set_char_box(0, 8/12 interline#, 1.5 interline#, 1.5 interline#);
-
-       save interbeam, interstem, beamheight, beamwidth, 
-               stemwidth;
-
-       beamheight = 4.5 stafflinethickness;
-       interstem + stemwidth =  w;
-       stemwidth = 1.3 stafflinethickness;
-
-       z2 -z1 = (interstem, slope * interstem);
-       xpart .5 [z2,z1] = xcenter ;
-       xcenter = w/2;
-
-
-       pickup penrazor scaled beamheight rotated 90;
-       top y2 = interline - 3/2 stafflinethickness ;
-       slope =  stafflinethickness / interstem;
-       
-       draw z1 .. z2;
-       draw (xpart z1, -y2) .. (xpart z2, -y1);
-       beamtop = top y2;
-       
-       pickup pencircle scaled stemwidth;
-       xpart z3 = xpart z1;
-       xpart z4 = xpart z2;
-       top y3 = 1.5 interline;
-       top y4 = beamtop;
-
-       draw (xpart z1, -y4) .. z3;
-       draw (xpart z2, -y3) .. z4;
-
-       labels(1,2,3,4);
-       fet_endchar;
-
-%
-% Dedicated to my mom.    (3/10/97)
-%
-% Mamma, ik hou van je; kom je alsjeblieft terug? 
-%    -- HW
-%
-
-%
-% FIXME more metaness
-% FIXME distribution of the crooks' thickness
-%
-% FIXME probably doesn't look quite right. 
-
-def flat_meta_symbol(expr w, d, h, 
-        stemwidth, crook_fatness, crook_thinness,
-       bottom_stem_thick, top_stem_thick)=
-
-       z1 = (0, h);
-       z2 = (0, -d);
-       brush(z1, top_stem_thick , z2, bottom_stem_thick);
-       
-       z3 = (0, 7/16 interline);
-       z4 = z3 + whatever * (dir 30);
-       y4 = 1/2 interline ;
-       y5 = 4/16 interline;
-       x5 + crook_fatness/2 = w;
-       z6 = z2 + (0,-1) * (bottom_stem_thick - crook_thinness);
-
-       penpos3(crook_thinness, 90);
-       penpos4(crook_thinness, 90);
-       penpos5(crook_fatness, 0);
-       penpos6(crook_thinness, -90);
-       labels(1,2,3,4,5,6);
-       penstroke z3e{dir 32} .. z4e{dir 30} .. z5e{down} .. {dir 220}z6e;
-       enddef;
-       
-def flat_symbol (expr w, d, h)=
-       save stemwidth, bottom_stem_thick, top_stem_thick, 
-               crook_thinness, crook_fatness;
-       stemwidth = stafflinethickness;
-       crook_fatness = 1/4 interline;
-       crook_thinness =  stemwidth;
-       bottom_stem_thick =  5/4 stemwidth;
-       top_stem_thick = 2 stemwidth;
-       flat_meta_symbol(w,d,h, stemwidth, crook_fatness, crook_thinness, 
-               bottom_stem_thick, top_stem_thick);
-       enddef;
-
-%
-% unfortunately, 600dpi is not enough to show the brush of the stem.
-%
-fet_beginchar("Flat", "-1", "flat")
-       set_char_box(0, 9/12 interline#, .5 interline#, 2 interline#);
-       flat_symbol (w, d, h);
-       fet_endchar;
-
-fet_beginchar("Double flat", "-2", "flatflat")
-       set_char_box(0, 18/12 interline#, .5 interline#, 2 interline#);
-       flat_symbol(w/2, d, h);
-       addto currentpicture also currentpicture
-               shifted (w/2 - stafflinethickness/2,0);
-       fet_endchar;
-       
-
-fet_beginchar("Double sharp", "2", "sharpsharp")
-       set_char_box(0, interline#, .5 interline#, .5 interline#);
-       save klaverblad, klaversteel;
-
-       klaversteel = 1/12 interline;
-       klaverblad = 1/3 interline;
-
-       z1 = (klaversteel, 0);
-       z2 = (w/2 - klaverblad / 10, h - klaverblad);
-       z3 = (w/2, h);
-       z4 = z2 reflectedabout((0,0), (1,1));
-       z5 = z1 reflectedabout((0,0), (1,1));
-
-       draw_rounded_path(  
-               z1{dir 45} .. {right}z2 -- z3 -- z4{down} .. {dir 225}z5 .. cycle,
-       1/20 interline);
-
-
-       addto currentpicture also currentpicture rotated 90;
-       addto currentpicture also currentpicture yscaled (-d/h);
-
-       currentpicture := currentpicture  shifted (w/2,0);
-       fet_endchar;
-
-
-fet_endgroup("accidentals");
-
index 857f5121c1f5638ce5464f1def2662e15ef72e33..87657a4f94e60b6ec03f8ca8e3917c8a16656f4c 100644 (file)
@@ -15,6 +15,7 @@
 \def\fetdef#1#2{\def#1{\lower.3884\staffrulethickness\hbox{\fetchar{#2}}}}
 \def\fetchar#1{\fontentja\char#1}
 
+%\input font-en-tja16
 \input font-en-tja20
 
 \def\beamslope#1#2{{\count0=#2\advance\count0 by#1
index 14e723b48594fa41885965b1aba070f5f3ed9cb3..4793b3cdcea8a84140d1d19eca0f2864a35094ed 100644 (file)
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.3
-% on Mon Oct  6 20:23:06 1997
+% on Wed Oct  8 16:18:13 1997
 % Do not edit
 
 % input from out/font-en-tja16.log
 \fetdef\dot{15}
 
 % balls
-\fetdef\wholeball{16}
-\fetdef\halfball{17}
-\fetdef\quartball{18}
-\fetdef\breveball{19}
-\fetdef\longaball{20}
+\fetdef\brevisball{16}
+\fetdef\longaball{17}
+\fetdef\wholeball{18}
+\fetdef\halfball{19}
+\fetdef\quartball{20}
 
 % foobars
 \fetdef\ufermata{21}
 \fetdef\dfermata{22}
-\fetdef\accent{23}
+\fetdef\sforzatoaccent{23}
 \fetdef\staccato{24}
 \fetdef\ustaccatissimo{25}
 \fetdef\dstaccatissimo{26}
 \fetdef\tenuto{27}
 \fetdef\umarcato{28}
 \fetdef\dmarcato{29}
+\fetdef\ouvert{30}
+\fetdef\plusstop{31}
+\fetdef\upbow{32}
+\fetdef\downbow{33}
+\fetdef\turn{34}
+
+% floogbars
+\fetdef\eighthflag{35}
+\fetdef\deighthflag{36}
 
index 5a06c9deeb0bfab2251fdd2e10f3611fe53b663a..4739128ba775bcc69830f13ea0b0d617c3fae7d7 100644 (file)
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.3
-% on Mon Oct  6 20:23:19 1997
+% on Wed Oct  8 16:18:16 1997
 % Do not edit
 
 % input from out/font-en-tja20.log
 \fetdef\dot{15}
 
 % balls
-\fetdef\wholeball{16}
-\fetdef\halfball{17}
-\fetdef\quartball{18}
-\fetdef\breveball{19}
-\fetdef\longaball{20}
+\fetdef\brevisball{16}
+\fetdef\longaball{17}
+\fetdef\wholeball{18}
+\fetdef\halfball{19}
+\fetdef\quartball{20}
 
 % foobars
 \fetdef\ufermata{21}
 \fetdef\dfermata{22}
-\fetdef\accent{23}
+\fetdef\sforzatoaccent{23}
 \fetdef\staccato{24}
 \fetdef\ustaccatissimo{25}
 \fetdef\dstaccatissimo{26}
 \fetdef\tenuto{27}
 \fetdef\umarcato{28}
 \fetdef\dmarcato{29}
+\fetdef\ouvert{30}
+\fetdef\plusstop{31}
+\fetdef\upbow{32}
+\fetdef\downbow{33}
+\fetdef\turn{34}
+
+% floogbars
+\fetdef\eighthflag{35}
+\fetdef\deighthflag{36}
 
index 319d45f2f7969604f08d7600e9e6027defde438a..2854a35417ded9ec4f746bc86e21854bdb6a3b34 100644 (file)
@@ -51,6 +51,8 @@
 \parindent=0pt
 \newdimen\smallspace
 \newdimen\interlinedist
+\newdimen\ledgerlinethickness
+\newdimen\stemthickness
 \newcount\n
 \newdimen\balkheight
 \newdimen\notewidth
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % do derivative calcs
 
+% FIXME: should read from TFM/AFM/fetalog
+%
+
+% this has to be synced with the font definition
 \def\musixcalc{
         \interlinedist=\fontdimen5\musicfnt
         \smallspace=.3\interlinedist
         %  [D.K.Roush & J.S.Gourlay] say this should be 0.072
         % We know better
         \staffrulethickness=0.1\interlinedist
+        \stemthickness=\staffrulethickness
+        \ledgerlinethickness=1.5\staffrulethickness
 }
 
 
         \loop\ifnum\n<#1\advance\n by1%
                 \kern\interstaffrule
                 \nointerlineskip
-                \vbox to 0pt{\hrule height #3 width#2%
+                \vbox to 0pt{\hrule height .5#3 depth .5#3 width#2%
                         \vss}\nointerlineskip
                 \repeat
         }}
 %%
 % Ugh. Need to redo this. Wish we had PS.
 %
-\def\toplines#1#2{\dist#1
-        \topalign{\hbox{\kern-.25\dist\lines{#2}{1.5\dist}{2\staffrulethickness}}}}
+\def\topledgerlines#1#2{\dist#1
+        \topalign{\hbox{\kern-.25\dist\lines{#2}{1.5\dist}{\ledgerlinethickness}}}}
 
-\def\botlines#1#2{\dist#1
-        \botalign{\hbox{\kern-.25\dist\lines{#2}{1.5\dist}{2\staffrulethickness}}}}
+\def\botledgerlines#1#2{\dist#1
+        \botalign{\hbox{\kern-.25\dist\lines{#2}{1.5\dist}{\ledgerlinethickness}}}}
 
 %
 % a staffsymbol with #1 lines, width #2
 % bottom at baseline
 \def\linestafsym#1#2{\leftalign{\botalign{\lines{#1}{#2}{\staffrulethickness}}}}
 
-\def\stem#1#2{\vrule height#2 depth-#1}
+\def\stem#1#2{\hbox{\kern -.5\stemthickness
+        \vrule width\stemthickness height#2 depth-#1}}
 
 \def\placebox#1#2#3{%
         \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}%