From: Han-Wen Nienhuys Date: Sat, 11 Oct 1997 11:28:50 +0000 (+0200) Subject: release: 0.1.22 X-Git-Tag: release/0.1.22 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=934d7fd539e587975098a6de6ee39cb25151ac48;p=lilypond.git release: 0.1.22 --- diff --git a/.dstreamrc b/.dstreamrc index 7669e1cdb3..178573bd1a 100644 --- a/.dstreamrc +++ b/.dstreamrc @@ -5,18 +5,18 @@ Dstream 1 # yydebug InitParser 1 -Parser 0 +Parser 1 InitDeclarations 1 Declarations 1 # FlexLexer debug InitLexer 1 -Lexer 1 +Lexer 0 # flower lib File_path 1 Matrix 0 -Vector 1 +Vector 0 # lily Atom 0 @@ -35,11 +35,11 @@ Engraver_group_engraver 0 Group_change_req 0 Head_column 0 Idealspacing 0 -Ineq_constrained_qp 1 +Ineq_constrained_qp 0 Input_translator 0 Item 0 Key_item 0 -Lookup 1 +Lookup 0 Line_spacer 0 Melodic_req 0 Midi_def 0 @@ -47,7 +47,7 @@ Midistrings 1 Mixed_qp 0 Music 0 Music_iterator 0 -My_lily_lexer 0 +My_lily_lexer 1 Note_head 0 Note_performer 0 Note_req 0 @@ -80,8 +80,8 @@ Staff_commands 0 Stem 0 Stem 0 Stem_req 0 -Symtable 1 -Symtables 1 +Symtable 0 +Symtables 0 Text_def 0 Text_req 0 diff --git a/AUTHORS.text b/AUTHORS.text index 59490e17be..45db5d4374 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -25,7 +25,8 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS Documentation/mudela.pod, lib/*source-file*, lib/duration.cc, lib/source*, flower/*{list,cursor}*, lily/rest-collision*, lily/*abbreviation*, conflily, - cygnus w32 stuff, lily/*perf*, some input files, mf/* + cygnus w32 stuff, lily/*perf*, some input files, + mf/*{bolletjes,wat-zie-ik,eindelijk} and corresponding header files. @@ -60,7 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS - -23/Sep/97 LilyPond 0.1.20 1 +10/Oct/97 LilyPond 0.1.22 1 diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod index 16f62c203f..1839dec915 100644 --- a/Documentation/AUTHORS.pod +++ b/Documentation/AUTHORS.pod @@ -24,7 +24,7 @@ lily/midi-*, mi2mu/*, parts flower/string*.cc, make/*.make, */Makefile parts of Documentation/mudela.pod, lib/*source-file*, lib/duration.cc, lib/source*, flower/*{list,cursor}*, lily/rest-collision*, lily/*abbreviation*, conflily, cygnus w32 stuff, lily/*perf*, some -input files, mf/* +input files, mf/*{bolletjes,wat-zie-ik,eindelijk} and corresponding header files. diff --git a/Documentation/Rules.make b/Documentation/Rules.make index 7e87d4ff6b..d5c66f344b 100644 --- a/Documentation/Rules.make +++ b/Documentation/Rules.make @@ -57,7 +57,7 @@ $(outdir)/%.dvi: $(depth)/input/%.ly $(depth)/VERSION # generate the pixmap at twice the size, then rescale (for antialiasing) $(outdir)/%.gif: $(outdir)/%.ps - gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $< -c quit |pnmscale 0.5| ppmtogif > $@ + gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $< -c quit |pnmscale 0.5| ppmtogif > $@ $(outdir)/%.ly.txt: $(depth)/input/%.ly ln -f $< $@ diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod index 21a6385130..3a34a5dfac 100644 --- a/Documentation/gnu-music.pod +++ b/Documentation/gnu-music.pod @@ -93,17 +93,12 @@ of use and power. =item A set of music fonts Preferably in Metafont, suited to both screen display and use on -paper; This is needed because - -1. the copyright heritage of {Opus,Musix}tex is unclear. - -2. We don't have any legal papers which make these fonts free (to use -and alter) +paper. =item A typesetting engine A system with rules on how to set properties of items to be printed -(up/down directions, breaking, dimensoins, etc) LilyPond provides one, +(up/down directions, breaking, dimensions, etc) LilyPond provides one, but it is not (yet) suited to interactive typesetting =item A display engine @@ -170,10 +165,6 @@ formats. =back -The typesetting system has a complexity comparable to TeX's, the GUI -would be comparable to LyX (?) with additional complexity in -recognizing input. - =head1 TASKS (SHORT TERM) =over 4 diff --git a/Documentation/literature.pod b/Documentation/literature.pod index 038c86f577..a085af6c6a 100644 --- a/Documentation/literature.pod +++ b/Documentation/literature.pod @@ -44,14 +44,20 @@ notation issues as one is likely to get. MB] Karl Hader. ``Aus der Werkstatt eines Notenstechers'' Waldheim--Eberle Verlag, Vienna 1948 -[Hader was the leader of the Waldheim-Eberle music publishers. This -book contains the most important rules on engraving] +[Hader was the chief-engraver of the Waldheim-Eberle music publishers. +This book contains the most important rules on engraving (according to +[Chlapik])] MPA. Standard music notation specifications for computer programming. December 1996 [Pamphlet explaining some fine points in music font design HWN] +D. Roush. ``Music Formatting Guidelines,'' Technical Report +OSU-CISRC-3/88-TR10, Department of Computer and Information Science, +The Ohio State University, 1988. + +[Rules on formatting music formulated for use in computers HWN] =head2 Notation with computers @@ -130,12 +136,6 @@ Computer and Information Science, The Ohio State University, 1987. [Placement of balls, stems, dots which occur at the same moment ("Simultaneity") HWN] -D. Roush. ``Music Formatting Guidelines,'' Technical Report -OSU-CISRC-3/88-TR10, Department of Computer and Information Science, -The Ohio State University, 1988. - -[Rules on formatting music formulated for use in computers HWN] - F. Sola. ``Computer Design of Musical Slurs, Ties and Phrase Marks,'' Technical Report OSU-CISRC-10/87-TR32, Department of Computer and Information Science, The Ohio State University, 1987. diff --git a/INSTALL.text b/INSTALL.text index 638c007348..202a89efff 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -8/Oct/97 LilyPond 0.1.21 1 +8/Oct/97 LilyPond 0.1.22 1 @@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -8/Oct/97 LilyPond 0.1.21 2 +8/Oct/97 LilyPond 0.1.22 2 @@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -8/Oct/97 LilyPond 0.1.21 3 +8/Oct/97 LilyPond 0.1.22 3 @@ -259,7 +259,7 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG -8/Oct/97 LilyPond 0.1.21 4 +8/Oct/97 LilyPond 0.1.22 4 @@ -325,7 +325,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX -8/Oct/97 LilyPond 0.1.21 5 +8/Oct/97 LilyPond 0.1.22 5 @@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -8/Oct/97 LilyPond 0.1.21 6 +8/Oct/97 LilyPond 0.1.22 6 diff --git a/NEWS b/NEWS index 3f196faa5e..abf20884ef 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,16 @@ +pl 22 + - bf: lyric 's- Zondags + - bf: colliding accidentals: renamed translate(Real,Axis) to translate_axis() + - renaming of scripts + - strings with escaped characters. + - bf "string_with_\"_embedded" + - bf: mf/Makefile + - feta changes (trill, organ pedals) + - updated mf-to-table for new feta conventions + - changed header format to something sensible. + - moved staff to centerline == 0; + +******** pl 21 - shrinking uses more energy than stretching - check IO error on writing (disk full?) diff --git a/TODO b/TODO index f3b65e6c36..e8416d1003 100644 --- a/TODO +++ b/TODO @@ -6,15 +6,15 @@ 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 - * accidental placement + * todo key-sig placement. + + * put errorlevel in Input * AFM for font input? * Make general "spanning"-elements and "placer"-elements - * Unicode support? - - - naming Mozarella, Madeira, Muella, Fontaigna, Feta? + - naming Mozarella, Madeira, Muella, Feta? - bf: abbrevs over whole note - scoping for properties @@ -53,20 +53,20 @@ grep for TODO and ugh/ugr * Fix profiling. gprof bugreport? - * read from mmap directly: bugreport to flex developers-> - yy_scan_buffer in C++.. - - * (where are the) gcc compile warnings on linux - PROJECTS + * Unicode support? + - 16 bit Strings + - -u switch + - detect of 16/8 bit files + - examples to go with it. + * Spring_spacer: - write a faster Spring_spacer ( without matrices if possible ) - relate energybound to linelen unitspace fontsize etc. - used fixed point fp * \header - - revise lexer mode - write perl script for handling it into databases - write TeX macros to generate titles @@ -102,16 +102,13 @@ languages: - derive lily_stream, Dstream, texstream from ostream? - indentable stream as baseclass for TeX stream, lily stream, Dstream. - use dstream feature in mi2mu + - integrate IO checking into stream class * input converters - NIFF? - ABC? - SMDL? - * robustification - - check write errors - - check read errors - * placement of bar-numbers ****************** diff --git a/VERSION b/VERSION index eb47bd8f02..f54b7cfd6e 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 21 -TOPLEVEL_MY_PATCH_LEVEL = .jcn1 +TOPLEVEL_PATCH_LEVEL = 22 +TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/bin/Makefile b/bin/Makefile index 4b3c40476d..7850aabe65 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -4,24 +4,26 @@ depth = .. include $(depth)/make/Include.make # list of distribution files: -SCRIPTS = clearlily cpgento make-patch lily.efence \ - make-version release conflily clean-fonts -PERL_SCRIPTS_IN = $(wildcard *.in) -PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.in=)) +PERL_SCRIPTS_IN = $(wildcard *.pl) +PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.pl=)) +SH_SCRIPTS_IN = $(wildcard *.sh) +SH_SCRIPTS = $(addprefix $(outdir)/, $(SH_SCRIPTS_IN:.sh=)) PYTHON_SCRIPTS_IN = $(wildcard *.py) PYTHON_SCRIPTS = $(addprefix $(outdir)/, $(PYTHON_SCRIPTS_IN:.py=)) -EXTRA_DISTFILES = $(SCRIPTS) $(PERL_SCRIPTS_IN) $(PYTHON_SCRIPTS_IN) -# +EXTRA_DISTFILES = $(SH_SCRIPTS_IN) $(PERL_SCRIPTS_IN) $(PYTHON_SCRIPTS_IN) -all: $(PERL_SCRIPTS) $(PYTHON_SCRIPTS) -$(outdir)/%: %.in -# cd .. && CONFIG_FILES=bin/$(notdir $@) CONFIG_HEADERS= ./config.status -# mv $(< :.in=) $@ -# this nukes make/out/Configure_variables.make. +all: $(PERL_SCRIPTS) $(PYTHON_SCRIPTS) $(SH_SCRIPTS) + +$(outdir)/%: %.pl sed 's!@PERL@!$(PERL)!' < $< > $@ chmod 755 $@ +#FIXME. Check for bash? +$(outdir)/%: %.sh + sed 's!@SH@!$(SH)!' < $< > $@ + chmod 755 $@ + $(outdir)/%: %.py sed 's!@PYTHON@!$(PYTHON)!' < $< > $@ chmod 755 $@ diff --git a/bin/clean-diaper.sh b/bin/clean-diaper.sh new file mode 100644 index 0000000000..284346da82 --- /dev/null +++ b/bin/clean-diaper.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# unclobber current dir. +rm -vf *.aux *.log `grep -li "^% Creator: GNU LilyPond" *.out` *.orig *~ +rm -vf `grep -li "Creator: mi2mu" *.midi.ly` +rm -vf `grep -li "Creator: GNU LilyPond" *.midi` +rm -vf `find -name 'core'` +rm -vf `find -name *.orig` +rm -vf `find -name *.rej` + +# docxx mess +rm -vf *dvi +rm -vf *.class HIER*.html dxxgifs.tex gifs.db icon?.gif logo.gif down.gif \ + aindex.html index.html diff --git a/bin/clean-fonts b/bin/clean-fonts deleted file mode 100755 index cc1c070747..0000000000 --- a/bin/clean-fonts +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# remove possibly stale .pk/.tfm files -echo> /tmp/cleaning-font -FILES=`find /var/lib/texmf/ -name 'font-en-tja*'` -# FILES=`find /var/lib/texmf/ -name 'font-en-tja*' -o -name 'vette-beam*' -o -name 'dyn10*'` -echo removing $FILES -rm $FILES /tmp/cleaning-font diff --git a/bin/clean-fonts.sh b/bin/clean-fonts.sh new file mode 100644 index 0000000000..8494ff68a5 --- /dev/null +++ b/bin/clean-fonts.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# remove possibly stale .pk/.tfm files +echo> /tmp/cleaning-font +FILES=`find /var/lib/texmf/ -name 'font-en-tja*'` # -or -name 'vette-beam*'` +echo removing $FILES +rm $FILES /tmp/cleaning-font diff --git a/bin/clearlily b/bin/clearlily deleted file mode 100755 index 22a4ea6df3..0000000000 --- a/bin/clearlily +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -# unclobber current dir. -rm -vf *.aux *.log `grep -li "^% Creator: GNU LilyPond" *.out` *.orig *~ -rm -vf `grep -li "Creator: mi2mu" *.midi.ly` -rm -vf `grep -li "Creator: GNU LilyPond" *.midi` -# docxx mess -rm -vf *dvi -rm -vf *.class HIER*.html dxxgifs.tex gifs.db icon?.gif logo.gif down.gif \ - aindex.html index.html diff --git a/bin/conflily b/bin/conflily deleted file mode 100755 index de2ce672f9..0000000000 --- a/bin/conflily +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# conflily -# ugh: must be executed from lilypond-x.x.x (bin/conflily) - -# the lilypond root dir looks like this: -# current -> ./lilypond-x.x.x symlink to current source -# lilypond-x.x.x the lilypond source -# patches gzipped patches -# releases gzipped releases - -# the lily root dir -# -lelie=$HOME/music/lily -# - -if [ ! -e $HOME/lelie ]; then - ln -s $lelie $HOME/lelie -fi - -rm $lelie/current 2>&1 > /dev/null -current=`basename \`pwd\`` -echo ln -s $lelie/$current $lelie/current -ln -s $lelie/$current $lelie/current - -ln -sf $lelie/current/lily/out/lilypond bin/out/lilypond -ln -sf $lelie/current/mi2mu/out/mi2mu bin/out/mi2mu - -if [ "x$LILYINCLUDE" = "x" ]; then - echo you should make add the following to your login script - echo "export LILYINCLUDE=$lelie/current/init" - echo "export PATH=$PATH:$lelie/current/bin/out/" - echo "export MFINPUTS=$MFINPUTS:$lelie/current/mf" -fi - -configure --prefix=/usr --enable-debugging --enable-printing --enable-checking - diff --git a/bin/conflily.sh b/bin/conflily.sh new file mode 100644 index 0000000000..de2ce672f9 --- /dev/null +++ b/bin/conflily.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# conflily +# ugh: must be executed from lilypond-x.x.x (bin/conflily) + +# the lilypond root dir looks like this: +# current -> ./lilypond-x.x.x symlink to current source +# lilypond-x.x.x the lilypond source +# patches gzipped patches +# releases gzipped releases + +# the lily root dir +# +lelie=$HOME/music/lily +# + +if [ ! -e $HOME/lelie ]; then + ln -s $lelie $HOME/lelie +fi + +rm $lelie/current 2>&1 > /dev/null +current=`basename \`pwd\`` +echo ln -s $lelie/$current $lelie/current +ln -s $lelie/$current $lelie/current + +ln -sf $lelie/current/lily/out/lilypond bin/out/lilypond +ln -sf $lelie/current/mi2mu/out/mi2mu bin/out/mi2mu + +if [ "x$LILYINCLUDE" = "x" ]; then + echo you should make add the following to your login script + echo "export LILYINCLUDE=$lelie/current/init" + echo "export PATH=$PATH:$lelie/current/bin/out/" + echo "export MFINPUTS=$MFINPUTS:$lelie/current/mf" +fi + +configure --prefix=/usr --enable-debugging --enable-printing --enable-checking + diff --git a/bin/convert-mudela.in b/bin/convert-mudela.in deleted file mode 100644 index 8b05c1561a..0000000000 --- a/bin/convert-mudela.in +++ /dev/null @@ -1,324 +0,0 @@ -#!@PERL@ -w -# -*-perl-*- - -=head1 TODO - - detect \lyrics and \melodic, and do substitution accordingly. - count <> and {} ? - -Ugh . Perl sux. Anybody for Python? - -=cut - - - -# -# version of "supporting" engine, not mudela conversions. -# - - - - -$convert_mudela_version = "0.1.2"; - -use Getopt::Long; - - -sub version_compare -{ - local ($a,$b)=@_; - return &cmpver; -} - - -sub cmpver -{ - my(@a)= split /\./,$a; - my(@b)= split /\./,$b; - - for $i (0,1,2) { - return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]); - } - return $a cmp $b; -} - -sub version_string_conv -{ - my ($from_version, $to_version) = @_; - s/\version \"$from_version\"/\version \"$to_version\"/g; -} - -################################################################ - -sub no_conv -{ -} - -sub convert_0_0_52_to_0_0_53 -{ - - s/include \"/$1\\include \"/g; -} - - -sub convert_0_0_54_to_0_0_55 -{ - s/%{/% {/g; -} - - -sub convert_0_0_53_to_0_0_54 -{ - print STDERR "Not smart enough to convert \\transpose\n" if (/\\transpose/) ; -} - -# we-re not at 58 yet, but this is at least one of the rules -sub convert_0_0_55_to_0_0_56 -{ - s/\"\|\|\"/\"|.\"/g; -} - -sub convert_0_0_56_to_0_0_57 -{ - s/\(([ \]\[|\t-\.>]|\\[a-z]+)*\)/\~ $1/g; -} - -sub convert_0_0_57_to_0_0_58 -{ - s/\[ *([^\[\]]*)\] *([1-9]*) *\/ *([1-9]*)/[$2\/$3 $1]1\/1/g; -} - -sub convert_0_0_58_to_0_0_59 -{ - die "Not smart enough to convert 0.0.58 to 0.0.59\n"; -} - -sub convert_0_0_59_to_0_0_60 -{ - s/(\\unitspace [0-9.mcptin\\ ]+|\\geometric [0-9.]+|\\width [0-9.mcp\\tin]+)/$1;/g; - s/(\\output \"[^\"]+\")/$1;/; - s/(\\tempo [0-9: ]+)/$1;/; -} - -sub convert_0_0_60_to_0_0_61 -{ - s/(\\unitspace|\\geometric|\\width)/$1=/g; - -} - -sub convert_0_1_0_to_0_1_1 -{ - s/\\tempo (.*):(.*);/\\tempo $1 = $2;/g -} - -sub convert_0_1_2_to_0_1_3 -{ - s/\\stem *(\\up|1) *;/\\stemup/g; - s/\\stem *(\\down|-1) *;/\\stemdown/g; - s/\\stem *0 *;/\\stemboth/g; - s/\\hshift ([^;]+) *;/\\property Voice.hshift = $1/g; -} - -sub convert_0_1_4_to_0_1_5 -{ - s/([<{]) *\\id "Piano" (.+);/\\type Grandstaff = $3 $1/; - s/([<{]) *\\id (.+) (.+);/\\type $2 = $3 $1/; -} - - -sub convert_0_1_5_to_0_1_6 -{ - s/< *\\multi (.*);/\\multi $1 \&no_conv, - "0.0.52" => \&convert_0_0_50_to_0_0_52, - "0.0.53" => \&convert_0_0_52_to_0_0_53, - "0.0.54" => \&convert_0_0_53_to_0_0_54, - "0.0.55" => \&convert_0_0_54_to_0_0_55, - "0.0.56" => \&convert_0_0_55_to_0_0_56, - "0.0.57" => \&convert_0_0_56_to_0_0_57, - "0.0.58" => \&convert_0_0_57_to_0_0_58, - "0.0.59" => \&convert_0_0_58_to_0_0_59, - "0.0.60" => \&convert_0_0_59_to_0_0_60, - "0.0.61" => \&convert_0_0_60_to_0_0_61, - "0.1.1" => \&convert_0_1_0_to_0_1_1, - "0.1.2" => \&no_conv, - "0.1.3" => \&convert_0_1_2_to_0_1_3, - "0.1.4" => \&no_conv, - "0.1.5" => \&convert_0_1_4_to_0_1_5, - "0.1.6" => \&convert_0_1_5_to_0_1_6 - ); - - -sub versions -{ - return (sort { cmpver; } (keys %minor_conversions)); -} - - -sub show_rules -{ - my (@v) = versions; - - print "Rules: ", join(", ", @v), "\n"; - -} - -sub do_conversion -{ - my ($from,$to) = @_; - - my @applicable_conversion; - my @mudela_levels; - - my @v = versions; - foreach $ver (@v) { - if (version_compare($ver, $from) > 0 && version_compare($ver,$to) <= 0 ){ - push @applicable_conversion, $minor_conversions{$ver}; - push @mudela_levels, $ver; - } - } - - print STDERR "Applying following rules: ", join(", ", @mudela_levels) , "\n"; - - while () { - foreach $subroutine (@applicable_conversion) { - - &$subroutine; - - } - version_string_conv $from, $to; - print OUTLY; - } -} - -sub get_auto_from -{ - my ($fn)=@_; - my ($ver); - open INLY, $fn || die "Can't open"; - - while () { - s/^.*\\version \"([^\"]*)\".*$//; - if (defined ($1)) { - print STDERR "Guessing version: ", $1, ".. "; - $ver = $1; - last; - } - } - if (!defined($ver)){ - print STDERR "can't determine mudela version in $fn.\n"; - my $u; - return $u; - } - close INLY; - return $ver; -} - -sub set_files -{ - $infile = "-"; - $outfile = "-"; - $outfile = $opt_output if (defined($opt_output)); - - if ($ARGV [0]) { - $infile = $ARGV[0]; - } - if (!(-f $infile) && !($infile =~ /\.ly$/s)) { - $infile .= ".ly"; - } - if ($opt_edit && $infile ne "-") { - $opt_edit = 1; - $outfile = "$infile.NEW"; - $infile = "$infile"; - } - print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. "; - -} - -sub do_one_arg -{ - set_files; - - local ($from_version, $to_version); - $from_version = $opt_from; - $to_version = $opt_to; - - ($from_version = get_auto_from $infile) unless defined($opt_from); - return if (!defined($from_version)); - - ($to_version = last_conversion) unless (defined($opt_to)); - - die "can't open \`$infile\'" unless open INLY,$infile ; - die "can't open \`$outfile\'" unless open OUTLY, ">$outfile"; - - do_conversion $from_version, $to_version; - close INLY; - close OUTLY; - - if ($opt_edit) { - rename $infile, "$infile~"; - rename $outfile, "$infile"; - } -} - -## "main" - -identify; - - -GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules"); - -if ($opt_help) { - usage(); - $opt_help = 0; # to extinguish typo check. - exit 0; -} - -if ($opt_show_rules) { - show_rules ; - $opt_show_rules = 0; # to extinguish typo check. - exit 0; -} - -local ( $infile,$outfile); -my $processed_one=0; - -while (defined($ARGV[0])) { - do_one_arg; - shift @ARGV; - $processed_one = 1; -} -do_one_arg unless ($processed_one); - - diff --git a/bin/convert-mudela.pl b/bin/convert-mudela.pl new file mode 100644 index 0000000000..7c26746870 --- /dev/null +++ b/bin/convert-mudela.pl @@ -0,0 +1,349 @@ +#!@PERL@ -w +# -*-perl-*- + +=head1 TODO + + detect \lyrics and \melodic, and do substitution accordingly. + count <> and {} ? + +Ugh . Perl sux. Anybody for Python? + +=cut + + + +# +# version of "supporting" engine, not mudela conversions. +# + + + + +$convert_mudela_version = "0.1.2"; + +use Getopt::Long; + + +sub version_compare +{ + local ($a,$b)=@_; + return &cmpver; +} + + +sub cmpver +{ + my(@a)= split /\./,$a; + my(@b)= split /\./,$b; + + for $i (0,1,2) { + return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]); + } + return $a cmp $b; +} + +sub version_string_conv +{ + my ($from_version, $to_version) = @_; + s/\version \"$from_version\"/\version \"$to_version\"/g; +} + +################################################################ + +sub no_conv +{ +} + +sub convert_0_0_52_to_0_0_53 +{ + + s/include \"/$1\\include \"/g; +} + + +sub convert_0_0_54_to_0_0_55 +{ + s/%{/% {/g; +} + + +sub convert_0_0_53_to_0_0_54 +{ + print STDERR "Not smart enough to convert \\transpose\n" if (/\\transpose/) ; +} + +# we-re not at 58 yet, but this is at least one of the rules +sub convert_0_0_55_to_0_0_56 +{ + s/\"\|\|\"/\"|.\"/g; +} + +sub convert_0_0_56_to_0_0_57 +{ + s/\(([ \]\[|\t-\.>]|\\[a-z]+)*\)/\~ $1/g; +} + +sub convert_0_0_57_to_0_0_58 +{ + s/\[ *([^\[\]]*)\] *([1-9]*) *\/ *([1-9]*)/[$2\/$3 $1]1\/1/g; +} + +sub convert_0_0_58_to_0_0_59 +{ + die "Not smart enough to convert 0.0.58 to 0.0.59\n"; +} + +sub convert_0_0_59_to_0_0_60 +{ + s/(\\unitspace [0-9.mcptin\\ ]+|\\geometric [0-9.]+|\\width [0-9.mcp\\tin]+)/$1;/g; + s/(\\output \"[^\"]+\")/$1;/; + s/(\\tempo [0-9: ]+)/$1;/; +} + +sub convert_0_0_60_to_0_0_61 +{ + s/(\\unitspace|\\geometric|\\width)/$1=/g; + +} + +sub convert_0_1_0_to_0_1_1 +{ + s/\\tempo (.*):(.*);/\\tempo $1 = $2;/g +} + +sub convert_0_1_2_to_0_1_3 +{ + s/\\stem *(\\up|1) *;/\\stemup/g; + s/\\stem *(\\down|-1) *;/\\stemdown/g; + s/\\stem *0 *;/\\stemboth/g; + s/\\hshift ([^;]+) *;/\\property Voice.hshift = $1/g; +} + +my $header_b = 0; + +sub generic_conversion_scan +{ + if (/\\header *\{/) + { + $header_b = 1; + } + if ($header_b && /^ *\}/) + { + $header_b = 0; + } +} +sub convert_0_1_4_to_0_1_5 +{ + s/([<{]) *\\id "Piano" (.+);/\\type Grandstaff = $3 $1/; + s/([<{]) *\\id (.+) (.+);/\\type $2 = $3 $1/; +} + + +sub convert_0_1_5_to_0_1_6 +{ + s/< *\\multi (.*);/\\multi $1 \&no_conv, + "0.0.52" => \&convert_0_0_50_to_0_0_52, + "0.0.53" => \&convert_0_0_52_to_0_0_53, + "0.0.54" => \&convert_0_0_53_to_0_0_54, + "0.0.55" => \&convert_0_0_54_to_0_0_55, + "0.0.56" => \&convert_0_0_55_to_0_0_56, + "0.0.57" => \&convert_0_0_56_to_0_0_57, + "0.0.58" => \&convert_0_0_57_to_0_0_58, + "0.0.59" => \&convert_0_0_58_to_0_0_59, + "0.0.60" => \&convert_0_0_59_to_0_0_60, + "0.0.61" => \&convert_0_0_60_to_0_0_61, + "0.1.1" => \&convert_0_1_0_to_0_1_1, + "0.1.2" => \&no_conv, + "0.1.3" => \&convert_0_1_2_to_0_1_3, + "0.1.4" => \&no_conv, + "0.1.5" => \&convert_0_1_4_to_0_1_5, + "0.1.6" => \&convert_0_1_5_to_0_1_6 + ,"0.1.7" => \&convert_0_1_6_to_0_1_7 + ); + + + +sub versions +{ + return (sort { cmpver; } (keys %minor_conversions)); +} + + +sub show_rules +{ + my (@v) = versions; + + print "Rules: ", join(", ", @v), "\n"; + +} + +sub do_conversion +{ + my ($from,$to) = @_; + + my @applicable_conversion; + my @mudela_levels; + + my @v = versions; + foreach $ver (@v) { + if (version_compare($ver, $from) > 0 && version_compare($ver,$to) <= 0 ){ + push @applicable_conversion, $minor_conversions{$ver}; + push @mudela_levels, $ver; + } + } + + print STDERR "Applying following rules: ", join(", ", @mudela_levels) , "\n"; + + while () { + generic_conversion_scan; + foreach $subroutine (@applicable_conversion) { + + &$subroutine; + + } + version_string_conv $from, $to; + print OUTLY; + } +} + +sub get_auto_from +{ + my ($fn)=@_; + my ($ver); + open INLY, $fn || die "Can't open"; + + while () { + s/^.*\\version \"([^\"]*)\".*$//; + if (defined ($1)) { + print STDERR "Guessing version: ", $1, ".. "; + $ver = $1; + last; + } + } + if (!defined($ver)){ + print STDERR "can't determine mudela version in $fn.\n"; + my $u; + return $u; + } + close INLY; + return $ver; +} + +sub set_files +{ + $infile = "-"; + $outfile = "-"; + $outfile = $opt_output if (defined($opt_output)); + + if ($ARGV [0]) { + $infile = $ARGV[0]; + } + if (!(-f $infile) && !($infile =~ /\.ly$/s)) { + $infile .= ".ly"; + } + if ($opt_edit && $infile ne "-") { + $opt_edit = 1; + $outfile = "$infile.NEW"; + $infile = "$infile"; + } + print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. "; + +} + +sub do_one_arg +{ + set_files; + + local ($from_version, $to_version); + $from_version = $opt_from; + $to_version = $opt_to; + + ($from_version = get_auto_from $infile) unless defined($opt_from); + return if (!defined($from_version)); + + ($to_version = last_conversion) unless (defined($opt_to)); + + die "can't open \`$infile\'" unless open INLY,$infile ; + die "can't open \`$outfile\'" unless open OUTLY, ">$outfile"; + + do_conversion $from_version, $to_version; + close INLY; + close OUTLY; + + if ($opt_edit) { + rename $infile, "$infile~"; + rename $outfile, "$infile"; + } +} + +## "main" + +identify; + + +GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules"); + +if ($opt_help) { + usage(); + $opt_help = 0; # to extinguish typo check. + exit 0; +} + +if ($opt_show_rules) { + show_rules ; + $opt_show_rules = 0; # to extinguish typo check. + exit 0; +} + +local ( $infile,$outfile); +my $processed_one=0; + +while (defined($ARGV[0])) { + do_one_arg; + shift @ARGV; + $processed_one = 1; +} +do_one_arg unless ($processed_one); + + diff --git a/bin/cpgento b/bin/cpgento deleted file mode 100755 index 74f77787db..0000000000 --- a/bin/cpgento +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# cpgento -# - -if test $# -ne 1 -then - echo "Usage: " - echo " cpgento LOCATION, e.g.:"; - echo - echo " cpgento /mnt/aix/usr/src/lily" - echo " CP=rcp cpgento fred@pcnov095.win.tue.nl:music/lily" - exit 1 -fi - -MAKE=${MAKE:-make} -CP=${CP:-cp} - -genlily="out/parser.hh out/parser.cc out/lexer.cc" -echo generating $genlily ... -$MAKE -C lily $genlily - -genmi2mu="out/midi-parser.hh out/midi-parser.cc out/midi-lexer.cc" -echo generating $genmi2mu ... -$MAKE -C mi2mu $genmi2mu - -lilydir=`pwd | sed "s/.*\///"` -todir=$1/$lilydir -echo "copying $lilydir -> $todir" - -cpto() { - name=$1 - tostuff=$todir/$name/out - genstuff="$2" - if [ "$CP" = "cp" -a \! -d $tostuff ] - then - echo mkdir -p $tostuff - mkdir -p $tostuff - fi - echo $CP $genstuff $tostuff - (cd $name; $CP $genstuff $tostuff) -} - -cpto lily "$genlily" -cpto mi2mu "$genmi2mu" - -# if you cannot gen the above, you-ll probably want: -flexlexerh=/usr/include/FlexLexer.h -cpto lib $flexlexerh - diff --git a/bin/cpgento.sh b/bin/cpgento.sh new file mode 100644 index 0000000000..74f77787db --- /dev/null +++ b/bin/cpgento.sh @@ -0,0 +1,49 @@ +#!/bin/sh +# cpgento +# + +if test $# -ne 1 +then + echo "Usage: " + echo " cpgento LOCATION, e.g.:"; + echo + echo " cpgento /mnt/aix/usr/src/lily" + echo " CP=rcp cpgento fred@pcnov095.win.tue.nl:music/lily" + exit 1 +fi + +MAKE=${MAKE:-make} +CP=${CP:-cp} + +genlily="out/parser.hh out/parser.cc out/lexer.cc" +echo generating $genlily ... +$MAKE -C lily $genlily + +genmi2mu="out/midi-parser.hh out/midi-parser.cc out/midi-lexer.cc" +echo generating $genmi2mu ... +$MAKE -C mi2mu $genmi2mu + +lilydir=`pwd | sed "s/.*\///"` +todir=$1/$lilydir +echo "copying $lilydir -> $todir" + +cpto() { + name=$1 + tostuff=$todir/$name/out + genstuff="$2" + if [ "$CP" = "cp" -a \! -d $tostuff ] + then + echo mkdir -p $tostuff + mkdir -p $tostuff + fi + echo $CP $genstuff $tostuff + (cd $name; $CP $genstuff $tostuff) +} + +cpto lily "$genlily" +cpto mi2mu "$genmi2mu" + +# if you cannot gen the above, you-ll probably want: +flexlexerh=/usr/include/FlexLexer.h +cpto lib $flexlexerh + diff --git a/bin/find-typenames.pl b/bin/find-typenames.pl new file mode 100644 index 0000000000..e08fd00800 --- /dev/null +++ b/bin/find-typenames.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl + +open GREP, "egrep -h '^struct|^class' *.hh *.cc|"; +open OUT, "|sort | uniq"; +while () { + + s/^struct/class/; + if (! /; *$/) { + s/:[^{]+{.*$//; + s/ *{.*$/;/; + } + if (! /; *$/) { + chop; + $_ .= ";\n"; + + } + print OUT; +} +close OUT; +close GREP; diff --git a/bin/genheader.py b/bin/genheader.py index f8c1cc30f1..07bd450772 100644 --- a/bin/genheader.py +++ b/bin/genheader.py @@ -66,7 +66,7 @@ def head_str(filename): def c_include(filename): startdef= filename; - trans = string.maketrans( string.lowercase + '.', string.uppercase + '_') + trans = string.maketrans( string.lowercase + '-.', string.uppercase + '__') startdef = string.translate(filename, trans) diff --git a/bin/lily.efence b/bin/lily.efence deleted file mode 100755 index 5924253436..0000000000 --- a/bin/lily.efence +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -gdb --command=bin/efence.gdbinit - - diff --git a/bin/make-docxx.sh b/bin/make-docxx.sh new file mode 100644 index 0000000000..dc60f80f1c --- /dev/null +++ b/bin/make-docxx.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +p1=`find ./ -name '*.hh' |egrep -v out/` +p2=`find ./ -name '*.cc' |egrep -v out/` +doc++ -d out/ -S -k -p $p1 $p2 diff --git a/bin/make-patch b/bin/make-patch deleted file mode 100755 index e11d7b8533..0000000000 --- a/bin/make-patch +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -case $# in -0) echo make_patch old new name - exit 1;; -esac - -old=$1 -new=$2 -nm=$3- - -newarc=../releases/$nm$new.tar.gz -oldarc=../releases/$nm$old.tar.gz - - -if [ ! -x $nm$new ] -then - echo untarring .. - if [ ! -f $newarc ] - then - echo "can't find $newarc" - exit - fi - tar zfx $newarc -fi -if [ ! -x $nm$old ] -then - echo untarring - - if [ ! -f $oldarc ] - then - echo "can't find $oldarc" - exit - fi - tar zfx $oldarc -fi - -# not interested in auto generated files. -for a in lilypond.lsm INSTALL.text AUTHORS.text lilypond.spec configure; do - rm `find $nm$old $nm$new -name $a` -done - -cat < patch-$new -Generated with - - make_patch $1 $2 $3 - -usage - - cd lilypond-source-dir; patch -E -p0 < patch-$new - -Patches do not contain automatically generated files, -i.e. you should rerun configure -EOF - -(cd $nm$new; diff -urN ../$nm$old . >> ../patch-$new) -rm -rf $nm$old $nm$new diff --git a/bin/make-patch.sh b/bin/make-patch.sh new file mode 100644 index 0000000000..e11d7b8533 --- /dev/null +++ b/bin/make-patch.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +case $# in +0) echo make_patch old new name + exit 1;; +esac + +old=$1 +new=$2 +nm=$3- + +newarc=../releases/$nm$new.tar.gz +oldarc=../releases/$nm$old.tar.gz + + +if [ ! -x $nm$new ] +then + echo untarring .. + if [ ! -f $newarc ] + then + echo "can't find $newarc" + exit + fi + tar zfx $newarc +fi +if [ ! -x $nm$old ] +then + echo untarring + + if [ ! -f $oldarc ] + then + echo "can't find $oldarc" + exit + fi + tar zfx $oldarc +fi + +# not interested in auto generated files. +for a in lilypond.lsm INSTALL.text AUTHORS.text lilypond.spec configure; do + rm `find $nm$old $nm$new -name $a` +done + +cat < patch-$new +Generated with + + make_patch $1 $2 $3 + +usage + + cd lilypond-source-dir; patch -E -p0 < patch-$new + +Patches do not contain automatically generated files, +i.e. you should rerun configure +EOF + +(cd $nm$new; diff -urN ../$nm$old . >> ../patch-$new) +rm -rf $nm$old $nm$new diff --git a/bin/make-version b/bin/make-version deleted file mode 100755 index 3be14353cb..0000000000 --- a/bin/make-version +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -#shift; -if test "x$1" = x; -then - versionfile="VERSION" -else - versionfile=$1; -fi - -cat $versionfile| sed 's/#.*$//g'|sed 's/\([^ ]*\)[\t ]*=[ \t]*\([^ ]*\)$/#define \1 \"\2\"/g' -echo - diff --git a/bin/make-version.sh b/bin/make-version.sh new file mode 100644 index 0000000000..3be14353cb --- /dev/null +++ b/bin/make-version.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +#shift; +if test "x$1" = x; +then + versionfile="VERSION" +else + versionfile=$1; +fi + +cat $versionfile| sed 's/#.*$//g'|sed 's/\([^ ]*\)[\t ]*=[ \t]*\([^ ]*\)$/#define \1 \"\2\"/g' +echo + diff --git a/bin/make-website.in b/bin/make-website.in deleted file mode 100644 index 9830035556..0000000000 --- a/bin/make-website.in +++ /dev/null @@ -1,357 +0,0 @@ -#!@PERL@ -w -# -*-Perl-*- - - -# stupid script to generate WWW site. The WWW site is my -# test-suite for LilyPond, I usually don't distribute versions that -# fail to make the website - -use FileHandle; -use Getopt::Long; - -my $lily_version; -my $footstr; -my $mw_id = ""; -my $id_str = "make-website 0.4"; -my $TAR="tar"; -my $MAKE="make"; - -sub get_version -{ - my ($vstr)=(""); - open V, "$depth/VERSION"; - while () { - s/#.*$//g; - next if (/^ *$/); - s/^/\$/; - s/= *(.*)$/=\"$1\";/; - $vstr .= $_; - } - eval ($vstr); - - $lily_version= "$TOPLEVEL_MAJOR_VERSION.$TOPLEVEL_MINOR_VERSION.$TOPLEVEL_PATCH_LEVEL$TOPLEVEL_MY_PATCH_LEVEL"; - - # stupid checks. - $lily_version= $lily_version; - - close V; -} - -sub set_html_footer -{ - my $MAILADDRESS=$ENV{MAILADDRESS}; - my @pw=(getpwuid($<)); - my $username=$pw[6]; - - $footstr = - "\n
Please take me back to the index\n -of LilyPond -- The GNU Project Music typesetter -
- -This page was built using " . $id_str . " from lilypond-" - . $lily_version . - " by

-


$username <" . $MAILADDRESS .">
-

"; -} - - -# do something, check return status -sub my_system -{ - my (@cmds) = @_; - foreach $cmd (@cmds) { - my ($ignoreret)=0; - if ( $cmd =~ /^-/ ) { - $ignoreret = 1; - $cmd = substr ($cmd, 1); - } - - my $ret = ( system ($cmd)); - if ($ret) { - if ($ignoreret) { - print STDERR "ignoring failed command \`$cmd\' (status $ret)\n"; - }else { - print STDERR "\nmake_website: failed on command \`$cmd\' (status $ret)\n"; - exit 2; - } - } - } -} - - -local $base="lilypond/"; - -local @examples=("twinkle-pop", - "wtk1-fugue2", - "standchen-16", - "standchen-20", - "wtk1-prelude1", - "toccata-fuga-E", - "scsii-menuetto", - "cadenza", - "gallina", - "twinkle", - "collisions", - "font", - #"scales", - "rhythm", - "multi" ); - - -sub gen_html -{ - print "generating HTML\n"; - my_system "$MAKE -kC .. html"; -} - -sub gen_examples -{ - print "generating examples: \n"; - my @todo=(); - foreach $a (@examples) { - push @todo, "out/$a.ps.gz", "out/$a.gif", "out/$a.ly.txt"; - } - - my_system ("$MAKE -C .. " . join(' ', @todo)); -} - -my @texstuff = ("mudela-man", "mudela-course"); - -sub gen_manuals -{ - print "generating TeX doco list\n"; - open HTMLLIST, ">tex_manuals.html"; - print HTMLLIST "PostScript Manuals\n" ; - print HTMLLIST "

LilyPond manuals (in PostScript)

"; - print HTMLLIST "
    \n"; - my @todo=(); - foreach $a (@texstuff) { - push @todo , "out/$a.ps.gz"; - print HTMLLIST "
  • $a.ps.gz"; - } - print HTMLLIST "
"; - - print HTMLLIST ""; - close HTMLLIST; - - my_system( "$MAKE -C .. " . join(' ', @todo)); -} - -sub gen_list -{ - print "generating HTML list\n"; - open HTMLLIST, ">example_output.html"; - - print HTMLLIST "Rendered Examples\n -These example files are taken from the LilyPond distribution. -LilyPond currently only outputs TeX and MIDI. The pictures and -PostScript files were generated using TeX, Ghostscript and some -graphics tools. The papersize used for these examples is A4. The GIF -files have been scaled to eliminate aliasing."; - - - - foreach $a (@examples) - { - $name=$a; print HTMLLIST "

example file: $name

\n\n"; - - open IF, "$depth/input/$a.ly"; - input_record_separator IF "\n}"; - - $desc = <IF>; - close IF; - - print HTMLLIST "$desc\n"; - - $inputf="$a.ly.txt"; - $giff="$a.gif"; - $jpegf="$a.jpeg"; - $pngf = "$a.png"; - $psf="$a.ps.gz"; - $midif="$a.midi"; - - print HTMLLIST ""; - } - print HTMLLIST ""; - close HTMLLIST; -} - -sub edit_html -{ - print STDERR "adding footer\n"; - - OUTER: - foreach $a (<*.html>) { - open H, "$a"; - my $sep=""; - input_record_separator H $sep; - my $file=""; - - while () { - if (/$mw_id/) { - close H; - next OUTER; - } - $file .= $_; - - } - close H; - - my $subst = $footstr; - $subst .= $back if (! $a =~ /index.html/ ); - $file =~ s/$sep/$subst$sep/g ; - $file =~ s/\.gif/\.$image/g; - $file =~ s!(.*)!LilyPond WWW: $1!g; - open H, ">$a"; - print H $mw_id; - - print H $file; - close H; - } -} - -sub copy_txt_file -{ - my ($f) = @_; - my $d = $f; - $d =~ s!^.*\/!!; - if (! $f =~ /.txt$/) { - $d = "$f.txt"; - } - print, $d; -} - -sub top_of_NEWS -{ - open NEWS, "NEWS.txt"; - input_record_separator NEWS "****"; - $desc = ; - chop ($desc); - close NEWS; - - return $desc; -} - -sub edit_index -{ - $ton = top_of_NEWS(); - $ton = "\n\n$ton\n\n"; - open INDEX, "index.html"; - input_record_separator NEWS undef; - $index = ; - close INDEX; - $index =~ s/top_of_NEWS/$ton/; - open INDEX, ">index.html"; - print INDEX $index; - close INDEX; -} - - -sub copy_files -{ - print "copying files\n"; - my_system "ln -s $depth/out ./docxx" if ( ! -x "docxx" ) ; - my_system "cp $depth/TODO ./TODO.txt", - "cp $depth/ANNOUNCE ./ANNOUNCE.txt", - "cp $depth/NEWS ./NEWS.txt", - "cp $depth/DEDICATION ./DEDICATION.txt"; - my_system "make -C .. gifs"; - -} - -sub set_images -{ - for $a (<*.gif>) { - if ($opt_png) { - my_system "gif2png -d $a"; - } - if ($opt_jpeg) { - my $b=$a; - $b =~ s/.gif/.jpeg/; - my_system "cjpeg -o $b $a"; - } - } -} - -sub docxx_update -{ - open BANNER, ">/tmp/lilybanner.html"; - my $ban = $footstr; - $ban =~ s!index.html!../index.html!g; - print BANNER $ban; - close BANNER; - my_system "$MAKE -C $depth docxx-opts=\"-p -S -k -B /tmp/lilybanner.html\" doc++"; - # should add a cute header. -} - -sub do_tar -{ - print "tarring.\n"; - $files = join (' ', < *.html *.$image *.ps.gz *.txt *.midi docxx/*>); - my_system - "-$TAR zvhcf website.tar.gz $files;", -# "gzip -f9 website.tar;"; -} - -sub identify -{ - print STDERR "This is " . $id_str . "\n"; - -} -sub main -{ - identify; - GetOptions("jpeg", "gif", "png", "noexamples"); - - local $image="gif" ; - $image = "png" if ($opt_png); - $image = "jpeg" if ($opt_jpeg); - - $depth = "../"; - my $cwd; - chomp($cwd = `pwd`); - die "need to be in directory Documentation\n" if ( ! ($cwd =~ /Documentation$/)); - get_version; - print "lily v. " . $lily_version . "\n"; - set_html_footer; - - - $depth = "../../"; - - chdir ("out"); - $ENV{"TEXINPUTS"} .= ":$depth/input/:"; - $ENV{"LILYINCLUDE"} = "$depth/input/"; - - - gen_html; - copy_files; - - if (! $opt_noexamples) { - gen_examples; - gen_list; - gen_manuals; - } - set_images; - - edit_html; - edit_index; - docxx_update; - do_tar; -} - -main; diff --git a/bin/make-website.pl b/bin/make-website.pl new file mode 100644 index 0000000000..1d690e23ad --- /dev/null +++ b/bin/make-website.pl @@ -0,0 +1,356 @@ +#!@PERL@ -w +# -*-Perl-*- + + +# stupid script to generate WWW site. The WWW site is my +# test-suite for LilyPond, I usually don't distribute versions that +# fail to make the website + +use FileHandle; +use Getopt::Long; + +my $lily_version; +my $footstr; +my $mw_id = ""; +my $id_str = "make-website 0.4"; +my $TAR="tar"; +my $MAKE="make"; + +sub get_version +{ + my ($vstr)=(""); + open V, "$depth/VERSION"; + while () { + s/#.*$//g; + next if (/^ *$/); + s/^/\$/; + s/= *(.*)$/=\"$1\";/; + $vstr .= $_; + } + eval ($vstr); + + $lily_version= "$TOPLEVEL_MAJOR_VERSION.$TOPLEVEL_MINOR_VERSION.$TOPLEVEL_PATCH_LEVEL$TOPLEVEL_MY_PATCH_LEVEL"; + + # stupid checks. + $lily_version= $lily_version; + + close V; +} + +sub set_html_footer +{ + my $MAILADDRESS=$ENV{MAILADDRESS}; + my @pw=(getpwuid($<)); + my $username=$pw[6]; + + $footstr = + "\n
Please take me back to the index\n +of LilyPond -- The GNU Project Music typesetter +
+ +This page was built using " . $id_str . " from lilypond-" + . $lily_version . + " by

+


$username <" . $MAILADDRESS .">
+

"; +} + + +# do something, check return status +sub my_system +{ + my (@cmds) = @_; + foreach $cmd (@cmds) { + my ($ignoreret)=0; + if ( $cmd =~ /^-/ ) { + $ignoreret = 1; + $cmd = substr ($cmd, 1); + } + + my $ret = ( system ($cmd)); + if ($ret) { + if ($ignoreret) { + print STDERR "ignoring failed command \`$cmd\' (status $ret)\n"; + }else { + print STDERR "\nmake_website: failed on command \`$cmd\' (status $ret)\n"; + exit 2; + } + } + } +} + + +local $base="lilypond/"; + +local @examples=("twinkle-pop", + "wtk1-fugue2", + "standchen-16", + "standchen-20", + "wtk1-prelude1", + "toccata-fuga-E", + "scsii-menuetto", + "cadenza", + "gallina", + "twinkle", + "collisions", + "font", + #"scales", + "rhythm", + "multi" ); + + +sub gen_html +{ + print "generating HTML\n"; + my_system "$MAKE -kC .. html"; +} + +sub gen_examples +{ + print "generating examples: \n"; + my @todo=(); + foreach $a (@examples) { + push @todo, "out/$a.ps.gz", "out/$a.gif", "out/$a.ly.txt"; + } + + my_system ("$MAKE -C .. " . join(' ', @todo)); +} + +my @texstuff = ("mudela-man", "mudela-course"); + +sub gen_manuals +{ + print "generating TeX doco list\n"; + open HTMLLIST, ">tex_manuals.html"; + print HTMLLIST "PostScript Manuals\n" ; + print HTMLLIST "

LilyPond manuals (in PostScript)

"; + print HTMLLIST "
    \n"; + my @todo=(); + foreach $a (@texstuff) { + push @todo , "out/$a.ps.gz"; + print HTMLLIST "
  • $a.ps.gz"; + } + print HTMLLIST "
"; + + print HTMLLIST ""; + close HTMLLIST; + + my_system( "$MAKE -C .. " . join(' ', @todo)); +} + +sub gen_list +{ + print "generating HTML list\n"; + open HTMLLIST, ">example_output.html"; + + print HTMLLIST "Rendered Examples\n +These example files are taken from the LilyPond distribution. +LilyPond currently only outputs TeX and MIDI. The pictures and +PostScript files were generated using TeX, Ghostscript and some +graphics tools. The papersize used for these examples is A4. The GIF +files have been scaled to eliminate aliasing."; + + + + foreach $a (@examples) + { + $name=$a; print HTMLLIST "

example file: $name

\n\n"; + + open IF, "$depth/input/$a.ly"; + input_record_separator IF "\n}"; + + $desc = <IF>; + close IF; + + print HTMLLIST "$desc\n"; + + $inputf="$a.ly.txt"; + $giff="$a.gif"; + $jpegf="$a.jpeg"; + $pngf = "$a.png"; + $psf="$a.ps.gz"; + $midif="$a.midi"; + + print HTMLLIST ""; + } + print HTMLLIST ""; + close HTMLLIST; +} + +sub edit_html +{ + print STDERR "adding footer\n"; + + OUTER: + foreach $a (<*.html>) { + open H, "$a"; + my $sep=""; + input_record_separator H $sep; + my $file=""; + + while () { + if (/$mw_id/) { + close H; + next OUTER; + } + $file .= $_; + + } + close H; + + my $subst = $footstr; + $subst .= $back if (! $a =~ /index.html/ ); + $file =~ s/$sep/$subst$sep/g ; + $file =~ s/\.gif/\.$image/g; + $file =~ s!(.*)!LilyPond WWW: $1!g; + open H, ">$a"; + print H $mw_id; + + print H $file; + close H; + } +} + +sub copy_txt_file +{ + my ($f) = @_; + my $d = $f; + $d =~ s!^.*\/!!; + if (! $f =~ /.txt$/) { + $d = "$f.txt"; + } + print, $d; +} + +sub top_of_NEWS +{ + open NEWS, "NEWS.txt"; + input_record_separator NEWS "****"; + $desc = ; + chop ($desc); + close NEWS; + + return $desc; +} + +sub edit_index +{ + $ton = top_of_NEWS(); + $ton = "\n\n$ton\n\n"; + open INDEX, "index.html"; + input_record_separator NEWS undef; + $index = ; + close INDEX; + $index =~ s/top_of_NEWS/$ton/; + open INDEX, ">index.html"; + print INDEX $index; + close INDEX; +} + + +sub copy_files +{ + print "copying files\n"; + my_system "ln -s $depth/out ./docxx" if ( ! -x "docxx" ) ; + my_system "cp $depth/TODO ./TODO.txt", + "cp $depth/ANNOUNCE ./ANNOUNCE.txt", + "cp $depth/NEWS ./NEWS.txt", + "cp $depth/DEDICATION ./DEDICATION.txt"; + my_system "make -C .. gifs"; + +} + +sub set_images +{ + for $a (<*.gif>) { + if ($opt_png) { + my_system "gif2png -d $a"; + } + if ($opt_jpeg) { + my $b=$a; + $b =~ s/.gif/.jpeg/; + my_system "cjpeg -o $b $a"; + } + } +} + +sub docxx_update +{ + open BANNER, ">/tmp/lilybanner.html"; + my $ban = $footstr; + $ban =~ s!index.html!../index.html!g; + print BANNER $ban; + close BANNER; + my_system "BANNEROPT=\"-B /tmp/lilybanner.html\" $depth/bin/out/make-docxx"; +} + +sub do_tar +{ + print "tarring.\n"; + $files = join (' ', < *.html *.$image *.ps.gz *.txt *.midi docxx/*>); + my_system + "-$TAR zvhcf website.tar.gz $files;", +# "gzip -f9 website.tar;"; +} + +sub identify +{ + print STDERR "This is " . $id_str . "\n"; + +} +sub main +{ + identify; + GetOptions("jpeg", "gif", "png", "noexamples"); + + local $image="gif" ; + $image = "png" if ($opt_png); + $image = "jpeg" if ($opt_jpeg); + + $depth = "../"; + my $cwd; + chomp($cwd = `pwd`); + die "need to be in directory Documentation\n" if ( ! ($cwd =~ /Documentation$/)); + get_version; + print "lily v. " . $lily_version . "\n"; + set_html_footer; + + + $depth = "../../"; + + chdir ("out"); + $ENV{"TEXINPUTS"} .= ":$depth/input/:"; + $ENV{"LILYINCLUDE"} = "$depth/input/"; + + + gen_html; + copy_files; + + if (! $opt_noexamples) { + gen_examples; + gen_list; + gen_manuals; + } + set_images; + + edit_html; + edit_index; + docxx_update; + do_tar; +} + +main; diff --git a/bin/mf-to-table.py b/bin/mf-to-table.py index bf680f9377..1cd84f5ee6 100644 --- a/bin/mf-to-table.py +++ b/bin/mf-to-table.py @@ -18,8 +18,8 @@ import time begin_autometric_re = regex.compile('@{') end_autometric_re = regex.compile('@}') -autometric_re = regex.compile('@{\([^@]*\)@}') -version = '0.3' +autometric_re = regex.compile('@{\(.*\)@}') +version = '0.4' class File: """silly wrapper for Python file object.""" @@ -63,10 +63,12 @@ class Feta_file(File): def readline(self): """return what is enclosed in one @{ @} pair""" line = ''; - while autometric_re.match(line) == -1 and not self.eof(): + while autometric_re.search(line) == -1 and not self.eof(): line = self.read_autometricline() + if self.eof(): return ''; + return autometric_re.group(1); def __init__(self, nm): File.__init__(self, nm) @@ -105,16 +107,20 @@ class Indentable_file(File): class Ly_file(Indentable_file): """extra provisions for mozarella quirks""" def print_lit(self, str): - self.write('\"' + str + '\" ') + self.write('\"%s\"\t' % str) + + def print_f_dimen(self, f): + self.write( '%.2f\\pt\t' % f); def print_dimen(self, str): - self.write( '%.2f' % atof(str) + '\\pt '); + self.print_f_dimen(atof(str)) def neg_print_dimen(self, str): - self.write( '%.2f' % -atof(str) + '\\pt '); + self.print_f_dimen(-atof(str)); + def def_symbol(self, lily_id, tex_id, dims): self.print_lit(lily_id) - self.print_lit('\\' + tex_id) + self.print_lit('\\\\' + tex_id) self.neg_print_dimen(dims [0]) self.print_dimen(dims [1]) @@ -126,9 +132,10 @@ class Ly_file(Indentable_file): class Log_reader: """Read logs, destill info, and put into output files""" def output_label(self, line): + if not line: return; - tags = split(line, ':') + tags = split(line, '@:') label = tags[0] name = tags[1] ly = self.lyfile @@ -155,14 +162,14 @@ class Log_reader: ly.def_symbol(id, texstr, tags[3:7]) - self.texfile.write("\\fetdef\\" + texstr + '{' + code + '}\n') + self.texfile.write("\\fetdef\\%s{%s}\n" % (texstr, code)) else: raise 'unknown label: ' + label def do_file(self,filenm): self.lyfile.write('\n% input from ' + filenm + '\n') - self.texfile.write('\n% input from ' + filenm + '\n') + self.texfile.write('\n% input from ' + filenm + '\n') feta = Feta_file(filenm) while not feta.eof(): line = feta.readline() @@ -173,9 +180,9 @@ class Log_reader: self.lyfile = Ly_file(lyfile_nm, 'w') self.texfile = Indentable_file(texfile_nm, 'w') - headerstr = '% generated automatically by ' + program_id() - headerstr = headerstr + '\n% on ' + today_str() - headerstr = headerstr + '\n% Do not edit\n' + + headerstr = '%% generated automatically by %s\n%% on %s\n%% Do not edit' % \ + (program_id(), today_str()) self.lyfile.write(headerstr) self.texfile.write(headerstr) diff --git a/bin/mudela-book.in b/bin/mudela-book.in deleted file mode 100644 index 9aec75cb60..0000000000 --- a/bin/mudela-book.in +++ /dev/null @@ -1,178 +0,0 @@ -#!@PERL@ -w -# -*-Perl-*- -my $mudcount = 0; -my $mudela_b = 0; -my $outname = "-"; -my $outdir; -use Getopt::Long; - - -# do something, check return status -sub my_system -{ - my (@cmds) = @_; - foreach $cmd (@cmds) { - my ($ignoreret)=0; - if ( $cmd =~ /^-/ ) { - $ignoreret = 1; - $cmd = substr ($cmd, 1); - } - - my $ret = ( system ($cmd)); - if ($ret) { - if ($ignoreret) { - print STDERR "ignoring failed command \`$cmd\' (status $ret)\n"; - }else { - print STDERR "\nmudela-book: failed on command \`$cmd\' (status $ret)\n"; - exit 2; - } - } - } -} -sub gen_mufile -{ - return "$outdir/$outname$mudcount.ly"; -} - -sub gen_texfile -{ - return "$outdir/$outname$mudcount.tex"; -} - -sub close_mudela -{ - $mudela_b = 0; - if ($fragment_b) { - print MUDELA "}\n \\paper { linewidth = -1.0\\cm; castingalgorithm = \\Wordwrap; } }\n"; - $fragment_b =0; - } - if ( $verbatim_b) { - print BOOK "\\end{verbatim}\n\\interexample"; - $verbatim_b =0; - } - close MUDELA; - my $status =0; - if ( -f gen_mufile ) { - $status = system "diff -q $outdir/book-mudela.ly " . gen_mufile; - } else { - $status = 1; - } - if ( $status ) { - rename "$outdir/book-mudela.ly", gen_mufile; - unlink gen_texfile; - } - - if ( ! -f gen_texfile) { - my_system "lilypond ". gen_mufile; - rename "lelie.tex", gen_texfile; - } - print BOOK "\\preexample\\input " . gen_texfile . "\n\\postexample\n"; - -} - -sub open_mudela -{ - $mudcount++; - $mudela_b = 1 ; - open MUDELA, ">$outdir/book-mudela.ly"; - if ($verbatim_b) { - print BOOK "\\begin{verbatim}\n"; - } - if ($fragment_b) { - print MUDELA "\\score { \\melodic {"; - } - -} - -sub begin_b -{ - my ($s) = @_; - return (/^\\begin{$s}/) ; -} - -sub end_b -{ - my ($s) = @_; - return (/^\\end{$s}/) ; -} -sub parse_mudela_opts -{ - my ($s) = @_; - $s =~ s/[\[\]]//g; - - $verbatim_b =1 if ($s =~ /verbatim/ ); - $fragment_b = 1 if ($s =~ /fragment/ ); -} - -sub help -{ - print "usage: convert-mudela [options] [file] -options: ---help ---outdir=DIRECTORY write all files in directory DIRECTORY ---outname=NAME use NAME as base for the output -"; - exit; -} - -sub main -{ - GetOptions( 'outdir=s', 'outname=s', 'help'); - help if ( $opt_help ) ; - - if (defined ($opt_outdir)) { - $outdir = $opt_outdir . "/"; - } else { - $outdir = "."; - } - - if (defined ($ARGV[0])) { - $infile = $ARGV[0] ; - } else { - $infile = "-"; - } - if (defined ($opt_outname)) { - $outname = $opt_outname ; - } else { - die "Need to have an output name, use --outname" if ( $infile eq "-"); - $outname = "$infile.tex"; - } - - my $openout ="$outdir$outname"; - if ( $infile eq $openout ) { - die "The input can't be the output\n"; - } - - open INFILE, "<$infile"; - open BOOK, ">$openout"; - while () { - if ($mudela_b) { - if (end_b "mudela") { - close_mudela; - next; - } - print MUDELA; - if ( $verbatim_b ) { - my $s = $_; - $s =~ s/\t/ /g; #shit - print BOOK $s; - } - - } else { - if (/^\\begin(\[.*\])?{mudela}/ ) { - my $opts =""; - $opts = $1 if ( defined ($1)); - - parse_mudela_opts($opts); - open_mudela; - next; - } - print BOOK; - } - } - close INFILE; - close BOOK; -} - - -main; diff --git a/bin/mudela-book.pl b/bin/mudela-book.pl new file mode 100644 index 0000000000..9aec75cb60 --- /dev/null +++ b/bin/mudela-book.pl @@ -0,0 +1,178 @@ +#!@PERL@ -w +# -*-Perl-*- +my $mudcount = 0; +my $mudela_b = 0; +my $outname = "-"; +my $outdir; +use Getopt::Long; + + +# do something, check return status +sub my_system +{ + my (@cmds) = @_; + foreach $cmd (@cmds) { + my ($ignoreret)=0; + if ( $cmd =~ /^-/ ) { + $ignoreret = 1; + $cmd = substr ($cmd, 1); + } + + my $ret = ( system ($cmd)); + if ($ret) { + if ($ignoreret) { + print STDERR "ignoring failed command \`$cmd\' (status $ret)\n"; + }else { + print STDERR "\nmudela-book: failed on command \`$cmd\' (status $ret)\n"; + exit 2; + } + } + } +} +sub gen_mufile +{ + return "$outdir/$outname$mudcount.ly"; +} + +sub gen_texfile +{ + return "$outdir/$outname$mudcount.tex"; +} + +sub close_mudela +{ + $mudela_b = 0; + if ($fragment_b) { + print MUDELA "}\n \\paper { linewidth = -1.0\\cm; castingalgorithm = \\Wordwrap; } }\n"; + $fragment_b =0; + } + if ( $verbatim_b) { + print BOOK "\\end{verbatim}\n\\interexample"; + $verbatim_b =0; + } + close MUDELA; + my $status =0; + if ( -f gen_mufile ) { + $status = system "diff -q $outdir/book-mudela.ly " . gen_mufile; + } else { + $status = 1; + } + if ( $status ) { + rename "$outdir/book-mudela.ly", gen_mufile; + unlink gen_texfile; + } + + if ( ! -f gen_texfile) { + my_system "lilypond ". gen_mufile; + rename "lelie.tex", gen_texfile; + } + print BOOK "\\preexample\\input " . gen_texfile . "\n\\postexample\n"; + +} + +sub open_mudela +{ + $mudcount++; + $mudela_b = 1 ; + open MUDELA, ">$outdir/book-mudela.ly"; + if ($verbatim_b) { + print BOOK "\\begin{verbatim}\n"; + } + if ($fragment_b) { + print MUDELA "\\score { \\melodic {"; + } + +} + +sub begin_b +{ + my ($s) = @_; + return (/^\\begin{$s}/) ; +} + +sub end_b +{ + my ($s) = @_; + return (/^\\end{$s}/) ; +} +sub parse_mudela_opts +{ + my ($s) = @_; + $s =~ s/[\[\]]//g; + + $verbatim_b =1 if ($s =~ /verbatim/ ); + $fragment_b = 1 if ($s =~ /fragment/ ); +} + +sub help +{ + print "usage: convert-mudela [options] [file] +options: +--help +--outdir=DIRECTORY write all files in directory DIRECTORY +--outname=NAME use NAME as base for the output +"; + exit; +} + +sub main +{ + GetOptions( 'outdir=s', 'outname=s', 'help'); + help if ( $opt_help ) ; + + if (defined ($opt_outdir)) { + $outdir = $opt_outdir . "/"; + } else { + $outdir = "."; + } + + if (defined ($ARGV[0])) { + $infile = $ARGV[0] ; + } else { + $infile = "-"; + } + if (defined ($opt_outname)) { + $outname = $opt_outname ; + } else { + die "Need to have an output name, use --outname" if ( $infile eq "-"); + $outname = "$infile.tex"; + } + + my $openout ="$outdir$outname"; + if ( $infile eq $openout ) { + die "The input can't be the output\n"; + } + + open INFILE, "<$infile"; + open BOOK, ">$openout"; + while () { + if ($mudela_b) { + if (end_b "mudela") { + close_mudela; + next; + } + print MUDELA; + if ( $verbatim_b ) { + my $s = $_; + $s =~ s/\t/ /g; #shit + print BOOK $s; + } + + } else { + if (/^\\begin(\[.*\])?{mudela}/ ) { + my $opts =""; + $opts = $1 if ( defined ($1)); + + parse_mudela_opts($opts); + open_mudela; + next; + } + print BOOK; + } + } + close INFILE; + close BOOK; +} + + +main; diff --git a/bin/release b/bin/release deleted file mode 100755 index 7521b49f11..0000000000 --- a/bin/release +++ /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 -$heredir/bin/make-patch $LASTVER $NEWVER lilypond -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/bin/release.sh b/bin/release.sh new file mode 100644 index 0000000000..e6e3b679ef --- /dev/null +++ b/bin/release.sh @@ -0,0 +1,73 @@ +#!/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 +sh $heredir/bin/make-patch.sh $LASTVER $NEWVER lilypond +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/bin/show-latest.in b/bin/show-latest.in deleted file mode 100644 index a75250b54f..0000000000 --- a/bin/show-latest.in +++ /dev/null @@ -1,53 +0,0 @@ -#!@PERL@ -# -*-Perl-*- - - -$reldir="/home/hw/musix/releases"; - -use FileHandle; -use Getopt::Long; - -sub cmpver -{ - my(@a)= split( /\./, $a); - my(@b)= split( /\./, $b); - - for $i (0,1,2) { - return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]); - } - return $a cmp $b; -} - -my @versions; -open LS, "ls -1 $reldir|"; - -GetOptions( 'print', 'news', 'latest'); - - -while () { - $_ =~ /lilypond-([^.]+\.[^.]+\.[^.]+).tar.gz/; - push @versions, $1; -} - - -@versions = sort cmpver @versions; -my $last= (pop @versions); - - -if ( $opt_print ) { - print $last; -} - -if ( $opt_latest) { - system "rm $reldir/zZ*"; - system "> $reldir/zZ_LATEST_IS_$last"; -} -if ( $opt_news ) { - open NEWS, "tar --to-stdout -zxf $reldir/lilypond-$last.tar.gz lilypond-$last/NEWS |"; - input_record_separator NEWS "****"; - $desc = ; - chop ($desc); - close NEWS; - - print $desc; -} diff --git a/bin/show-latest.pl b/bin/show-latest.pl new file mode 100644 index 0000000000..a75250b54f --- /dev/null +++ b/bin/show-latest.pl @@ -0,0 +1,53 @@ +#!@PERL@ +# -*-Perl-*- + + +$reldir="/home/hw/musix/releases"; + +use FileHandle; +use Getopt::Long; + +sub cmpver +{ + my(@a)= split( /\./, $a); + my(@b)= split( /\./, $b); + + for $i (0,1,2) { + return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]); + } + return $a cmp $b; +} + +my @versions; +open LS, "ls -1 $reldir|"; + +GetOptions( 'print', 'news', 'latest'); + + +while () { + $_ =~ /lilypond-([^.]+\.[^.]+\.[^.]+).tar.gz/; + push @versions, $1; +} + + +@versions = sort cmpver @versions; +my $last= (pop @versions); + + +if ( $opt_print ) { + print $last; +} + +if ( $opt_latest) { + system "rm $reldir/zZ*"; + system "> $reldir/zZ_LATEST_IS_$last"; +} +if ( $opt_news ) { + open NEWS, "tar --to-stdout -zxf $reldir/lilypond-$last.tar.gz lilypond-$last/NEWS |"; + input_record_separator NEWS "****"; + $desc = ; + chop ($desc); + close NEWS; + + print $desc; +} diff --git a/flower/TODO b/flower/TODO index b71ad836c0..714f3ded6e 100644 --- a/flower/TODO +++ b/flower/TODO @@ -1,12 +1,18 @@ - * write a String_hash template + * write a decent Dictionary + - write a String_hash template + - write a Pointer_hash template * Array::slice() upper too - * write a Pointer_hash template + * fix ambiguous String constructor overloads, e.g.: + String( int ) and String( char ), use + + class String { + explicit String(int); + } - * fix/junk ambiguous String constructor overloads, e.g.: - String( int ) and String( char ) + * Automake, libtool * version numbering for shared lib. diff --git a/flower/include/string.hh b/flower/include/string.hh index 9e60bf9858..69226f075b 100644 --- a/flower/include/string.hh +++ b/flower/include/string.hh @@ -83,10 +83,7 @@ public: Byte const* byte_C() const; char* ch_l(); Byte* byte_l(); -#if 0 - /// deprecated; use ch_C() - operator char const*() const { return ch_C(); } -#endif + String &operator =(String const & source); /// concatenate s diff --git a/init/engraver.ly b/init/engraver.ly index 0852b4ca8c..528df1cc67 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 "Beam_req_swallow_translator"; } Lyrics = \translator { diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly index dddd3152d2..4d27f2f750 100644 --- a/init/font-en-tja16.ly +++ b/init/font-en-tja16.ly @@ -1,57 +1,58 @@ -% generated automatically by mf-to-table.py version 0.3 -% on Thu Oct 9 20:24:25 1997 +% generated automatically by mf-to-table.py version 0.4 +% on Fri Oct 10 21:22:38 1997 % Do not edit - % input from out/font-en-tja16.log % name=\symboltables { - "rests" = \table { - "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 - "5" "\thirtysecondrest" -0.00\pt 5.33\pt -0.00\pt 15.47\pt - "6" "\sixtyfourthrest" -0.00\pt 5.33\pt -0.00\pt 19.47\pt - "7" "\hundredtwentyeighthrest" -0.00\pt 5.33\pt -0.00\pt 23.47\pt + "rests" = \table { + "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 + "5" "\\thirtysecondrest" -0.00\pt 5.33\pt -0.00\pt 15.47\pt + "6" "\\sixtyfourthrest" -0.00\pt 5.33\pt -0.00\pt 19.47\pt + "7" "\\hundredtwentyeighthrest" -0.00\pt 5.33\pt -0.00\pt 23.47\pt } - "accidentals" = \table { - "1" "\sharp" -0.00\pt 4.40\pt -6.00\pt 6.00\pt - "0" "\natural" -0.00\pt 2.67\pt -6.00\pt 6.00\pt - "-1" "\flat" -0.00\pt 3.00\pt -2.00\pt 8.00\pt - "-2" "\flatflat" -0.00\pt 6.00\pt -2.00\pt 8.00\pt - "2" "\sharpsharp" -0.00\pt 4.00\pt -2.00\pt 2.00\pt + "accidentals" = \table { + "1" "\\sharp" -0.00\pt 4.40\pt -6.00\pt 6.00\pt + "0" "\\natural" -0.00\pt 2.67\pt -6.00\pt 6.00\pt + "-1" "\\flat" -0.00\pt 3.00\pt -2.00\pt 8.00\pt + "-2" "\\flatflat" -0.00\pt 6.00\pt -2.00\pt 8.00\pt + "2" "\\sharpsharp" -0.00\pt 4.00\pt -2.00\pt 2.00\pt } - "dots" = \table { - "dot" "\dot" -0.00\pt 1.80\pt -0.90\pt 0.90\pt + "dots" = \table { + "dot" "\\dot" -0.00\pt 1.80\pt -0.90\pt 0.90\pt } - "balls" = \table { - "-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 + "balls" = \table { + "-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.30\pt 6.80\pt - "dfermata" "\dfermata" -6.30\pt 6.30\pt -6.80\pt 0.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 - "utrill" "\utrill" -0.00\pt 8.00\pt -0.00\pt 6.00\pt + "scripts" = \table { + "ufermata" "\\ufermata" -5.30\pt 5.30\pt -0.30\pt 5.80\pt + "dfermata" "\\dfermata" -5.30\pt 5.30\pt -5.80\pt 0.00\pt + "sforzato" "\\sforzatoaccent" -3.60\pt 3.60\pt -2.00\pt 2.00\pt + "staccato" "\\staccato" -0.60\pt 0.60\pt -0.60\pt 0.60\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.60\pt 1.60\pt -2.00\pt 2.00\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 8.32\pt + "downbow" "\\downbow" -3.00\pt 3.00\pt -0.00\pt 5.33\pt + "turn" "\\turn" -4.38\pt 4.38\pt -2.12\pt 2.12\pt + "trill" "\\trill" -0.00\pt 8.00\pt -0.00\pt 9.00\pt + "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 5.17\pt -12.77\pt 0.20\pt - "3d" "\deighthflag" -0.20\pt 5.17\pt -0.20\pt 12.77\pt + "floogbars" = \table { + "3u" "\\eighthflag" -0.20\pt 4.10\pt -12.77\pt 0.20\pt + "3d" "\\deighthflag" -0.20\pt 4.10\pt -0.20\pt 12.77\pt } % } % $name diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly index eee1f222b7..63af39049e 100644 --- a/init/font-en-tja20.ly +++ b/init/font-en-tja20.ly @@ -1,57 +1,58 @@ -% generated automatically by mf-to-table.py version 0.3 -% on Thu Oct 9 20:24:27 1997 +% generated automatically by mf-to-table.py version 0.4 +% on Fri Oct 10 21:22:44 1997 % Do not edit - % input from out/font-en-tja20.log % name=\symboltables { - "rests" = \table { - "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 - "5" "\thirtysecondrest" -0.00\pt 6.67\pt -0.00\pt 19.33\pt - "6" "\sixtyfourthrest" -0.00\pt 6.67\pt -0.00\pt 24.33\pt - "7" "\hundredtwentyeighthrest" -0.00\pt 6.67\pt -0.00\pt 29.33\pt + "rests" = \table { + "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 + "5" "\\thirtysecondrest" -0.00\pt 6.67\pt -0.00\pt 19.33\pt + "6" "\\sixtyfourthrest" -0.00\pt 6.67\pt -0.00\pt 24.33\pt + "7" "\\hundredtwentyeighthrest" -0.00\pt 6.67\pt -0.00\pt 29.33\pt } - "accidentals" = \table { - "1" "\sharp" -0.00\pt 5.50\pt -7.50\pt 7.50\pt - "0" "\natural" -0.00\pt 3.33\pt -7.50\pt 7.50\pt - "-1" "\flat" -0.00\pt 3.75\pt -2.50\pt 10.00\pt - "-2" "\flatflat" -0.00\pt 7.50\pt -2.50\pt 10.00\pt - "2" "\sharpsharp" -0.00\pt 5.00\pt -2.50\pt 2.50\pt + "accidentals" = \table { + "1" "\\sharp" -0.00\pt 5.50\pt -7.50\pt 7.50\pt + "0" "\\natural" -0.00\pt 3.33\pt -7.50\pt 7.50\pt + "-1" "\\flat" -0.00\pt 3.75\pt -2.50\pt 10.00\pt + "-2" "\\flatflat" -0.00\pt 7.50\pt -2.50\pt 10.00\pt + "2" "\\sharpsharp" -0.00\pt 5.00\pt -2.50\pt 2.50\pt } - "dots" = \table { - "dot" "\dot" -0.00\pt 2.25\pt -1.13\pt 1.13\pt + "dots" = \table { + "dot" "\\dot" -0.00\pt 2.25\pt -1.13\pt 1.13\pt } - "balls" = \table { - "-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 + "balls" = \table { + "-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.38\pt 8.50\pt - "dfermata" "\dfermata" -7.88\pt 7.88\pt -8.50\pt 0.00\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 - "utrill" "\utrill" -0.00\pt 10.00\pt -0.00\pt 7.50\pt + "scripts" = \table { + "ufermata" "\\ufermata" -6.63\pt 6.63\pt -0.38\pt 7.25\pt + "dfermata" "\\dfermata" -6.63\pt 6.63\pt -7.25\pt 0.00\pt + "sforzato" "\\sforzatoaccent" -4.50\pt 4.50\pt -2.50\pt 2.50\pt + "staccato" "\\staccato" -0.75\pt 0.75\pt -0.75\pt 0.75\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" -2.00\pt 2.00\pt -2.50\pt 2.50\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 10.40\pt + "downbow" "\\downbow" -3.75\pt 3.75\pt -0.00\pt 6.67\pt + "turn" "\\turn" -5.47\pt 5.47\pt -2.65\pt 2.65\pt + "trill" "\\trill" -0.00\pt 10.00\pt -0.00\pt 11.25\pt + "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 6.46\pt -15.91\pt 0.25\pt - "3d" "\deighthflag" -0.25\pt 6.46\pt -0.25\pt 15.91\pt + "floogbars" = \table { + "3u" "\\eighthflag" -0.25\pt 5.13\pt -15.91\pt 0.25\pt + "3d" "\\deighthflag" -0.25\pt 5.13\pt -0.25\pt 15.91\pt } % } % $name diff --git a/init/script.ly b/init/script.ly index 508e43223f..a96f2adf76 100644 --- a/init/script.ly +++ b/init/script.ly @@ -13,10 +13,16 @@ staccato = \script { "staccato" 1 -1 0 0 0 } tenuto = \script {"tenuto" 0 -1 0 0 0 } upbow = \script { "upbow" 0 0 1 0 0 } downbow = \script { "downbow" 0 0 1 0 0 } -lheel = \script { "heel" 0 0 -1 0 0 } -rheel = \script { "heel" 0 0 1 0 0 } -ltoe = \script { "toe" 0 0 -1 0 0 } -rtoe = \script { "toe" 0 0 1 0 0 } +lheel = \script { "pedalheel" 0 0 -1 0 0 } +rheel = \script { "pedalheel" 0 0 1 0 0 } +ltoe = \script { "pedaltoe" 0 0 -1 0 0 } +rtoe = \script { "pedaltoe" 0 0 1 0 0 } +turn = \script { "turn" 0 0 1 0 0 } +open = \script { "open" 0 0 1 0 0 } + + +% could we do without this bloat? +% lbheel = \script { "bheel" 0 0 -1 0 0 } rbheel = \script { "bheel" 0 0 1 0 0 } lbtoe = \script { "btoe" 0 0 -1 0 0 } @@ -25,8 +31,6 @@ lfheel = \script { "fheel" 0 0 -1 0 0 } 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: @@ -45,3 +49,5 @@ open = \script { "open" 0 0 1 0 0 } % being translated into priority... back = \script { "back" 0 -1 -1 0 0 } front = \script { "front" 0 -1 1 0 0 } + +trill =\script { "trill" 0 0 1 0 0 } diff --git a/init/symbol.ly b/init/symbol.ly index 3efcaa9b0b..564fca56cf 100644 --- a/init/symbol.ly +++ b/init/symbol.ly @@ -2,7 +2,7 @@ % % FIXME other name -\version "0.1.6"; +\version "0.1.7"; breve = \duration { -1 0 } longa = \duration { -2 0 } diff --git a/init/table16.ly b/init/table16.ly index 0fe26c3108..4d80868a5b 100644 --- a/init/table16.ly +++ b/init/table16.ly @@ -10,35 +10,20 @@ table_sixteen= \texid "\input lilyponddefs \musixsixteendefs" % 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" "\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 - "staccatissimo" "\ustaccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt - "-staccatissimo" "\dstaccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt - "upbow" "\upbow" -1.0\pt 6.0\pt 0.0\pt 5.0\pt - "downbow" "\downbow" 0.0\pt 5.0\pt 0.0\pt 7.5\pt + + %{ "back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt "-front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt "heel" "\heel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt - "toe" "\toe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt + "toe" "\\toe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt "bheel" "\bheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt "btoe" "\btoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt "fheel" "\fheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt "ftoe" "\ftoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt "-back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt "front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt - "turn" "\turn" -2.0\pt 7.0\pt 0.0\pt 4.0\pt - } + "turn" "\\turn" -2.0\pt 7.0\pt 0.0\pt 4.0\pt + %} "style" = \table { "roman" "\settext{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt @@ -83,8 +68,8 @@ table_sixteen= } "streepjes" = \table { - "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 + "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 { @@ -100,26 +85,6 @@ table_sixteen= } - "rests" = \table { - "-2o" "\longarest" 0.0\pt 6.0\pt 0.0\pt 4.0\pt - "-2" "\longarest" 0.0\pt 6.0\pt 0.0\pt 4.0\pt - "-1o" "\breverest" 0.0\pt 6.0\pt 0.0\pt 4.0\pt - "-1" "\breverest" 0.0\pt 6.0\pt 0.0\pt 4.0\pt - "0o" "\outsidewholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt - "0" "\wholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt - "1" "\halfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt - "1o" "\outsidehalfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt - "2o" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt - "3o" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt - "4o" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt - "2" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt - "3" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt - "4" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt - "5" "\thirtysecondrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt - "6" "\sixtyfourthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt - "7" "\hundredtwentyeighthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt - } - "meters" = \table { "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt @@ -128,7 +93,7 @@ table_sixteen= % dims ignored for this table "param" = \table { "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt - "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -8.0\pt 8.0\pt "linestaf" "\linestafsym{%}{%}" "stem" "\stem{%}{%}" "fill" "\hbox{}" @@ -137,16 +102,11 @@ table_sixteen= "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt } - "dots" = \table { - "1" "\lsingledot" 0.0\pt 2.0\pt -1.0\pt 1.0\pt - "2" "\ldoubledot" 0.0\pt 5.0\pt -1.0\pt 1.0\pt - "3" "\ltripledot" 0.0\pt 8.0\pt -1.0\pt 1.0\pt - } "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 + "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 diff --git a/init/table20.ly b/init/table20.ly index b98a254235..dd0daaa11a 100644 --- a/init/table20.ly +++ b/init/table20.ly @@ -11,36 +11,6 @@ table_twenty = % index TeXstring, xmin xmax ymin ymax - "scripts" = \table { - "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" "\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 - "staccatissimo" "\ustaccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt - "-staccatissimo" "\dstaccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt - "upbow" "\upbow" -1.0\pt 6.0\pt 0.0\pt 5.0\pt - "downbow" "\downbow" 0.0\pt 5.0\pt 0.0\pt 7.5\pt - "back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt - "-front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt - "heel" "\heel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt - "toe" "\toe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt - "bheel" "\bheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt - "btoe" "\btoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt - "fheel" "\fheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt - "ftoe" "\ftoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt - "-back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt - "front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt - "turn" "\turn" -2.0\pt 7.0\pt 0.0\pt 4.0\pt - } - "style" = \table { "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt @@ -85,16 +55,9 @@ table_twenty = "half" "\hslurchar%{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt } - "accidentals" = \table { - "-2" "\flatflat" 0.0\pt 10.2\pt -2.5\pt 7.5\pt - "-1" "\flat" 0.0\pt 6.0\pt -2.5\pt 7.5\pt - "0" "\natural" 0.0\pt 6.0\pt -7.5\pt 7.5\pt - "1" "\sharp" 0.0\pt 6.0\pt -7.5\pt 7.5\pt - "2" "\sharpsharp" 0.0\pt 6.0\pt -2.5\pt 7.5\pt - } "streepjes" = \table { - "toplines" "\topledgerlines{%}{%}" -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 } @@ -110,24 +73,6 @@ table_twenty = ":|:" "\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 20.0\pt } - "rests" = \table { - "-1o" "\breverest" 0.0\pt 6.0\pt 0.0\pt 4.0\pt - "-1" "\breverest" 0.0\pt 6.0\pt 0.0\pt 4.0\pt - "0o" "\outsidewholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt - "0" "\wholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt - "1" "\halfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt - "1o" "\outsidehalfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt - "2o" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt - "3o" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt - "4o" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt - "2" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt - "3" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt - "4" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt - "5" "\thirtysecondrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt - "6" "\sixtyfourthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt - "7" "\hundredtwentyeighthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt - } - "meters" = \table { "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt @@ -145,16 +90,10 @@ table_twenty = "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt } - "dots" = \table { - "1" "\lsingledot" 0.0\pt 8.0\pt -1.0\pt 1.0\pt - "2" "\ldoubledot" 0.0\pt 12.0\pt -1.0\pt 1.0\pt - "3" "\ltripledot" 0.0\pt 16.0\pt -1.0\pt 1.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 + "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 diff --git a/init/vette-beams16.ly b/init/vette-beams16.ly deleted file mode 100644 index 55fc84888e..0000000000 --- a/init/vette-beams16.ly +++ /dev/null @@ -1,3 +0,0 @@ -% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log -% changes will be lost - diff --git a/init/vette-beams20.ly b/init/vette-beams20.ly deleted file mode 100644 index 438f27e89a..0000000000 --- a/init/vette-beams20.ly +++ /dev/null @@ -1,3 +0,0 @@ -% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log -% changes will be lost - diff --git a/input/abbrev.ly b/input/abbrev.ly index e81a18a494..2b2de802f4 100644 --- a/input/abbrev.ly +++ b/input/abbrev.ly @@ -1,10 +1,10 @@ \header{ -enteredby jcn -copyright PD -TestedFeatures simple abbreviations +enteredby = "jcn"; +copyright = "PD"; +TestedFeatures = "simple abbreviations"; } -\version "0.1.6"; +\version "0.1.7"; \score{ \melodic{ diff --git a/input/beams.ly b/input/beams.ly index 8dffc79edb..3dae027c33 100644 --- a/input/beams.ly +++ b/input/beams.ly @@ -1,16 +1,15 @@ -%{MudelaHeader - filename: beams.ly - title: - description: - composer(s): heu - entered-by: jcn - copyright: PD +\header{ +filename = "beams.ly"; +title = ""; +description = ""; +composer = "heu"; +enteredby = "jcn"; +copyright = "PD"; - Tested Features: beams and beamflags -EndMudelaHeader -%} -\version "0.1.6" +TestedFeatures = "beams and beamflags"; +} +\version "0.1.7" \score{ \melodic \multi 3 < diff --git a/input/cadenza.ly b/input/cadenza.ly index 7127940dd4..e7538272f9 100644 --- a/input/cadenza.ly +++ b/input/cadenza.ly @@ -1,17 +1,17 @@ \header{ -filename cadenza.ly -title Cadenza ad libitum -description Cadenza to Mozart Horn concerto 3 -composer unknown -enteredby HWN -copyright public domain +filename = "cadenza.ly"; +title = "Cadenza ad libitum"; +description = "Cadenza to Mozart Horn concerto 3"; +composer = "unknown"; +enteredby = "HWN"; +copyright = "public domain"; } %{ Tested Features: cadenza mode %} -\version "0.1.6"; +\version "0.1.7"; cad = \melodic { @@ -26,8 +26,8 @@ cad = \melodic { c'4.\mf g8 - [e'^"accel" ~ d' c' b] - [b~ c'] g-\fermata + [e'^"accel" () d' c' b] + [b() c'] g-\fermata \bar "empty"; c [c_"rubato" e g c'] \octave c''; @@ -56,7 +56,7 @@ cad = \melodic { \bar "" ; [g8.(_"a tempo" e g8. )e] a4. g8 [f8 e8 d8 c8] - 'g2 d2^"\tr" + 'g2 d2-\trill c4 }} \score { diff --git a/input/collisions.ly b/input/collisions.ly index d2c945889d..861ec2d936 100644 --- a/input/collisions.ly +++ b/input/collisions.ly @@ -1,11 +1,11 @@ \header{ -filename collisions.ly -description random counterpoint to test collisions -enteredby HWN,JCN -copyright public domain -Tested test the Collision resolution +filename = "collisions.ly"; +description = "random counterpoint to test collisions"; +enteredby = "HWN,JCN"; +copyright = "public domain"; +Tested = "test the Collision resolution "; } -\version "0.1.6"; +\version "0.1.7"; diff --git a/input/coriolan-alto.ly b/input/coriolan-alto.ly index f580b6eb99..9585e1fb7d 100644 --- a/input/coriolan-alto.ly +++ b/input/coriolan-alto.ly @@ -1,23 +1,22 @@ % remark: still temporarily broken. -%{MudelaHeader - filename: coriolan-alto.ly - title:Ouverture zu Collins Trauerspiel "Coriolan" Opus 62 - description: a 5 bar fragment of the alto part - composer(s): Ludwig van Beethoven (1770-1792) - entered-by: JCN - copyright: public domain +\header{ +filename = "coriolan-alto.ly"; +title = "Ouverture zu Collins Trauerspiel "Coriolan" Opus 62"; +description = "a 5 bar fragment of the alto part"; +composer = "Ludwig van Beethoven (1770-1792)"; +enteredby = "JCN"; +copyright = "public domain"; - Tested Features: -EndMudelaHeader -%} +TestedFeatures: +} % % when lily can handle this, i-ll type the other 304 bars % (maybe even sooner :-) % -\version "0.1.6"; +\version "0.1.7"; alto1 = \melodic{ \meter 4/4; diff --git a/input/font.ly b/input/font.ly index 4a29d2c8d1..3822fcfa4c 100644 --- a/input/font.ly +++ b/input/font.ly @@ -1,25 +1,25 @@ \header{ -enteredby jcn -copyright PD -TestedFeatures This file tests the Feta music-font - (Feta definitively is not an abbreviation of Font-En-TjA) +enteredby = "jcn"; +copyright = "PD"; +TestedFeatures = "This file tests the Feta music-font" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.6"; +\version "0.1.7"; \score{ \melodic{ \octave c'; \meter 4/4; - \multi 2 < { \stemup g'\longa a'\breve | } + \multi 2 < { \stemup e'\longa a\breve | } { \stemdown c1 g c' a' - c2 g } > + c2 g c' a' + } > \stemboth - c' a' c4 g c' a' | a\ppp-\upbow a\pp-\downbow a\p^\turn a\mp^\fermata | - a\mf_\fermata a\f-\stopped a\ff-\open a\fff| + a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill| a\fp a4.\sf a4.\sfz | % a\fz a\rf [c8 c] [a' a'] [c a'] [a' c] | @@ -30,8 +30,8 @@ TestedFeatures This file tests the Feta music-font \multi 2 < { \stemup c1 } {\stemdown r1}> \stemboth - c8_. c''8-> c4^^ c4_^ - c4 _| c4^| + c8_. c''8-> c16^^ c16_^ + c32 _| c32^| g''32-\ltoe g''32-\lheel } \paper{ gourlay_maxmeasures =5.; diff --git a/input/gallina.ly b/input/gallina.ly index 2d110e4a79..fed49445bb 100644 --- a/input/gallina.ly +++ b/input/gallina.ly @@ -1,11 +1,11 @@ \header{ -title La Gallina a 2 violini -date 1637 -source the manuscript of Canzoni overo Sonate Concertate - libro terzo, opera duodecima -composer Tarquinio Merula (1594/95-1665) -enteredby Mats Bengtsson -copyright Public Domain +title = "La Gallina a 2 violini"; +date = "1637"; +source = "the manuscript of Canzoni overo Sonate Concertate " + "libro terzo, opera duodecima "; +composer = "Tarquinio Merula (1594/95-1665)"; +enteredby = "Mats Bengtsson"; +copyright = "Public Domain "; } @@ -30,12 +30,15 @@ either. Tested Features: Note placement, multipart score, figured base, \breve -note: the sharp signs hoovering over the bass part are no mistake, but -part of the basso continuo - %} +%{ + +note: the sharp signs hoovering over the bass part are no mistake, but +part of the basso continuo --HWN + +%} -\version "0.1.6"; +\version "0.1.7"; vi1=\melodic{ \meter 4/4; diff --git a/input/gourlay.ly b/input/gourlay.ly index 0a07d6d533..fb8e268d01 100644 --- a/input/gourlay.ly +++ b/input/gourlay.ly @@ -1,14 +1,18 @@ \header{ -enteredby jcn -copyright PD -TestedFeatures This file tests some nasty Gourlay spacings +enteredby = "jcn"; +copyright = "PD"; +TestedFeatures = "This file tests some nasty Gourlay spacings"; } -\version "0.1.6"; +\version "0.1.7"; + +%{ + +This is taken from [Gourlay]'s paper on breaking lines + +%} \score{ -% huh? -% \multi 2 \melodic < \octave c''; \melodic \multi 2 < \octave c''; { \stemup; d2 d | d d | d4 d2. | } \octave c'; diff --git a/input/keys.ly b/input/keys.ly index da9286456c..05ec062c27 100644 --- a/input/keys.ly +++ b/input/keys.ly @@ -1,16 +1,4 @@ -%{MudelaHeader - - filename: keys.ly - title: - description: - composers: - entered-by: - copyright: - - Tested Features: local key, key, forced accidentals -EndMudelaHeader -%} -\version "0.1.6"; +\version "0.1.7"; blah = \melodic{ diff --git a/input/kortjakje.ly b/input/kortjakje.ly index fb1eec4e06..86713c4995 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -1,17 +1,17 @@ \header{ -filename kortjakje.ly -title Ah, vous dirais-je, maman (variations) -description bare bones version. (written down from memory :-) -composers Mozart, KV 265 -enteredby HWN -copyright public domain +filename = "kortjakje.ly"; +title = "Ah, vous dirais-je, maman (variations)"; +description = "bare bones version. (written down from memory :-)"; +composers = "Mozart, KV 265"; +enteredby = "HWN"; +copyright = "public domain"; } %{ Tested Features: example file with comments %} -\version "0.1.6"; +\version "0.1.7"; % the % is a comment. diff --git a/input/multi.ly b/input/multi.ly index 0ee5fb1405..d63ddb0ab5 100644 --- a/input/multi.ly +++ b/input/multi.ly @@ -1,8 +1,8 @@ \header{ -filename multi.ly -description stupid testfile for pl68 features. -enteredby HWN -copyright public domain +filename = "multi.ly"; +description = "stupid testfile for pl68 features."; +enteredby = "HWN"; +copyright = "public domain"; } %{ Tested Features: \multi @@ -10,7 +10,7 @@ Tested Features: \multi %} -\version "0.1.6"; +\version "0.1.7"; \score{ \melodic diff --git a/input/pedal.ly b/input/pedal.ly index cb22bd22d9..33c736c3e8 100644 --- a/input/pedal.ly +++ b/input/pedal.ly @@ -24,7 +24,7 @@ % \lbheel \lbheel \lfheel \lftoe % \rbheel \rbtoe \rfheel \rftoe -\version "0.1.6"; +\version "0.1.7"; \score{ \melodic { diff --git a/input/rhythm.ly b/input/rhythm.ly index cc1511bf16..897770ad63 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -1,13 +1,13 @@ \header{ -filename rhythm.ly -enteredby HWN -copyright public domain -TestedFeatures multiple meters, beaming, unsynced bars, userdefd engravers +filename = "rhythm.ly"; +enteredby = "HWN"; +copyright = "public domain"; +TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers"; } -\version "0.1.6"; +\version "0.1.7"; ritme = \melodic{ %\octave ; \partial 8; diff --git a/input/scales.ly b/input/scales.ly index e1736b9f77..a6b2b48367 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -1,18 +1,18 @@ \header{ -filename scales.ly -enteredby HWN -copyright public domain +filename = "scales.ly"; +enteredby = "HWN"; +copyright = "public domain"; } + %{ Tested Features: scripts, beams, transposition, -EndMudelaHeader %} % % scales with accents. % -\version "0.1.6"; +\version "0.1.7"; blah = \melodic { \meter 6/8; \octave 'c ; diff --git a/input/scripts.ly b/input/scripts.ly index 1209028127..ad6503efb7 100644 --- a/input/scripts.ly +++ b/input/scripts.ly @@ -1,16 +1,5 @@ -%{MudelaHeader - - filename: scripts.ly - title: - description: - composers: - entered-by:HWN, MB - copyright: - - Tested Features: scripts, text. -EndMudelaHeader -%} -\version "0.1.6"; + +\version "0.1.7"; blah = \melodic { diff --git a/input/scsii-menuetto.ly b/input/scsii-menuetto.ly index a2cb6fb0bd..c4c94498cc 100644 --- a/input/scsii-menuetto.ly +++ b/input/scsii-menuetto.ly @@ -1,19 +1,19 @@ \header{ -filename scsii-menuetto.ly -title Solo Cello Suites, Suite II part V, Menuetto I -description Cello suite transcribed for Viola -source ? -opus BWV 1008 no. 5 -composers Johann Sebastian Bach (1685-1750) -enteredby JCN -copyright public domain +filename = "scsii-menuetto.ly"; +title = "Solo Cello Suites, Suite II part V, Menuetto I"; +description = "Cello suite transcribed for Viola"; +source = "?"; +opus = "BWV 1008 no. 5"; +composers = "Johann Sebastian Bach (1685-1750)"; +enteredby = "JCN"; +copyright = "public domain"; } %{ Tested Features:breaking algorithm, chords, multivoice, accents %} -\version "0.1.6"; +\version "0.1.7"; %% Stuff from MPP version % \lefttitle{Menuetto} diff --git a/input/slurs.ly b/input/slurs.ly index e7ddad01ee..26ff241da3 100644 --- a/input/slurs.ly +++ b/input/slurs.ly @@ -1,17 +1,5 @@ -%{MudelaHeader - filename: slurs.ly - title: - description: - composer(s): HWN - entered-by: HWN - copyright: PD - - Tested Features: test slurs and ties -EndMudelaHeader -%} - -\version "0.1.6"; +\version "0.1.7"; \score{ \melodic{\octave c'; diff --git a/input/standchen-16.ly b/input/standchen-16.ly index 67c461f127..bb250a98fd 100644 --- a/input/standchen-16.ly +++ b/input/standchen-16.ly @@ -1,14 +1,13 @@ \header{ -filename standchen.ly -title St\"andchen (Serenade) "Leise flehen meine Lieder" -opus D. 957 No. 4 -composers Franz Schubert (1797-1828) - Text by Ludwig Rellstab (1799-1860) -enteredby JCN -copyright public domain - +filename = "standchen.ly"; +title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\""; +opus = "D. 957 No. 4"; +composers = "Franz Schubert (1797-1828)" + "Text by Ludwig Rellstab (1799-1860)"; +enteredby = "JCN"; +copyright = "public domain"; } +\version "0.1.7"; -% just a silly file to satisfy the make-website script \include "standchen.ly" diff --git a/input/standchen-20.ly b/input/standchen-20.ly index 41246d19af..1a13f3fc11 100644 --- a/input/standchen-20.ly +++ b/input/standchen-20.ly @@ -1,12 +1,13 @@ \header{ -filename standchen.ly -title St\"andchen (Serenade) "Leise flehen meine Lieder" -opus D. 957 No. 4 -composers Franz Schubert (1797-1828) - Text by Ludwig Rellstab (1799-1860) -enteredby JCN -copyright public domain +filename = "standchen.ly"; +title = "St\"andchen (Serenade) Leise flehen meine Lieder\""; +opus = "D. 957 No. 4"; +composers = "Franz Schubert (1797-1828)" + "Text by Ludwig Rellstab (1799-1860)"; +enteredby = "JCN"; +copyright = "public domain"; } +\version "0.1.7"; -% just a silly file to satisfy the make-website script -% this should be run after standchen-16 +% fool make-website +% \include "standchen.ly"; diff --git a/input/standchen.ly b/input/standchen.ly index c8edb90140..8f70db6ba6 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -1,11 +1,11 @@ \header{ -filename standchen.ly -title St\"andchen (Serenade) "Leise flehen meine Lieder" -opus D. 957 No. 4 -composers Franz Schubert (1797-1828) - Text by Ludwig Rellstab (1799-1860) -enteredby JCN -copyright public domain +filename = "standchen.ly"; +title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\""; +opus = "D. 957 No. 4"; +composers = "Franz Schubert (1797-1828)" + "Text by Ludwig Rellstab (1799-1860)"; +enteredby = "JCN"; +copyright = "public domain"; } %{ @@ -13,7 +13,7 @@ copyright public domain multiple \paper{}s in one \score %} -\version "0.1.6"; +\version "0.1.7"; commands = \melodic{ \skip 2.*4; diff --git a/input/toccata-fuga-E.ly b/input/toccata-fuga-E.ly index 091aa71c11..7a14e64255 100644 --- a/input/toccata-fuga-E.ly +++ b/input/toccata-fuga-E.ly @@ -1,13 +1,13 @@ \header{ -filename toccata-fuga-E.ly -title toccata and fuga in E-major -opus BWV 566 - toccata 3 bar excerpt - 2nd fuga transposed subject --- 4 bar excerpt +filename = "toccata-fuga-E.ly"; +title = "toccata and fuga in E-major "; +opus = "BWV 566" + "toccata 3 bar excerpt" + "2nd fuga transposed subject --- 4 bar excerpt"; -composers Johann Sebastian Bach (1685-1750) -enteredby JCN -copyright public domain +composers = "Johann Sebastian Bach (1685-1750)"; +enteredby = "JCN"; +copyright = "public domain"; } @@ -20,7 +20,7 @@ copyright public domain %} -\version "0.1.6"; +\version "0.1.7"; toccata_commands = \melodic{ \meter 4/4; diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly index d6aa38a153..2132cf3cb8 100644 --- a/input/twinkle-pop.ly +++ b/input/twinkle-pop.ly @@ -1,18 +1,18 @@ \header{ -filename twinkle.ly -title Ah, vous dirais-je, maman -description twinkle twinkle in pop-song-settings -composers traditional +filename = "twinkle.ly"; +title = "Ah, vous dirais-je, maman "; +description = "twinkle twinkle in pop-song-settings"; +composers = "traditional"; -enteredby HWN, chords by Johan Vromans -copyright public domain +enteredby = "HWN, chords by Johan Vromans"; +copyright = "public domain"; } %{ Tested Features lyrics and chords %} -\version "0.1.6"; +\version "0.1.7"; melodie = \melodic { \clef"violin"; diff --git a/input/twinkle.ly b/input/twinkle.ly index 2ec9b40ee0..6d5c243fd1 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -1,20 +1,20 @@ \header{ -filename twinkle.ly -title twinkle twinkle little star -description traditional song in various languages. - "Ah, vous dirais-je, maman" - "Altijd is Kortjakje ziek" - "Twinkle twinkle little star" - -composers Traditional -enteredby HWN & JCN -copyright public domain +filename = "twinkle.ly"; +title = "twinkle twinkle little star"; +description = "traditional song in various languages." + "Ah, vous dirais-je, maman" + "Altijd is Kortjakje ziek" + "Twinkle twinkle little star"; + +composers = "Traditional"; +enteredby = "HWN & JCN"; +copyright = "public domain"; } %{ Tested Features: lyrics %} -\version "0.1.6"; +\version "0.1.7"; melody = \melodic{ \clef violin; @@ -54,11 +54,11 @@ global = \melodic { tekst = \lyric{ Al-4 tijd is Kort- jak- je ziek,2 - midden4 in_de week maar s'_zon- dags niet.2 - s'_Zon-4 dags gaat ze naar de kerk,2 + midden4 in_de week maar 's_zon- dags niet.2 + 's_Zon-4 dags gaat ze naar de kerk,2 met4 een boek vol zil- ver werk.2 Al-4 tijd is Kort- jak- je ziek,2 - midden4 in_de week maar s'_zon- dags niet.2 + midden4 in_de week maar 's_zon- dags niet.2 } %{ @@ -70,7 +70,7 @@ tekst. Mogen wij ook af en toe ergens op afgeven? hegedraagjetekst = \lyric{ Al-4 tijd zuigt Bill Gates mijn piek,2 "\TeX"4 is slecht- ser dan mu- ziek.2 - s'_Zon-4 dags gaat het door een raam,2 + 's_Zon-4 dags gaat het door een raam,2 Weet4 dat ik me er- voor schaam.2 Al-4 tijd zuigt Bill Gates mijn piek,2 "\TeX"4 is slecht- ser dan mu- ziek.2 diff --git a/input/wtk1-fugue1.ly b/input/wtk1-fugue1.ly index 62a25c5338..646c75ff30 100644 --- a/input/wtk1-fugue1.ly +++ b/input/wtk1-fugue1.ly @@ -1,17 +1,17 @@ \header{ -filename fugue1.ly -title Fuga a 4 -description Das Wohltemperierte Clavier I, Fuga I (c-major) -opus BWV 846 -composer Johann Sebastian Bach (1685-1750) -enteredby Shay Rojansky -copyright Public Domain +filename = "fugue1.ly"; +title = "Fuga a 4"; +description = "Das Wohltemperierte Clavier I, Fuga I (c-major)"; +opus = "BWV 846"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "Shay Rojansky"; +copyright = "Public Domain"; } %{ %} -\version "0.1.6"; +\version "0.1.7"; global = diff --git a/input/wtk1-fugue2.ly b/input/wtk1-fugue2.ly index 608ec4b873..ea304e7a8e 100644 --- a/input/wtk1-fugue2.ly +++ b/input/wtk1-fugue2.ly @@ -1,18 +1,18 @@ \header{ -filename wohltemperirt.ly -title Fuga a 3 -description Das Wohltemperierte Clavier I, Fuga II (c-minor) -opus BWV 847-Fuga -source Henle's Urtext -composer Johann Sebastian Bach (1685-1750) -enteredby HWN and Werner Lemberg -copyright Public Domain +filename = "wohltemperirt.ly"; +title = "Fuga a 3"; +description = "Das Wohltemperierte Clavier I, Fuga II (c-minor)"; +opus = "BWV 847-Fuga"; +source = "Henle's Urtext"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "HWN and Werner Lemberg"; +copyright = "Public Domain"; } %{ Tested Features: stem direction, multivoice, forced accidentals. %} -\version "0.1.6"; +\version "0.1.7"; % should add \need{dutch.ini} for % correct parsing of note names diff --git a/input/wtk1-prelude1.ly b/input/wtk1-prelude1.ly index 060b5866a5..5ed120b09d 100644 --- a/input/wtk1-prelude1.ly +++ b/input/wtk1-prelude1.ly @@ -1,14 +1,14 @@ \header{ -filename prelude1.ly -title Preludium -description Das Wohltemperierte Clavier I, Prelude I (c-major) -opus BWV 846 -composer Johann Sebastian Bach (1685-1750) -enteredby Shay Rojansky -copyright Public Domain +filename = "prelude1.ly"; +title = "Preludium"; +description = "Das Wohltemperierte Clavier I, Prelude I (c-major)"; +opus = "BWV 846"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "Shay Rojansky"; +copyright = "Public Domain"; } -\version "0.1.6"; +\version "0.1.7"; global = \melodic { diff --git a/lily/Stable.make b/lily/Stable.make index 9214c7fb0b..6aebc2b0a5 100644 --- a/lily/Stable.make +++ b/lily/Stable.make @@ -1,7 +1,7 @@ # a hack to keep exec size under control. -stablecc= offset.cc meter.cc boxes.cc \ +stablecc=meter.cc boxes.cc \ keyword.cc leastsquares.cc \ lookup.cc meter.cc\ parser.cc notename-table.cc lexer.cc\ diff --git a/lily/VERSION b/lily/VERSION index 9b9967a6f2..c767ffade7 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,6 +1,6 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 21 +PATCH_LEVEL = 22 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/lily/abbreviation-beam.cc b/lily/abbreviation-beam.cc index 309337dffb..ac36ae99d0 100644 --- a/lily/abbreviation-beam.cc +++ b/lily/abbreviation-beam.cc @@ -54,7 +54,7 @@ Abbreviation_beam::brew_molecule_p () const sb.translate (Offset (x, (x * slope + left_pos)* inter_f)); mol_p->add (sb); } - mol_p->translate (x0 - spanned_drul_[LEFT]->absolute_coordinate (X_AXIS), X_AXIS); + mol_p->translate_axis (x0 - spanned_drul_[LEFT]->absolute_coordinate (X_AXIS), X_AXIS); return mol_p; #endif } diff --git a/lily/atom.cc b/lily/atom.cc index 423181603d..870c6bece9 100644 --- a/lily/atom.cc +++ b/lily/atom.cc @@ -18,6 +18,12 @@ Atom::print() const { #ifndef NPRINT DOUT << "texstring: " < */ +#include + #include "axes.hh" #include "string.hh" @@ -14,3 +16,24 @@ axis_name_str (Axis a) { return String (a + 'x'); } + +/* + TODO inline these. + */ +Axis +post_incr(Axis &a) +{ + assert(a < NO_AXES); + Axis b= a; + a = Axis(int(a) + 1); + return b; +} + +Axis +incr(Axis &a) +{ + assert(a < NO_AXES); + a = Axis(int(a) + 1); + return a; +} + diff --git a/lily/bar.cc b/lily/bar.cc index 05a8557148..8fb5728314 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -35,7 +35,9 @@ Bar::brew_molecule_p() const { Paper_def *p = paper(); Atom s = p->lookup_l()->bar (type_str_, - p->get_var ("bar_size")); + p->get_var ("bar_size")); + s.translate_axis (-s.extent()[Y_AXIS].center (), Y_AXIS); + Molecule*output = new Molecule (Atom (s)); return output; } diff --git a/lily/beam-swallow-trans.cc b/lily/beam-swallow-trans.cc new file mode 100644 index 0000000000..cf23d55088 --- /dev/null +++ b/lily/beam-swallow-trans.cc @@ -0,0 +1,15 @@ +/* + beam-swallow-trans.cc -- instantiate Beam_swallow_translator + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys + + */ + +#include "type-swallow-trans.hh" +#include "musical-request.hh" + + + +DECLARE_REQUEST_SWALLOWER(Beam_req); diff --git a/lily/beam.cc b/lily/beam.cc index d2b5e1e3c6..b1dae43061 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -71,7 +71,7 @@ Beam::brew_molecule_p() const sb.translate (Offset (x, (x * slope + left_pos)* inter_f)); mol_p->add (sb); } - mol_p->translate (x0 - spanned_drul_[LEFT]->absolute_coordinate(X_AXIS), X_AXIS); + mol_p->translate_axis (x0 - spanned_drul_[LEFT]->absolute_coordinate(X_AXIS), X_AXIS); return mol_p; } @@ -311,7 +311,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const for (int j = 0; j < lhalfs; j++) { Atom b (a); - b.translate (-dir_ * dy * (lwholebeams+j), Y_AXIS); + b.translate_axis (-dir_ * dy * (lwholebeams+j), Y_AXIS); leftbeams.add (b); } } @@ -332,7 +332,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const for (; j < nogap; j++) { Atom b (a); - b.translate (-dir_ * dy * j, Y_AXIS); + b.translate_axis (-dir_ * dy * j, Y_AXIS); rightbeams.add (b); } // TODO: notehead widths differ for different types @@ -355,7 +355,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const for (; j < rwholebeams + rhalfs; j++) { Atom b (a); - b.translate (-dir_ * dy * j, Y_AXIS); + b.translate_axis (-dir_ * dy * j, Y_AXIS); rightbeams.add (b); } diff --git a/lily/boxes.cc b/lily/boxes.cc index 28fdeade83..1529c70749 100644 --- a/lily/boxes.cc +++ b/lily/boxes.cc @@ -12,20 +12,22 @@ void Box::translate (Offset o) { - x().translate (o.x ()); - y().translate (o.y ()); + for (Axis i=X_AXIS; i < NO_AXES; incr(i)) + interval_a_[i] += o[i]; } void Box::unite (Box b) { - x().unite (b.x ()); - y().unite (b.y ()); + for (Axis i=X_AXIS; i < NO_AXES; incr(i)) + interval_a_[i].unite (b[i]); } +/** + Initialize to empty. + */ Box::Box() { - } Box::Box (Interval ix, Interval iy) diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc index fc70af6a0e..a8837f2cc1 100644 --- a/lily/clef-grav.cc +++ b/lily/clef-grav.cc @@ -28,19 +28,19 @@ Clef_engraver::set_type (String s) clef_type_str_ = s; if (clef_type_str_ == "violin") { - c0_position_i_= -2; + c0_position_i_= -6; } else if (clef_type_str_ == "alto") { - c0_position_i_= 4; + c0_position_i_= 0; } else if (clef_type_str_ == "tenor") { - c0_position_i_= 6; + c0_position_i_= 2; } else if (clef_type_str_ == "bass") { - c0_position_i_= 10; + c0_position_i_= 6; } else return false; diff --git a/lily/clef-item.cc b/lily/clef-item.cc index a0ca99bcc5..d6c02e542c 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -39,13 +39,13 @@ Clef_item::read (String t) { type_= t; if (type_ == "violin") - y_off = 2; + y_position_i_ = -2; if (type_ == "alto") - y_off = 4; + y_position_i_ = 0; if (type_ == "tenor") - y_off = 6; + y_position_i_ = 2; if (type_ == "bass") - y_off = 6; + y_position_i_ = 2; } void Clef_item::read (Clef_engraver const &k) @@ -61,7 +61,7 @@ Clef_item::brew_molecule_p() const t += "_change"; Atom s = paper()->lookup_l ()->clef (t); Molecule*output = new Molecule (Atom (s)); - output->translate (paper()->internote_f () * y_off, Y_AXIS); + output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS); return output; } diff --git a/lily/col-info.cc b/lily/col-info.cc index 086b7c7e3e..83c7f61fbc 100644 --- a/lily/col-info.cc +++ b/lily/col-info.cc @@ -18,7 +18,7 @@ Colinfo::print() const if (fixed()) DOUT << "fixed at " << fixed_position()<<", "; assert (pcol_l_); - DOUT << "[" << minleft() << ", " << minright () << "]"; + DOUT << width_.str(); DOUT <<"}\n"; #endif } @@ -29,9 +29,9 @@ Colinfo::Colinfo (Paper_column *col_l, Real const *fixed_C) fixpos_p_.set_l (fixed_C); ugh_b_ = false; pcol_l_ = col_l; - width = pcol_l_->width(); - if (width.empty_b()) - width = Interval(0,0); + width_ = pcol_l_->width(); + if (width_.empty_b()) + width_ = Interval(0,0); } diff --git a/lily/dot-column.cc b/lily/dot-column.cc index 6da5e0bbce..58a16c1ce5 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -49,7 +49,7 @@ Dot_column::do_pre_processing () w.unite (head_l_arr_[i]->width ()); if (!w.empty_b ()) - translate (w[RIGHT] - width() [LEFT],X_AXIS); + translate_axis (w[RIGHT] - width() [LEFT],X_AXIS); } IMPLEMENT_IS_TYPE_B1(Dot_column, Horizontal_group_item); diff --git a/lily/dots.cc b/lily/dots.cc index 44e06c0b23..8bba43afcb 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -36,17 +36,17 @@ Dots::brew_molecule_p () const Atom fill = paper()->lookup_l ()->fill (Box(Interval(0,0),Interval(0,0))); out->add(fill); - Atom d = paper ()->lookup_l ()->dots (0); + Atom d = paper ()->lookup_l ()->dots (); Real dw = d.dim_[X_AXIS].length(); - d.translate(-dw,X_AXIS); + d.translate_axis(-dw,X_AXIS); for (int i=no_dots_i_; i--; ) { - d.translate(2*dw,X_AXIS); + d.translate_axis(2*dw,X_AXIS); out->add (d); } Real inter_f = paper ()->internote_f (); - out->translate (inter_f * position_i_, Y_AXIS); + out->translate_axis (inter_f * position_i_, Y_AXIS); return out; } diff --git a/lily/graphical-element.cc b/lily/graphical-element.cc index 98f29f77f4..b5c1046846 100644 --- a/lily/graphical-element.cc +++ b/lily/graphical-element.cc @@ -67,7 +67,7 @@ Graphical_element::absolute_offset() const } void -Graphical_element::translate (Real y, Axis a) +Graphical_element::translate_axis (Real y, Axis a) { if (axis_group_l_a_[a]) axis_group_l_a_[a]->invalidate_cache (a); @@ -109,8 +109,8 @@ Graphical_element::common_group (Graphical_element const* s, Axis a) const void Graphical_element::translate (Offset offset) { - translate (offset[Y_AXIS], Y_AXIS); - translate (offset[X_AXIS], X_AXIS); + translate_axis (offset[Y_AXIS], Y_AXIS); + translate_axis (offset[X_AXIS], X_AXIS); } Interval diff --git a/lily/horizontal-align-item.cc b/lily/horizontal-align-item.cc index 6e63be3daa..e5fe2e8d56 100644 --- a/lily/horizontal-align-item.cc +++ b/lily/horizontal-align-item.cc @@ -94,14 +94,14 @@ Horizontal_align_item::do_pre_processing() for (int i=0 ; i < item_l_arr_.size(); i++) { Real dx = where_f -dims[i][-1]; - item_l_arr_[i]->translate (dx , X_AXIS); + item_l_arr_[i]->translate_axis (dx , X_AXIS); if (item_l_arr_[i] == center_l_) center_dx_f = where_f; where_f += dims[i].length(); } if (center_dx_f && !align_i_) for (int i=0 ; i < item_l_arr_.size(); i++) - item_l_arr_[i]->translate (- center_dx_f , X_AXIS); + item_l_arr_[i]->translate_axis (- center_dx_f , X_AXIS); } diff --git a/lily/include/atom.hh b/lily/include/atom.hh index 66c4a6cbba..22b4cec972 100644 --- a/lily/include/atom.hh +++ b/lily/include/atom.hh @@ -24,7 +24,7 @@ struct Atom { Atom (String, Box); Atom (); void translate (Offset o); - void translate (Real r,Axis a); + void translate_axis (Real r,Axis a); /// how big is #this#? Box extent() const; void print() const; diff --git a/lily/include/axes.hh b/lily/include/axes.hh index 812d983faa..3e0284b68d 100644 --- a/lily/include/axes.hh +++ b/lily/include/axes.hh @@ -20,4 +20,12 @@ class String; String axis_name_str (Axis); +/** + the operator ++ for Axis. + */ +Axis post_incr(Axis &); +Axis incr(Axis &); +//Axis operator++(Axis); + + #endif // AXES_HH diff --git a/lily/include/beam-swallow-trans.hh b/lily/include/beam-swallow-trans.hh new file mode 100644 index 0000000000..7291fd0157 --- /dev/null +++ b/lily/include/beam-swallow-trans.hh @@ -0,0 +1,15 @@ +/* + beam-swallow-trans.hh -- declare + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys + + */ + +#ifndef BEAM_SWALLOW_TRANS_HH +#define BEAM_SWALLOW_TRANS_HH + + +#endif /* BEAM_SWALLOW_TRANS_HH */ + diff --git a/lily/include/clef-item.hh b/lily/include/clef-item.hh index 33190aceeb..311ea4f1ce 100644 --- a/lily/include/clef-item.hh +++ b/lily/include/clef-item.hh @@ -18,7 +18,7 @@ protected: public: String type_; - int y_off; + int y_position_i_; /// is this a change clef (smaller size)? bool change_b_; diff --git a/lily/include/col-info.hh b/lily/include/col-info.hh index 505c11f991..46f6cf20c3 100644 --- a/lily/include/col-info.hh +++ b/lily/include/col-info.hh @@ -18,7 +18,7 @@ struct Colinfo { Paper_column *pcol_l_; P fixpos_p_; - Interval width; + Interval width_; int rank_i_; /// did some tricks to make this column come out. bool ugh_b_; @@ -29,8 +29,6 @@ struct Colinfo { void print() const; bool fixed() const { return fixpos_p_.get_C();} Real fixed_position() const { return *fixpos_p_; } - Real minright() const { return width.right; } - Real minleft() const { return -width.left; } }; #endif // COL_INFO_HH diff --git a/lily/include/graphical-element.hh b/lily/include/graphical-element.hh index fae403280c..f5057a0c63 100644 --- a/lily/include/graphical-element.hh +++ b/lily/include/graphical-element.hh @@ -57,7 +57,7 @@ public: translate in one direction */ - void translate (Real, Axis); + void translate_axis (Real, Axis); Real relative_coordinate (Axis_group_element*group, Axis) const; Offset absolute_offset() const; diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 96cd46e6b7..d4f8663c35 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -24,7 +24,7 @@ struct Lookup { void add (String, Symtable*); void print() const; - Atom linestaff (int n, Real w) const; + Atom linestaff (int n, Real ss, Real w) const; Atom fill (Box b) const; Atom beam_element (int,int,Real=0) const; @@ -49,7 +49,7 @@ struct Lookup { Atom clef (String) const; Atom bar (String, Real height) const; - Atom dots (int) const; + Atom dots () const; Atom slur (int dy, Real &dx, Direction dir) const; Atom half_slur (int dy, Real &dx, Direction dir, int xpart) const; Atom half_slur_middlepart (Real &dx, Direction dir) const; diff --git a/lily/include/molecule.hh b/lily/include/molecule.hh index f83eda517b..ddea093d0e 100644 --- a/lily/include/molecule.hh +++ b/lily/include/molecule.hh @@ -28,7 +28,7 @@ struct Molecule { void add (Molecule const &m); void translate (Offset); - void translate (Real,Axis); + void translate_axis (Real,Axis); void add (Atom const & a) ; /// how big is #this#? Box extent() const; diff --git a/lily/include/my-lily-lexer.hh b/lily/include/my-lily-lexer.hh index e3272eb9cd..6b659ad7d9 100644 --- a/lily/include/my-lily-lexer.hh +++ b/lily/include/my-lily-lexer.hh @@ -26,37 +26,37 @@ void set_lexer(); /// lexer for Mudela class My_lily_lexer : public Includable_lexer { - int lookup_keyword (String); - int scan_bare_word (String); - int scan_escaped_word (String); + int lookup_keyword (String); + int scan_bare_word (String); + int scan_escaped_word (String); - bool post_quotes_b_; + bool post_quotes_b_; + char escaped_char(char) const; public: - void * lexval_l; + void * lexval_l; - Notename_table *note_tab_p_; - Dictionary *identifier_p_dict_p_; - Keyword_table * keytable_p_; - int errorlevel_i_; - - /* *************** */ - - void clear_notenames(); - Identifier*lookup_identifier (String s); - Melodic_req* lookup_melodic_req_l (String s); - void push_header_state(); - void push_note_state(); - void push_lyric_state(); - void pop_state(); - void LexerError (char const *); - My_lily_lexer(); - void set_identifier (String,Identifier*i); - ~My_lily_lexer(); - int yylex(); - void print_declarations (bool init_b) const; - void add_notename (String, Melodic_req*); - bool note_state_b() const; - bool lyric_state_b() const; + Notename_table *note_tab_p_; + Dictionary *identifier_p_dict_p_; + Keyword_table * keytable_p_; + int errorlevel_i_; + + /* *************** */ + + void clear_notenames(); + Identifier*lookup_identifier (String s); + Melodic_req* lookup_melodic_req_l (String s); + void push_note_state(); + void push_lyric_state(); + void pop_state(); + void LexerError (char const *); + My_lily_lexer(); + void set_identifier (String,Identifier*i); + ~My_lily_lexer(); + int yylex(); + void print_declarations (bool init_b) const; + void add_notename (String, Melodic_req*); + bool note_state_b() const; + bool lyric_state_b() const; }; #endif diff --git a/lily/key-item.cc b/lily/key-item.cc index 4dd094b667..bf44f42cb5 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -44,8 +44,10 @@ Key_item::read (Key_engraver const & key_grav_r) void Key_item::set_c_position (int c0) { - int octaves =(abs (c0) / 7) +1 ; - c_position=(c0 + 7*octaves)%7; + int from_bottom_pos = c0 + 4; // ugh + int octaves =(abs (from_bottom_pos) / 7) +1 ; + from_bottom_pos =(from_bottom_pos + 7*octaves)%7; + c_position = from_bottom_pos - 4; } @@ -71,7 +73,7 @@ Key_item::brew_molecule_p() const for (int i =0; i < pitch.size(); i++) { Atom a =paper()->lookup_l ()->accidental (acc[i]); - a.translate ((c_position + pitch[i]) * inter, Y_AXIS); + a.translate_axis ((c_position + pitch[i]) * inter, Y_AXIS); Molecule m (a); output->add_at_edge (X_AXIS, RIGHT, m); } diff --git a/lily/lexer.l b/lily/lexer.l index 453ababc7f..96ee56b49d 100644 --- a/lily/lexer.l +++ b/lily/lexer.l @@ -56,7 +56,6 @@ void strip_leading_white (String&); %option warn %x incl -%x header %x lyrics %x notes %x quote @@ -67,11 +66,10 @@ A [a-zA-Z] AA {A}|_ N [0-9] AN {AA}|{N} -PUNCT [?!,.:;'] +PUNCT [?!,.:'] ACCENT \\[`'"^] -NATIONAL [\241-\377] +NATIONAL [\001-\006\021-\027\031\036\200-\377] TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL} - WORD {A}{AN}* ALPHAWORD {A}+ INT -?{N}+ @@ -82,7 +80,8 @@ HORIZONTALWHITE [ \t] BLACK [^ \n\t\f] RESTNAME [rs] NOTECOMMAND \\{A}+ -LYRICS ({AA}|{NATIONAL})[^0-9 \t\n\f]* +LYRICS ({AA}|{TEX})[^0-9 \t\n\f]* +ESCAPED [nt\\'"] %% @@ -123,29 +122,7 @@ LYRICS ({AA}|{NATIONAL})[^0-9 \t\n\f]* yyterminate (); // can't move this, since it actually rets a YY_NULL } } -
{ - [\{\}] { - return YYText ()[0]; - } - ^{WORD} { - String s=YYText (); - yylval.string = new String (s); - return FIELDNAME; - } - {HORIZONTALWHITE}+{BLACK}.*\n { - String s=YYText (); - strip_leading_white (s); - strip_trailing_white (s); - yylval.string = new String (s); - return RECORDLINE; - } - {WHITE}* { - } - . { - return YYText ()[0]; - } -} \\include { @@ -222,13 +199,10 @@ LYRICS ({AA}|{NATIONAL})[^0-9 \t\n\f]* start_quote (); } { - \\\\ { - *yylval.string += '\\'; - } - \\\" { - *yylval.string +='\"'; + \\{ESCAPED} { + *yylval.string += escaped_char(YYText()[1]); } - [^"]+ { + [^\\"]+ { *yylval.string += YYText (); } \" { @@ -236,6 +210,9 @@ LYRICS ({AA}|{NATIONAL})[^0-9 \t\n\f]* yy_pop_state (); return STRING; } + . { + *yylval.string += YYText (); + } } { @@ -412,13 +389,8 @@ My_lily_lexer::lyric_state_b () const return YY_START == lyrics; } -void -My_lily_lexer::push_header_state () -{ - yy_push_state (header); -} - -void strip_trailing_white (String&s) +void +strip_trailing_white (String&s) { int i=0; for (; i < s.length_i (); i++) @@ -427,7 +399,9 @@ void strip_trailing_white (String&s) s = s.nomid_str (0, i); } -void strip_leading_white (String&s) + +void +strip_leading_white (String&s) { int i=s.length_i (); while (i--) @@ -435,5 +409,4 @@ void strip_leading_white (String&s) break; s = s.left_str (i+1); - } diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index 2d24d07959..a2ddd1b43e 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -25,6 +25,8 @@ Local_key_item::Local_key_item (int i) void Local_key_item::add_support (Item*head_l) { + if (support_items_.find_l(head_l)) + return ; support_items_.push (head_l); add_dependency (head_l); } @@ -70,18 +72,17 @@ Local_key_item::brew_molecule_p() const if (octave_mol_p) { Real dy =lastoct*7*paper()->internote_f (); - octave_mol_p->translate (dy, Y_AXIS); + octave_mol_p->translate_axis (dy, Y_AXIS); output->add (*octave_mol_p); delete octave_mol_p; } octave_mol_p= new Molecule; } lastoct = accs[i].octave_i_; - Real dy = (accs[i].name_i_ + c0_position) * paper()->internote_f (); Atom a (paper()->lookup_l ()->accidental (accs[i].accidental_i_)); - a.dim_[X_AXIS] += 1 PT; // todo - a.translate (dy, Y_AXIS); + + a.translate_axis (dy, Y_AXIS); Molecule m(a); octave_mol_p->add_at_edge (X_AXIS, RIGHT, m); } @@ -89,7 +90,7 @@ Local_key_item::brew_molecule_p() const if (octave_mol_p) { Real dy =lastoct*7*paper()->internote_f (); - octave_mol_p->translate (dy, Y_AXIS); + octave_mol_p->translate_axis (dy, Y_AXIS); output->add (*octave_mol_p); delete octave_mol_p; } @@ -100,8 +101,22 @@ Local_key_item::brew_molecule_p() const Molecule m (paper()->lookup_l ()->fill (b)); output->add_at_edge (X_AXIS, RIGHT, m); } - Interval head_width=itemlist_width (support_items_); - output->translate (-output->extent().x ().right + head_width.left , X_AXIS); + + Interval x_int; + for (int i=0; i < support_items_.size(); i++) + { + Axis_group_element *common = + common_group (support_items_[i], X_AXIS); + + Real x = support_items_[i]->relative_coordinate (common, X_AXIS) + -relative_coordinate (common, X_AXIS); + + x_int.unite (x + support_items_[i]->width()); + } + if (x_int.empty_b ()) + x_int = Interval(0,0); + + output->translate_axis (-output->extent()[X_AXIS][RIGHT] + x_int[LEFT], X_AXIS); return output; } diff --git a/lily/lookup.cc b/lily/lookup.cc index 64153dc8e7..38e31d9000 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -132,7 +132,7 @@ Lookup::clef (String s) const } Atom -Lookup::dots (int j) const +Lookup::dots () const { return (*symtables_)("dots")->lookup ("dot"); } @@ -193,11 +193,10 @@ Lookup::hairpin (Real &wid, bool decresc) const } Atom -Lookup::linestaff (int lines, Real wid) const +Lookup::linestaff (int lines, Real interline_f, Real wid) const { - Real internote_f = paper_l_ ->internote_f(); Atom s; - Real dy = (lines >0) ? (lines-1)*internote_f : 0; + Real dy = (lines >0) ? (lines-1)*interline_f : 0; s.dim_ = Box (Interval (0,wid), Interval (0,dy)); Array a; @@ -207,6 +206,9 @@ Lookup::linestaff (int lines, Real wid) const s.tex_ = (*symtables_)("param")->lookup ("linestaf").tex_; s.tex_ = substitute_args (s.tex_, a); + + s.translate_axis (-s.extent ()[Y_AXIS].center (), Y_AXIS); + return s; } diff --git a/lily/lyric-grav.cc b/lily/lyric-grav.cc index 346ade0301..182658cd5f 100644 --- a/lily/lyric-grav.cc +++ b/lily/lyric-grav.cc @@ -37,7 +37,7 @@ Lyric_engraver::do_process_requests() { lyric_item_p_ = new Text_item (lreq_l_->tdef_p_); - lyric_item_p_->translate (paper()->note_width ()/2 , X_AXIS); + lyric_item_p_->translate_axis (paper()->note_width ()/2 , X_AXIS); lyric_item_p_->dir_ = DOWN; lyric_item_p_->fat_b_ = true; announce_element (Score_elem_info (lyric_item_p_, lreq_l_)); diff --git a/lily/meter.cc b/lily/meter.cc index 0c4d4e0ad1..97df812358 100644 --- a/lily/meter.cc +++ b/lily/meter.cc @@ -14,6 +14,7 @@ Molecule* Meter::brew_molecule_p() const { Atom s = paper()->lookup_l ()->meter (args); + s.translate_axis (-s.extent()[Y_AXIS].center (), Y_AXIS); return new Molecule (Atom (s)); } diff --git a/lily/molecule.cc b/lily/molecule.cc index 4dfe7d6c13..f054a28021 100644 --- a/lily/molecule.cc +++ b/lily/molecule.cc @@ -40,10 +40,10 @@ Molecule::translate (Offset o) } void -Molecule::translate (Real x,Axis a) +Molecule::translate_axis (Real x,Axis a) { for (iter_top (ats,c); c.ok(); c++) - c->translate (x,a); + c->translate_axis (x,a); } void @@ -66,7 +66,7 @@ Molecule::add_at_edge (Axis a, Direction d, Molecule const &m) } Real offset = extent ()[a][d] - m.extent ()[a][-d]; Molecule toadd (m); - toadd.translate (offset, a); + toadd.translate_axis (offset, a); add (toadd); } diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 4c7f72e598..8abc8beb46 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -164,3 +164,21 @@ My_lily_lexer::clear_notenames() delete note_tab_p_; note_tab_p_ = new Notename_table; } + +char +My_lily_lexer::escaped_char(char c) const +{ + switch(c) + { + case 'n': + return '\n'; + case 't': + return '\t'; + + case '\'': + case '\"': + case '\\': + return c; + } + return 0; +} diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index bfa78512da..e2dd943b3a 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -129,6 +129,7 @@ My_lily_parser::parser_error (String s) if (fatal_error_i_) exit (fatal_error_i_); error_level_i_ = 1; + exit_status_i_ = 1; } void diff --git a/lily/note-head.cc b/lily/note-head.cc new file mode 100644 index 0000000000..529e28d895 --- /dev/null +++ b/lily/note-head.cc @@ -0,0 +1,87 @@ +/* + notehead.cc -- implement Note_head + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + +#include "misc.hh" +#include "dots.hh" +#include "note-head.hh" +#include "dimen.hh" +#include "debug.hh" +#include "paper-def.hh" +#include "lookup.hh" +#include "molecule.hh" +#include "musical-request.hh" + + +Note_head::Note_head () +{ + x_dir_ = CENTER; + staff_size_i_= 8; // UGH + position_i_ = 0; + extremal_i_ = 0; +} + +void +Note_head::do_pre_processing () +{ + // 8 ball looks the same as 4 ball: + if (balltype_i_ > 2) + balltype_i_ = 2; + if (dots_l_) // move into Rhythmic_head? + dots_l_->position_i_ = position_i_; +} + +IMPLEMENT_IS_TYPE_B1(Note_head,Rhythmic_head); + + +int +Note_head::compare (Note_head *const &a, Note_head * const &b) +{ + return a->position_i_ - b->position_i_; +} + +Interval +Note_head::do_width () const +{ + Atom a = paper ()->lookup_l()->ball (balltype_i_); + Interval i = a.dim_[X_AXIS]; + i+= x_dir_ * i.length (); + return i; +} + +Molecule* +Note_head::brew_molecule_p() const +{ + Molecule*out = 0; + Paper_def *p = paper(); + Real inter_f = p->internote_f (); + + // ugh + int streepjes_i = abs(position_i_) < staff_size_i_/2 + ? 0 + : (abs(position_i_) - staff_size_i_/2) /2; + + Atom s = p->lookup_l()->ball (balltype_i_); + out = new Molecule (Atom (s)); + out->translate_axis (x_dir_ * s.dim_[X_AXIS].length (), X_AXIS); + + if (streepjes_i) + { + int dir = sign (position_i_); + + Atom streepje = p->lookup_l()->streepjes (balltype_i_, dir* streepjes_i); + + Molecule sm; + sm.add (streepje); + if (position_i_ % 2) + sm.translate_axis (-inter_f* dir, Y_AXIS); + out->add (sm); + } + + out->translate_axis (inter_f*position_i_, Y_AXIS); + return out; +} diff --git a/lily/notehead.cc b/lily/notehead.cc deleted file mode 100644 index 97d69ec1ed..0000000000 --- a/lily/notehead.cc +++ /dev/null @@ -1,87 +0,0 @@ -/* - notehead.cc -- implement Note_head - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - -#include "misc.hh" -#include "dots.hh" -#include "note-head.hh" -#include "dimen.hh" -#include "debug.hh" -#include "paper-def.hh" -#include "lookup.hh" -#include "molecule.hh" -#include "musical-request.hh" - - -Note_head::Note_head () -{ - x_dir_ = CENTER; - staff_size_i_= 8; // UGH - position_i_ = 0; - extremal_i_ = 0; -} - -void -Note_head::do_pre_processing () -{ - // 8 ball looks the same as 4 ball: - if (balltype_i_ > 2) - balltype_i_ = 2; - if (dots_l_) // move into Rhythmic_head? - dots_l_->position_i_ = position_i_; -} - -IMPLEMENT_IS_TYPE_B1(Note_head,Rhythmic_head); - - -int -Note_head::compare (Note_head *const &a, Note_head * const &b) -{ - return a->position_i_ - b->position_i_; -} - -Interval -Note_head::do_width () const -{ - Atom a = paper ()->lookup_l()->ball (balltype_i_); - Interval i = a.dim_[X_AXIS]; - i+= x_dir_ * i.length (); - return i; -} - -Molecule* -Note_head::brew_molecule_p() const -{ - Molecule*out = 0; - Paper_def *p = paper(); - Real inter_f = p->internote_f (); - - // ugh - bool streepjes_b = (position_i_<-1) || (position_i_ > staff_size_i_+1); - - Atom s = p->lookup_l()->ball (balltype_i_); - out = new Molecule (Atom (s)); - out->translate (x_dir_ * s.dim_[X_AXIS].length (), X_AXIS); - - if (streepjes_b) - { - int dir = sign (position_i_); - int s =(position_i_<-1) - ? -((-position_i_)/2) - : (position_i_-staff_size_i_)/2; - - Atom str = p->lookup_l()->streepjes (balltype_i_, s); - Molecule sm; - sm.add (Atom (str)); - if (position_i_ % 2) - sm.translate (-inter_f* dir, Y_AXIS); - out->add (sm); - } - - out->translate (inter_f*position_i_, Y_AXIS); - return out; -} diff --git a/lily/parser.y b/lily/parser.y index c9b1dd4949..9f02016a41 100644 --- a/lily/parser.y +++ b/lily/parser.y @@ -12,7 +12,7 @@ #include // mmm -#define MUDELA_VERSION "0.1.6" +#define MUDELA_VERSION "0.1.7" #include "scalar.hh" #include "translation-property.hh" @@ -183,7 +183,6 @@ yylex (YYSTYPE *s, void * v_l) %token REAL %token DURATION RESTNAME %token STRING -%token FIELDNAME RECORDLINE %token POST_QUOTES %token PRE_QUOTES @@ -228,9 +227,9 @@ yylex (YYSTYPE *s, void * v_l) %type symtable symtable_body %type translator_spec translator_spec_body %type tempo_request -%type header_record +%type concat_strings -%expect 2 +%expect 1 %% @@ -281,34 +280,28 @@ mudela_header_body: { $$ = new Header; } - | mudela_header_body FIELDNAME header_record { - (*$$)[*$2] = *$3; + | mudela_header_body STRING '=' concat_strings ';' { + (*$$)[*$2] = *$4; delete $2; - delete $3; + delete $4; } ; mudela_header: - HEADER { - THIS->lexer_p_->push_header_state (); - } - - '{' mudela_header_body '}' { - $$ = $4; - THIS->lexer_p_->pop_state (); + HEADER '{' mudela_header_body '}' { + $$ = $3; } ; -header_record: +concat_strings: { $$ = new String; } - | header_record RECORDLINE { + | concat_strings STRING { *$$ += *$2; - delete $2; } - ; + /* DECLARATIONS diff --git a/lily/rest.cc b/lily/rest.cc index 6dc7dab858..d186608b26 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -1,5 +1,5 @@ /* - rest.cc -- implement + rest.cc -- implement Rest source file of the GNU LilyPond music typesetter @@ -17,10 +17,9 @@ void Rest::do_add_processing () { - if (balltype_i_ == 0) - position_i_ += 4; - else if (balltype_i_ == 1) - position_i_ += 4; + if (balltype_i_ != 0 && balltype_i_ != 1) + position_i_ -= 4; + Rhythmic_head::do_add_processing (); if (dots_l_) dots_l_->position_i_ = position_i_; @@ -34,14 +33,12 @@ Rest::Rest () Molecule * 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; + int staff_size_i_ = 8; + 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)); - m->translate (position_i_ * paper ()->internote_f (), Y_AXIS); + m->translate_axis (position_i_ * paper ()->internote_f (), Y_AXIS); return m; } diff --git a/lily/scoreline.cc b/lily/scoreline.cc index 9a6438a5ed..4a2df191c4 100644 --- a/lily/scoreline.cc +++ b/lily/scoreline.cc @@ -73,7 +73,7 @@ Line_of_score::set_breaking (Array const &breaking) for (int i=0; i < curline.size(); i++) { - curline[i]->translate(config[i],X_AXIS); + curline[i]->translate_axis (config[i],X_AXIS); curline[i]->line_l_ = (Line_of_score*)line_l; } } diff --git a/lily/script-def.cc b/lily/script-def.cc index fa067cd3cc..e16eed4c09 100644 --- a/lily/script-def.cc +++ b/lily/script-def.cc @@ -75,8 +75,8 @@ Atom Script_def::get_atom (Paper_def *p , Direction d) const { String preidx_str =""; - if (invertsym_b_&& d < 0) - preidx_str = "-"; + if (invertsym_b_) + preidx_str = (d < 0)? "d" : "u"; return p->lookup_l()->script (preidx_str + symidx_str_); } diff --git a/lily/script.cc b/lily/script.cc index df80dabd37..2ac9930199 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -102,8 +102,8 @@ Script::brew_molecule_p() const 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 + out->translate_axis (dy * pos_i_, Y_AXIS); + out->translate_axis (dx, X_AXIS); // FIXME! ugh return out; } diff --git a/lily/span-bar.cc b/lily/span-bar.cc index 6076dd7d86..a73c27df42 100644 --- a/lily/span-bar.cc +++ b/lily/span-bar.cc @@ -110,7 +110,7 @@ Span_bar::brew_molecule_p() const Atom s = get_bar_sym (y_int.length()); Molecule*output = new Molecule (Atom (s)); - output->translate (y_int[-1], Y_AXIS); + output->translate_axis (y_int[-1], Y_AXIS); return output; } diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc index d1fb487b00..fc730f3965 100644 --- a/lily/spring-spacer.cc +++ b/lily/spring-spacer.cc @@ -160,8 +160,8 @@ Spring_spacer::check_constraints (Vector v) const if (!i) continue; - Real mindist=cols[i-1].minright() - +cols[i].minleft(); + Real mindist=cols[i-1].width_[RIGHT] + -cols[i].width_[LEFT]; // ugh... compares Real dif =v (i) - v (i-1)- mindist; @@ -196,7 +196,7 @@ Spring_spacer::try_initial_solution() const if (i > 0) { - Real r =initsol (i-1) + cols[i-1].minright(); + Real r =initsol (i-1) + cols[i-1].width_[RIGHT]; if (initsol (i) < r) { warning ("overriding fixed position"); @@ -207,8 +207,8 @@ Spring_spacer::try_initial_solution() const } else { - Real mindist=cols[i-1].minright() - +cols[i].minleft(); + Real mindist=cols[i-1].width_[RIGHT] + - cols[i].width_[LEFT]; if (mindist < 0.0) warning ("Excentric column"); initsol (i)=initsol (i-1)+mindist; @@ -277,8 +277,8 @@ Spring_spacer::make_constraints (Mixed_qp& lp) const c1(j)=1.0 ; c1(j-1)=-1.0 ; - lp.add_inequality_cons (c1, cols[j-1].minright() + - cols[j].minleft()); + lp.add_inequality_cons (c1, + cols[j-1].width_[RIGHT] - cols[j].width_[LEFT]); } } } @@ -529,7 +529,7 @@ Spring_spacer::calc_idealspacing() { if (!scol_l (i)->musical_b()) { - Real symbol_distance =cols[i].minright() + 2 PT; + Real symbol_distance =cols[i].width_[RIGHT] + 2 PT; Real durational_distance = 0; if (i+1 < cols.size()) @@ -542,7 +542,7 @@ Spring_spacer::calc_idealspacing() */ if (delta_t) durational_distance = paper_l()->duration_to_dist (delta_t,k); - symbol_distance += cols[i+1].minleft(); + symbol_distance += -cols[i+1].width_[LEFT]; } ideal_arr_[i] = symbol_distance >? durational_distance; @@ -576,7 +576,7 @@ Spring_spacer::calc_idealspacing() extra space if this is not needed */ if (!scol_l (i+1)->musical_b()) { - Real minimum_dist = cols[i+1].minleft() + 2 PT + cols[i].minright () ; + Real minimum_dist = - cols[i+1].width_[LEFT] + 2 PT + cols[i].width_[RIGHT]; if (ideal_arr_[i+1] + minimum_dist < dist) { ideal_arr_[i] = dist - ideal_arr_[i+1]; diff --git a/lily/staff-side.cc b/lily/staff-side.cc index a58d2f2828..eba7d09a13 100644 --- a/lily/staff-side.cc +++ b/lily/staff-side.cc @@ -75,8 +75,9 @@ Staff_side::get_position_i() const Real inter_f = paper()-> internote_f (); if (!inside_staff_b_) { - y = (dir_ > 0 && staff_sym_l_) ? staff_sym_l_->steps_i() + 2: -2; + y = (staff_sym_l_) ? dir_ * (staff_sym_l_->steps_i() + 2) : -2; y *=inter_f; + Interval v= support_height(); if (dir_ > 0) diff --git a/lily/staff-sym.cc b/lily/staff-sym.cc index 6b9b288aba..eda2e2b608 100644 --- a/lily/staff-sym.cc +++ b/lily/staff-sym.cc @@ -33,7 +33,7 @@ Staff_symbol::do_print() const Molecule* Staff_symbol::brew_molecule_p() const { - Atom a = paper()->lookup_l ()->linestaff (no_lines_i_, width ().length ()); + Atom a = paper()->lookup_l ()->linestaff (no_lines_i_, paper ()->interline_f(), width ().length ()); return new Molecule (a); } diff --git a/lily/stem.cc b/lily/stem.cc index 462567a47e..324624b15a 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -139,7 +139,7 @@ Stem::get_center_distance_from_top () if (dir_) return (dir_ > 0) ? 0 : 1; - int staff_center = staff_size_i_ / 2; + int staff_center = 0; int max = max_head_i () - staff_center; return max >? 0; } @@ -151,7 +151,7 @@ Stem::get_center_distance_from_bottom () if (dir_) return (dir_ > 0) ? 1 : 0; - int staff_center = staff_size_i_ / 2; + int staff_center = 0; int min = staff_center - min_head_i (); return min >? 0; } @@ -179,24 +179,22 @@ Stem::set_default_stemlen () if (!dir_) set_default_dir (); - // ugh... how about non 5-line staffs? - bool on_ledger_line_b = ((max_head_i () < -2 && dir_ == 1) - // || (min_head_i () > staff_size_i_ && dir_ == -1)); - || (min_head_i () > staff_size_i_ + 3 && dir_ == -1)); - if (on_ledger_line_b) - { - set_stemend (staff_size_i_ / 2 - 1); - } - else + + Real dy = paper ()->interbeam_f (); + Real len = STEMLEN; + // 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_ * stem_end_f () < 0) { - Real dy = paper ()->interbeam_f (); - Real len = STEMLEN; - // 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); + set_stemend (0); } + + } void @@ -305,14 +303,14 @@ Stem::abbrev_mol () const a.translate (Offset(- w / 2, stem_end_f () - (w / 2 * slope))); // ugh if (!beams_i) - a.translate (dy + beamdy - dir_ * dy, Y_AXIS); + a.translate_axis (dy + beamdy - dir_ * dy, Y_AXIS); else - a.translate (2 * beamdy - dir_ * (beamdy - dy), Y_AXIS); + a.translate_axis (2 * beamdy - dir_ * (beamdy - dy), Y_AXIS); for (int i = 0; i < abbrev_flag_i_; i++) { Atom b (a); - b.translate (-dir_ * dy * (beams_i + i), Y_AXIS); + b.translate_axis (-dir_ * dy * (beams_i + i), Y_AXIS); beams.add (b); } @@ -350,7 +348,7 @@ Stem::brew_molecule_p () const if (head_l_arr_.size()) { - mol_p->translate (note_delta_f (), X_AXIS); + mol_p->translate_axis (note_delta_f (), X_AXIS); } return mol_p; } diff --git a/lily/tex-slur.cc b/lily/tex-slur.cc index 58783600f5..8ea4ba4a5d 100644 --- a/lily/tex-slur.cc +++ b/lily/tex-slur.cc @@ -69,7 +69,7 @@ Lookup::half_slur_middlepart (Real &dx, Direction dir) const f +=String ("{") + String (idx) + "}"; s.tex_ = f; - s.translate (dx/2, X_AXIS); + s.translate_axis (dx/2, X_AXIS); return s; } @@ -206,7 +206,7 @@ Lookup::slur (int dy , Real &dx, Direction dir) const s.tex_ = f; - s.translate (dx/2, X_AXIS); + s.translate_axis (dx/2, X_AXIS); return s; } @@ -239,7 +239,7 @@ Lookup::big_slur (int dy , Real &dx, Direction dir) const mol.add_at_edge (X_AXIS, RIGHT, a); mol.add_at_edge (X_AXIS, RIGHT, r); - mol.translate (l_dy * internote_f, Y_AXIS); + mol.translate_axis (l_dy * internote_f, Y_AXIS); Atom s; s.tex_ = mol.TeX_string(); s.dim_ = mol.extent(); diff --git a/lily/text-item.cc b/lily/text-item.cc index 4701f2b109..8d62ea7289 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -51,8 +51,8 @@ Text_item::brew_molecule_p() const Molecule* mol_p = new Molecule (a); if (dir_<0) // should do something better anyway. - mol_p->translate (-mol_p->extent().y ().left , Y_AXIS); - mol_p->translate (pos_i_ * paper()->internote_f (), Y_AXIS); + mol_p->translate_axis (-mol_p->extent().y ().left , Y_AXIS); + mol_p->translate_axis (pos_i_ * paper()->internote_f (), Y_AXIS); return mol_p; } diff --git a/lily/vertical-align-elem.cc b/lily/vertical-align-elem.cc index 4f83ba1b7b..8cc0ecfd49 100644 --- a/lily/vertical-align-elem.cc +++ b/lily/vertical-align-elem.cc @@ -22,10 +22,10 @@ Vertical_align_element::do_substitute_dependency (Score_elem*o,Score_elem*n) { int i; while ((i = elem_l_arr_.find_i (o))>=0) - if (n) - elem_l_arr_[i] = n; - else - elem_l_arr_.del (i); + if (n) + elem_l_arr_[i] = n; + else + elem_l_arr_.del (i); } /** @@ -40,18 +40,18 @@ Vertical_align_element::do_post_processing() Array dims; for (int i=0; i < elem_l_arr_.size(); i++) { - Interval y = elem_l_arr_[i]->height() ; - if (y.empty_b()) - y = Interval (0,0); + Interval y = elem_l_arr_[i]->height() ; + if (y.empty_b()) + y = Interval (0,0); - dims.push (y); + dims.push (y); } Real where_f=0; for (int i=0 ; i < elem_l_arr_.size(); i++) { - elem_l_arr_[i]->translate (- dims[i][1] - where_f, Y_AXIS); - where_f += dims[i].length(); + elem_l_arr_[i]->translate_axis (- dims[i][1] - where_f, Y_AXIS); + where_f += dims[i].length(); } } diff --git a/make/Targets.make b/make/Targets.make index d84b62e304..cf8390be0a 100644 --- a/make/Targets.make +++ b/make/Targets.make @@ -121,9 +121,6 @@ help: doc: $(MAKE) -C $(depth)/Documentation do-doc -# doc++ documentation of classes -doc++: $(progdocs) - $(docxx) $(docxx-opts) -d $(DOCDIR) $^ # ugh. should generate in out/ dist: @@ -190,7 +187,7 @@ endif # $(outdir)/version.hh: VERSION - ./$(lily_bindir)/make-version > $@ + sh ./$(lily_bindir)/make-version.sh > $@ # should this be in Rules? diff --git a/make/Variables.make b/make/Variables.make index c1a022fa19..abcc2dde58 100644 --- a/make/Variables.make +++ b/make/Variables.make @@ -200,12 +200,6 @@ STRIPDEBUG=true DISTFILES=$(EXTRA_DISTFILES) Makefile $(ALL_SOURCES) DOCDIR=$(depth)/$(outdir) -# .hh should be first. Don't know why -# take some trouble to auto ignore sources and obsolete stuff. -progdocs=$(shell $(FIND) ./ -name '*.hh' |egrep -v '$(OUTDIR_NAME)') \ - $(shell $(FIND) ./ -name '*.cc' |egrep -v '$(OUTDIR_NAME)') \ - - pod2html=pod2html pod2groff=pod2man --center="LilyPond documentation" --section="0"\ --release="LilyPond $(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)" $< > $@ @@ -220,6 +214,3 @@ endif DO_STRIP=true -docxx-opts=-S -k -p -docxx=doc++ - diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index 5c5950a0f0..99f1bb8260 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -1,6 +1,6 @@ Begin3 Titel: LilyPond -Versie: 0.1.21.jcn1 +Versie: 0.1.22 Inschrijf datum: 10OCT97 Beschrijving: LilyPond is de muziek typesetter van het GNU Project. Het programma genereert muziek in zichtbare of @@ -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.21.jcn1.tar.gz + 395k lilypond-0.1.22.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.21.jcn1.tar.gz + 395k lilypond-0.1.22.tar.gz Copi"eer politie: GPL End diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 3470c648c6..9077acff9c 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.21 -Entered-date: 08OCT97 +Version: 0.1.22 +Entered-date: 10OCT97 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 - 395k lilypond-0.1.21.tar.gz + 395k lilypond-0.1.22.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.21.tar.gz + 395k lilypond-0.1.22.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index 18049956f0..296e2fd7a5 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.21 +Version: 0.1.22 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.21.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.22.tar.gz Summary: A preprocessor to make TeX typeset music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys @@ -29,7 +29,7 @@ make -C Documentation gifs make prefix="$RPM_BUILD_ROOT/usr" install %files %doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/internals.text Documentation/out/language.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/literature.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/mutopia.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README -%doc input/abbrev.ly input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font.ly input/gallina.ly input/gallina.tex input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc +%doc input/abbrev.ly input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font.ly input/gallina.ly input/gallina.tex input/gourlay.ly input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc %doc Documentation/out/lelie_logo.gif /usr/bin/convert-mudela /usr/bin/mudela-book @@ -41,6 +41,7 @@ make prefix="$RPM_BUILD_ROOT/usr" install /usr/man/man1/mudela-book.1 /usr/man/man1/convert-mudela.1 /usr/lib/texmf/texmf/tex/lilypond/ +/usr/lib/texmf/texmf/fonts/source/lilypond /usr/share/lilypond/ %post diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in index 7a871bacb4..a984487a74 100644 --- a/make/lilypond.spec.in +++ b/make/lilypond.spec.in @@ -41,6 +41,7 @@ make prefix="$RPM_BUILD_ROOT/usr" install /usr/man/man1/mudela-book.1 /usr/man/man1/convert-mudela.1 /usr/lib/texmf/texmf/tex/lilypond/ +/usr/lib/texmf/texmf/fonts/source/lilypond /usr/share/lilypond/ %post diff --git a/mf/Makefile b/mf/Makefile index 30a6654f79..64f8dc7264 100644 --- a/mf/Makefile +++ b/mf/Makefile @@ -41,7 +41,7 @@ $(outdir)/%.log: %.mf rm $(basename $< ).*gf $(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log - mf-to-table --ly $(lyout)/$( 0: makebox_with_breapth(proofrule); fi - chardx := w + b; + chardx := 10*(w + b); shipit; endgroup enddef; diff --git a/mf/dimen.tex b/mf/dimen.tex index 9d809332d7..44c59a4ef4 100644 --- a/mf/dimen.tex +++ b/mf/dimen.tex @@ -2,6 +2,7 @@ % A tex file to help determine dims. % +\font\black=black \font\taupin=musix16 \font\fet=font-en-tja16 \font\vet=vette-beams16 diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf index f845fac0cc..5dad6a8216 100644 --- a/mf/feta-banier.mf +++ b/mf/feta-banier.mf @@ -10,12 +10,12 @@ save foot_thickness, foot_depth, foot_width; flag_angle = 32; -hip_thickness# = stafflinethickness#; +hip_thickness# = 1.2 stafflinethickness#; foot_thickness# = blot_diameter#; flare# = 1.0 interline#; hip_depth# = 15/7 interline#; -hip_width# = 8/7 interline# + hip_thickness# /2 + stemthickness#/2; +hip_width# = 7/8 interline# + hip_thickness# /2 + stemthickness#/2; foot_depth# = flare# + 15/7 interline#; foot_width# = .885 hip_width#; @@ -35,8 +35,6 @@ define_pixels(flare, % page 119 % def draw_eight_flag = - - penpos0(stemthickness, 0); penpos1(flare, 90); penpos2(hip_thickness, 0); diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf index cef0590903..f99fed2e69 100644 --- a/mf/feta-bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -21,7 +21,7 @@ def draw_brevis = head_width# = 2 interline#; holeheight = 3 stafflinethickness; - stem_width = 1.2 stafflinethickness; + stem_width = 1.4 stafflinethickness; define_pixels(head_width); @@ -66,8 +66,8 @@ fet_beginchar("Longa notehead", "-2", "longaball"); z7 = z5; z6 - z7 = (-stem_width/2, -interline); theta = angle(z6-z7)+ 90; - penpos7(stafflinethickness, theta); - penpos6(stem_width, theta); + penpos7(stem_width, theta); + penpos6(1.2 stem_width, theta); fill z7r .. z6r{z6-z7} .. {z7-z6} z6l -- z7l -- cycle; penlabels(6,7); diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 7fa8ffd6b7..47c8223f98 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -1,4 +1,14 @@ + +test:=0; + +if test = -1: + mode := smoke; +fi + +mode_setup; + + input feta-macros; make_pen_stack; @@ -6,7 +16,7 @@ make_picture_stack; input feta-params; -test:= 0; + if test = 0: input feta-eindelijk; @@ -16,5 +26,6 @@ if test = 0: input feta-schrift; input feta-banier; else: - input foo; + + input feta-schrift; fi diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf index 7666427515..e50ef98781 100644 --- a/mf/feta-macros.mf +++ b/mf/feta-macros.mf @@ -25,6 +25,20 @@ def scaledabout(expr point, scale) = shifted -point scaled scale shifted point enddef; + +% +% make a local (restored after endgroup) copy of t_var +% +def local_copy(text type, t_var)= + save copy_temp; + type copy_temp; + copy_temp := t_var; + save t_var; + type t_var; + t_var := copy_temp; +enddef; + + % % Urgh! Want to do parametric types % diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index de1786b860..05202ee229 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -3,7 +3,7 @@ % -fet_begingroup("foobars") +fet_begingroup("scripts") def draw_fermata = @@ -13,7 +13,7 @@ def draw_fermata = % suggest ca 80 degrees iso half-circle alpha := 10; - radius# = 1.5 interline#; + radius# = 1.25 interline#; crook_thinness# = 1.5stafflinethickness#; crook_fatness# = 4 stafflinethickness#; @@ -59,7 +59,7 @@ fet_endchar; % FIXME: rounded endings % % `\accent' is TeX reserved. -fet_beginchar("> accent", "accent", "sforzatoaccent") +fet_beginchar("> accent", "sforzato", "sforzatoaccent") set_char_box(.9 interline#, .9 interline#, .5 interline#, .5 interline#); save thickness, diminish; @@ -89,7 +89,7 @@ fet_endchar; fet_beginchar("staccato dot", "staccato", "staccato") save radius; - radius# = 1.25 stafflinethickness#; + radius# = 1.5 stafflinethickness#; define_pixels(radius); pickup pencircle scaled 2 radius; draw (0,0); @@ -176,19 +176,19 @@ fet_endchar; fet_beginchar("open (unstopped)", "open", "ouvert") save thin, height, width, thick; height# = 5/4 width#; - height# = 7/8 interline#; + height# = interline#; thin = 1.2 stafflinethickness; thick = 1.4 thin; - set_char_box(width#/2, width#/2, 0, height#); + set_char_box(width#/2, width#/2, height#/2, height#/2); penpos1(thick, 0); penpos2(thin, 90); - z1r = (w,h/2); + z1r = (w, 0); 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)); + addto currentpicture also currentpicture yscaled -1; fet_endchar; @@ -237,10 +237,10 @@ fet_beginchar("Downbow", "downbow", "downbow") save wd; define_pixels(wd) - wd# = 3/2 interline#; + wd# = 1.5 interline#; stemthick = 1.2 stafflinethickness; - set_char_box(wd#/2, wd#/2, 0, 4/3interline#); + set_char_box(wd#/2, wd#/2, 0, 4/3 interline#); beamheight = 4/10 h; @@ -271,7 +271,6 @@ fet_endchar; % % Inspired by a computer-set version of auf dem Strom by Baerenreiter. % - fet_beginchar("Turn","turn","turn") save thin, thick, ball_diam, darkness; save wd, ht, thick_nibangle, ball_nib_thick; @@ -280,7 +279,7 @@ fet_beginchar("Turn","turn","turn") wd# = 35/16 interline#; ht# = 18/17 interline#; - darkness = 1.25 stafflinethickness; + darkness = 1.20 stafflinethickness; set_char_box(wd#/2, wd#/2, ht#/2, ht#/2); @@ -346,23 +345,41 @@ def draw_bulb(expr zl, zr, center_factor, radius_factor)= endgroup enddef; -fet_beginchar("Trill (`tr')","utrill","utrill") +% +% Inspired by a (by now) PD edition of Durand & C'ie edition of +% Saint-Saens' Celloconcerto no. 1 +% +% FIXME take out hardcoded vars. +% FIXME the two loops on the `t' should be smoother (and the left one bigger). +% FIXME generic macros for serifs: top of the t and bottom of r +% +% + +fet_beginchar("Trill (`tr')","trill","trill") save start_angle, ascender_extra, ex, hair_thick, fatness, - slant_angle, slant, t_fatness, r_fatness, kerning; + slant_angle, slant, t_fatness, r_fatness, kerning, t_overshoot, + uitschieter, bulb_size; + ; pair slant_vec; - define_pixels(ex, ascender_extra, ascender); ascender_extra# = 1/2 ex#; ascender# = ascender_extra# + ex#; - ex# = interline#; + ex# = 1.5 interline#; + kerning# = .75 ex#; + define_pixels(ex, ascender_extra, ascender, kerning); + t_overshoot = 0.03 ex; fatness = 12/40 ex; t_fatness = 8/10 fatness; - r_fatness = 8/10 fatness; - - hair_thick = 2/3 blot_diameter; + r_fatness = .75 fatness; + uitschieter = 21/40 ex; + hair_thick = blot_diameter; + bulb_size = 0.47; + slant = .15; + local_copy(transform)(currenttransform); + currenttransform := currenttransform slanted slant; y1 = ascender; x1l = 0; @@ -372,21 +389,22 @@ fet_beginchar("Trill (`tr')","utrill","utrill") z2 = (x1, 7/18 ex); penpos2(start_nib_wid, 25); - z3l = (11/10 t_fatness, 0); + z3l = (11/10 t_fatness, - t_overshoot); - z4l = (13/6 t_fatness, 3/8 ex); + z4l = (13/6 t_fatness, 5/16 ex); penpos4(hair_thick, 180); 1.9 [z3l, z3r] = z4r; z3 = .5 [z3l, z3r]; - - save t_p, krul_p; path t_p, krul_p, r_p; - t_p := z1l -- z2l{down} .. z3l{right} .. z4l{up} -- z4r{down} + t_p := z1l -- z2l{down} .. tension (1 + .5 slant) + .. z3l{right} + + .. z4l{up} -- z4r{down} .. z3r{left} .. z2r{up} .. z1r -- cycle; fill t_p ; @@ -396,28 +414,33 @@ fet_beginchar("Trill (`tr')","utrill","utrill") z5 = (t_fatness/2, 2/3 ex); - lft x6 = -18/40 ex; + lft x6 = - uitschieter; y6 = y5 - 1/20 ex; - z7 = (2 t_fatness, ex); - - krul_p := z4{up} .. tension 1.1 .. z5 .. {down}z6 - .. tension 1.1 .. z5 --- z7; - draw krul_p; - - penpos7(hair_thick, angle (z7-z5) + 90); + z7 = z5 + whatever*dir krul_ang; + up_angle = krul_ang; + % angle (z7-z5) + x7 = 5/10 kerning + x5; + + penpos7(hair_thick, up_angle + 90); - z8l = (2 t_fatness + 2 hair_thick, ex); - penpos8(2 hair_thick, 35); + + x8l = .7 [x9r, x7r]; + y8l = y7l; + penpos8(2 hair_thick, (up_angle +90)/2); y9 = 3/4 ex; - x9l = 2.8 t_fatness; + x9 = x1 + kerning; penpos9(r_fatness, 0); x10 = x9; y10 = 0; penpos10(r_fatness, 0); + krul_p := z4{up} .. tension 1.1 .. z5 + .. tension 1 and .75 .. {down}z6 + .. tension .85 and 1.1 .. z5 --- z7; + draw krul_p; r_p := z7l{z7-z5} .. z8l{right} .. z9l{down} --- z10l -- z10r --- z9r{up} .. z8r{left} .. z7r{z5-z7} -- cycle; @@ -428,12 +451,62 @@ fet_beginchar("Trill (`tr')","utrill","utrill") penpos11(1/4 r_fatness, -20); z11r = z9r; - z13 = (x9 + 2 r_fatness, y11 + 1/16 ex); + z13 = (x9 + 2 r_fatness, y11 ); penpos13(r_fatness, 180); fill z11r{dir 70} .. z13r{down} -- z13l{up} .. z11l{dir 250} -- cycle; penlabels(range 1 thru 15); - draw_bulb(z13r, z13l, 0.5, 1.5); + draw_bulb(z13r, z13l, bulb_size, 1.5); fet_endchar; -fet_endgroup("foobars"); +fet_beginchar("organ-heel", "pedalheel", "pedalheel") + save radius, thickness, wall; + + radius# := .5 interline#; + + define_pixels(radius); + set_char_box(radius#, radius#, radius#, 2/3 interline#); + + thickness := 1.5 stafflinethickness; + pickup pencircle scaled thickness; + rt x1 = b; + top y1 = h; + + x2 =x1; + y2 = 0; + + x3 = 0; + bot y3 = -d; + + draw z1{down} .. z2{down} .. z3{left}; + addto currentpicture also currentpicture xscaled -1; + labels(1,2,3); +fet_endchar; + +fet_beginchar("organ-toe", "pedaltoe", "pedaltoe") + save ht,wd; + + thickness := 1.5 stafflinethickness; + ht# := 1.5 interline#; + wd# := 1/3 ht#; + define_pixels(ht,wd); + + + set_char_box(wd#, wd#, 0, ht#); + + pickup pencircle scaled thickness; + lft x1 = -b; + bot y1 = 0; + x2 =0; + top y2 = h; + z3 = z1 xscaled -1; + + + draw z1 -- z2 -- z3; + labels(1,2,3); +fet_endchar; + + + + +fet_endgroup("scripts"); diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf index a0865df28d..69ef0a7315 100644 --- a/mf/feta-toevallig.mf +++ b/mf/feta-toevallig.mf @@ -171,8 +171,8 @@ fet_beginchar("Double sharp", "2", "sharpsharp") set_char_box(0, interline#, .5 interline#, .5 interline#); save klaverblad, klaversteel; - klaversteel = 1/12 interline; - klaverblad = 1/3 interline; + klaversteel = 1/15 interline; + klaverblad = .35 interline; z1 = (klaversteel, 0); z2 = (w/2 - klaverblad / 10, h - klaverblad); @@ -180,7 +180,7 @@ 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); + labels(1,2,3,4,5); draw_rounded_path( z1{dir 45} .. {right}z2 -- z3 -- z4{down} .. {dir 225}z5 .. cycle, 1/20 interline); diff --git a/mf/font-en-tja16.mf b/mf/font-en-tja16.mf index 2749d8d557..8cd1246313 100644 --- a/mf/font-en-tja16.mf +++ b/mf/font-en-tja16.mf @@ -6,9 +6,6 @@ input autometric; fet_beginfont("font-en-tja", 16); - -mode_setup; - staffsize#:=16pt#; input feta-generic; diff --git a/mf/font-en-tja20.mf b/mf/font-en-tja20.mf index 7255d9f872..d1f600ff46 100644 --- a/mf/font-en-tja20.mf +++ b/mf/font-en-tja20.mf @@ -1,12 +1,11 @@ % font-en-tja20.mf % part of LilyPond's pretty-but-neat music font -mode_setup; +staffsize#:=20pt#; input autometric; fet_beginfont("font-en-tja", 20); -staffsize#:=20pt#; input feta-generic; diff --git a/mf/foo.mf b/mf/foo.mf deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/mf/mfbug.mf b/mf/mfbug.mf deleted file mode 100644 index 5837988e0c..0000000000 --- a/mf/mfbug.mf +++ /dev/null @@ -1,21 +0,0 @@ -% 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/tex/font-en-tja16.tex b/tex/font-en-tja16.tex index 4163d8c260..e6809e2253 100644 --- a/tex/font-en-tja16.tex +++ b/tex/font-en-tja16.tex @@ -1,7 +1,6 @@ -% generated automatically by mf-to-table.py version 0.3 -% on Thu Oct 9 20:24:25 1997 +% generated automatically by mf-to-table.py version 0.4 +% on Fri Oct 10 21:22:38 1997 % Do not edit - % input from out/font-en-tja16.log % name % rests @@ -33,7 +32,7 @@ \fetdef\halfball{19} \fetdef\quartball{20} -% foobars +% scripts \fetdef\ufermata{21} \fetdef\dfermata{22} \fetdef\sforzatoaccent{23} @@ -48,9 +47,11 @@ \fetdef\upbow{32} \fetdef\downbow{33} \fetdef\turn{34} -\fetdef\utrill{35} +\fetdef\trill{35} +\fetdef\pedalheel{36} +\fetdef\pedaltoe{37} % floogbars -\fetdef\eighthflag{36} -\fetdef\deighthflag{37} +\fetdef\eighthflag{38} +\fetdef\deighthflag{39} diff --git a/tex/font-en-tja20.tex b/tex/font-en-tja20.tex index 28a218fc45..1791d0ebad 100644 --- a/tex/font-en-tja20.tex +++ b/tex/font-en-tja20.tex @@ -1,7 +1,6 @@ -% generated automatically by mf-to-table.py version 0.3 -% on Thu Oct 9 20:24:27 1997 +% generated automatically by mf-to-table.py version 0.4 +% on Fri Oct 10 21:22:44 1997 % Do not edit - % input from out/font-en-tja20.log % name % rests @@ -33,7 +32,7 @@ \fetdef\halfball{19} \fetdef\quartball{20} -% foobars +% scripts \fetdef\ufermata{21} \fetdef\dfermata{22} \fetdef\sforzatoaccent{23} @@ -48,9 +47,11 @@ \fetdef\upbow{32} \fetdef\downbow{33} \fetdef\turn{34} -\fetdef\utrill{35} +\fetdef\trill{35} +\fetdef\pedalheel{36} +\fetdef\pedaltoe{37} % floogbars -\fetdef\eighthflag{36} -\fetdef\deighthflag{37} +\fetdef\eighthflag{38} +\fetdef\deighthflag{39} diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 2854a35417..add2284b62 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -153,6 +153,28 @@ \def\startrepeat{\repeatstartbar} \def\repeatbarstartrepeat{\repeatstopstart} +\def\vruler#1{{% + \def\wid{\dimen0}% + \def\inc{\dimen1}% + \wid=#1pt + \inc=\wid + \divide\inc by #1 + \divide\wid by 2 + \here=-\wid + \loop\ifdim\here<\wid\advance\here by\inc + \hbox to0pt{\vbox to0pt{\vss\hrule width2pt height 0.05pt\kern\here}\hss}% + \repeat% +}} +\def\hruler#1#2{\hbox{% + \def\wid{\dimen0}% + \def\here{\dimen3}% + \wid=#1pt + \divide\wid by 2 + \here=-\wid + \loop\ifdim\here<\wid\advance\here by #2 + \hbox to0pt{\kern\here\vrule width0.05pt height 1pt depth 1pt\hss}% + \repeat% +}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -262,4 +284,6 @@ }\else{foo\hfil\the\pageno\hfil}\fi}} \fi - + +% debugging stuff: +% \vbox to 0pt{\vskip .5cm \hruler{48}{3pt}\vss} diff --git a/tex/vette-beams16.tex b/tex/vette-beams16.tex deleted file mode 100644 index 55fc84888e..0000000000 --- a/tex/vette-beams16.tex +++ /dev/null @@ -1,3 +0,0 @@ -% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log -% changes will be lost - diff --git a/tex/vette-beams20.tex b/tex/vette-beams20.tex deleted file mode 100644 index 438f27e89a..0000000000 --- a/tex/vette-beams20.tex +++ /dev/null @@ -1,3 +0,0 @@ -% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log -% changes will be lost -