# 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
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
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
Stem 0
Stem 0
Stem_req 0
-Symtable 1
-Symtables 1
+Symtable 0
+Symtables 0
Text_def 0
Text_req 0
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.
-
-23/Sep/97 LilyPond 0.1.20 1
+10/Oct/97 LilyPond 0.1.22 1
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.
# 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 $< $@
=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
=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
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
[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.
-8/Oct/97 LilyPond 0.1.21 1
+8/Oct/97 LilyPond 0.1.22 1
-8/Oct/97 LilyPond 0.1.21 2
+8/Oct/97 LilyPond 0.1.22 2
-8/Oct/97 LilyPond 0.1.21 3
+8/Oct/97 LilyPond 0.1.22 3
-8/Oct/97 LilyPond 0.1.21 4
+8/Oct/97 LilyPond 0.1.22 4
-8/Oct/97 LilyPond 0.1.21 5
+8/Oct/97 LilyPond 0.1.22 5
-8/Oct/97 LilyPond 0.1.21 6
+8/Oct/97 LilyPond 0.1.22 6
+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?)
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
* 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
- 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
******************
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:
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 $@
--- /dev/null
+#!/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
+++ /dev/null
-#!/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
--- /dev/null
+#!/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
+++ /dev/null
-#!/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
+++ /dev/null
-#!/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
-
--- /dev/null
+#!/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
+
+++ /dev/null
-#!@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 </;
-}
-
-###############################################################
-
-sub last_conversion
-{
- my @v = &versions;
- return pop @v;
-}
-sub identify
-{
-
- print STDERR "This is convert-mudela " . $convert_mudela_version .
- " (up to mudela version ", last_conversion, ")\n";
-}
-
-
- sub usage
- {
- print STDERR "Usage: convert-mudela [options] [mudela-file]...\n"
- . "Convert old mudela source from mudela-file or stdin\n\n"
- . "Options:\n"
- . " -e, --edit perform in-place conversion\n"
- . " -f, --from=PATHLEVEL use source version 0.0.PATCHLEVEL\n"
- . " -h, --help print this help\n"
- . " -o, --output=FILE name output file\n"
- . " -s, --show-rules print all known conversion rules\n"
- . " -t, --to=VERSION convert to version VERSION\n"
- }
-
-
-my %minor_conversions = ("0.0.50" => \&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 (<INLY>) {
- 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 (<INLY>) {
- 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);
-
-
--- /dev/null
+#!@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 </;
+}
+
+sub convert_0_1_6_to_0_1_7
+{
+ if ($header_b)
+ {
+ s/^([a-zA-z]+)[ \t]+(.*)$/$1 =\t \"$2\";/;
+ s/^([ \t])+(.*)$/$1 \"$2\";/;
+ }
+}
+
+###############################################################
+
+sub last_conversion
+{
+ my @v = &versions;
+ return pop @v;
+}
+sub identify
+{
+
+ print STDERR "This is convert-mudela " . $convert_mudela_version .
+ " (up to mudela version ", last_conversion, ")\n";
+}
+
+
+ sub usage
+ {
+ print STDERR "Usage: convert-mudela [options] [mudela-file]...\n"
+ . "Convert old mudela source from mudela-file or stdin\n\n"
+ . "Options:\n"
+ . " -e, --edit perform in-place conversion\n"
+ . " -f, --from=PATHLEVEL use source version 0.0.PATCHLEVEL\n"
+ . " -h, --help print this help\n"
+ . " -o, --output=FILE name output file\n"
+ . " -s, --show-rules print all known conversion rules\n"
+ . " -t, --to=VERSION convert to version VERSION\n"
+ }
+
+
+my %minor_conversions = ("0.0.50" => \&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 (<INLY>) {
+ 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 (<INLY>) {
+ 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);
+
+
+++ /dev/null
-#!/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
-
--- /dev/null
+#!/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
+
--- /dev/null
+#!/usr/bin/perl
+
+open GREP, "egrep -h '^struct|^class' *.hh *.cc|";
+open OUT, "|sort | uniq";
+while (<GREP>) {
+
+ s/^struct/class/;
+ if (! /; *$/) {
+ s/:[^{]+{.*$//;
+ s/ *{.*$/;/;
+ }
+ if (! /; *$/) {
+ chop;
+ $_ .= ";\n";
+
+ }
+ print OUT;
+}
+close OUT;
+close GREP;
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)
+++ /dev/null
-#!/bin/sh
-gdb --command=bin/efence.gdbinit
-
-
--- /dev/null
+#!/bin/sh
+
+p1=`find ./ -name '*.hh' |egrep -v out/`
+p2=`find ./ -name '*.cc' |egrep -v out/`
+doc++ -d out/ -S -k -p $p1 $p2
+++ /dev/null
-#!/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 <<EOF > 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
--- /dev/null
+#!/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 <<EOF > 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
+++ /dev/null
-#!/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
-
--- /dev/null
+#!/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
+
+++ /dev/null
-#!@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 = "<!make_website!>";
-my $id_str = "make-website 0.4";
-my $TAR="tar";
-my $MAKE="make";
-
-sub get_version
-{
- my ($vstr)=("");
- open V, "$depth/VERSION";
- while (<V>) {
- 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<hr>Please take me <a href=index.html>back to the index</a>\n
-of LilyPond -- The GNU Project Music typesetter
-<hr>
-<font size=-1>
-This page was built using <code>" . $id_str . "</code> from lilypond-"
- . $lily_version .
- " by<p>
-<address><br>$username <a href=mailto:"
- . $MAILADDRESS . "><<!bla>" . $MAILADDRESS ."</a>></address>
-<p></font>";
-}
-
-
-# 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 "<HTML><TITLE>PostScript Manuals</TITLE>\n" ;
- print HTMLLIST "<BODY><h1>LilyPond manuals (in PostScript)</h1>";
- print HTMLLIST "<ul>\n";
- my @todo=();
- foreach $a (@texstuff) {
- push @todo , "out/$a.ps.gz";
- print HTMLLIST "<li><a href=$a.ps.gz>$a.ps.gz</a>";
- }
- print HTMLLIST "</ul>";
-
- print HTMLLIST "</BODY></HTML>";
- close HTMLLIST;
-
- my_system( "$MAKE -C .. " . join(' ', @todo));
-}
-
-sub gen_list
-{
- print "generating HTML list\n";
- open HTMLLIST, ">example_output.html";
-
- print HTMLLIST "<html><body><TITLE>Rendered Examples</TITLE>\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 "<h1>example file: $name</h1>\n<XMP>\n";
-
- open IF, "$depth/input/$a.ly";
- input_record_separator IF "\n}";
-
- $desc = <IF>;
- close IF;
-
- print HTMLLIST "$desc\n</XMP>";
-
- $inputf="$a.ly.txt";
- $giff="$a.gif";
- $jpegf="$a.jpeg";
- $pngf = "$a.png";
- $psf="$a.ps.gz";
- $midif="$a.midi";
-
- print HTMLLIST "<ul>";
-
- print HTMLLIST "<li><a href=$inputf> The input file</a>"
- if ( -f $inputf );
-
- print HTMLLIST "<li><a href=$giff>The output (picture)</a>"
- if ( -f $giff );
-
- print HTMLLIST "<li><a href=$psf>The output (PS)</a>\n"
- if ( -f $psf );
-
- print HTMLLIST "<li><a href=$midif>The output (MIDI)</a>\n"
- if ( -f $midif );
- print HTMLLIST "</ul>";
- }
- print HTMLLIST "</BODY></HTML>";
- close HTMLLIST;
-}
-
-sub edit_html
-{
- print STDERR "adding footer\n";
-
- OUTER:
- foreach $a (<*.html>) {
- open H, "$a";
- my $sep="</BODY>";
- input_record_separator H $sep;
- my $file="";
-
- while (<H>) {
- 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!<TITLE>(.*)</TITLE>!<TITLE>LilyPond WWW: $1</TITLE>!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 = <NEWS>;
- chop ($desc);
- close NEWS;
-
- return $desc;
-}
-
-sub edit_index
-{
- $ton = top_of_NEWS();
- $ton = "\n<XMP>\n$ton\n</XMP>\n";
- open INDEX, "index.html";
- input_record_separator NEWS undef;
- $index = <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;
--- /dev/null
+#!@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 = "<!make_website!>";
+my $id_str = "make-website 0.4";
+my $TAR="tar";
+my $MAKE="make";
+
+sub get_version
+{
+ my ($vstr)=("");
+ open V, "$depth/VERSION";
+ while (<V>) {
+ 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<hr>Please take me <a href=index.html>back to the index</a>\n
+of LilyPond -- The GNU Project Music typesetter
+<hr>
+<font size=-1>
+This page was built using <code>" . $id_str . "</code> from lilypond-"
+ . $lily_version .
+ " by<p>
+<address><br>$username <a href=mailto:"
+ . $MAILADDRESS . "><<!bla>" . $MAILADDRESS ."</a>></address>
+<p></font>";
+}
+
+
+# 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 "<HTML><TITLE>PostScript Manuals</TITLE>\n" ;
+ print HTMLLIST "<BODY><h1>LilyPond manuals (in PostScript)</h1>";
+ print HTMLLIST "<ul>\n";
+ my @todo=();
+ foreach $a (@texstuff) {
+ push @todo , "out/$a.ps.gz";
+ print HTMLLIST "<li><a href=$a.ps.gz>$a.ps.gz</a>";
+ }
+ print HTMLLIST "</ul>";
+
+ print HTMLLIST "</BODY></HTML>";
+ close HTMLLIST;
+
+ my_system( "$MAKE -C .. " . join(' ', @todo));
+}
+
+sub gen_list
+{
+ print "generating HTML list\n";
+ open HTMLLIST, ">example_output.html";
+
+ print HTMLLIST "<html><body><TITLE>Rendered Examples</TITLE>\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 "<h1>example file: $name</h1>\n<XMP>\n";
+
+ open IF, "$depth/input/$a.ly";
+ input_record_separator IF "\n}";
+
+ $desc = <IF>;
+ close IF;
+
+ print HTMLLIST "$desc\n</XMP>";
+
+ $inputf="$a.ly.txt";
+ $giff="$a.gif";
+ $jpegf="$a.jpeg";
+ $pngf = "$a.png";
+ $psf="$a.ps.gz";
+ $midif="$a.midi";
+
+ print HTMLLIST "<ul>";
+
+ print HTMLLIST "<li><a href=$inputf> The input file</a>"
+ if ( -f $inputf );
+
+ print HTMLLIST "<li><a href=$giff>The output (picture)</a>"
+ if ( -f $giff );
+
+ print HTMLLIST "<li><a href=$psf>The output (PS)</a>\n"
+ if ( -f $psf );
+
+ print HTMLLIST "<li><a href=$midif>The output (MIDI)</a>\n"
+ if ( -f $midif );
+ print HTMLLIST "</ul>";
+ }
+ print HTMLLIST "</BODY></HTML>";
+ close HTMLLIST;
+}
+
+sub edit_html
+{
+ print STDERR "adding footer\n";
+
+ OUTER:
+ foreach $a (<*.html>) {
+ open H, "$a";
+ my $sep="</BODY>";
+ input_record_separator H $sep;
+ my $file="";
+
+ while (<H>) {
+ 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!<TITLE>(.*)</TITLE>!<TITLE>LilyPond WWW: $1</TITLE>!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 = <NEWS>;
+ chop ($desc);
+ close NEWS;
+
+ return $desc;
+}
+
+sub edit_index
+{
+ $ton = top_of_NEWS();
+ $ton = "\n<XMP>\n$ton\n</XMP>\n";
+ open INDEX, "index.html";
+ input_record_separator NEWS undef;
+ $index = <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;
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."""
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)
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])
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
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()
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)
+++ /dev/null
-#!@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 (<INFILE>) {
- 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;
--- /dev/null
+#!@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 (<INFILE>) {
+ 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;
+++ /dev/null
-#!/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
-
--- /dev/null
+#!/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
+
+++ /dev/null
-#!@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 (<LS>) {
- $_ =~ /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 = <NEWS>;
- chop ($desc);
- close NEWS;
-
- print $desc;
-}
--- /dev/null
+#!@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 (<LS>) {
+ $_ =~ /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 = <NEWS>;
+ chop ($desc);
+ close NEWS;
+
+ print $desc;
+}
- * 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.
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
\consists "Lyric_engraver";
\consists "Line_group_engraver";
- %\consists "Swallow_engraver";
+ \consists "Beam_req_swallow_translator";
}
Lyrics = \translator {
-% 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
-% 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
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 }
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:
% 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 }
%
% FIXME other name
-\version "0.1.6";
+\version "0.1.7";
breve = \duration { -1 0 }
longa = \duration { -2 0 }
\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
}
"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 {
}
- "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
% 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{}"
"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
% 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
"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
}
":|:" "\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
"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
+++ /dev/null
-% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log
-% changes will be lost
-
+++ /dev/null
-% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log
-% changes will be lost
-
\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{
-%{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 <
\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 {
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'';
\bar "" ;
[g8.(_"a tempo" e g8. )e]
a4. g8 [f8 e8 d8 c8]
- 'g2 d2^"\tr"
+ 'g2 d2-\trill
c4
}}
\score {
\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";
% 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;
\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] |
\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.;
\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 ";
}
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;
\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';
-%{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{
\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.
\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
%}
-\version "0.1.6";
+\version "0.1.7";
\score{
\melodic
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "0.1.6";
+\version "0.1.7";
\score{
\melodic {
\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;
\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 ;
-%{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 {
\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}
-%{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';
\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"
\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";
\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";
}
%{
multiple \paper{}s in one \score
%}
-\version "0.1.6";
+\version "0.1.7";
commands = \melodic{
\skip 2.*4;
\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";
}
%}
-\version "0.1.6";
+\version "0.1.7";
toccata_commands = \melodic{
\meter 4/4;
\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";
\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;
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
}
%{
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
\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 =
\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
\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 {
# 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\
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
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
}
{
#ifndef NPRINT
DOUT << "texstring: " <<tex_<<"\n";
+
+ DOUT << "dim:";
+ for (Axis i=X_AXIS; i < NO_AXES; incr(i))
+ DOUT << axis_name_str(i) << " = " << dim_[i].str();
+
+ DOUT << "\noffset: " << off_.str ();
#endif
}
}
void
-Atom::translate (Real r, Axis a)
+Atom::translate_axis (Real r, Axis a)
{
off_[a] += r;
}
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
+#include <assert.h>
+
#include "axes.hh"
#include "string.hh"
{
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;
+}
+
{
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;
}
--- /dev/null
+/*
+ beam-swallow-trans.cc -- instantiate Beam_swallow_translator
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ */
+
+#include "type-swallow-trans.hh"
+#include "musical-request.hh"
+
+
+
+DECLARE_REQUEST_SWALLOWER(Beam_req);
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;
}
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);
}
}
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
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);
}
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)
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;
{
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)
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;
}
if (fixed())
DOUT << "fixed at " << fixed_position()<<", ";
assert (pcol_l_);
- DOUT << "[" << minleft() << ", " << minright () << "]";
+ DOUT << width_.str();
DOUT <<"}\n";
#endif
}
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);
}
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);
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;
}
}
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);
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
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);
}
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;
String axis_name_str (Axis);
+/**
+ the operator ++ for Axis.
+ */
+Axis post_incr(Axis &);
+Axis incr(Axis &);
+//Axis operator++(Axis);
+
+
#endif // AXES_HH
--- /dev/null
+/*
+ beam-swallow-trans.hh -- declare
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ */
+
+#ifndef BEAM_SWALLOW_TRANS_HH
+#define BEAM_SWALLOW_TRANS_HH
+
+
+#endif /* BEAM_SWALLOW_TRANS_HH */
+
public:
String type_;
- int y_off;
+ int y_position_i_;
/// is this a change clef (smaller size)?
bool change_b_;
struct Colinfo {
Paper_column *pcol_l_;
P<Real> fixpos_p_;
- Interval width;
+ Interval width_;
int rank_i_;
/// did some tricks to make this column come out.
bool ugh_b_;
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
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;
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;
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;
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;
/// 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*> *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*> *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
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;
}
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);
}
%option warn
%x incl
-%x header
%x lyrics
%x notes
%x quote
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}+
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\\'"]
%%
yyterminate (); // can't move this, since it actually rets a YY_NULL
}
}
-<header>{
- [\{\}] {
- 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];
- }
-}
<notes,INITIAL,lyrics>\\include {
start_quote ();
}
<quote>{
- \\\\ {
- *yylval.string += '\\';
- }
- \\\" {
- *yylval.string +='\"';
+ \\{ESCAPED} {
+ *yylval.string += escaped_char(YYText()[1]);
}
- [^"]+ {
+ [^\\"]+ {
*yylval.string += YYText ();
}
\" {
yy_pop_state ();
return STRING;
}
+ . {
+ *yylval.string += YYText ();
+ }
}
<lyrics>{
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++)
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--)
break;
s = s.left_str (i+1);
-
}
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);
}
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);
}
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;
}
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;
}
}
Atom
-Lookup::dots (int j) const
+Lookup::dots () const
{
return (*symtables_)("dots")->lookup ("dot");
}
}
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<String> a;
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;
}
{
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_));
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));
}
}
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
}
Real offset = extent ()[a][d] - m.extent ()[a][-d];
Molecule toadd (m);
- toadd.translate (offset, a);
+ toadd.translate_axis (offset, a);
add (toadd);
}
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;
+}
if (fatal_error_i_)
exit (fatal_error_i_);
error_level_i_ = 1;
+ exit_status_i_ = 1;
}
void
--- /dev/null
+/*
+ notehead.cc -- implement Note_head
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#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;
+}
+++ /dev/null
-/*
- notehead.cc -- implement Note_head
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#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;
-}
#include <iostream.h>
// mmm
-#define MUDELA_VERSION "0.1.6"
+#define MUDELA_VERSION "0.1.7"
#include "scalar.hh"
#include "translation-property.hh"
%token <real> REAL
%token <string> DURATION RESTNAME
%token <string> STRING
-%token <string> FIELDNAME RECORDLINE
%token <i> POST_QUOTES
%token <i> PRE_QUOTES
%type <symtable> symtable symtable_body
%type <trans> translator_spec translator_spec_body
%type <tempo> tempo_request
-%type <string> header_record
+%type <string> concat_strings
-%expect 2
+%expect 1
%%
{
$$ = 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
/*
- rest.cc -- implement
+ rest.cc -- implement Rest
source file of the GNU LilyPond music typesetter
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_;
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;
}
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;
}
}
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_);
}
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;
}
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;
}
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;
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");
}
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;
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]);
}
}
}
{
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())
*/
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;
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];
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)
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);
}
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;
}
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;
}
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
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);
}
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;
}
f +=String ("{") + String (idx) + "}";
s.tex_ = f;
- s.translate (dx/2, X_AXIS);
+ s.translate_axis (dx/2, X_AXIS);
return s;
}
s.tex_ = f;
- s.translate (dx/2, X_AXIS);
+ s.translate_axis (dx/2, X_AXIS);
return s;
}
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();
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;
}
{
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);
}
/**
Array<Interval> 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();
}
}
doc:
$(MAKE) -C $(depth)/Documentation do-doc
-# doc++ documentation of classes
-doc++: $(progdocs)
- $(docxx) $(docxx-opts) -d $(DOCDIR) $^
# ugh. should generate in out/
dist:
#
$(outdir)/version.hh: VERSION
- ./$(lily_bindir)/make-version > $@
+ sh ./$(lily_bindir)/make-version.sh > $@
# should this be in Rules?
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)" $< > $@
DO_STRIP=true
-docxx-opts=-S -k -p
-docxx=doc++
-
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
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
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
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
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 <hanwen@stack.nl>
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
/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
/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
rm $(basename $< ).*gf
$(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log
- mf-to-table --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
+ $(depth)/bin/$(outdir)/mf-to-table --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
localinstall:
$(INSTALL) -d $(MFDIR)/lilypond
* flags
* clefs
* some scripts:
- - toe/heel
- piano pedals,
* braces.
* trills
- check out Adobe Sonata/Petrucci font layout. They are the
standard for Music fonts
- - hack up GS to do round pixels iso. square pixels. (Printers
-don't do square pixels.)
+ - hack up GS or the mf-gray font to do round pixels
+iso. square pixels. (Printers don't do square pixels.)
def fet_beginfont(expr name,size) =
font_identifier:=name&decimal size;
font_size size;
- message "@{font:"&name&":"&decimal size&"@}";
+ message "@{font@:"&name&"@:"&decimal size&"@}";
message "";
enddef;
def fet_endfont(expr name) =
- message "@{tnof:"&name&"@}";
+ message "@{tnof@:"&name&"@}";
message "";
enddef;
% group or table?
def fet_begingroup(expr name) =
- message "@{group:"&name&"@}";
+ message "@{group@:"&name&"@}";
message "";
begingroup
enddef;
def fet_endgroup(expr name) =
endgroup;
- message "@{puorg:"&name&"@}";
+ message "@{puorg@:"&name&"@}";
message "";
enddef;
def autometric_output_char=
- message "@{char:"&charnamestr&":"&decimal charcode&":"&decimal charbp&":"&decimal charwd&":"&decimal chardp&":"&decimal charht&":"&idstr&":"&texstr&"@}";
+ message "@{char@:"&charnamestr&"@:"&decimal charcode&"@:"&decimal charbp&"@:"&decimal charwd&"@:"&decimal chardp&"@:"&decimal charht&"@:"&idstr&"@:"&texstr&"@}";
enddef;
def breapth_endchar =
scantokens extra_endchar;
if proofing > 0: makebox_with_breapth(proofrule); fi
- chardx := w + b;
+ chardx := 10*(w + b);
shipit;
endgroup
enddef;
% A tex file to help determine dims.
%
+\font\black=black
\font\taupin=musix16
\font\fet=font-en-tja16
\font\vet=vette-beams16
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#;
% page 119
%
def draw_eight_flag =
-
-
penpos0(stemthickness, 0);
penpos1(flare, 90);
penpos2(hip_thickness, 0);
head_width# = 2 interline#;
holeheight = 3 stafflinethickness;
- stem_width = 1.2 stafflinethickness;
+ stem_width = 1.4 stafflinethickness;
define_pixels(head_width);
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);
+
+test:=0;
+
+if test = -1:
+ mode := smoke;
+fi
+
+mode_setup;
+
+
input feta-macros;
make_pen_stack;
input feta-params;
-test:= 0;
+
if test = 0:
input feta-eindelijk;
input feta-schrift;
input feta-banier;
else:
- input foo;
+
+ input feta-schrift;
fi
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
%
%
-fet_begingroup("foobars")
+fet_begingroup("scripts")
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#;
% 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;
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);
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;
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;
%
% 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;
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);
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;
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 ;
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;
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");
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);
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);
input autometric;
fet_beginfont("font-en-tja", 16);
-
-mode_setup;
-
staffsize#:=16pt#;
input feta-generic;
% 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;
+++ /dev/null
-% 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");
-% 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
\fetdef\halfball{19}
\fetdef\quartball{20}
-% foobars
+% scripts
\fetdef\ufermata{21}
\fetdef\dfermata{22}
\fetdef\sforzatoaccent{23}
\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}
-% 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
\fetdef\halfball{19}
\fetdef\quartball{20}
-% foobars
+% scripts
\fetdef\ufermata{21}
\fetdef\dfermata{22}
\fetdef\sforzatoaccent{23}
\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}
\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%
+}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}\else{foo\hfil\the\pageno\hfil}\fi}}
\fi
-
+
+% debugging stuff:
+% \vbox to 0pt{\vskip .5cm \hruler{48}{3pt}\vss}
+++ /dev/null
-% generated at Fri Sep 26 15:26:29 1997 from out/vette-beams16.log
-% changes will be lost
-
+++ /dev/null
-% generated at Fri Sep 26 15:26:46 1997 from out/vette-beams20.log
-% changes will be lost
-