diff options
author | Han-Wen Nienhuys <hanwen@xs4all.nl> | 1997-10-21 12:55:42 +0200 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@xs4all.nl> | 1997-10-21 12:55:42 +0200 |
commit | 2f558a5087e74382789fc16e34eff918a94987ae (patch) | |
tree | 9b1a964aa776f4694a6c7b67ec497193a8846ef5 | |
parent | 757436ac5cf25caf3635a9b5418346e15c5c4b0c (diff) |
release: 0.1.25
41 files changed, 652 insertions, 551 deletions
diff --git a/AUTHORS.text b/AUTHORS.text index ac30e62162..c9ae0e9a5c 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -46,8 +46,11 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS +o Anthony Fok <foka@gpu.srv.ualberta.ca>, debian package: make/debian/* - +o Franc,ois Pinard <pinard@iro.umontreal.ca>, Neil - Jerram <nj104@cus.cam.ac.uk>. Documentation/Vocab* + +o Franc,ois Pinard <pinard@iro.umontreal.ca>, + Documentation/Vocab*, internationalization stuff + + +o Neil Jerram <nj104@cus.cam.ac.uk>. + Documentation/Vocab* Your name could be here! If you want to help, then take a look at the SMALLISH PROJECTS section of in the file _T_O_D_O. @@ -58,9 +61,72 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS +21/Oct/97 LilyPond 0.1.25 1 + + + + + +AUTHORS(1) LilyPond documentation AUTHORS(1) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -10/Oct/97 LilyPond 0.1.24 1 +21/Oct/97 LilyPond 0.1.25 2 diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod index 1839dec915..f4cb0513fe 100644 --- a/Documentation/AUTHORS.pod +++ b/Documentation/AUTHORS.pod @@ -59,8 +59,12 @@ Anthony Fok <foka@gpu.srv.ualberta.ca>, debian package: make/debian/* =item * -Franc,ois Pinard <pinard@iro.umontreal.ca>, Neil Jerram -<nj104@cus.cam.ac.uk>. Documentation/Vocab* +Franc,ois Pinard <pinard@iro.umontreal.ca>, Documentation/Vocab*, +internationalization stuff + +=item * + +Neil Jerram <nj104@cus.cam.ac.uk>. Documentation/Vocab* =back diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod index 3f3daf2efc..f13431ded6 100644 --- a/Documentation/gnu-music.pod +++ b/Documentation/gnu-music.pod @@ -86,14 +86,15 @@ of use and power. =item A set of music fonts -Preferably in Metafont, suited to both screen display and use on -paper. +In development, the Feta font. =item A typesetting engine +In development, included in LilyPond. A system with rules on how to set properties of items to be printed -(up/down directions, breaking, dimensions, etc) LilyPond provides one, -but it is not (yet) suited to interactive typesetting +(up/down directions, breaking, dimensions, etc) +It should be suited to interactive typesetting (so, incremental +algorithms are needed) =item A display engine @@ -103,13 +104,13 @@ Ideally the system should cooperate with the typesetting engine =item An ASCII language -In development, LilyPond has a language. (See over there for goals) +In development, LilyPond has a language. Having an ASCII format which enables urtext, and easy sharing (via mail and news forums) encourages cooperation and exchange of music. =item A printing engine -Maybe to be merged with the display system. +In development, included in LilyPond. =item An input system @@ -132,6 +133,11 @@ simplifies creating a collection of music (difficult) A system to generate accompaniments, figured bass, automatic accompaniment, etc. +=item A performing system + +A system which can play credible performances of abstract music +representations. LilyPond has a bare bones system, but it cannot +(yet) be described as "credible". =back @@ -159,24 +165,11 @@ formats. =back -=head1 TASKS (SHORT TERM) - -=over 4 - -=item * - -Think about interfaces for components. - -=item * - Find sponsors. This project will take a long time, and in its infant stages, having a hard and small core which does a lot of work, is more efficient than lots of people doing small subprojects. Finanicial support would be desirable. -=back - - =head1 HISTORY diff --git a/Documentation/literature.pod b/Documentation/literature.pod index bbb68635ff..6d6094e1eb 100644 --- a/Documentation/literature.pod +++ b/Documentation/literature.pod @@ -18,9 +18,9 @@ EDV-gesteuerten Notensatz'', Schott-Verlag, Mainz 1988.ISBN 3-7957-2886-x. [I. A very thorough overview of engraving practices of various craftsmen. It includes detailed specs of characters, dimensions etc. -II. a thorough overview of a (by now antiquated) automated system -called Ikarus; EDV Means e(lektronischen) D(aten)v(erarbeitung), -electronic data processing HWN] +II. a thorough overview of a anonymous (by now antiquated) automated +system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic +data processing HWN] Maxwell Weaner and Walter Boelke, Standard Music Notation Practice, revised edition by Arnold Broido and Daniel Dorff. Music Publisher's @@ -234,6 +234,8 @@ some of the conventions and difficulties in printing music HWN] The University of Colorado Music Engraving page. http://obenamots.cc.colorado.edu/Musicpress/engraving.html +[Webpages about engraving (designed with finale users in mind) (sic) HWN] + Anthony Donato. Preparing Music Manuscript. Englewood Cliffs: Prentice-Hall, 1963. diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod index 4ca3a2b004..24b9c5c926 100644 --- a/Documentation/other-packages.pod +++ b/Documentation/other-packages.pod @@ -117,9 +117,11 @@ Notation editor for W95 and Mac Notation editor on Acorn machines. Their developers call it ``best notation program available''. -=item Ikarus, +=item ? [``EDV-Notensatz''] -URW's music-engraving system described by [Wanske] +URW's music-engraving system described by [Wanske]. (Although URW +used ~DM 1.000.000 while developing this, it didn't buy them a cute +name.) =item Logic, @@ -165,6 +167,7 @@ A project at Ohio State university, which was discontinued in 1987. =item Berlioz, http://www.?.fr/ -Dominique Montel (a professional music typesetter) is now working together with -computer scientists on his own software for music publishing, called "Berlioz". +Dominique Montel (a professional music typesetter) is now working +together with computer scientists on his own software for music +publishing, called "Berlioz". diff --git a/INSTALL.text b/INSTALL.text index fdf183ed07..2ba7e84cb0 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -20/Oct/97 LilyPond 0.1.24 1 +20/Oct/97 LilyPond 0.1.25 1 @@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -20/Oct/97 LilyPond 0.1.24 2 +20/Oct/97 LilyPond 0.1.25 2 @@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -20/Oct/97 LilyPond 0.1.24 3 +20/Oct/97 LilyPond 0.1.25 3 @@ -259,7 +259,7 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG -20/Oct/97 LilyPond 0.1.24 4 +20/Oct/97 LilyPond 0.1.25 4 @@ -325,7 +325,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX -20/Oct/97 LilyPond 0.1.24 5 +20/Oct/97 LilyPond 0.1.25 5 @@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -20/Oct/97 LilyPond 0.1.24 6 +20/Oct/97 LilyPond 0.1.25 6 @@ -1,6 +1,18 @@ -pl 24.jcn2 - - feta-nummertjes: 0 1 2 4 7 +pl 25 + - variable stemlength + - feta: 32nd, 64th flags + - font.ly + - dist & tarball made in out/ + - rewrote release.sh in python + - notehead/stem attachment better. + - more Stem cleanage + - related Beam cleanage + - started numeral font (JCN) + - bf: whole rest outside staff. + +********* +oct 20 pl 24 - internationalization preps (FP) - rewrote make-patch in python @@ -20,8 +20,10 @@ grep for TODO and ugh/ugr * Make general "spanning"-elements and "placer"-elements - - naming Mozarella, Madeira, Muella, Feta? + - naming Mozarella, Madeira, Muella? + - bf: abbrevs over whole note + - scoping for properties { c4 @@ -76,6 +78,7 @@ PROJECTS * \header - write perl script for handling it into databases - write TeX macros to generate titles + - adapt make-website to use \header info. * Makefile stuff: - have make dist produce tarball in out/ directory. @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 24 -TOPLEVEL_MY_PATCH_LEVEL = .jcn2 +TOPLEVEL_PATCH_LEVEL = 25 +TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/bin/lilypython.py b/bin/lilypython.py index 1b62c2833d..7b063437a1 100644 --- a/bin/lilypython.py +++ b/bin/lilypython.py @@ -56,6 +56,15 @@ def prev_version(tup): return (tup[0], tup[1], tup[2] - 1, ''); +def dirname(v): + return 'lilypond-' + version_tuple_to_str(v) + +def tarball(v): + return dirname(v) + '.tar.gz' + +def released_tarball(v): + return lilydirs.release_dir + tarball(v) + def tuple_to_list(tup): l=[] for x in tup: diff --git a/bin/make-patch.py b/bin/makepatch.py index ff070acdf7..2763096eb7 100644 --- a/bin/make-patch.py +++ b/bin/makepatch.py @@ -23,11 +23,6 @@ def help(): ) -def dirname(v): - return 'lilypond-' + version_tuple_to_str(v) - -def tarball(v): - return lilydirs.release_dir + dirname(v) + '.tar.gz' def untar(fn): sys.stderr.write('untarring ' + fn) @@ -40,7 +35,7 @@ header = 'Generated by make-patch, old = %s, new = %s\n\ \n\ usage \n\ \n\ - cd lilypond-source-dir; patch -E -p0 < patch-$new\n\ + cd lilypond-source-dir; patch -E -p0 < %s\n\ \n\ Patches do not contain automatically generated files, \n\ i.e. you should rerun configure\n\n' @@ -93,9 +88,10 @@ def remove_automatic(dirnames): def makepatch(fv, tv, patfile_nm): import tempfile + prev_cwd = os.getcwd(); os.chdir ('/tmp') - untar(tarball(fv)) - untar(tarball(tv)) + untar(released_tarball(fv)) + untar(released_tarball(tv)) remove_automatic([dirname(fv), dirname(tv)]) os.chdir(dirname(tv)) @@ -104,10 +100,12 @@ def makepatch(fv, tv, patfile_nm): patfile_nm = '../patch-%s' % version_tuple_to_str(tv) f = open(patfile_nm, 'w') - f.write(header % (version_tuple_to_str(fv), version_tuple_to_str(tv))) + f.write(header %\ + (version_tuple_to_str(fv), version_tuple_to_str(tv), \ + os.path.basename(patfile_nm))) f.close() - sys.stderr.write('diffing ... ') + sys.stderr.write('diffing to %s... ' % patfile_nm) os.system('diff -urN ../%s . >> %s' % (dirname(fv), patfile_nm)) #os.system('gzip -9f %s' % patfile_nm) os.chdir('/tmp') @@ -115,6 +113,7 @@ def makepatch(fv, tv, patfile_nm): sys.stderr.write('cleaning ... ') os.system('rm -fr %s %s' % (dirname(tv), dirname(fv))) sys.stderr.write('\n') + os.chdir(prev_cwd) def main(): sys.stderr.write('This is make-patch version %s\n' % mp_version) @@ -141,4 +140,5 @@ def main(): makepatch(options.from_version, options.to_version, outfn) -main() +if __name__ == '__main__': + main() diff --git a/bin/rel.py b/bin/rel.py deleted file mode 100644 index d0efcb8c55..0000000000 --- a/bin/rel.py +++ /dev/null @@ -1,5 +0,0 @@ - -from lilypython import * - - -os.system('make dist') diff --git a/bin/release.py b/bin/release.py new file mode 100644 index 0000000000..3e6026969f --- /dev/null +++ b/bin/release.py @@ -0,0 +1,19 @@ +#!@PYTHON@ + +from lilypython import * +import makepatch + + +os.chdir(lilydirs.topdir) +os.system('make dist') +cur_ver = lilydirs.version_tuple() + +os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver)) +os.chdir('../test') +os.system('rm ../test/*gz') +os.link(released_tarball(cur_ver), tarball(cur_ver)) + + +makepatch.main() +os.system('gzip -9 patch*') +os.system('tar cf updeet *gz') diff --git a/bin/release.sh b/bin/release.sh deleted file mode 100644 index 6d64b34268..0000000000 --- a/bin/release.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh - -# script to automate releases - -grep -q '^TOP' VERSION - res=$? -if test ! -f VERSION || test $res != 0; then - echo not in topleveldir - exit 1 -fi - -function setversion() { -eval `sed -n 's/^\([A-Z_]*\) *= *\(.*\)$/\1=\2/p' VERSION` - -MJ=$TOPLEVEL_MAJOR_VERSION -MI=$TOPLEVEL_MINOR_VERSION -PA=$TOPLEVEL_PATCH_LEVEL -MP=$TOPLEVEL_MY_PATCH_LEVEL -NEWVER=$MJ.$MI.$PA$MP -if [ x$MP = x -o x$MP = xpre ] -then - LASTVER=$MJ.$MI.`expr $PA - 1` - - if [ -f $releasedir//lilypond-$LASTVER""pre.tar.gz ] ; then - LASTVER="$LASTVER""pre" - fi -else - LASTVER=$MJ.$MI.$PA -fi - -echo -echo "Current version ("`pwd`") is $NEWVER, Last version: $LASTVER" -echo -} - -heredir=`pwd` -releasedir=`pwd`/../releases -patchdir=`pwd`/../patches -MAKE=${MAKE:-"make"} -TAR=${TAR:-"tar"} - - -$MAKE dist; -setversion -LILYVER=$NEWVER - -tarball=lilypond-$LILYVER.tar.gz -patch=patch-$LILYVER.gz - -mv $tarball $releasedir/ - -cd ../test -python $heredir/bin/make-patch.py -gzip -f9 patch-$NEWVER -mv $patch $patchdir// - -RPMS=`find ~/rpms/ -name lilypond-$NEWVER'*'rpm` -rm *.rpm {lilypond,patch}-*.gz - -if [ ! -z "$RPMS" ]; then - ln $RPMS . -fi - -ln $releasedir//$tarball . -ln $patchdir//$patch . - - -if [ ! -z "$RPMS" ]; then - RPMS="lilypond-$LILYVER-1.i386.rpm lilypond-$LILYVER-1.src.rpm" -fi -$TAR cf updeet $tarball $patch $RPMS -$TAR tfv updeet - diff --git a/flower/TODO b/flower/TODO index 714f3ded6e..5468633cf7 100644 --- a/flower/TODO +++ b/flower/TODO @@ -1,4 +1,7 @@ + + * Unicode support in strings + * write a decent Dictionary - write a String_hash template - write a Pointer_hash template diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly index 394441aecc..41e99c6833 100644 --- a/init/font-en-tja16.ly +++ b/init/font-en-tja16.ly @@ -1,5 +1,5 @@ % generated automatically by mf-to-table.py version 0.4 -% on Mon Oct 20 01:50:48 1997 +% on Mon Oct 20 23:14:01 1997 % Do not edit % input from out/font-en-tja16.log % name=\symboltables { @@ -51,10 +51,14 @@ "pedalheel" "\\pedalheel" -2.00\pt 2.00\pt -2.00\pt 2.67\pt "pedaltoe" "\\pedaltoe" -2.00\pt 2.00\pt -0.00\pt 6.00\pt } - "floogbars" = \table { - "3u" "\\eighthflag" -0.20\pt 4.16\pt -12.83\pt 0.20\pt - "3d" "\\deighthflag" -0.20\pt 4.60\pt -0.20\pt 12.83\pt - "4u" "\\sixteenthflag" -0.20\pt 4.16\pt -13.00\pt 0.20\pt - "4d" "\\dsixteenthflag" -0.20\pt 4.60\pt -0.20\pt 12.00\pt + "flags" = \table { + "u3" "\\eighthflag" -0.20\pt 4.16\pt -12.26\pt 0.20\pt + "d3" "\\deighthflag" -0.20\pt 4.60\pt -0.20\pt 11.66\pt + "u4" "\\sixteenthflag" -0.20\pt 4.16\pt -14.00\pt 0.20\pt + "d4" "\\dsixteenthflag" -0.20\pt 4.60\pt -0.20\pt 12.00\pt + "u5" "\\thirtysecondflag" -0.20\pt 4.16\pt -17.00\pt 0.20\pt + "d5" "\\dthirtysecondflag" -0.20\pt 4.16\pt -0.20\pt 15.40\pt + "u6" "\\sixtyfourthflag" -0.20\pt 4.16\pt -21.00\pt 0.20\pt + "d6" "\\dsixtyfourthflag" -0.20\pt 4.16\pt -0.20\pt 17.40\pt } % } % $name diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly index fe8b274825..6b22684668 100644 --- a/init/font-en-tja20.ly +++ b/init/font-en-tja20.ly @@ -1,5 +1,5 @@ % generated automatically by mf-to-table.py version 0.4 -% on Mon Oct 20 01:50:55 1997 +% on Mon Oct 20 23:14:08 1997 % Do not edit % input from out/font-en-tja20.log % name=\symboltables { @@ -51,10 +51,14 @@ "pedalheel" "\\pedalheel" -2.50\pt 2.50\pt -2.50\pt 3.33\pt "pedaltoe" "\\pedaltoe" -2.50\pt 2.50\pt -0.00\pt 7.50\pt } - "floogbars" = \table { - "3u" "\\eighthflag" -0.25\pt 5.20\pt -16.04\pt 0.25\pt - "3d" "\\deighthflag" -0.25\pt 5.75\pt -0.25\pt 16.04\pt - "4u" "\\sixteenthflag" -0.25\pt 5.20\pt -16.25\pt 0.25\pt - "4d" "\\dsixteenthflag" -0.25\pt 5.75\pt -0.25\pt 15.00\pt + "flags" = \table { + "u3" "\\eighthflag" -0.25\pt 5.20\pt -15.33\pt 0.25\pt + "d3" "\\deighthflag" -0.25\pt 5.75\pt -0.25\pt 14.58\pt + "u4" "\\sixteenthflag" -0.25\pt 5.20\pt -17.50\pt 0.25\pt + "d4" "\\dsixteenthflag" -0.25\pt 5.75\pt -0.25\pt 15.00\pt + "u5" "\\thirtysecondflag" -0.25\pt 5.20\pt -21.25\pt 0.25\pt + "d5" "\\dthirtysecondflag" -0.25\pt 5.20\pt -0.25\pt 19.25\pt + "u6" "\\sixtyfourthflag" -0.25\pt 5.20\pt -26.25\pt 0.25\pt + "d6" "\\dsixtyfourthflag" -0.25\pt 5.20\pt -0.25\pt 21.75\pt } % } % $name diff --git a/init/table16.ly b/init/table16.ly index 4d80868a5b..daa17af924 100644 --- a/init/table16.ly +++ b/init/table16.ly @@ -103,19 +103,6 @@ table_sixteen= } - "flags" = \table { - "u3" "\eighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "u4" "\sixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "u5" "\\thirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "u6" "\sixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "u7" "\hundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "d3" "\deighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "d4" "\dsixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "d5" "\dthirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "d6" "\dsixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - "d7" "\dhundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt - } - "beamslopes" = \table { "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt "horizontal" "\rulesym{%}{%}" diff --git a/init/table20.ly b/init/table20.ly index dd0daaa11a..305b2c3572 100644 --- a/init/table20.ly +++ b/init/table20.ly @@ -90,20 +90,7 @@ table_twenty = "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt } - "flags" = \table { - "u3" "\eighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "u4" "\sixteenthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "u5" "\\thirtysecondflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "u6" "\sixtyfourthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "u7" "\hundredtwentyeighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "d3" "\deighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "d4" "\dsixteenthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "d5" "\dthirtysecondflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "d6" "\dsixtyfourthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - "d7" "\dhundredtwentyeighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt - } - - "beamslopes" = \table { + "beamslopes" = \table { "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt "horizontal" "\rulesym{%}{%}" } diff --git a/input/font.ly b/input/font.ly index 620c39b66e..5a57033f95 100644 --- a/input/font.ly +++ b/input/font.ly @@ -26,12 +26,13 @@ TestedFeatures = "This file tests the Feta music-font" [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 | - \multi 2 < { \stemup r1} {\stemdown c''}> + \multi 2 < { \stemup r2 r2} {\stemdown c'' c''}> \multi 2 < { \stemup c1 } {\stemdown r1}> \stemboth e8_. g'8-> e16^^ g'16_^ e32 _| g'32^| g''32-\ltoe g''32-\lheel + e64 g'64 c4... | } \paper{ gourlay_maxmeasures =5.; @@ -41,7 +42,5 @@ TestedFeatures = "This file tests the Feta music-font" gourlay_maxmeasures =5.; \output "lelie20.tex"; } -% oeps -% \midi{ } } diff --git a/lily/VERSION b/lily/VERSION index 9e2225975a..d657f9b2c7 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,7 +1,4 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 24 -# use to send patches, always empty for released version: -# include separator: ".postfix", "-pl" makes rpm barf - +PATCH_LEVEL = 25 MY_PATCH_LEVEL = diff --git a/lily/beam.cc b/lily/beam.cc index ea102e4457..a7cfd829ca 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -128,33 +128,36 @@ Beam::do_width() const void Beam::set_default_dir() { - int up = 0, down = 0; - int up_count = 0, down_count = 0; - + Drul_array<int> total; + total[UP] = total[DOWN] = 0; + Drul_array<int> count; + count[UP] = count[DOWN] = 0; + Direction d = DOWN; + for (int i=0; i <stems.size(); i++) - { - Stem *sl = stems[i]; - int cur_down = sl->get_center_distance_from_top(); - int cur_up = sl->get_center_distance_from_bottom(); - if (cur_down) - { - down += cur_down; - down_count++; - } - if (cur_up) + do { + Stem *s = stems[i]; + int current = s->dir_ + ? (1 + d * s->dir_)/2 + : s->get_center_distance(Direction(-d)); + + if (current) { - up += cur_up; - up_count++; + total[d] += current; + count[d] ++; } - } - if (!down) - down_count = 1; - if (!up) - up_count = 1; - - // the following relation is equal to - // up / up_count > down / down_count - dir_ = (up * down_count > down * up_count) ? UP : DOWN; + + } while ((d *= -1) != DOWN); + + do { + if (!total[d]) + count[d] = 1; + } while ((d *= -1) != DOWN); + + /* the following relation is equal to + up / up_count > down / down_count + */ + dir_ = (total[UP] * count[DOWN] > total[DOWN] * count[UP]) ? UP : DOWN; for (int i=0; i <stems.size(); i++) { diff --git a/lily/include/stem.hh b/lily/include/stem.hh index 3a034df85e..d150eb1e76 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -86,8 +86,8 @@ public: void do_print() const; void set_stemend (Real); Direction get_default_dir(); - int get_center_distance_from_top(); - int get_center_distance_from_bottom(); + + int get_center_distance(Direction); void set_default_dir(); void set_default_stemlen(); void set_default_extents(); @@ -101,8 +101,7 @@ public: bool invisible_b() const; /// heads that the stem encompasses (positions) - int max_head_i() const; - int min_head_i() const; + Interval_t<int> head_positions() const; protected: virtual void do_substitute_dependency (Score_elem*,Score_elem*); virtual void do_pre_processing(); diff --git a/lily/rest.cc b/lily/rest.cc index d186608b26..4cf872f613 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -19,6 +19,8 @@ Rest::do_add_processing () { if (balltype_i_ != 0 && balltype_i_ != 1) position_i_ -= 4; + else if (balltype_i_ == 0) + position_i_ += 2; Rhythmic_head::do_add_processing (); if (dots_l_) @@ -34,7 +36,8 @@ Molecule * Rest::brew_molecule_p () const { int staff_size_i_ = 8; - bool streepjes_b = abs(position_i_) > staff_size_i_ /2 && (balltype_i_ == 0 || balltype_i_ == 1); + bool streepjes_b = abs(position_i_) > staff_size_i_ /2 && + (balltype_i_ == 0 || balltype_i_ == 1); Atom s(paper ()->lookup_l()->rest (balltype_i_, streepjes_b)); Molecule * m = new Molecule ( Atom (s)); diff --git a/lily/stem.cc b/lily/stem.cc index 64b737b93f..f72d3068ef 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -43,23 +43,17 @@ Stem::Stem () beam_gap_i_ = 0; } -int -Stem::min_head_i () const -{ - int m = 1000; - for (int i =0; i < head_l_arr_.size (); i++) - m = m <? head_l_arr_[i]->position_i_; - return m; -} - -int -Stem::max_head_i () const +Interval_t<int> +Stem::head_positions () const { - int m = -1000; + Interval_t<int> r; for (int i =0; i < head_l_arr_.size (); i++) - m = m >? head_l_arr_[i]->position_i_; - return m; - + { + int p = head_l_arr_[i]->position_i_; + r[BIGGER] = r[BIGGER] >? p; + r[SMALLER] = r[SMALLER] <? p; + } + return r; } void @@ -81,13 +75,13 @@ Stem::stem_length_f () const Real Stem::stem_start_f () const { - return (dir_ < 0)? yextent_drul_[UP] : yextent_drul_[DOWN]; + return yextent_drul_[Direction(-dir_)]; } Real Stem::stem_end_f () const { - return (dir_ < 0)? yextent_drul_[DOWN] : yextent_drul_[UP]; + return yextent_drul_[dir_]; } @@ -95,12 +89,12 @@ void Stem::set_stemend (Real se) { // todo: margins - if (! ((dir_ > 0 && se >= max_head_i ()) || - (se <= min_head_i () && dir_ <0))) + if (dir_ && dir_ * head_positions()[dir_] >= se*dir_) warning (_("Weird stem size; check for narrow beams")); - yextent_drul_[UP] = (dir_ < 0) ? max_head_i () : se; - yextent_drul_[DOWN] = (dir_ < 0) ? se : min_head_i (); + + yextent_drul_[dir_] = se; + yextent_drul_[Direction(-dir_)] = head_positions()[-dir_]; } int @@ -126,44 +120,25 @@ Stem::add (Rhythmic_head *n) bool Stem::invisible_b () const { - return (!head_l_arr_.size () || head_l_arr_[0]->balltype_i_ <= 0); - -} - -// if dir_ is set we return fake values. -int -Stem::get_center_distance_from_top () -{ - if (dir_) - return (dir_ > 0) ? 0 : 1; - - int staff_center = 0; - int max = max_head_i () - staff_center; - return max >? 0; } -// if dir_ is set we return fake values. int -Stem::get_center_distance_from_bottom () +Stem::get_center_distance (Direction d) { - if (dir_) - return (dir_ > 0) ? 1 : 0; - int staff_center = 0; - int min = staff_center - min_head_i (); - return min >? 0; + int distance = d*(head_positions()[d] - staff_center); + return distance >? 0; } Direction Stem::get_default_dir () { - if (dir_) - return dir_; - return (get_center_distance_from_top () >= - get_center_distance_from_bottom ()) ? - (Direction)-1 : (Direction)1; + return (get_center_distance (UP) >= + get_center_distance (DOWN)) + ? DOWN + : UP; } @@ -176,25 +151,37 @@ Stem::set_default_dir () void Stem::set_default_stemlen () { - if (!dir_) - set_default_dir (); - - - Real dy = paper ()->interbeam_f (); Real len = STEMLEN; + Real dy = paper ()->interbeam_f (); + // ugh, should get nice *rule* for this if (abbrev_flag_i_ > 1) len += (abbrev_flag_i_ - 1)* dy / 2; - set_stemend ((dir_ > 0) ? max_head_i () + len : - min_head_i () - len); + + + if (!dir_) + set_default_dir (); + + /* If the stem points in the "wrong" direction, it should be + shortened, according to [Roush & Gourlay]. Their suggestion to knock off + a whole staffspace is a bit drastical though. + */ + else if (dir_ != get_default_dir ()) + len -= 1.0; + + if (flag_i_ >= 5) + len += 2.0; + if (flag_i_ >= 6) + len += 1.0; + + set_stemend ((dir_ > 0) ? head_positions()[BIGGER] + len : + head_positions()[SMALLER] - len); if (dir_ * stem_end_f () < 0) { set_stemend (0); } - - } void @@ -203,9 +190,10 @@ Stem::set_default_extents () if (!stem_length_f ()) set_default_stemlen (); - set_stemend ((dir_< 0) ? - max_head_i ()-stem_length_f (): min_head_i () + stem_length_f ()); - + /* set_stemend ((dir_< 0) ? + head_positions()[BIGGER]-stem_length_f (): + head_positions()[SMALLER] + stem_length_f ()); + */ if (dir_ == UP) stem_xdir_ = RIGHT; if (invisible_b ()) @@ -302,10 +290,10 @@ Stem::abbrev_mol () const Atom a (paper ()->lookup_l ()->beam (slope, w)); a.translate (Offset(- w / 2, stem_end_f () - (w / 2 * slope))); // ugh - if (!beams_i) - a.translate_axis (dy + beamdy - dir_ * dy, Y_AXIS); - else - a.translate_axis (2 * beamdy - dir_ * (beamdy - dy), Y_AXIS); + if (!beams_i) + a.translate_axis (dy + beamdy - dir_ * dy, Y_AXIS); + else + a.translate_axis (2 * beamdy - dir_ * (beamdy - dy), Y_AXIS); for (int i = 0; i < abbrev_flag_i_; i++) { @@ -317,29 +305,34 @@ Stem::abbrev_mol () const return beams; } +const Real ANGLE = 20* (2.0*M_PI/360.0); + Molecule* Stem::brew_molecule_p () const { Molecule *mol_p =new Molecule; - - Real bot = yextent_drul_[DOWN]; - Real top = yextent_drul_[UP]; - - assert (bot!=top); - Paper_def *p =paper (); - + Drul_array<Real> stem_y = yextent_drul_; Real dy = p->internote_f (); + + + Real head_wid = 0; + if (head_l_arr_.size ()) + head_wid = head_l_arr_[0]->width ().length (); + stem_y[Direction(-dir_)] += dir_ * head_wid * tan(ANGLE)/(2*dy); + if (!invisible_b ()) { - Atom ss =p->lookup_l ()->stem (bot*dy,top*dy); + Atom ss =p->lookup_l ()->stem (stem_y[DOWN]*dy, + stem_y[UP]*dy); mol_p->add (Atom (ss)); } if (!beam_l_ &&abs (flag_i_) > 2) { Atom fl = p->lookup_l ()->flag (flag_i_, dir_); - mol_p->add_at_edge (Y_AXIS, dir_, Molecule (Atom (fl))); + fl.translate_axis(stem_y[dir_]*dy, Y_AXIS); + mol_p->add(fl); assert (!abbrev_flag_i_); } @@ -373,7 +366,7 @@ Stem::hpos_f () const } /* -TODO: head_l_arr_/rest_l_arr_ in do_substitute_dependent () + TODO: head_l_arr_/rest_l_arr_ in do_substitute_dependent () */ void Stem::do_substitute_dependency (Score_elem*o,Score_elem*n) diff --git a/make/Targets.make b/make/Targets.make index 8f41109188..aeb43521ac 100644 --- a/make/Targets.make +++ b/make/Targets.make @@ -128,7 +128,7 @@ dist: $(MAKE) localdist chmod -Rf a+rX $(distdir) - (cd ./$(depth); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz) + (cd ./$(depth)/$(outdir); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz) # should be trapped rm -rf $(distdir)/ @@ -163,7 +163,7 @@ endif moduledist: -mkdir $(module-distdir) $(MAKE) localmoduledist - (cd ./$(depth); $(TAR) cfz $(MODULE_DIST_NAME).tar.gz $(MODULE_DIST_NAME)) + (cd $(depth)/$(outdir); $(TAR) cfz $(MODULE_DIST_NAME).tar.gz $(MODULE_DIST_NAME)) rm -rf $(module-distdir)/ localmoduledist: diff --git a/make/Variables.make b/make/Variables.make index abcc2dde58..37b1127741 100644 --- a/make/Variables.make +++ b/make/Variables.make @@ -35,7 +35,7 @@ outdir=$(OUTDIR_NAME) # derived names lily_bindir = $(depth)/bin -distdir = $(depth)/$(DIST_NAME) +distdir = $(depth)/$(outdir)/$(DIST_NAME) module-distdir = $(depth)/$(MODULE_DIST_NAME) depdir = $(outdir) diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index a9d7d16bae..a4441e5010 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.24 -Inschrijf datum: 20OCT97 +Versie: 0.1.25 +Inschrijf datum: 21OCT97 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.24.tar.gz + 395k lilypond-0.1.25.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.24.tar.gz + 395k lilypond-0.1.25.tar.gz Copi"eer politie: GPL End diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 95fbefe271..c29c89408d 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.24 -Entered-date: 20OCT97 +Version: 0.1.25 +Entered-date: 21OCT97 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 @@ -14,8 +14,8 @@ 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 - 430k lilypond-0.1.24.tar.gz + 430k lilypond-0.1.25.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/ - 430k lilypond-0.1.24.tar.gz + 430k lilypond-0.1.25.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index 147b27640a..ac4318fd52 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.24 +Version: 0.1.25 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.24.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.25.tar.gz Summary: A preprocessor to make TeX typeset music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys <hanwen@stack.nl> @@ -4,7 +4,6 @@ - more symbols * ledgerlines * stem-notehead attachments. - * flags * clefs * some scripts: * piano pedals, @@ -17,6 +16,7 @@ - normal(1/5staff) bold - large(3/4staff) bold + - redo flags in a orderly manner; 128th flags - include important spacing dims in fetalog - lilyrules.mf for different rules (lines) ? diff --git a/mf/dimen.tex b/mf/dimen.tex index a596396e7a..44c59a4ef4 100644 --- a/mf/dimen.tex +++ b/mf/dimen.tex @@ -9,10 +9,8 @@ \font\slurs=xslhd16 \font\specfont=musixspx \font\egler=opus16 -\font\nummertjes=feta-nummer10 -%\def\thefont{\egler} +\def\thefont{\egler} %\def\thefont{\specfont} -\def\thefont{\nummertjes} \def\mb#1{{\thefont\char#1}} @@ -54,8 +52,7 @@ \newcount\n \def\charn{\n=-1 -% \loop\ifnum\n<255\advance\n by1 - \loop\ifnum\n<10\advance\n by1 + \loop\ifnum\n<255\advance\n by1 \doitem{\number\n}\endgraf\repeat} diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf index 575c4943fc..8b6c0c79fe 100644 --- a/mf/feta-banier.mf +++ b/mf/feta-banier.mf @@ -1,7 +1,7 @@ % flags % -fet_begingroup("floogbars") +fet_begingroup("flags") % Flags pointing down overlap with the notehead (in x-direction), so % the down-flag can be bigger @@ -58,8 +58,7 @@ enddef; % godbewaarme, wat een kutsymbolen -fet_beginchar("8th Flag (up)", "3u", "eighthflag") - +fet_beginchar("8th Flag (up)", "u3", "eighthflag") save flare, hip_depth, hip_width, foot_depth, foot_width; @@ -68,7 +67,7 @@ fet_beginchar("8th Flag (up)", "3u", "eighthflag") hip_depth# = 8/15 foot_depth#; hip_width# = upflag_width# - hip_thickness#/2; - foot_depth# = 15/7 interline#; + foot_depth# + flare# = 3 interline#; foot_width# = .8 hip_width#; set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2 @@ -87,7 +86,7 @@ fet_beginchar("8th Flag (up)", "3u", "eighthflag") draw (0, 0) .. (0,-2 interline); fet_endchar; -fet_beginchar("8th Flag (down)", "3d", "deighthflag") +fet_beginchar("8th Flag (down)", "d3", "deighthflag") save flare, hip_depth, hip_width, foot_depth, foot_width; @@ -96,8 +95,10 @@ fet_beginchar("8th Flag (down)", "3d", "deighthflag") hip_depth# = 8/15 foot_depth#; hip_width# = downflag_width# - hip_thickness#/2; - foot_depth# = 15/7 interline#; - foot_width# = .8 hip_width#; + + % 2.9 -> don't intersect staffline at foot + foot_depth# + flare# = 2.85 interline#; + foot_width# = .82 hip_width#; set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2 + stemthickness#/2, @@ -117,7 +118,7 @@ fet_beginchar("8th Flag (down)", "3d", "deighthflag") fet_endchar; -fet_beginchar("16th Flag (up)", "4u", "sixteenthflag") +fet_beginchar("16th Flag (up)", "u4", "sixteenthflag") save flare, flagspace, hip_depth, hip_width, foot_depth, foot_width; @@ -126,14 +127,14 @@ fet_beginchar("16th Flag (up)", "4u", "sixteenthflag") flagspace# = .85 interline#; hip_depth# = 8/15 foot_depth#; - flagspace# + flare# + foot_depth# = 3.25 interline#; + flagspace# + flare# + foot_depth# = 3.5 interline#; hip_width# = upflag_width# - hip_thickness#/2; foot_width# = .8 hip_width#; set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2 + stemthickness#/2, - 3.25 interline#, stemthickness#/2) + 3.5 interline#, stemthickness#/2) define_pixels(flagspace); define_pixels(flare, @@ -142,7 +143,7 @@ fet_beginchar("16th Flag (up)", "4u", "sixteenthflag") draw_flag((stemthickness/2, 0),flare, 1.2 hip_depth, .97 hip_width, hip_thickness, - foot_depth, .9 foot_width, foot_thickness, 0.37); + foot_depth, .9 foot_width, foot_thickness, 0.5); draw_flag((stemthickness/2, -flagspace),flare, hip_depth, hip_width, hip_thickness, foot_depth, foot_width, foot_thickness, 0); @@ -153,7 +154,7 @@ fet_beginchar("16th Flag (up)", "4u", "sixteenthflag") fet_endchar; -fet_beginchar("16th Flag (up)", "4d", "dsixteenthflag") +fet_beginchar("16th Flag (down)", "d4", "dsixteenthflag") save flare, flagspace, hip_depth, hip_width, foot_depth, foot_width; @@ -179,7 +180,7 @@ fet_beginchar("16th Flag (up)", "4d", "dsixteenthflag") draw_flag((stemthickness/2, 0),flare, hip_depth, .97 hip_width, hip_thickness, - 1.2 foot_depth, .95 foot_width, foot_thickness, 0.0); + 1.2 foot_depth, .95 foot_width, foot_thickness, 0.0); draw_flag((stemthickness/2, -flagspace),flare, hip_depth, hip_width, hip_thickness, @@ -191,4 +192,169 @@ fet_beginchar("16th Flag (up)", "4d", "dsixteenthflag") y_mirror_char; fet_endchar; -fet_endgroup("floogbars"); +fet_beginchar("32nd Flag (up)", "u5", "thirtysecondflag") + save flare, flagspace, + hip_depth, hip_width, + foot_depth, foot_width; + + flare# = 0.85 interline#; + flagspace# = .87 interline#; + hip_depth# = 8/15 foot_depth#; + + 2 flagspace# + flare# + foot_depth# = 4.25 interline#; + + hip_width# = upflag_width# - hip_thickness#/2; + foot_width# = .8 hip_width#; + + set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2 + + stemthickness#/2, + 4.25 interline#, stemthickness#/2) + + define_pixels(flagspace); + define_pixels(flare, + hip_depth, hip_width, hip_thickness, + foot_depth, foot_width, foot_thickness); + + draw_flag((stemthickness/2, 0),flare, + 1.25 hip_depth, .95 hip_width, hip_thickness, + .85 foot_depth, 1.1 foot_width, foot_thickness, 0.0); + draw_flag((stemthickness/2, -flagspace),flare, + 1.2 hip_depth, .97 hip_width, hip_thickness, + foot_depth, .9 foot_width, foot_thickness, 0.37); + draw_flag((stemthickness/2, -2 flagspace),flare, + 1.1 hip_depth, hip_width, hip_thickness, + foot_depth, 1.15 foot_width, foot_thickness, 0); + + pickup pencircle scaled stemthickness; + draw (0, 0) .. (0,-3 interline); + +fet_endchar; + + + +fet_beginchar("32nd Flag (up)", "d5", "dthirtysecondflag") + save flare, flagspace, + hip_depth, hip_width, + foot_depth, foot_width; + + flare# = 0.85 interline#; + flagspace# = .85 interline#; + hip_depth# = .57 foot_depth#; + foot_width# = 1.0 hip_width#; + + 2 flagspace# + flare# + foot_depth# = 3.85 interline#; + hip_width# = upflag_width# - hip_thickness#/2; + + + set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2 + + stemthickness#/2, + 3.85 interline#, stemthickness#/2) + + define_pixels(flagspace); + define_pixels(flare, + hip_depth, hip_width, hip_thickness, + foot_depth, foot_width, foot_thickness); + + draw_flag((stemthickness/2, 0),flare, + 1.3 hip_depth, .93 hip_width, hip_thickness, + foot_depth, .9 foot_width, foot_thickness, 0.0); + draw_flag((stemthickness/2, -flagspace),flare, + 1.15 hip_depth, .97 hip_width, hip_thickness, + foot_depth, .95 foot_width, foot_thickness, 0.0); + draw_flag((stemthickness/2, -2 flagspace),flare, + 1.0 hip_depth, hip_width, .95 hip_thickness, + foot_depth, foot_width, .93 foot_thickness, 0); + + pickup pencircle scaled stemthickness; + draw (0, 0) .. (0,-3 interline); + y_mirror_char; +fet_endchar; + +fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag") + save flare, flagspace, + hip_depth, hip_width, + foot_depth, foot_width; + + flare# = 0.85 interline#; + flagspace# = .9 interline#; + hip_depth# = 8/15 foot_depth#; + + 3 flagspace# + flare# + foot_depth# = 5.25 interline#; + + hip_width# = upflag_width# - hip_thickness#/2; + foot_width# = .8 hip_width#; + + set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2 + + stemthickness#/2, + 5.25 interline#, stemthickness#/2) + + define_pixels(flagspace); + define_pixels(flare, + hip_depth, hip_width, hip_thickness, + foot_depth, foot_width, foot_thickness); + + draw_flag((stemthickness/2, 0),flare, + 1.25 hip_depth, .95 hip_width, hip_thickness, + .85 foot_depth, 1.1 foot_width, foot_thickness, 0.0); + draw_flag((stemthickness/2, -flagspace),flare, + 1.2 hip_depth, .97 hip_width, hip_thickness, + foot_depth, .9 foot_width, foot_thickness, 0.37); + draw_flag((stemthickness/2, -2flagspace),flare, + 1.2 hip_depth, .97 hip_width, hip_thickness, + foot_depth, .9 foot_width, foot_thickness, 0.37); + draw_flag((stemthickness/2, -3 flagspace),flare, + 1.1 hip_depth, hip_width, hip_thickness, + foot_depth, 1.15 foot_width, foot_thickness, 0); + + pickup pencircle scaled stemthickness; + draw (0, 0) .. (0,-5 interline); + +fet_endchar; + + +fet_beginchar("64th Flag (down)", "d6", "dsixtyfourthflag") + save flare, flagspace, + hip_depth, hip_width, + foot_depth, foot_width; + save lastcut; + flare# = 0.85 interline#; + flagspace# = .9 interline#; + hip_depth# = .57 foot_depth#; + foot_width# = 1.0 hip_width#; + + lastcut = .7; + + 3 flagspace# + flare# + hip_depth# + + (foot_depth# - hip_depth#) * (1-lastcut) = 4.35 interline#; + hip_width# = upflag_width# - hip_thickness#/2; + + + set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2 + + stemthickness#/2, + 4.35 interline#, stemthickness#/2) + + define_pixels(flagspace); + define_pixels(flare, + hip_depth, hip_width, hip_thickness, + foot_depth, foot_width, foot_thickness); + + draw_flag((stemthickness/2, 0),flare, + 1.33 hip_depth, .92 hip_width, hip_thickness, + 1.15 foot_depth, .9 foot_width, foot_thickness, 0.0); + draw_flag((stemthickness/2, -flagspace),flare, + 1.15 hip_depth, .97 hip_width, hip_thickness, + 1.14 foot_depth, .92 foot_width, foot_thickness, 0.0); + draw_flag((stemthickness/2, -2 flagspace),flare, + 1.15 hip_depth, .97 hip_width, hip_thickness, + 1.12 foot_depth, .95 foot_width, foot_thickness, 0.0); + draw_flag((stemthickness/2, -3flagspace),flare, + 1.0 hip_depth, hip_width, .95 hip_thickness, + foot_depth, foot_width, .93 foot_thickness, lastcut); + + pickup pencircle scaled stemthickness; + draw (0, 0) .. (0,-5 interline); + y_mirror_char; +fet_endchar; + + +fet_endgroup("flags"); diff --git a/mf/feta-eindelijk.mf b/mf/feta-eindelijk.mf index b3cadcab90..d6d7cfcf54 100644 --- a/mf/feta-eindelijk.mf +++ b/mf/feta-eindelijk.mf @@ -8,11 +8,8 @@ fet_begingroup("rests"); begingroup -med#:=1/33designsize; thick#:=1/16designsize; -define_blacker_pixels(med,thick); -pen med_pen; -med_pen:= pencircle scaled med; +define_blacker_pixels(thick); rthin:=1/8*interline; % rthick:=2rthin; @@ -59,9 +56,10 @@ def block_rest= enddef; fet_beginchar( "whole rest", "0", "wholerest"); -set_char_box(0, block_rest_x#, -interline# + block_rest_y#, interline# ); + set_char_box(0, block_rest_x#, + block_rest_y#, 0); block_rest; - currentpicture := currentpicture shifted (0,interline - block_rest_y); + currentpicture := currentpicture shifted (0,- block_rest_y); fet_endchar; fet_beginchar("half rest", "1", "halfrest"); @@ -75,20 +73,26 @@ fet_endchar; % 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_y#, ledgerlinethickness#/2); block_rest; - currentpicture := currentpicture shifted (0,interline - block_rest_y); + currentpicture := currentpicture shifted (0, - block_rest_y); pickup pencircle scaled ledgerlinethickness; - draw (-block_rest_y, interline) - .. (block_rest_x + block_rest_y, interline); + + y5 = y6 = 0; + lft x5 = - b; + rt x6 = w; + draw z5 .. z6; 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#); + ledgerlinethickness#/2, block_rest_y#); block_rest; pickup pencircle scaled ledgerlinethickness; - draw (-block_rest_y,0) .. (block_rest_x + block_rest_y,0); + y5 = y6 = 0; + lft x5 = - b; + rt x6 = w; + draw z5 .. z6; fet_endchar; fet_beginchar("Quarter rest","2","quartrest"); diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 798782d5d4..4b99ef06d7 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -24,6 +24,6 @@ if test = 0: input feta-schrift; input feta-banier; else: - input feta-bolletjes; - input feta-banier; +% input feta-bolletjes; input feta-banier; + input feta-eindelijk; fi diff --git a/mf/feta-nummer.mf b/mf/feta-nummer.mf deleted file mode 100644 index 577f09ff13..0000000000 --- a/mf/feta-nummer.mf +++ /dev/null @@ -1,207 +0,0 @@ -% feta-nummer.mf -% part of LilyPond's pretty-but-neat music font - -fet_begingroup("nummer") - -height#:=designsize; -%thick#:=height#/4; -thick#:=height#/3.9; -thin#:=thick#/4; -hair#:=thin#/2; -kuulleke#:=hair#; -%kuulleke#:=0; - -define_pixels(height,thick,thin,hair); -foot_top#:=2thin#; -foot_width#:=2thick#+thin#; -define_pixels(foot_top,foot_width); -define_pixels(kuulleke); - -def draw_foot(expr xpos) = - begingroup; - clearxy; - penpos1(thick,0); - z1=(xpos,foot_top); - penpos2(foot_width,0); - z2=(x1,0); - penpos3(hair,-90); - z3r=z2r; - penpos4(hair,90); - z4l=z2l; - z5=(x1,hair/2); - fill z1..{right}z1r{down}..{right}z3l..z3r{left}..z5..{left}z4l..z4r{right}..{up}z1l{right}..z1..cycle; - endgroup; -enddef; - -fet_beginchar("Numeral 0", "0", "zero") - set_char_box(0, 3thick#, 0, height#); - penpos1(thin,90); - z1r=(w/2,h); - penpos2(thick,0); - z2r=(w,h/2); - penpos3(thin,-90); - z3r=(w/2,0); - penpos4(thick,180); - z4r=(0,h/2); - fill z1r..z2r..z3r..z4r..cycle; - unfill z1l..tension1.2..z2l..tension1.2..z3l..tension1.2..z4l..tension1.2..cycle; -fet_endchar; - -fet_beginchar("Numeral 1", "1", "one") - set_char_box(0, 5/2thick#+thin#, 0, height#); - save alpha; alpha=0; - penpos1(thick,alpha); - z1=(thick+thick/2,height); - penpos2(hair,alpha+45); - z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45); - penpos3(hair,alpha-45); - z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135); - z4=z1+kuulleke*dir(alpha-90); - - penpos5(thick,0); - z5=(x1,foot_top); - - z6=(0,h/2); - save beta; beta=angle(z1l-z6); - penpos7(thin,beta-90); - z7l=z6; - penpos8(thin/cosd(beta),-90); - z8l=z1l; - penpos9(hair,beta-90); - z9r=z8r+(hair/cosd(beta))*(0,-1); - save gamma; gamma=angle(length(z1r-z1),+2kuulleke); - fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle; - fill z7l{dir(beta)}..{dir(beta)}z1l..z2r..z9r{up}..z9l{dir(180+beta)}..{dir(180+beta)}z7r..cycle; - penlabels(7,8,9); - - draw_foot(x1); -fet_endchar; - -fet_beginchar("Numeral 2", "2", "two") - set_char_box(0, 2thick#+3thin#, 0, height#); - clearxy; - save alpha; alpha=-50; - save beta; beta=75; - penpos1(thin,90+beta); - z1=(0,0)+(1/2sqrt(2)*thin)*dir(45); - penpos3(hair,90+beta); - z3=(w,thick)+(1/2sqrt(2)*hair)*dir(-135); - penpos2(3/4thick,90+alpha); - x2-x1=x3-x2; y2=thick/2; - penlabels(1,2,3); - - fill z1r{dir(beta)}..{dir(alpha)}z2r..{dir(beta)}z3r..z3l{dir(180+beta)}..{dir(180+alpha)}z2l..{dir(180+beta)}z1l..cycle; - - penpos4(thin,90); - z4r=(w/2-thin-hair,2/5h); - penpos5(thick-hair,0); - z5r=(w-thin,(y4+y6)/2); - penpos6(thin,90); - z6r=(w/2-thin-hair,h); - penlabels(4,5,6); -% fill z1l{dir(beta)}..{dir(5)}z4l..{up}z5r..{left}z6r..z6l{right}..z5l{down}..z4r{dir(180+5)}..{dir(180+beta)}z1r..cycle; - penpos7(thick,90); - z7l=(thick/2,y5-hair); - penpos8(thick,0); - z8=z7; - penlabels(7,8); - fill z1l{dir(beta)}..{dir(20)}z4l..{up}z5r..{left}z6r..z8l{down}..z7l{right}..{up}z8r..tension0.75..z6l{right}..z5l{down}..z4r{dir(180+20)}..{dir(180+beta)}z1r..cycle; -fet_endchar; - -fet_beginchar("Numeral 4", "4", "four") - set_char_box(0, 5/2thick#+3thin#, 0, height#); - save alpha; alpha=0; - penpos1(3/2thick,alpha); - z1r=(w-3thin,height); - penpos2(hair,alpha+45); - z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45); - penpos3(hair,alpha-45); - z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135); - z4=z1+kuulleke*dir(alpha-90); - - z5=(thin,1/4height+thin); - save beta; beta=angle(z3r-z5); - penpos6(thin,-90); - z6l=z5; - penpos7(thin,-90); - y7=y6; x7=w-1/2thin; - penpos8(thin,-alpha); - z8r=z5; - save gamma; gamma=angle(length(z1r-z1),+2kuulleke); - fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{dir(180+beta)}..{dir(180+beta)}z8r{right}..{right}z7l..z7r{left}..{left}z6r..z8l{dir(beta)}..{up}z2l..cycle; - penlabels(1,2,3,4,5,6,7); - - clearxy; - - save alpha; alpha=beta; - penpos1(thick/cosd(alpha),alpha); - % ugh, must be just > foot_width/2! - z1r=(w-3thin,height-(thin+hair)/cosd(alpha)); - penpos2(hair,alpha+45); - z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45); - penpos3(hair,alpha-45); - z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135); - z4=z1+kuulleke*dir(alpha-90); - - % ugh - % the angle alpha may just let the hair penposes 3 and 4 - % stick-out to the right of the vertical... -% penpos5(thick,0); -% z5=(x1,foot_top); - penpos5(whatever,0); - x5r-x5l=x3r-x2l; x5r=x3r; y5=foot_top; - - save gamma; gamma=angle(length(z1r-z1),+2kuulleke); - fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle; - penlabels(1,2,3,4,5); - - draw_foot(x5); -fet_endchar; - -fet_beginchar("Numeral 7", "7", "seven") -% set_char_box(0, 5/2thick#+thin#, 0, height#); - set_char_box(0, 5/2thick#+2thin#, 0, height#); - save alpha; alpha=-180; - penpos1(3/2thick,alpha); - z1r=(thin,0); - penpos2(hair,alpha+45); - z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45); - penpos3(hair,alpha-45); - z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135); - z4=z1+kuulleke*dir(alpha-90); - - save beta; beta=50; - penpos5(thin,90+beta); - z5=(w,h)+(1/2sqrt(2)*thin)*dir(-135); - - save gamma; gamma=angle(length(z1r-z1),+2kuulleke); - save delta; delta=12; - fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{dir(beta+delta)}..{dir(beta)}z5r..z5l{dir(180+beta)}..{dir(delta-90)}z2l..cycle; - penlabels(1,2,3,4,5); - - clearxy; - save alpha; alpha=-50; - penpos1(2thin,90); -% z1=(3/2thin,h-thick/2-thin); - z1=(3/2thin,h-(thick+thin)/2); - penpos3(thin,90+beta); - z3=(w,h)+(1/2sqrt(2)*thin)*dir(-135); - penpos2(3/4thick,90+alpha); - x2-x1=x3-x2; y2=h-thick/2; - - penpos4(thin,0); - z4l=(0,h-thin/2); - penpos5(thin,0); - z5l=(0,h/2+thin/2); - - penpos6(4thin,90); - z6r=(thin,y1r+thin/2); - - fill z1r{dir(beta)}..{dir(alpha)}z2r..{dir(beta)}z3r..z3l{dir(180+beta)}..{dir(180+alpha)}z2l..{dir(180+beta)}z1l..z6l{down}..{down}z5r..z5l{up}..{up}z4l..z4r{down}..{down}z6r..{right}cycle; - penlabels(1,2,3,4,5,6); - - -fet_endchar; - - -fet_endgroup("nummer") diff --git a/mf/feta-nummer10.mf b/mf/feta-nummer10.mf deleted file mode 100644 index 45d33f472b..0000000000 --- a/mf/feta-nummer10.mf +++ /dev/null @@ -1,14 +0,0 @@ -% feta-nummer10.mf -% part of LilyPond's pretty-but-neat music font - -input autometric; -fet_beginfont("feta-nummer", 10); - -mode_setup; - -input feta-nummer; - -fet_endfont("feta-nummer"); - -end. - diff --git a/mf/feta-orator.mf b/mf/feta-orator.mf new file mode 100644 index 0000000000..1448c8c2ac --- /dev/null +++ b/mf/feta-orator.mf @@ -0,0 +1,121 @@ +% feta-orator.mf +% part of LilyPond's pretty-but-neat music font + +fet_begingroup("orator") + +height#:=designsize; +thick#:=height#/4; +thin#:=thick#/4; +hair#:=thin#/2; +kuulleke#:=thin#; + +define_pixels(height,thick,thin,hair); +foot_top#:=2thin#; +foot_width#:=2thick#+thin#; +define_pixels(foot_top,foot_width); +define_pixels(kuulleke); + +def draw_foot(expr xpos) = + begingroup; + clearxy; + penpos1(thick,0); + z1=(xpos,foot_top); + penpos2(foot_width,0); + z2=(x1,0); + penpos3(hair,-90); + z3r=z2r; + penpos4(hair,90); + z4l=z2l; + z5=(x1,hair/2); + fill z1..{right}z1r{down}..{right}z3l..z3r{left}..z5..{left}z4l..z4r{right}..{up}z1l{right}..z1..cycle; + endgroup; +enddef; + +fet_beginchar("Numeral 0", "0", "zero") + set_char_box(0, 3thick#, 0, height#); + penpos1(thin,90); + z1r=(w/2,h); + penpos2(thick,0); + z2r=(w,h/2); + penpos3(thin,-90); + z3r=(w/2,0); + penpos4(thick,180); + z4r=(0,h/2); + fill z1r..z2r..z3r..z4r..cycle; + unfill z1l..tension1.2..z2l..tension1.2..z3l..tension1.2..z4l..tension1.2..cycle; +fet_endchar; + +fet_beginchar("Numeral 1", "1", "one") + set_char_box(0, 5/2thick#+thin#, 0, height#); + penpos1(thick,0); + z1=(thick+thick/2,height); + penpos2(hair,45); + z2=z1l+(1/4sqrt(2)*hair)*(1,-1); + penpos3(hair,-45); + z3=z1r+(1/4sqrt(2)*hair)*(-1,-1); + x4=x1; y4=y1-kuulleke; + + penpos5(thick,0); + z5=(x1,foot_top); + + z6=(0,h/2); + save alpha; alpha=angle(z1l-z6); + penpos7(thin,alpha-90); + z7l=z6; + penpos8(thin/cosd(alpha),-90); + z8l=z1l; + penpos9(hair,alpha-90); + z9r=z8r+(hair/cosd(alpha))*(0,-1); + fill z2r{(1,-1)}..z4..{(1,1)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle; +% fill z7l{dir(alpha)}..{dir(alpha)}z2l{down}..z9r{up}..z9l{dir(180+alpha)}..{dir(180+alpha)}z7r..cycle; + fill z7l{dir(alpha)}..{dir(alpha)}z1l..z2r..z9r{up}..z9l{dir(180+alpha)}..{dir(180+alpha)}z7r..cycle; + penlabels(7,8,9); + + draw_foot(x1); +fet_endchar; + +fet_beginchar("Numeral 4", "4", "four") + set_char_box(0, 5/2thick#+3thin#, 0, height#); + penpos1(3/2thick,0); + z1r=(w-3thin,height); + z2=(thin,1/4height+thin); + penpos3(hair,45); + z3=z1l+(1/4sqrt(2)*hair)*(1,-1); + penpos4(hair,-45); + z4=z1r+(1/4sqrt(2)*hair)*(-1,-1); + x5=x1; y5=y1-kuulleke; + save alpha; alpha=angle(z4r-z2); + penpos6(thin,-90); + z6l=z2; + penpos7(thin,-90); + y7=y6; x7=w-1/2thin; + penpos8(thin,-alpha); + z8r=z2; + fill z3r{(1,-1)}..z5..{(1,1)}z4l..z4r{dir(180+alpha)}..{dir(180+alpha)}z8r{right}..{right}z7l..z7r{left}..{left}z6r..z8l{dir(alpha)}..{up}z3l..cycle; + penlabels(1,2,3,4,5,6,7); + + clearxy; + penpos1(thick/cosd(alpha),alpha); + % ugh, must be just > foot_width/2! + z1r=(w-3thin,height-(thin+hair)/cosd(alpha)); + penpos2(hair,alpha+45); + z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45); + penpos3(hair,alpha-45); + z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135); + z4=z1+kuulleke*dir(alpha-90); + + % ugh + % the angle alpha may just let the hair penposes 3 and 4 + % stick-out to the right of the vertical... +% penpos5(thick,0); +% z5=(x1,foot_top); + penpos5(whatever,0); + x5r-x5l=x3r-x2l; x5r=x3r; y5=foot_top; + + fill z2r{dir(alpha-45)}..z4..{dir(alpha+45)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle; + penlabels(1,2,3,4,5); + + draw_foot(x5); +fet_endchar; + +fet_endgroup("orator") diff --git a/mf/feta-orator10.mf b/mf/feta-orator10.mf new file mode 100644 index 0000000000..c4c0ed0646 --- /dev/null +++ b/mf/feta-orator10.mf @@ -0,0 +1,14 @@ +% feta-orator20.mf +% part of LilyPond's pretty-but-neat music font + +input autometric; +fet_beginfont("feta-orator", 10); + +mode_setup; + +input feta-orator; + +fet_endfont("feta-orator"); + +end. + diff --git a/tex/font-en-tja16.tex b/tex/font-en-tja16.tex index d7c1698b2c..890c8c726f 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.4 -% on Mon Oct 20 01:50:48 1997 +% on Mon Oct 20 23:14:01 1997 % Do not edit % input from out/font-en-tja16.log % name @@ -51,9 +51,13 @@ \fetdef\pedalheel{36} \fetdef\pedaltoe{37} -% floogbars +% flags \fetdef\eighthflag{38} \fetdef\deighthflag{39} \fetdef\sixteenthflag{40} \fetdef\dsixteenthflag{41} +\fetdef\thirtysecondflag{42} +\fetdef\dthirtysecondflag{43} +\fetdef\sixtyfourthflag{44} +\fetdef\dsixtyfourthflag{45} diff --git a/tex/font-en-tja20.tex b/tex/font-en-tja20.tex index 6e2125afd1..347abfb998 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.4 -% on Mon Oct 20 01:50:55 1997 +% on Mon Oct 20 23:14:08 1997 % Do not edit % input from out/font-en-tja20.log % name @@ -51,9 +51,13 @@ \fetdef\pedalheel{36} \fetdef\pedaltoe{37} -% floogbars +% flags \fetdef\eighthflag{38} \fetdef\deighthflag{39} \fetdef\sixteenthflag{40} \fetdef\dsixteenthflag{41} +\fetdef\thirtysecondflag{42} +\fetdef\dthirtysecondflag{43} +\fetdef\sixtyfourthflag{44} +\fetdef\dsixtyfourthflag{45} |