From b1eda2bf8186760c557b770833c172a8979bc538 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 8 Oct 1997 16:17:24 +0200 Subject: [PATCH] release: 0.1.20 --- AUTHORS.text | 2 +- BUGS | 19 +- Documentation/mudela-man.doc | 2 +- INSTALL.text | 12 +- NEWS | 7 + README | 4 +- TODO | 10 +- VERSION | 2 +- bin/genheader.in | 60 ----- bin/genheader.py | 132 +++++++++ bin/make-website.in | 3 +- bin/mf-deps.py | 9 + bin/mf-to-table.py | 9 + init/engraver.ly | 2 +- init/font-en-tja16.ly | 31 ++- init/font-en-tja20.ly | 31 ++- init/script.ly | 1 + init/table16.ly | 21 +- init/table20.ly | 10 +- input/font.ly | 20 +- input/gallina.tex | 1 + input/scsii-menuetto.tex | 3 +- input/standchen-16.tex | 1 + input/standchen-20.tex | 1 + lily/VERSION | 2 +- lily/rest.cc | 2 + lily/script.cc | 2 + lily/stem.cc | 9 +- make/lelievijver.lsm | 8 +- make/lilypond.lsm | 22 +- make/lilypond.spec | 4 +- mf/TODO | 9 +- mf/autometric.mf | 16 +- mf/dimen.tex | 3 +- mf/feta-banier.mf | 84 ++++++ mf/{bolletjes.mf => feta-bolletjes.mf} | 103 ++++--- mf/{eindelijk.mf => feta-eindelijk.mf} | 23 +- mf/feta-generic.mf | 19 ++ mf/{generic-macros.mf => feta-macros.mf} | 20 +- mf/{generic-params.mf => feta-params.mf} | 20 +- mf/{puntje.mf => feta-puntje.mf} | 0 mf/feta-schrift.mf | 329 +++++++++++++++++++++++ mf/{toevallig.mf => feta-toevallig.mf} | 8 +- mf/font-en-tja16.mf | 2 +- mf/font-en-tja20.mf | 2 +- mf/generic-tja.mf | 18 -- mf/klef.mf | 46 ---- mf/mfbug.mf | 21 ++ mf/schrift.mf | 165 ------------ tex/fetdefs.tex | 1 + tex/font-en-tja16.tex | 23 +- tex/font-en-tja20.tex | 23 +- tex/lilyponddefs.tex | 21 +- 53 files changed, 916 insertions(+), 482 deletions(-) delete mode 100644 bin/genheader.in create mode 100644 bin/genheader.py create mode 100644 mf/feta-banier.mf rename mf/{bolletjes.mf => feta-bolletjes.mf} (62%) rename mf/{eindelijk.mf => feta-eindelijk.mf} (88%) create mode 100644 mf/feta-generic.mf rename mf/{generic-macros.mf => feta-macros.mf} (91%) rename mf/{generic-params.mf => feta-params.mf} (58%) rename mf/{puntje.mf => feta-puntje.mf} (100%) create mode 100644 mf/feta-schrift.mf rename mf/{toevallig.mf => feta-toevallig.mf} (98%) delete mode 100644 mf/generic-tja.mf delete mode 100644 mf/klef.mf create mode 100644 mf/mfbug.mf delete mode 100644 mf/schrift.mf diff --git a/AUTHORS.text b/AUTHORS.text index 96d40df9e3..59490e17be 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -23/Sep/97 LilyPond 0.1.19 1 +23/Sep/97 LilyPond 0.1.20 1 diff --git a/BUGS b/BUGS index 95493cbd7d..40be3fcf28 100644 --- 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. + + diff --git a/Documentation/mudela-man.doc b/Documentation/mudela-man.doc index ddf19760d6..498ba8b756 100644 --- a/Documentation/mudela-man.doc +++ b/Documentation/mudela-man.doc @@ -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 diff --git a/INSTALL.text b/INSTALL.text index c660fb1603..20f340f20a 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -7/Oct/97 LilyPond 0.1.19 1 +8/Oct/97 LilyPond 0.1.20 1 @@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -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 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG -7/Oct/97 LilyPond 0.1.19 4 +8/Oct/97 LilyPond 0.1.20 4 @@ -325,7 +325,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX -7/Oct/97 LilyPond 0.1.19 5 +8/Oct/97 LilyPond 0.1.20 5 @@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -7/Oct/97 LilyPond 0.1.19 6 +8/Oct/97 LilyPond 0.1.20 6 diff --git a/NEWS b/NEWS index 8e1a22a644..facfa0b0fc 100644 --- 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 6b8828bc88..4a359b0efd 100644 --- 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 85db7d288d..3c414d5349 100644 --- 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 04ce9ca7fc..b99cf5a2f1 100644 --- 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 index 8643a3794f..0000000000 --- a/bin/genheader.in +++ /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 index 0000000000..f8c1cc30f1 --- /dev/null +++ b/bin/genheader.py @@ -0,0 +1,132 @@ +#!@PYTHON@ + +# +# genheader.py -- do headers (like these) +# +# source file of the GNU LilyPond music typesetter +# +# (c) 1997 Han-Wen Nienhuys +# + + + +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) diff --git a/bin/make-website.in b/bin/make-website.in index 37d318957d..9830035556 100644 --- a/bin/make-website.in +++ b/bin/make-website.in @@ -94,7 +94,8 @@ local @examples=("twinkle-pop", "gallina", "twinkle", "collisions", - "scales", + "font", + #"scales", "rhythm", "multi" ); diff --git a/bin/mf-deps.py b/bin/mf-deps.py index 700b9ccf35..c17e5d949a 100644 --- a/bin/mf-deps.py +++ b/bin/mf-deps.py @@ -1,5 +1,14 @@ #!@PYTHON@ +# +# mf-deps.py -- dependencies for metafont +# +# source file of the GNU LilyPond music typesetter +# +# (c) 1997 Han-Wen Nienhuys +# + + """look into metafont source for dependencies. fixme: python path diff --git a/bin/mf-to-table.py b/bin/mf-to-table.py index 1ebf973d6c..bf680f9377 100644 --- a/bin/mf-to-table.py +++ b/bin/mf-to-table.py @@ -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 +# + 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('@{\([^@]*\)@}') diff --git a/init/engraver.ly b/init/engraver.ly index ffb57a5dc5..0852b4ca8c 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -66,7 +66,7 @@ Lyric_voice = \consists "Lyric_engraver"; \consists "Line_group_engraver"; - \consists "Swallow_engraver"; + %\consists "Swallow_engraver"; } Lyrics = \translator { diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly index 4d99069a89..0ff3a8cdc0 100644 --- a/init/font-en-tja16.ly +++ b/init/font-en-tja16.ly @@ -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 @@ -27,21 +27,30 @@ "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 diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly index 2c2230c08d..4746d6ce47 100644 --- a/init/font-en-tja20.ly +++ b/init/font-en-tja20.ly @@ -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 @@ -27,21 +27,30 @@ "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 diff --git a/init/script.ly b/init/script.ly index 9f37993065..508e43223f 100644 --- a/init/script.ly +++ b/init/script.ly @@ -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: diff --git a/init/table16.ly b/init/table16.ly index 4e77e6ac0b..0fe26c3108 100644 --- a/init/table16.ly +++ b/init/table16.ly @@ -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" - - } diff --git a/init/table20.ly b/init/table20.ly index 5c62d24311..b98a254235 100644 --- a/init/table20.ly +++ b/init/table20.ly @@ -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 { diff --git a/input/font.ly b/input/font.ly index b724a49ef7..ff68d5bce7 100644 --- a/input/font.ly +++ b/input/font.ly @@ -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{ diff --git a/input/gallina.tex b/input/gallina.tex index c04c51db0d..5edf749d49 100644 --- a/input/gallina.tex +++ b/input/gallina.tex @@ -8,6 +8,7 @@ \addtolength{\topmargin}{-1cm} \setlength{\textwidth}{15cm} \input lilyponddefs +\musixsixteendefs \input titledefs \begin{document} diff --git a/input/scsii-menuetto.tex b/input/scsii-menuetto.tex index 095e50328a..dc5daa4fcd 100644 --- a/input/scsii-menuetto.tex +++ b/input/scsii-menuetto.tex @@ -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} diff --git a/input/standchen-16.tex b/input/standchen-16.tex index b30bb00318..7f7ab47f17 100644 --- a/input/standchen-16.tex +++ b/input/standchen-16.tex @@ -9,6 +9,7 @@ %\pagestyle{empty} \begin{document} \input lilyponddefs +\musixsixteendefs \input titledefs \def\interscoreline{\vskip3mm} \title{St\"andchen\normalsize\\[2ex](Serenade)} diff --git a/input/standchen-20.tex b/input/standchen-20.tex index 9870b620ea..b38054c5ab 100644 --- a/input/standchen-20.tex +++ b/input/standchen-20.tex @@ -9,6 +9,7 @@ \pagestyle{empty} \begin{document} \input lilyponddefs +\musixtwentydefs \input titledefs \def\interscoreline{\vskip3mm} \title{St\"andchen\normalsize\\[2ex](Serenade)} diff --git a/lily/VERSION b/lily/VERSION index dc8420e3e3..c9923f9d22 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -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 diff --git a/lily/rest.cc b/lily/rest.cc index e11eef1489..6dc7dab858 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -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)); diff --git a/lily/script.cc b/lily/script.cc index 073fc7cd93..df80dabd37 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -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; } diff --git a/lily/stem.cc b/lily/stem.cc index 6ddb44f685..462567a47e 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -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; } diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index b4d5b465be..ad7e8f6372 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -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 diff --git a/make/lilypond.lsm b/make/lilypond.lsm index fbffa124b8..176eb4fecc 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -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 diff --git a/make/lilypond.spec b/make/lilypond.spec index e5695f922e..7eaca4df99 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -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 diff --git a/mf/TODO b/mf/TODO index 111de76aaf..a13e94503a 100644 --- 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.) diff --git a/mf/autometric.mf b/mf/autometric.mf index 6cffec3caa..9912d70d59 100644 --- a/mf/autometric.mf +++ b/mf/autometric.mf @@ -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 % % 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/dimen.tex b/mf/dimen.tex index 78fc5369af..9d809332d7 100644 --- a/mf/dimen.tex +++ b/mf/dimen.tex @@ -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/feta-banier.mf b/mf/feta-banier.mf new file mode 100644 index 0000000000..f845fac0cc --- /dev/null +++ b/mf/feta-banier.mf @@ -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/bolletjes.mf b/mf/feta-bolletjes.mf similarity index 62% rename from mf/bolletjes.mf rename to mf/feta-bolletjes.mf index c41f5d0d52..cef0590903 100644 --- a/mf/bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -5,12 +5,74 @@ % 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#; +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; @@ -55,9 +117,6 @@ fi enddef; - -fet_begingroup("balls"); - % whole note % Wanske, p.38 fet_beginchar("Whole notehead", "0", "wholeball") @@ -137,38 +196,6 @@ 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"); diff --git a/mf/eindelijk.mf b/mf/feta-eindelijk.mf similarity index 88% rename from mf/eindelijk.mf rename to mf/feta-eindelijk.mf index 362ed9ab12..5e9c67b8c6 100644 --- a/mf/eindelijk.mf +++ b/mf/feta-eindelijk.mf @@ -35,8 +35,8 @@ flare# = 2/3interline#; save block_rest_y, block_rest_x; -block_rest_y# = 1/2 interline#; -block_rest_x# = 3 block_rest_y#; +block_rest_y# = 5/8 interline#; +block_rest_x# = 3/2 interline#; define_pixels(block_rest_y, block_rest_x); @@ -59,9 +59,9 @@ def block_rest= enddef; fet_beginchar( "whole rest", "0", "wholerest"); -set_char_box(0, block_rest_x#, -block_rest_y#, 2 block_rest_y# ); +set_char_box(0, block_rest_x#, -interline# + block_rest_y#, interline# ); block_rest; - currentpicture := currentpicture shifted (0,block_rest_y); + currentpicture := currentpicture shifted (0,interline - block_rest_y); fet_endchar; fet_beginchar("half rest", "1", "halfrest"); @@ -74,17 +74,20 @@ 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# ); + set_char_box(block_rest_y#, block_rest_x# + block_rest_y#, + -interline# + block_rest_y#, interline#); 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); + 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#); + set_char_box(block_rest_y#, block_rest_x#+ block_rest_y#, + 0, block_rest_y#); block_rest; - pickup pencircle scaled stafflinethickness; + pickup pencircle scaled ledgerlinethickness; draw (-block_rest_y,0) .. (block_rest_x + block_rest_y,0); fet_endchar; diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf new file mode 100644 index 0000000000..97c2dabc0a --- /dev/null +++ b/mf/feta-generic.mf @@ -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/generic-macros.mf b/mf/feta-macros.mf similarity index 91% rename from mf/generic-macros.mf rename to mf/feta-macros.mf index b6b26ed9f7..7666427515 100644 --- a/mf/generic-macros.mf +++ b/mf/feta-macros.mf @@ -1,4 +1,3 @@ - % % debugging % @@ -12,6 +11,12 @@ if test>1: (0pt,0pt for i:=-4.8pt step .2pt until 4.8pt: ,i endfor); fi enddef; + +def treq = + tracingequations := tracingonline := 1; +enddef; + + % % Transforms % @@ -76,8 +81,7 @@ 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; +def draw_brush(expr a,w,b,v) = save x,y; z1=a; z2=b; penpos3(w,angle(z2-z1)+90); @@ -88,6 +92,11 @@ def brush(expr a,w,b,v) = 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; @@ -127,3 +136,8 @@ def y_mirror_char = 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/generic-params.mf b/mf/feta-params.mf similarity index 58% rename from mf/generic-params.mf rename to mf/feta-params.mf index 690e415f2e..ea95ec3523 100644 --- a/mf/generic-params.mf +++ b/mf/feta-params.mf @@ -8,18 +8,28 @@ interline#:=staffsize#/(stafflines-1); % stafflinethickness#:=0.1 interline#; -define_pixels(interline); -define_pixels(stafflinethickness); +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" -% -numeric blot_diameter; - % % 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/puntje.mf b/mf/feta-puntje.mf similarity index 100% rename from mf/puntje.mf rename to mf/feta-puntje.mf diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf new file mode 100644 index 0000000000..4600513b99 --- /dev/null +++ b/mf/feta-schrift.mf @@ -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/toevallig.mf b/mf/feta-toevallig.mf similarity index 98% rename from mf/toevallig.mf rename to mf/feta-toevallig.mf index 60aff66f03..a0865df28d 100644 --- a/mf/toevallig.mf +++ b/mf/feta-toevallig.mf @@ -114,6 +114,7 @@ fet_beginchar( "Natural", "0", "natural") % 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, @@ -179,15 +180,18 @@ fet_beginchar("Double sharp", "2", "sharpsharp") 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 rotated 90; addto currentpicture also currentpicture yscaled (-d/h); + addto currentpicture also currentpicture xscaled (-1); + % ugh currentpicture := currentpicture shifted (w/2,0); + + fet_endchar; diff --git a/mf/font-en-tja16.mf b/mf/font-en-tja16.mf index 62ad525942..80ccfadeec 100644 --- a/mf/font-en-tja16.mf +++ b/mf/font-en-tja16.mf @@ -13,7 +13,7 @@ staffsize#:=16pt#; stafflines:=5; code:=-1; -input generic-tja; +input feta-generic; fet_endfont("font-en-tja"); diff --git a/mf/font-en-tja20.mf b/mf/font-en-tja20.mf index abc685f417..c7e35a13ed 100644 --- a/mf/font-en-tja20.mf +++ b/mf/font-en-tja20.mf @@ -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-tja.mf b/mf/generic-tja.mf deleted file mode 100644 index 2d890ee79b..0000000000 --- a/mf/generic-tja.mf +++ /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 index 47980e1a33..0000000000 --- a/mf/klef.mf +++ /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 index 0000000000..5837988e0c --- /dev/null +++ b/mf/mfbug.mf @@ -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/schrift.mf b/mf/schrift.mf deleted file mode 100644 index d53b016780..0000000000 --- a/mf/schrift.mf +++ /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/tex/fetdefs.tex b/tex/fetdefs.tex index 857f5121c1..87657a4f94 100644 --- a/tex/fetdefs.tex +++ b/tex/fetdefs.tex @@ -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 diff --git a/tex/font-en-tja16.tex b/tex/font-en-tja16.tex index 14e723b485..4793b3cdce 100644 --- a/tex/font-en-tja16.tex +++ b/tex/font-en-tja16.tex @@ -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 @@ -27,20 +27,29 @@ \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} diff --git a/tex/font-en-tja20.tex b/tex/font-en-tja20.tex index 5a06c9deeb..4739128ba7 100644 --- a/tex/font-en-tja20.tex +++ b/tex/font-en-tja20.tex @@ -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 @@ -27,20 +27,29 @@ \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} diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 319d45f2f7..2854a35417 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -51,6 +51,8 @@ \parindent=0pt \newdimen\smallspace \newdimen\interlinedist +\newdimen\ledgerlinethickness +\newdimen\stemthickness \newcount\n \newdimen\balkheight \newdimen\notewidth @@ -90,6 +92,10 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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 @@ -99,6 +105,8 @@ % [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 } @@ -177,7 +185,7 @@ \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 }} @@ -185,18 +193,19 @@ %% % 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}}}% -- 2.39.5