-29/Jan/98 LilyPond 0.1.46 1
+29/Jan/98 LilyPond 0.1.47 1
-29/Jan/98 LilyPond 0.1.46 2
+29/Jan/98 LilyPond 0.1.47 2
these should not affect LilyPond.
+[IRIX (5.3?)]
+
+coredump from strstream::strstream () upon the first read of a file
+
[Linux Intel]
LilyPond occasionally crashes while parsing the initialisation files.
=item *
A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
-(PPC, intel), FreeBSD, AIX, NeXTStep, Digital Unix and Solaris.
+(PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and Solaris.
If you have the Cygnus WINDOWS32 port of the GNU utils, it will even
work in Windows NT/95, but we don't promise to support it.
=item *
-GNU C++ v2.7 or better, with libg++ installed. Version 2.7.2
-or better recommended.
+GNU C++ v2.7 or better, with libg++ installed. If you use gcc 2.8 or
+egcs then you should install a matching libg++ (ie. 2.8) version.
=item *
=head2 Building for multiple hosts
LilyPond does not follow the GNU standards when it comes to
-configuring and making Makefiles. In LilyPond, F<make> generates I<all>
-output in output directories (called F<out/>, by default).
-You can have multiple compiles from the same source-tree, by
-overriding the setting for the output directory.
+configuring and making Makefiles. In LilyPond, F<make> generates
+I<all> output in output directories (called F<out/>, by default). You
+can have multiple compiles from the same source-tree, by overriding
+the setting for the output directory.
Example: on my system, I do debugging and lots compiling. For this I
use the configuration as follows:
These two commands build two entirely separate versions of
LilyPond. In Real Life, you would probably also want to have two
-different prefixes. On my machine this is no problem; I never do
-C<make install>. My prefix dirs are linked back to my source directory.
+different prefixes. On my machine this is no problem; I never do
+C<make install>. My prefix dirs are linked back to my source
+directory.
=head1 INSTALLING
#
localclean:
- rm -f `find $(outdir)`
+ rm -f `find $(outdir) -type f`
$(depth)/%.txt: $(outdir)/%.txt
cp $< $@
-do_pod2html=$(pod2html) $<
+do_pod2html=$(pod2html) --infile $< --outfile=$@
+# do this for perl 5.003
+# do_pod2html=$(pod2html) $<
+# mv $(notdir $@) $(outdir)/
+
# do this for perl 5.004
# $ make do_pod2html='$(pod2html) --infile $< --outfile=$@' html
-#
+
+
$(outdir)/%.html: %.pod $(depth)/VERSION
$(do_pod2html)
- mv $(notdir $@) $(outdir)/
+#
$(outdir)/%.5: %.pod
$(pod2groff)
--- /dev/null
+% -*-latex-*-
+
+% this document should be run through the mudela-book script after lilypond
+% has been installed. The rules have been precooked into the
+% Documentation/Rules.make file; do
+%
+% make out/introduction.dvi
+%
+% or
+%
+% mudela-book --outdir=out/ --outname=introduction.mudtex introduction.doc
+% latex '\nonstopmode \input out/introduction.mudtex'
+
+
+\documentclass{article}
+\usepackage{a4wide}
+\title{Introduction to GNU LilyPond}
+\author{Jan Nieuwenhuizen}
+\date{March 2, 1998}
+
+% ugh: trick to get examples not generate par
+% these are for 16pt
+\def\mudelapaperlinewidth{-28.452756}%
+\def\mudelapaperindent{28.452756}%
+\def\mudelapaperrulethickness{0.400000}%
+\def\mudelapaperbarsize{16.000000}%
+\def\mudelapaperinterline{4.000000}%
+\def\mudelapapernotewidth{5.930000}%
+\def\mudelapaperwholewidth{8.640000}%
+\def\mudelapaperunitspace{22.000000}%
+\def\mudelapaperbasicspace{4.000000}%
+\def\mudelapapergeometric{0.000000}%
+\def\mudelapaperarithmetic_basicspace{2.000000}%
+\def\mudelapaperarithmetic_multiplier{4.800000}%
+\def\mudelapaperinterbeam{3.140000}%
+\def\mudelapapergourlay_energybound{100000.000000}%
+\def\mudelapapergourlay_maxmeasures{14.000000}%
+
+% ful of pars, needs the above
+\input lilyponddefs
+% generates par
+\musixsixteendefs
+\def\musixsixteendefs{}
+% generates par
+\turnOnPostScript%
+\def\turnOnPostScript{}
+%
+
+\begin{document}
+\maketitle
+
+\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm}
+\def\preexample{}
+\def\postexample{\par\medskip}
+
+% ugh, howto?
+% \def\frag{\vbox to 2\mudelapaperbarsize pt{\vss}
+% \def\interexample{\vss}\hskip15mm$\Longrightarrow$\hskip15mm}
+% \def\preexample{\vbox to 2\mudelabarsize pt{\vss}
+% \def\postexample{\vss}\par\medskip}
+
+\def\file#1{{\texttt{#1}}}
+\setcounter{secnumdepth}{-1}
+
+\emph{\Large ***Under construction***}
+
+\section{Introduction}
+This document should provide a gentle introduction to
+LilyPond's input language, Mudela.
+For completeness and nifty features see
+\verb+input/*.ly+
+and
+\verb+lily/parser.y, lily/lexer.l+.
+
+
+\section{Notes: pitches and durations}
+
+\begin[fragment,verbatim]{mudela}
+c
+\end{mudela}
+
+\begin[fragment,verbatim]{mudela}
+c d e f g a b
+\end{mudela}
+
+Durations are entered as reciproce values
+\begin[fragment,verbatim]{mudela}
+a1 | a2 a | a4 a a a
+\end{mudela}
+and default to the last previously used duration.
+
+Now we can write a little tune
+\begin[fragment,verbatim]{mudela}
+c d e c | c d e c | e f g2 | e4 f g2
+\end{mudela}
+note the explicit duration change for
+the quarter e in the last measure.
+
+Same for notes with flags
+\begin[fragment,verbatim]{mudela}
+a8 a16 a32 a64 a128
+\end{mudela}
+
+\begin[fragment,verbatim]{mudela}
+c c' c''
+\end{mudela}
+
+\begin[fragment,verbatim]{mudela}
+a 'a ''a
+\end{mudela}
+
+\section{Slurs and Ties}
+
+A tie connects two adjacent noteheads
+
+\begin[fragment,verbatim]{mudela}
+c' ~ c
+\end{mudela}
+
+Whereas a slur rather connects `chords',
+and tries to avoid crossing stems.
+
+\begin[fragment,verbatim]{mudela}
+c'( )c
+\end{mudela}
+
+A (legato) slur can span several notes
+\begin[fragment,verbatim]{mudela}
+c'( d e )c
+\end{mudela}
+
+\section{Beams and plets}
+
+\begin[fragment,verbatim]{mudela}
+[a8 a] [a16 a a a]
+\end{mudela}
+
+% [2/3 a8 a a]1/1
+\begin[fragment,verbatim]{mudela}
+[/3 a8 a a]/1
+\end{mudela}
+
+\begin[fragment,verbatim]{mudela}
+\[/3 a4 a8\]
+\end{mudela}
+
+\section{Commands}
+
+\begin[fragment,verbatim]{mudela}
+\clef "bass"; 'c
+\end{mudela}
+
+\begin[fragment,verbatim]{mudela}
+\meter 3/4; c g g |
+\end{mudela}
+
+\begin[fragment,verbatim]{mudela}
+\key fis cis;
+'g 'a 'b cis d e fis g'
+\end{mudela}
+
+\section{Example}
+
+A Mudela file needs some red tape
+
+\begin[verbatim]{mudela}
+\score{
+ \melodic{
+ \octave c';
+ c d e c
+ }
+}
+\end{mudela}
+
+\section{Lyrics}
+
+% this nesting syntax sucks
+\begin[verbatim]{mudela}
+\score{
+ <
+ \melodic \type Staff = bla < \melodic{\octave c'; c d e c} >
+% huh?
+% \lyric \type Lyrics = bli < \lyric{Fre- re Ja- que} >
+ >
+}
+\end{mudela}
+
+\section{Variables}
+
+\end{document}
+
=over 4
-=item Rosegarden, http://www.bath.ac.uk/~masjpf/rose.html
+=item Rosegarden, http://www.bath.ac.uk/~masjpf/rose.html.
A Notation editor/Sequencer for X. Also outputs musictex.
=head2 Unknown
+=over 4
+
=item MusE, [no WWW address known]
A-R Music Engraving, by A-R Editions, Inc. Professional engraving on
together with computer scientists on his own software for music
publishing, called "Berlioz".
+=back
+
=head2 Other stuff
+=over 4
+
=item Sonata, http://www.adobe.com/type/browser/F/F_SONA.html
The music font by Adobe.
+=item Haskore, http://haskell.systemscz.cs.yale.edu/haskore/onlinetutorial/index.html
+
+A programming system for music, based on Haskell, a functional
+programming language. It outputs MIDI, CSound, NeXTStep MusicKit and
+CMN.
+
+=back
+
o A GNU system: GNU LilyPond is known to run on these
GNU systems: Linux (PPC, intel), FreeBSD, AIX,
- NeXTStep, Digital Unix and Solaris.
+ NeXTStep, IRIX, Digital Unix and Solaris.
If you have the Cygnus WINDOWS32 port of the GNU
utils, it will even work in Windows NT/95, but we
don't promise to support it.
- o GNU C++ v2.7 or better, with libg++ installed.
- Version 2.7.2 or better recommended.
+ o GNU C++ v2.7 or better, with libg++ installed. If
+ you use gcc 2.8 or egcs then you should install a
+ matching libg++ (ie. 2.8) version.
o GNU make.
-
-28/Jan/98 LilyPond 0.1.46 1
+6/Mar/98 LilyPond 0.1.47 1
-28/Jan/98 LilyPond 0.1.46 2
+6/Mar/98 LilyPond 0.1.47 2
-28/Jan/98 LilyPond 0.1.46 3
+6/Mar/98 LilyPond 0.1.47 3
-28/Jan/98 LilyPond 0.1.46 4
+6/Mar/98 LilyPond 0.1.47 4
-28/Jan/98 LilyPond 0.1.46 5
+6/Mar/98 LilyPond 0.1.47 5
-28/Jan/98 LilyPond 0.1.46 6
+6/Mar/98 LilyPond 0.1.47 6
+pl 47
+ - Abbreviation now a separate item.
+ - bf'd some gcc 2.8 warnings.
+ - bf'd spurious space in autodep.
+ - more clefs (MB)
+
+pl 46.jcn1
+ - start mudela introduction
+ - plet-fraction abbrev by guessing; /3 -> 2/3 etc.
+ - bf's: preludes-*
+
+*******
+feb 27
+
pl 46
- span-bar at upstep.
- bf: \score { \score_identifier }
* bf: abbrevs over whole note
+ * spanner that is not spanned gives assert ().
+
+* the warning about the negative slur/tie length appears twice
+which is irritating.
+
+* The `3' in the meter key is a one or two pixels too thin (at 600dpi)
+in the middle:
+
+* better hshift (dots, distance, head dependent)
+
+* tie/slur dir & curvature
+
+* stem len adjustable
+
+* mindist for spanners
+
+
+
STUFF
3RD PARTY BUGS:
+ * gdb on RedHat 5
+
* xdvi: PS magnifying glass.
* Rational infty(HUGE_VAL) on glibc / w32
TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 46
+TOPLEVEL_PATCH_LEVEL = 47
TOPLEVEL_MY_PATCH_LEVEL =
# use the above to send patches, always empty for released version:
identify;
-GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules");
+GetOptions ("help", "output=s", "from=s", "to=s", "minor=i", "edit", "show-rules");
if ($opt_help) {
usage();
--- /dev/null
+#!@PYTHON@ -w
+# -*-perl-*-
+
+version = "0.2";
+
+################################################################
+
+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 convert_0_1_7_to_0_1_8
+{
+ s/\\plet *1 *\/ *1 *;/\\]/;
+ s/\\plet *([1-9][0-9]*) *\/ *([2-9][0-9]*) *;/\\[$1\/$2/;
+}
+
+sub convert_0_1_8_to_0_1_9
+{
+# sticky plet shorthand...
+# print "introduced plet and finger shorthands...\n";
+}
+
+###############################################################
+
+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
+ ,"0.1.8" => \&convert_0_1_7_to_0_1_8
+ ,"0.1.9" => \&convert_0_1_8_to_0_1_9
+ );
+
+
+
+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
+#!@PYTHON@ -w
+# -*-perl-*-
+
+version = "0.2";
+
+################################################################
+
+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 convert_0_1_7_to_0_1_8
+{
+ s/\\plet *1 *\/ *1 *;/\\]/;
+ s/\\plet *([1-9][0-9]*) *\/ *([2-9][0-9]*) *;/\\[$1\/$2/;
+}
+
+sub convert_0_1_8_to_0_1_9
+{
+# sticky plet shorthand...
+# print "introduced plet and finger shorthands...\n";
+}
+
+###############################################################
+
+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
+ ,"0.1.8" => \&convert_0_1_7_to_0_1_8
+ ,"0.1.9" => \&convert_0_1_8_to_0_1_9
+ );
+
+
+
+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);
+
+
if regex.search('flower', cwd) <> -1:
PROJECT = "the Flower Library"
elif regex.search('mf$', cwd) <> -1:
- PROJECT = "the Feta (Font-En-Tja) music font"
+ PROJECT = "the Feta (defintively not an abbreviation for Font-En-Tja) music font"
else:
PROJECT = "the GNU LilyPond music typesetter"
return PROJECT
NOW=`date`
echo "$IDENTIFICATION" 1>&2
+# TODO
+
+# should detect crashing lilypond
+
# NEWS
# 0.6.hwn1.jaf
fi
p1=`find $LILYTOP -name '*.hh' |egrep -v out/`
p2=`find $LILYTOP -name '*.cc' |egrep -v out/`
-doc++ -d docxx/ -S -k -p $BANNEROPT $p1 $p2
+doc++ -f -d docxx/ -S -k -p $BANNEROPT $p1 $p2
base="lilypond/";
examples=["twinkle-pop",
- "toccata-fuga-E",
+ "praeludium-fuga-E",
"cadenza",
"twinkle",
"collisions",
print 'generating examples:\n'
outputs = []
for i in inputs:
- located = multiple_find ([i + '.ly'], include_path) [0]
-
+ try:
+ located = multiple_find ([i + '.ly'], include_path) [0]
+ except IndexError:
+ print 'continuing dazed & confused (%s) ' % i
+ continue
outputs.append (located)
if not file_exist_b(i + '.dvi'):
my_system (['ly2dvi %s' % located])
s = regsub.sub ('</BODY>', footstr('index.html') + makewebsite_id + '</BODY>', s)
s = regsub.sub('<TITLE>\(.*\)</TITLE>$',
'<TITLE>LilyPond WWW: \\1</TITLE>', s)
+
dump_file (f,s)
print BOOK "\\begin{verbatim}\n";
}
if ($fragment_b) {
- print MUDELA "\\score { \\melodic {";
+ print MUDELA "\\score { \\melodic {\\octave c';";
}
}
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
- enable-printing turn on debug printing"
+ enable-printing turn on debug printing. Default: off"
ac_help="$ac_help
enable-checking set runtime checks (assert calls). Default: on"
ac_help="$ac_help
AC_LANG_CPLUSPLUS
AC_ARG_ENABLE(printing,
- [ enable-printing turn on debug printing],
+ [ enable-printing turn on debug printing. Default: off],
[printing_b=$enableval])
--- /dev/null
+
+#if 0
+
+
+/**
+ neuk. hsearch_* is te dom.
+ */
+template<class T>
+class Dictionary<T>
+{
+ hsearch_data * hash_p_;
+
+public:
+ Dictionary ();
+ ~Dictionary ();
+ Dictionary (Dictionary const&);
+ T &elem (String s);
+ T const &elem (String s) const;
+ bool elt_b (String s) const;
+ void add (String, T);
+ void clear ();
+}
+
+Dictionary::Dictionary ()
+{
+ hash_p_ = new hsearch_data;
+ hash_p_->table = 0;
+
+ int start_size = 51;
+ int retval = hcreate_r (start_size, hash_p_);
+
+ assert (retval);
+}
+
+
+
+#endif
INLINE
Full_storage::Full_storage (Full_storage const&s)
+ : Matrix_storage (s)
{
init();
(*this) = s;
return *this;
}
String str() const;
+ void print () const;
bool elt_b (T r);
};
#include <math.h>
#include "interval.hh"
#include "string.hh"
+#include "flower-debug.hh"
+template<class T>
+void
+Interval_t<T>::print () const
+{
+ fdebug << str ();
+}
template<class T>
int
template INTERVAL__INSTANTIATE(Real);
+
+
Real
Interval_t<Real>::infinity()
{
*/
+#ifndef _GNU_SOURCE // we want memmem
+#define _GNU_SOURCE
+#endif
+
#include <stdlib.h>
#include <stdio.h>
int
main ()
{
- if (test_arr_p) {
- for (int i=0; i < test_arr_p->size (); i++)
- (*test_arr_p)[i] ();
- }
+ if (test_arr_p)
+ {
+ for (int i=0; i < test_arr_p->size (); i++)
+ (*test_arr_p)[i] ();
+ }
}
% input from out/feta11.log
% name=\symboltables {
"rests" = \table {
- "0" "\\wholerest" -0.00\pt 4.13\pt -1.72\pt 0.00\pt
- "1" "\\halfrest" -0.00\pt 4.13\pt -0.00\pt 1.72\pt
+ "0" "\\wholerest" -0.00\pt 4.12\pt -1.72\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 4.12\pt -0.00\pt 1.72\pt
"0o" "\\outsidewholerest" -1.72\pt 5.84\pt -1.72\pt 0.28\pt
"1o" "\\outsidehalfrest" -1.72\pt 5.84\pt -0.28\pt 1.72\pt
"2" "\\quartrest" -0.00\pt 2.97\pt 2.06\pt 9.90\pt
"7" "\\hundredtwentyeighthrest" -0.00\pt 5.75\pt -0.00\pt 16.06\pt
}
"accidentals" = \table {
- "1" "\\sharp" -0.00\pt 3.03\pt -4.13\pt 4.13\pt
- "0" "\\natural" -0.00\pt 1.83\pt -4.13\pt 4.13\pt
+ "1" "\\sharp" -0.00\pt 3.03\pt -4.12\pt 4.12\pt
+ "0" "\\natural" -0.00\pt 1.83\pt -4.12\pt 4.12\pt
"-1" "\\flat" -0.33\pt 2.20\pt -1.38\pt 5.50\pt
"-2" "\\flatflat" -0.33\pt 3.99\pt -1.38\pt 5.50\pt
"2" "\\sharpsharp" -0.00\pt 2.75\pt -1.38\pt 1.38\pt
"downbow" "\\downbow" -2.06\pt 2.06\pt -0.00\pt 3.67\pt
"turn" "\\turn" -3.01\pt 3.01\pt -1.46\pt 1.46\pt
"trill" "\\trill" -2.75\pt 2.75\pt -0.00\pt 6.19\pt
- "pedalheel" "\\pedalheel" -1.38\pt 1.38\pt -1.38\pt 1.83\pt
- "pedaltoe" "\\pedaltoe" -1.38\pt 1.38\pt -0.00\pt 4.13\pt
+ "upedalheel" "\\upedalheel" -1.38\pt 1.38\pt -1.38\pt 1.83\pt
+ "dpedalheel" "\\dpedalheel" -1.38\pt 1.38\pt -1.83\pt 1.38\pt
+ "upedaltoe" "\\upedaltoe" -1.38\pt 1.38\pt -0.00\pt 4.12\pt
+ "dpedaltoe" "\\dpedaltoe" -1.38\pt 1.38\pt -4.12\pt 0.00\pt
"flageolet" "\\flageolet" -1.47\pt 1.47\pt -1.47\pt 1.47\pt
}
"flags" = \table {
"accidentals" = \table {
"1" "\\sharp" -0.00\pt 3.58\pt -4.88\pt 4.88\pt
"0" "\\natural" -0.00\pt 2.17\pt -4.88\pt 4.88\pt
- "-1" "\\flat" -0.39\pt 2.60\pt -1.63\pt 6.50\pt
- "-2" "\\flatflat" -0.39\pt 4.71\pt -1.63\pt 6.50\pt
- "2" "\\sharpsharp" -0.00\pt 3.25\pt -1.63\pt 1.63\pt
+ "-1" "\\flat" -0.39\pt 2.60\pt -1.62\pt 6.50\pt
+ "-2" "\\flatflat" -0.39\pt 4.71\pt -1.62\pt 6.50\pt
+ "2" "\\sharpsharp" -0.00\pt 3.25\pt -1.62\pt 1.62\pt
}
"dots" = \table {
"dot" "\\dot" -0.00\pt 1.46\pt -0.73\pt 0.73\pt
- "repeatcolon" "\\repeatcolon" -0.00\pt 1.46\pt -1.63\pt 1.63\pt
+ "repeatcolon" "\\repeatcolon" -0.00\pt 1.46\pt -1.62\pt 1.62\pt
}
"balls" = \table {
"-1" "\\brevisball" -0.00\pt 6.50\pt -1.79\pt 1.79\pt
- "-1l" "\\brevisledger" -1.63\pt 8.13\pt -0.33\pt 0.33\pt
+ "-1l" "\\brevisledger" -1.62\pt 8.12\pt -0.33\pt 0.33\pt
"-2" "\\longaball" -0.00\pt 6.50\pt -1.79\pt 1.79\pt
- "-2l" "\\longaledger" -1.63\pt 8.13\pt -0.33\pt 0.33\pt
+ "-2l" "\\longaledger" -1.62\pt 8.12\pt -0.33\pt 0.33\pt
"0" "\\wholeball" -0.00\pt 6.44\pt -1.79\pt 1.79\pt
"0l" "\\wholeledger" -1.61\pt 8.04\pt -0.33\pt 0.33\pt
"1" "\\halfball" -0.00\pt 4.48\pt -1.79\pt 1.79\pt
"scripts" = \table {
"ufermata" "\\ufermata" -4.31\pt 4.31\pt -0.24\pt 4.71\pt
"dfermata" "\\dfermata" -4.31\pt 4.31\pt -4.71\pt 0.24\pt
- "sforzato" "\\sforzatoaccent" -2.92\pt 2.92\pt -1.63\pt 1.63\pt
+ "sforzato" "\\sforzatoaccent" -2.92\pt 2.92\pt -1.62\pt 1.62\pt
"staccato" "\\staccato" -0.49\pt 0.49\pt -0.49\pt 0.49\pt
"ustaccatissimo" "\\ustaccatissimo" -0.65\pt 0.65\pt -0.20\pt 3.25\pt
"dstaccatissimo" "\\dstaccatissimo" -0.65\pt 0.65\pt -3.25\pt 0.20\pt
"tenuto" "\\tenuto" -2.92\pt 2.92\pt -0.20\pt 0.20\pt
- "umarcato" "\\umarcato" -1.63\pt 1.63\pt -0.00\pt 3.58\pt
- "dmarcato" "\\dmarcato" -1.63\pt 1.63\pt -3.58\pt 0.00\pt
- "open" "\\ouvert" -1.30\pt 1.30\pt -1.63\pt 1.63\pt
+ "umarcato" "\\umarcato" -1.62\pt 1.62\pt -0.00\pt 3.58\pt
+ "dmarcato" "\\dmarcato" -1.62\pt 1.62\pt -3.58\pt 0.00\pt
+ "open" "\\ouvert" -1.30\pt 1.30\pt -1.62\pt 1.62\pt
"stopped" "\\plusstop" -1.79\pt 1.79\pt -1.79\pt 1.79\pt
"upbow" "\\upbow" -2.11\pt 2.11\pt -0.00\pt 6.76\pt
"downbow" "\\downbow" -2.44\pt 2.44\pt -0.00\pt 4.33\pt
"turn" "\\turn" -3.55\pt 3.55\pt -1.72\pt 1.72\pt
"trill" "\\trill" -3.25\pt 3.25\pt -0.00\pt 7.31\pt
- "pedalheel" "\\pedalheel" -1.63\pt 1.63\pt -1.63\pt 2.17\pt
- "pedaltoe" "\\pedaltoe" -1.63\pt 1.63\pt -0.00\pt 4.88\pt
+ "upedalheel" "\\upedalheel" -1.62\pt 1.62\pt -1.62\pt 2.17\pt
+ "dpedalheel" "\\dpedalheel" -1.62\pt 1.62\pt -2.17\pt 1.62\pt
+ "upedaltoe" "\\upedaltoe" -1.62\pt 1.62\pt -0.00\pt 4.88\pt
+ "dpedaltoe" "\\dpedaltoe" -1.62\pt 1.62\pt -4.88\pt 0.00\pt
"flageolet" "\\flageolet" -1.73\pt 1.73\pt -1.73\pt 1.73\pt
}
"flags" = \table {
"clefs" = \table {
"alto" "\\altoclef" -3.25\pt 12.10\pt -6.50\pt 6.50\pt
"alto_change" "\\caltoclef" -2.60\pt 9.68\pt -5.20\pt 5.20\pt
- "bass" "\\bassclef" -1.63\pt 11.70\pt -8.13\pt 3.25\pt
+ "bass" "\\bassclef" -1.62\pt 11.70\pt -8.12\pt 3.25\pt
"bass_change" "\\cbassclef" -1.30\pt 9.36\pt -6.50\pt 2.60\pt
"violin" "\\violinclef" -2.83\pt 12.15\pt -9.75\pt 16.25\pt
"violin_change" "\\cviolinclef" -2.46\pt 9.52\pt -7.80\pt 13.00\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" -4.00\pt 4.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
+ "upedalheel" "\\upedalheel" -2.00\pt 2.00\pt -2.00\pt 2.67\pt
+ "dpedalheel" "\\dpedalheel" -2.00\pt 2.00\pt -2.67\pt 2.00\pt
+ "upedaltoe" "\\upedaltoe" -2.00\pt 2.00\pt -0.00\pt 6.00\pt
+ "dpedaltoe" "\\dpedaltoe" -2.00\pt 2.00\pt -6.00\pt 0.00\pt
"flageolet" "\\flageolet" -2.13\pt 2.13\pt -2.13\pt 2.13\pt
}
"flags" = \table {
% input from out/feta19.log
% name=\symboltables {
"rests" = \table {
- "0" "\\wholerest" -0.00\pt 7.13\pt -2.97\pt 0.00\pt
- "1" "\\halfrest" -0.00\pt 7.13\pt -0.00\pt 2.97\pt
+ "0" "\\wholerest" -0.00\pt 7.12\pt -2.97\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 7.12\pt -0.00\pt 2.97\pt
"0o" "\\outsidewholerest" -2.97\pt 10.09\pt -2.97\pt 0.48\pt
"1o" "\\outsidehalfrest" -2.97\pt 10.09\pt -0.48\pt 2.97\pt
"2" "\\quartrest" -0.00\pt 5.13\pt 3.56\pt 17.10\pt
"7" "\\hundredtwentyeighthrest" -0.00\pt 9.93\pt -0.00\pt 27.75\pt
}
"accidentals" = \table {
- "1" "\\sharp" -0.00\pt 5.23\pt -7.13\pt 7.13\pt
- "0" "\\natural" -0.00\pt 3.17\pt -7.13\pt 7.13\pt
+ "1" "\\sharp" -0.00\pt 5.23\pt -7.12\pt 7.12\pt
+ "0" "\\natural" -0.00\pt 3.17\pt -7.12\pt 7.12\pt
"-1" "\\flat" -0.57\pt 3.80\pt -2.38\pt 9.50\pt
"-2" "\\flatflat" -0.57\pt 6.89\pt -2.38\pt 9.50\pt
"2" "\\sharpsharp" -0.00\pt 4.75\pt -2.38\pt 2.38\pt
"downbow" "\\downbow" -3.56\pt 3.56\pt -0.00\pt 6.33\pt
"turn" "\\turn" -5.20\pt 5.20\pt -2.51\pt 2.51\pt
"trill" "\\trill" -4.75\pt 4.75\pt -0.00\pt 10.69\pt
- "pedalheel" "\\pedalheel" -2.38\pt 2.38\pt -2.38\pt 3.17\pt
- "pedaltoe" "\\pedaltoe" -2.38\pt 2.38\pt -0.00\pt 7.13\pt
+ "upedalheel" "\\upedalheel" -2.38\pt 2.38\pt -2.38\pt 3.17\pt
+ "dpedalheel" "\\dpedalheel" -2.38\pt 2.38\pt -3.17\pt 2.38\pt
+ "upedaltoe" "\\upedaltoe" -2.38\pt 2.38\pt -0.00\pt 7.12\pt
+ "dpedaltoe" "\\dpedaltoe" -2.38\pt 2.38\pt -7.12\pt 0.00\pt
"flageolet" "\\flageolet" -2.53\pt 2.53\pt -2.53\pt 2.53\pt
}
"flags" = \table {
% input from out/feta20.log
% name=\symboltables {
"rests" = \table {
- "0" "\\wholerest" -0.00\pt 7.50\pt -3.13\pt 0.00\pt
- "1" "\\halfrest" -0.00\pt 7.50\pt -0.00\pt 3.13\pt
- "0o" "\\outsidewholerest" -3.13\pt 10.62\pt -3.13\pt 0.50\pt
- "1o" "\\outsidehalfrest" -3.13\pt 10.62\pt -0.50\pt 3.13\pt
+ "0" "\\wholerest" -0.00\pt 7.50\pt -3.12\pt 0.00\pt
+ "1" "\\halfrest" -0.00\pt 7.50\pt -0.00\pt 3.12\pt
+ "0o" "\\outsidewholerest" -3.12\pt 10.62\pt -3.12\pt 0.50\pt
+ "1o" "\\outsidehalfrest" -3.12\pt 10.62\pt -0.50\pt 3.12\pt
"2" "\\quartrest" -0.00\pt 5.40\pt 3.75\pt 18.00\pt
"3" "\\eighthrest" -0.00\pt 6.67\pt 5.00\pt 14.21\pt
"4" "\\sixteenthrest" -0.00\pt 7.76\pt -0.00\pt 14.21\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
+ "dot" "\\dot" -0.00\pt 2.25\pt -1.12\pt 1.12\pt
"repeatcolon" "\\repeatcolon" -0.00\pt 2.25\pt -2.50\pt 2.50\pt
}
"balls" = \table {
"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" -5.00\pt 5.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
+ "upedalheel" "\\upedalheel" -2.50\pt 2.50\pt -2.50\pt 3.33\pt
+ "dpedalheel" "\\dpedalheel" -2.50\pt 2.50\pt -3.33\pt 2.50\pt
+ "upedaltoe" "\\upedaltoe" -2.50\pt 2.50\pt -0.00\pt 7.50\pt
+ "dpedaltoe" "\\dpedaltoe" -2.50\pt 2.50\pt -7.50\pt 0.00\pt
"flageolet" "\\flageolet" -2.67\pt 2.67\pt -2.67\pt 2.67\pt
}
"flags" = \table {
"0o" "\\outsidewholerest" -3.52\pt 11.95\pt -3.52\pt 0.56\pt
"1o" "\\outsidehalfrest" -3.52\pt 11.95\pt -0.56\pt 3.52\pt
"2" "\\quartrest" -0.00\pt 6.08\pt 4.22\pt 20.25\pt
- "3" "\\eighthrest" -0.00\pt 7.50\pt 5.63\pt 15.98\pt
+ "3" "\\eighthrest" -0.00\pt 7.50\pt 5.62\pt 15.98\pt
"4" "\\sixteenthrest" -0.00\pt 8.73\pt -0.00\pt 15.98\pt
"5" "\\thirtysecondrest" -0.00\pt 9.85\pt -0.00\pt 21.61\pt
"6" "\\sixtyfourthrest" -0.00\pt 10.56\pt -0.00\pt 27.23\pt
"0" "\\natural" -0.00\pt 3.75\pt -8.44\pt 8.44\pt
"-1" "\\flat" -0.68\pt 4.50\pt -2.81\pt 11.25\pt
"-2" "\\flatflat" -0.68\pt 8.16\pt -2.81\pt 11.25\pt
- "2" "\\sharpsharp" -0.00\pt 5.63\pt -2.81\pt 2.81\pt
+ "2" "\\sharpsharp" -0.00\pt 5.62\pt -2.81\pt 2.81\pt
}
"dots" = \table {
"dot" "\\dot" -0.00\pt 2.53\pt -1.27\pt 1.27\pt
"upbow" "\\upbow" -3.66\pt 3.66\pt -0.00\pt 11.70\pt
"downbow" "\\downbow" -4.22\pt 4.22\pt -0.00\pt 7.50\pt
"turn" "\\turn" -6.15\pt 6.15\pt -2.98\pt 2.98\pt
- "trill" "\\trill" -5.63\pt 5.63\pt -0.00\pt 12.66\pt
- "pedalheel" "\\pedalheel" -2.81\pt 2.81\pt -2.81\pt 3.75\pt
- "pedaltoe" "\\pedaltoe" -2.81\pt 2.81\pt -0.00\pt 8.44\pt
+ "trill" "\\trill" -5.62\pt 5.62\pt -0.00\pt 12.66\pt
+ "upedalheel" "\\upedalheel" -2.81\pt 2.81\pt -2.81\pt 3.75\pt
+ "dpedalheel" "\\dpedalheel" -2.81\pt 2.81\pt -3.75\pt 2.81\pt
+ "upedaltoe" "\\upedaltoe" -2.81\pt 2.81\pt -0.00\pt 8.44\pt
+ "dpedaltoe" "\\dpedaltoe" -2.81\pt 2.81\pt -8.44\pt 0.00\pt
"flageolet" "\\flageolet" -3.00\pt 3.00\pt -3.00\pt 3.00\pt
}
"flags" = \table {
"d6" "\\dsixtyfourthflag" -0.28\pt 7.68\pt -0.28\pt 24.83\pt
}
"clefs" = \table {
- "alto" "\\altoclef" -5.63\pt 20.94\pt -11.25\pt 11.25\pt
+ "alto" "\\altoclef" -5.62\pt 20.94\pt -11.25\pt 11.25\pt
"alto_change" "\\caltoclef" -4.50\pt 16.75\pt -9.00\pt 9.00\pt
- "bass" "\\bassclef" -2.81\pt 20.25\pt -14.06\pt 5.63\pt
+ "bass" "\\bassclef" -2.81\pt 20.25\pt -14.06\pt 5.62\pt
"bass_change" "\\cbassclef" -2.25\pt 16.20\pt -11.25\pt 4.50\pt
"violin" "\\violinclef" -4.90\pt 21.02\pt -16.88\pt 28.12\pt
"violin_change" "\\cviolinclef" -4.26\pt 16.48\pt -13.50\pt 22.50\pt
"downbow" "\\downbow" -4.88\pt 4.88\pt -0.00\pt 8.67\pt
"turn" "\\turn" -7.11\pt 7.11\pt -3.44\pt 3.44\pt
"trill" "\\trill" -6.50\pt 6.50\pt -0.00\pt 14.62\pt
- "pedalheel" "\\pedalheel" -3.25\pt 3.25\pt -3.25\pt 4.33\pt
- "pedaltoe" "\\pedaltoe" -3.25\pt 3.25\pt -0.00\pt 9.75\pt
+ "upedalheel" "\\upedalheel" -3.25\pt 3.25\pt -3.25\pt 4.33\pt
+ "dpedalheel" "\\dpedalheel" -3.25\pt 3.25\pt -4.33\pt 3.25\pt
+ "upedaltoe" "\\upedaltoe" -3.25\pt 3.25\pt -0.00\pt 9.75\pt
+ "dpedaltoe" "\\dpedaltoe" -3.25\pt 3.25\pt -9.75\pt 0.00\pt
"flageolet" "\\flageolet" -3.47\pt 3.47\pt -3.47\pt 3.47\pt
}
"flags" = \table {
% ( beam_thickness = 0.48 interline for now...)
% interbeam = interline - (beam_thickness + staffline_thickness) / 2
% interbeam = 2.84;
- % ugh: interline *in fact* is rule_thickness + "interline"?
+ % ugh: interline *in fact* is rule_thickness + "interline"? --jcn
+
+ % No --hwn
interbeam = 3.14;
gourlay_energybound = 100000.;
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 { "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 }
+lheel = \script { "upedalheel" 0 0 -1 0 0 }
+rheel = \script { "dpedalheel" 0 0 1 0 0 }
+ltoe = \script { "upedaltoe" 0 0 -1 0 0 }
+rtoe = \script { "dpedaltoe" 0 0 1 0 0 }
turn = \script { "turn" 0 0 1 0 0 }
open = \script { "open" 0 0 1 0 0 }
flageolet = \script { "flageolet" 0 0 1 0 0 }
--- /dev/null
+% Toplevel initialisation file.
+Gourlay = 1.0
+\include "dutch.ly"
+
+\include "paper16.ly"
+
+default_paper = \paper{
+ \paper_sixteen
+}
+
+
\clef "violin";
e8_. g'8-> e16^^ g'16_^
e32 _| g'32^| g''32-\ltoe g''32-\lheel
- e64 g'64 c4... |
+ e64-\rtoe g'64-\rheel c4... |
\octave c'';
\meter 4/4;
--- /dev/null
+\header {
+ filename = "praeludium-fuga-E.ly";
+ title = "praeludium and fuga in E-major";
+ opus = "BWV 566";
+ description = "Praeludium 3 bar excerpt, "
+ "2nd fuga transposed subject -- 4 bar excerpt. "
+ "We try to imitate the Griepenkerl/Keller edition which "
+ "gives the best approximation to Bach's original layout.";
+ composer = "Johann Sebastian Bach (1685-1750)";
+ enteredby = "JCN, WL";
+ copyright = "public domain";
+}
+
+%{
+ Tested Features:
+ purpose of this file is testing:
+ * real-life collisions
+ * multi-voice input --- splitting?
+ * organ staff...
+%}
+
+
+\version "0.1.9";
+
+praeludium_commands = \melodic {
+ \meter 4/4;
+ \key fis cis gis dis; % E-major
+}
+
+doshift = \property Voice.hshift = 1
+noshift = \property Voice.hshift = 0
+
+praeludium_right = \melodic {
+ \$praeludium_commands
+ \octave c';
+ \clef violin;
+
+ % 13 -- how to type -- where to split -- this more neatly?
+ \multi 2 <
+ { \stemup r4 dis'4 e'4. e'8 ~ |
+ \doshift e'4 [d'8 fis'8]
+ \noshift gis'4 ~ [gis'8 fis'16 e'16] |
+ fis'4 ~ [fis'8 e'16 dis'16] e'4 r8 e'8 }
+ { \stemup r4 bis4 cis'4 cis'4 |
+ \noshift a'4 ~ [a'16 gis'16 a'16 b'16]
+ \doshift dis'4 cis'4 ~ |
+ [cis'8 dis'16 ais16] bis4 cis'4 r8 b8 }
+ { \stemup \property Voice.hshift = 2 s4 gis4 }
+ { \stemdown \property Voice.hshift = 2 r4 fis4
+ \noshift gis4 gis4 |
+ a4. cis'8 gis2 |
+ fis4 gis4 gis4 r8 e8 }
+ > |
+ % 16
+}
+
+praeludium_left = \melodic {
+ \$praeludium_commands
+ \octave c;
+ \clef bass;
+
+ % 13
+ \multi 2 <
+ { \stemup r4 dis'4 cis'4 cis'4 ~ |
+ [cis'8 a8 d'8 cis'8] [bis8 gis8] cis'4 |
+ dis'2 cis'4 r8 cis'8 }
+ { \stemup bis2 }
+ { \stemup \doshift r4 gis4 ~
+ [gis 8 gis8] ~ \stemdown \noshift gis4 |
+ a4. fis8 gis4. a8 ~ |
+ a4 gis4 gis4 r8 gis8 }
+ { \stemup \property Voice.hshift = 2 s4 fis4 e}
+ { \stemdown s4 dis4 cis4 }
+ > |
+ % 16
+}
+
+praeludium_pedal = \melodic {
+ \$praeludium_commands
+ \octave c;
+ \clef bass;
+
+ % 13
+ r4 'fis4-\ltoe 'e4.-\lheel e8-\rheel |
+ fis4.-\rtoe fis8-\rtoe fis4-\rtoe [e8-\ltoe a8-\rtoe] |
+ dis4-\ltoe gis4-\rtoe [cis8-\ltoe 'b!8-\lheel 'ais8-\rtoe 'gis8-\ltoe] |
+ % 16
+}
+
+
+fuga2_commands = \melodic{
+ \meter 3/4;
+ \key fis cis gis dis; % E-major
+}
+
+fuga2_right = \melodic {
+ \$fuga2_commands
+ \octave c';
+ \clef violin;
+
+ % 15
+ \multi 2 <
+ { \stemup [b8 fis8] b4 }
+ { \stemdown fis2 }
+ >
+ %{ this chord is usually set like this:
+ |
+ x||
+ x||
+ x|
+ |x
+ |
+ %}
+ \multi 2 <
+ { \stemup \noshift e'4 }
+ { \stemup \doshift cis'4 }
+ { \stemup \property Voice.hshift = 2 ais4 }
+ { \stemdown fis4 }
+ > |
+ % 16
+ \multi 2 <
+ { \stemup dis'2 dis'4 |
+ cis'2 cis'4 |
+ b4. [cis'8 dis'8 e'8] }
+ { \stemup \doshift [b8 fis8] b2 ~ |
+ [b8 a!16 gis16] a2 ~ |
+ a4 gis2 }
+ { \stemdown fis2. ~ |
+ fis2. ~ |
+ fis4 e2 }
+ > |
+ % 19
+}
+
+fuga2_left = \melodic {
+ \$fuga2_commands
+ \octave c;
+ \clef bass;
+
+ % 15
+ \multi 2 <
+ { \stemdown b2 \stemup ais4 |
+ b2 b4 }
+ { \stemdown s2 e4 |
+ fis2 fis4 }
+ >
+ \stemdown cis'2 e'4 |
+ b4. b8 b4 |
+ % 19
+}
+
+fuga2_pedal = \melodic {
+ \$fuga2_commands
+ \octave c;
+ \clef bass;
+
+ % 15
+ dis4.-\ltoe e8-\rtoe cis4 |
+ 'b4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] |
+ fis4.-\rtoe [e8-\rheel dis8-\rtoe cis8-\ltoe] |
+ dis4-\rtoe e4-\rheel 'e4-\ltoe |
+ % 19
+}
+
+break = \melodic {
+ %\meter 4/4;
+ r1
+}
+
+
+% these should be two separate scores...
+\score{
+ \type Score <
+ \type Grandstaff <
+ \type Staff = treble {
+ \praeludium_right \break \fuga2_right }
+ \type Staff = bass {
+ \praeludium_left \break \fuga2_left }
+ >
+ \type Staff = pedal {
+ \praeludium_pedal \break \fuga2_pedal }
+ >
+
+ \paper{}
+
+ \midi {
+ \tempo 4 = 96; }
+}
+++ /dev/null
-\header{
-filename = "toccata-fuga-E.ly";
-title = "toccata and fuga in E-major ";
-opus = "BWV 566";
-description = "toccata 3 bar excerpt, "
- "2nd fuga transposed subject --- 4 bar excerpt";
-
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "JCN";
-copyright = "public domain";
-
-}
-
-%{
- Tested Features:
- purpose of this file is testing:
- * real-life collisions
- * multi-voice input --- splitting?
- * organ staff...
-%}
-
-
-\version "0.1.9";
-
-toccata_commands = \melodic{
- \meter 4/4;
- \key fis cis gis dis; % E-major
-}
-
-toccata_right = \melodic{
- \$toccata_commands
- % 13 -- how to type -- where to split -- this more neatly ?
- \octave c';
- \multi 2 <
- { \stemup r4 dis'4 e'4.-. e'8( | \property Voice.hshift = 1 )e'4 [d'8 fis'8] \property Voice.hshift = 0 gis'4 [gis'8 fis'16 e'16] | fis'4~ [fis'8 e'16 dis'16] e'4 r8 e'8 }
- { \stemup \property Voice.hshift = 1 r4 bis4 cis'4-. cis'4 | \property Voice.hshift = 0 a'4~ [a'16 gis'16 a'16 b'16] \property Voice.hshift = 1 dis'4 cis'4~ [cis'8 dis'16 a16] bis4 cis'4 r8 b8 }
- { \stemdown r4 < gis4 fis4 dis4 > gis4-. gis4 | a4. cis'8 gis2 | fis4 gis4 gis4 r8 e8 }
- > |
- % 16
-}
-
-toccata_left = \melodic{
- \$toccata_commands
- \octave c;
- \clef bass;
- % 13
- \multi 2 <
- { \stemup bis2 cis'4-. cis'4~ [cis'8 a8 d'8 cis'8] [bis8 gis8] cis'4 | dis'2 cis'4 r8 cis'8 }
- { \stemup \property Voice.hshift = 1 r4 gis4. gis8~ gis4 | \stemdown \property Voice.hshift = 0 a4. fis8 gis4. a8~ a4 gis4-. gis4 r8 gis8 }
- { \stemdown r4 < dis4 fis4 > < cis4 e4 > }
- > |
- % 16
-}
-
-toccata_pedal = \melodic{
- \$toccata_commands
- \octave c;
- \clef bass;
- % 13
- r4 'fis4-\ltoe 'e4.-\lheel e8-\rheel |
- % 14
- fis4.-\rtoe fis8-.-\rtoe fis4-\rtoe [e8-\ltoe a8-\rtoe] |
- % 15
- dis4-\ltoe gis4-\rtoe [cis8-\ltoe 'b8-\lheel 'a8-\rtoe 'gis8-\ltoe] |
- % 16
-}
-
-fuga2_commands = \melodic{
- \meter 3/4;
- \key fis cis gis dis; % E-major
-}
-
-fuga2_right = \melodic{
- \$fuga2_commands
- \clef violin;
- % 15
- \octave c';
- \multi 2 <
- { \stemup [b8 fis8] b4 }
- { \stemdown fis2 }
- >
- %{ this chord is usually set like this:
- |
- x||
- x||
- x|
- |x
- |
- %}
- \multi 2 <
- { \stemup \property Voice.hshift = 0 e'4 }
- { \stemup \property Voice.hshift = 1 cis'4 }
- { \stemup \property Voice.hshift = 2 ais4 }
- { \stemdown fis4 }
- > |
- % 16
- \multi 2 <
- { \stemup dis'2 dis'4 | cis'2 cis'4 | b4~ [b8 cis'8 dis'8 e'8] }
- { \stemup \property Voice.hshift = 1 [b8 fis8] b2~ [b8 a16 g16] a2 | a4 gis2 }
- { \stemdown fis2.~ fis2.~ fis4 e2 }
- > |
- % 19
-}
-
-fuga2_left = \melodic{
- \$fuga2_commands
- \octave c;
- \clef bass;
- % 15
- b2
- \multi 2 <
- { \stemup ais4 | bes2. }
- { \stemdown e4 | fis2 fis4 }
- >
- % 17
- cis'2 e'4 |
- % 18
- b4. b8 b4 |
-}
-
-fuga2_pedal = \melodic{
- \$fuga2_commands
- \octave c;
- \clef bass;
- % 15
- dis4.-\ltoe e8-\rtoe cis4 |
- % 16
- 'b4.-\lheel [c8-\ltoe dis8-\rtoe e8-\rheel] |
- % 17
- fis4.-\rtoe [e8-\rheel dis8-\rtoe cis8-\ltoe] |
- % 18
- dis4-\rtoe e4-\rheel 'e4-\ltoe |
-}
-
-break = \melodic{
- %\meter 4/4;
- r1
-}
-
-% these should be two separate scores...
-\score{
- \type Score <
- \type Grandstaff <
- \type Staff=treble {
- \toccata_right \break \fuga2_right
- }
- \type Staff=bass {
- \toccata_left \break \fuga2_left
- }
- >
- \type Staff=pedal { \toccata_pedal \break \fuga2_pedal }
- >
- \paper{}
- \midi{
- \tempo 4 = 96;
- }
-}
-
# list of custom libraries:
#
MODULE_LIBDEPS= check-flower-deps check-lib-deps
-MODULE_LIBES= -llily -lflower
+MODULE_LIBES= -llily -lflower -lmcheck
#
# main target of this module:
#
+
default: $(EXECUTABLE)
+
+out/engraver.o: include/engraver.hh
#
include ./$(depth)/make/Files.make
MAJOR_VERSION = 0
MINOR_VERSION = 1
-PATCH_LEVEL = 46
+PATCH_LEVEL = 47
MY_PATCH_LEVEL =
--- /dev/null
+/*
+ abbrev.cc -- implement Abbreviation
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ */
+
+#include "abbrev.hh"
+#include "debug.hh"
+#include "beam.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+#include "stem.hh"
+#include "dimen.hh"
+
+Abbreviation::Abbreviation ()
+{
+ stem_l_ = 0;
+ abbrev_flags_i_ = 1;
+}
+
+void
+Abbreviation::do_print () const
+{
+ DOUT << "abbrev_flags_i_ " << abbrev_flags_i_;
+}
+
+Molecule*
+Abbreviation::brew_molecule_p () const
+{
+ Real dy = paper ()->interbeam_f ();
+ Real w = 1.5 * paper ()->lookup_l ()->ball (2).dim_.x ().length ();
+ Real interline_f = paper ()->interline_f ();
+ Real beamdy = interline_f/2;
+
+ int beams_i = 0;
+ Real slope_f = paper ()->internote_f () / 4;
+
+ if (stem_l_ && stem_l_->beam_l_) {
+ // huh?
+ slope_f = 2 * stem_l_->beam_l_->slope_f_;
+ // ugh, rather calc from Abbreviation_req
+ beams_i = stem_l_->beams_right_i_ >? stem_l_->beams_left_i_;
+ }
+ paper ()->lookup_l ()->beam (slope_f, 20 PT, 1 PT);
+
+ Atom a (paper ()->lookup_l ()->beam (slope_f, w, .48 * interline_f));
+ a.translate (Offset (-w/2, w / 2 * slope_f));
+
+ Molecule *beams= new Molecule;
+ for (int i = 0; i < abbrev_flags_i_; i++)
+ {
+ Atom b (a);
+ b.translate_axis (dy * i, Y_AXIS);
+ beams->add (b);
+ }
+ beams->translate_axis (-beams->extent ()[Y_AXIS].center (), Y_AXIS);
+
+ if (stem_l_)
+ {
+ /* Try to be in the middle of the open part of the stem and
+ between on the staff.
+
+ (urgh)
+ */
+ Direction sd = stem_l_->dir_;
+ Interval empty_stem (stem_l_->chord_start_f () * sd ,
+ (stem_l_->stem_end_f ()* sd) - beams_i * dy);
+ empty_stem *= sd;
+
+ Interval instaff = empty_stem;
+ instaff.intersect (interline_f * Interval (-2,2));
+ if (instaff.empty_b ())
+ instaff = empty_stem;
+
+ instaff.print ();
+ beams->translate (Offset(stem_l_->hpos_f () - hpos_f (),
+ instaff.center ()));
+ }
+
+ return beams;
+}
+
+void
+Abbreviation::do_substitute_dependent (Score_elem*o, Score_elem*n)
+{
+ if (stem_l_ == o)
+ stem_l_ = n ? (Stem*)n->item () : 0;
+}
+
+
+void
+Abbreviation::set_stem (Stem *s)
+{
+ stem_l_ = s;
+ add_dependency (s);
+}
{
c0_position_i_= -6;
}
+ else if (clef_type_str_ == "soprano")
+ {
+ c0_position_i_= -4;
+ }
else if (clef_type_str_ == "alto")
{
c0_position_i_= 0;
Clef_item::read (String t)
{
symbol_= t;
- if (t == "violin")
+ if (t == "violin") {
y_position_i_ = -2;
- if (t == "alto")
+ }
+ else if (t == "soprano") {
+ symbol_="alto";
+ y_position_i_ = -4;
+ }
+ else if (t == "alto") {
y_position_i_ = 0;
- if (t == "tenor") {
+ }
+ else if (t == "tenor") {
symbol_="alto";
y_position_i_ = 2;
}
- if (t == "bass")
+ else if (t == "bass") {
y_position_i_ = 2;
+ }
}
+
void
Clef_item::read (Clef_engraver const &k)
{
*/
#include <fstream.h>
#include <signal.h>
-#include <std/new.h>
+
+// libg++ 2.8.0
+// #include <std/new.h>
#include <stdlib.h>
#include "debug.hh"
#include "dstream.hh"
{
rat_printer = print_rat;
#ifndef NDEBUG
- set_new_handler (&mynewhandler);
+ // libg++ 2.8.0 doesn't have set_new_handler
+ // set_new_handler (&mynewhandler);
#endif
set_flower_debug (*monitor, check_debug);
// #define MEMORY_PARANOID
#ifdef MEMORY_PARANOID
+
+#include <malloc.h>
+
void *
operator new (size_t size)
{
check_debug =b;
set_flower_debug (*monitor, check_debug);
check_malloc_b = experimental_features_global_b;
+#ifdef MEMORY_PARANOID
+ if (check_malloc_b)
+ if (mcheck (0))
+ warning ("Can't set mem-checking!");
+#endif
}
IMPLEMENT_ID_CLASS(Midi_def_id, Midi_def, mididef);
IMPLEMENT_ID_CLASS(Paper_def_id, Paper_def, paperdef);
-Identifier::Identifier (Identifier const&)
+Identifier::Identifier (Identifier const&s)
+ : Input (s)
{
assert (false);
}
--- /dev/null
+/*
+ abbrev.hh -- declare Abbreviation
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ */
+
+#ifndef ABBREV_HH
+#define ABBREV_HH
+
+#include "item.hh"
+class Abbreviation : public Item {
+ Stem * stem_l_;
+protected:
+ virtual void do_print () const;
+ virtual Molecule *brew_molecule_p () const;
+ virtual void do_substitute_dependent (Score_elem*, Score_elem*);
+public:
+ int abbrev_flags_i_;
+ Abbreviation ();
+ void set_stem (Stem *);
+};
+
+#endif /* ABBREV_HH */
+
};
+/**
+ if d > 0: the max operator
+ if d < 0: the min operator
+ */
+template<class T> minmax (Direction d, T, T);
+
#endif // DIRECTION_HH
Engraver () {}
DECLARE_MY_RUNTIME_TYPEINFO;
- void print() const;
virtual Engraver * engraver_l () { return this; }
};
struct Absolute_dynamic_req;
+struct Abbreviation;
struct Abbreviation_req;
struct Abbreviation_beam_req;
struct Abbreviation_beam_engraver;
void handle_loose_cols();
void position_loose_cols (Vector &) const;
- /**
- add a idealspacing to the problem.
-
- One pair of columns can have no, one or more idealspacings,
- since they can be "summed" if the columns to which #i# refers are
- not in this problem, the spacing is ignored.
- */
- void add_ideal (Idealspacing const *i);
void print_ideal (Idealspacing const *) const;
Vector try_initial_solution() const;
void calcideal();
--- /dev/null
+
+/*
+ minmax.cc -- implement minmax()
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+ */
+
+template<class T>
+minmax (Direction d, T t1, T t2)
+{
+ if (d > 0) return t1 >? t2;
+ else return t1 <? t2;
+}
+
void handle_loose_cols();
void position_loose_cols (Vector &) const;
- /**
- add a idealspacing to the problem.
-
- One pair of columns can have no, one or more idealspacings,
- since they can be "summed" if the columns to which #i# refers are
- not in this problem, the spacing is ignored.
- */
- void add_ideal (Idealspacing const *i);
Vector try_initial_solution() const;
void calc_idealspacing();
void set_fixed_cols (Mixed_qp&) const;
Direction dir_;
int default_abbrev_i_;
Stem *stem_p_;
+ Abbreviation *abbrev_p_;
Rhythmic_req *rhythmic_req_l_;
Abbreviation_req* abbrev_req_l_;
protected:
*/
class Stem : public Item {
- Molecule abbrev_mol () const;
Drul_array<Real> yextent_drul_;
Link_array<Rest> rest_l_arr_;
public:
- /// abbrev flag? + count
- int abbrev_flag_i_;
/// how many abbrev beam don't reach stem?
int beam_gap_i_;
DECLARE_MY_RUNTIME_TYPEINFO;
- Real hpos_f() const;
+ Real hpos_f () const;
+ Real chord_start_f () const;
int type_i () const;
Rhythmic_grouping default_grouping_;
Link_array<Timing_req> timing_req_l_arr_;
protected:
+ virtual void do_print () const;
virtual void do_creation_processing ();
virtual bool do_try_request (Request *req_l);
virtual void do_process_requests();
char const* const instrument_name_sz_a_[ ] = {
/* default is usually piano */
- /* 0 */ "piano",
+ /* 0 "piano", */
/* (1-8 piano) */
/* 1 */ "acoustic grand",
void
Midi_track::add (Moment delta_time_mom, Midi_item* mitem_p)
{
- assert (delta_time_mom >= 0);
+ assert (delta_time_mom >= Moment (0));
+
event_p_list_.bottom ().add (new Midi_event (delta_time_mom, mitem_p));
}
Moment
-Rhythmic_req::duration() const {
+Rhythmic_req::duration() const
+{
return duration_.length();
}
/* *************** */
#include "duration-convert.hh"
#include "change-translator.hh"
+int const GUESS_PLET = 5;
+int guess_plet_a[GUESS_PLET] =
+{
+ 1,
+ 3,
+ 2,
+ 3,
+ 4
+};
+
#ifndef NDEBUG
#define YYDEBUG 1
#endif
char c;
const char *consstr;
int i;
+ int pair[2];
int ii[10];
}
%{
%type <real> unit
%type <request> abbrev_command_req
%type <request> post_request structured_post_request
+%type <pair> plet_fraction
%type <request> command_req verbose_command_req
%type <request> script_req dynamic_req
%type <score> score_block score_body
}
;
+plet_fraction:
+ unsigned '/' unsigned {
+ $$[0] = $1;
+ $$[1] = $3;
+ }
+ |
+ '/' unsigned {
+ int num = $2 >? 1;
+ $$[0] = guess_plet_a[(num <? GUESS_PLET) - 1];
+ $$[1] = num;
+ }
+ ;
+
close_plet_parens:
- ']' unsigned '/' unsigned {
+ ']' plet_fraction {
$$ = MAEBTELP;
- THIS->plet_.type_i_ = $4;
- THIS->plet_.iso_i_ = $2;
- THIS->default_duration_.plet_.type_i_ = $4;
- THIS->default_duration_.plet_.iso_i_ = $2;
+ THIS->plet_.type_i_ = $2[1];
+ THIS->plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_.type_i_ = $2[1];
+ THIS->default_duration_.plet_.iso_i_ = $2[0];
}
| TELP {
$$ = TELP;
THIS->default_duration_.plet_.iso_i_ = 1;
THIS->default_duration_.plet_.type_i_ = 1;
}
- | TELP unsigned '/' unsigned {
+ | TELP plet_fraction {
$$ = TELP;
- THIS->plet_.type_i_ = $4;
- THIS->plet_.iso_i_ = $2;
- THIS->default_duration_.plet_.type_i_ = $4;
- THIS->default_duration_.plet_.iso_i_ = $2;
+ THIS->plet_.type_i_ = $2[1];
+ THIS->plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_.type_i_ = $2[1];
+ THIS->default_duration_.plet_.iso_i_ = $2[0];
}
;
;
open_plet_parens:
- '[' unsigned '/' unsigned {
+ '[' plet_fraction {
$$ = BEAMPLET;
- THIS->plet_.type_i_ = $4;
- THIS->plet_.iso_i_ = $2;
- THIS->default_duration_.plet_.type_i_ = $4;
- THIS->default_duration_.plet_.iso_i_ = $2;
+ THIS->plet_.type_i_ = $2[1];
+ THIS->plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_.type_i_ = $2[1];
+ THIS->default_duration_.plet_.iso_i_ = $2[0];
}
- | PLET unsigned '/' unsigned {
+ | PLET plet_fraction {
$$ = PLET;
- THIS->plet_.type_i_ = $4;
- THIS->plet_.iso_i_ = $2;
- THIS->default_duration_.plet_.type_i_ = $4;
- THIS->default_duration_.plet_.iso_i_ = $2;
+ THIS->plet_.type_i_ = $2[1];
+ THIS->plet_.iso_i_ = $2[0];
+ THIS->default_duration_.plet_.type_i_ = $2[1];
+ THIS->default_duration_.plet_.iso_i_ = $2[0];
}
;
}
Score_elem::Score_elem (Score_elem const&s)
- : Graphical_element (s)
+ : Directed_graph_node (s), Graphical_element (s)
{
/* called from derived ctor, so most info points to the same deps
as (Directed_graph_node&)s. Nobody points to us, so don't copy
}
Score::Score (Score const &s)
+ : Input (s)
{
music_p_ = (s.music_p_) ? s.music_p_->clone() : 0;
for (int i=0; i < s.def_p_arr_.size (); i++)
Real durational_distance = 0;
- Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when () ;
+ Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when () ;
- Real k= paper_l()->arithmetic_constant(context_shortest_arr[i]);
- /*
- ugh should use shortest_playing distance
- */
- if (delta_t)
- durational_distance = paper_l()->duration_to_dist (delta_t,k);
- symbol_distance += -cols[i+1].width_[LEFT];
+ Real k= paper_l()->arithmetic_constant(context_shortest_arr[i]);
+ /*
+ ugh should use shortest_playing distance
+ */
+ if (delta_t)
+ durational_distance = paper_l()->duration_to_dist (delta_t,k);
+ symbol_distance += -cols[i+1].width_[LEFT];
ideal_arr_[i] = symbol_distance >? durational_distance;
dist *= delta_t / shortest_playing_len;
/*
- According to [Ross] and [Wanske], and from what i've seen:
+ According to [Ross] and [Wanske], and from what i've seen:
- * whitespace at the begin of the bar should be fixed at
- (about) one interline.
- [Ross]:
- when spacing gets real tight, a smaller fixed value may be
- used, so that there are two discrete amounts of whitespace
- possible at the begin of a bar; but this is not implemented
- right now.
+ * whitespace at the begin of the bar should be fixed at
+ (about) one interline.
+ [Ross]:
+ when spacing gets real tight, a smaller fixed value may be
+ used, so that there are two discrete amounts of whitespace
+ possible at the begin of a bar; but this is not implemented
+ right now.
- * whitespace at the end of the bar is the normal amount of
- "hinterfleish" that would have been used, had there been
- yet another note in the bar.
- [Ross]:
- some editors argue that the bar line should not take any
- space, not to hinder the flow of music spaced around a bar
- line.
- [Ross] and [Wanske] do not suggest this, however. Further,
- it introduces some spacing problems and think that it is ugly
- too.
- [jcn]
- */
+ * whitespace at the end of the bar is the normal amount of
+ "hinterfleish" that would have been used, had there been
+ yet another note in the bar.
+ [Ross]:
+ some editors argue that the bar line should not take any
+ space, not to hinder the flow of music spaced around a bar
+ line.
+ [Ross] and [Wanske] do not suggest this, however. Further,
+ it introduces some spacing problems and think that it is ugly
+ too.
+ [jcn]
+ */
/*
first musical column of bar
- */
+ */
if (i && scol_l (i - 1)->breakable_b_)
{
// fixed: probably should set minimum (rod/spring)?
/*
last musical column of bar
- */
+ */
if (i + 1 < cols.size () && scol_l(i+1)->breakable_b_)
{
// hmm, how bout?
someone was junking this last "hinterfleisch" whitespace?!
but this seems to be fixed now :-)
- */
- // set minimum rod
+ */
+ // set minimum rod
cols[i].width_[RIGHT] += interline_f;
}
#include "musical-request.hh"
#include "duration-convert.hh"
#include "misc.hh"
+#include "abbrev.hh"
Stem_engraver::Stem_engraver()
{
abbrev_req_l_ = 0;
stem_p_ = 0;
+ abbrev_p_ = 0;
default_abbrev_i_ = 16;
dir_ = CENTER;
}
t = default_abbrev_i_;
else
default_abbrev_i_ = t;
- stem_p_->abbrev_flag_i_ =intlog2 (t) - (durlog_i>? 2);
+
+ abbrev_p_ = new Abbreviation;
+ announce_element (Score_elem_info (abbrev_p_, abbrev_req_l_));
+ abbrev_p_->abbrev_flags_i_ =intlog2 (t) - (durlog_i>? 2);
}
announce_element (Score_elem_info (stem_p_, r));
}
void
Stem_engraver::do_pre_move_processing()
{
+ if (abbrev_p_)
+ {
+ abbrev_p_->set_stem (stem_p_);
+ typeset_element (abbrev_p_);
+ abbrev_p_ = 0;
+ }
if (stem_p_)
{
Scalar prop = get_property ("ydirection");
#include "beam.hh"
#include "rest.hh"
-const int STEMLEN=7;
+const int STEMLEN = 7;
IMPLEMENT_IS_TYPE_B1 (Stem,Item);
/*
TODO: staff-size
*/
- abbrev_flag_i_ = 0;
beam_l_ = 0;
beams_left_i_ = 0;
beams_right_i_ = 0;
Stem::do_print () const
{
#ifndef NPRINT
- DOUT << "flag "<< flag_i_ << "abbrev_flag_i_" << abbrev_flag_i_;
+ DOUT << "flag "<< flag_i_ ;
if (beam_l_)
DOUT << "beamed";
#endif
return yextent_drul_[Direction(-dir_)];
}
+Real
+Stem::chord_start_f () const
+{
+ return head_positions()[dir_] * paper ()->internote_f ();
+}
+
Real
Stem::stem_end_f () const
{
Real len = STEMLEN;
Real dy = paper ()->interbeam_f ();
- // ugh, should get nice *rule* for this
- if (abbrev_flag_i_ > 1)
- len += (abbrev_flag_i_ - 1)* dy / 2;
-
-
if (!dir_)
set_default_dir ();
Stem::do_width () const
{
Interval r (0, 0);
- if (abbrev_flag_i_)
- {
- r = abbrev_mol ().extent ().x ();
- }
- else if (beam_l_ || abs (flag_i_) <= 2)
+ if (beam_l_ || abs (flag_i_) <= 2)
; // TODO!
else
{
-Molecule
-Stem::abbrev_mol () const
-{
- Real dy = paper ()->interbeam_f ();
- Real w = 1.5 * paper ()->lookup_l ()->ball (2).dim_.x ().length ();
- Real interline_f = paper ()->interline_f ();
- Real beamdy = interline_f/2;
-
- int beams_i = 0;
- Real slope_f = paper ()->internote_f () / 4;
-
- if (beam_l_) {
- // huh?
- slope_f = 2 * beam_l_->slope_f_;
- // ugh, rather calc from Abbreviation_req
- beams_i = beams_right_i_ >? beams_left_i_;
- }
- paper ()->lookup_l ()->beam (slope_f, 20 PT, 1 PT);
-
- Molecule beams;
- Atom a (paper ()->lookup_l ()->beam (slope_f, w, .48 * interline_f));
- a.translate (Offset(- w / 2, stem_end_f () - (w / 2 * slope_f)));
-
- // ugh
- if (!beams_i)
- a.translate_axis (dy + beamdy - dir_ * dy, Y_AXIS);
- else
- a.translate_axis (2 * beamdy - dir_ * (beamdy - dy), Y_AXIS);
-
- for (int i = 0; i < abbrev_flag_i_; i++)
- {
- Atom b (a);
- b.translate_axis (-dir_ * dy * (beams_i + i), Y_AXIS);
- beams.add (b);
- }
-
- return beams;
-}
const Real ANGLE = 20* (2.0*M_PI/360.0); // ugh!
Atom fl = p->lookup_l ()->flag (flag_i_, dir_);
fl.translate_axis(stem_y[dir_]*dy, Y_AXIS);
mol_p->add(fl);
- assert (!abbrev_flag_i_);
}
- if (abbrev_flag_i_)
- mol_p->add (abbrev_mol ());
-
if (head_l_arr_.size())
{
mol_p->translate_axis (note_delta_f (), X_AXIS);
{
}
+
Symtables::Symtables (Symtables const &s)
+ : Dictionary<Symtable*> (s)
{
for (Assoc_iter<String, Symtable*> i (s); i.ok(); i++)
{
*os << _("% Creator: ") << get_version_str() << "\n";
*os << _("% Automatically generated, at ");
time_t t (time (0));
- *os << ctime (&t)<<"\n";
+ *os << ctime (&t) << "%\n";
}
Tex_stream::~Tex_stream()
{
Timing_translator::Timing_translator ()
{
- default_grouping_ = Rhythmic_grouping (MInterval (0,4),4); // ugh
+ default_grouping_ = Rhythmic_grouping (MInterval (0, 1), 4); // ugh
}
bool
else if (tr_l->cadenza())
{
time_.set_cadenza (tr_l->cadenza()->on_b_);
-
}
else if (tr_l->measuregrouping())
{
{
time_.add (now_moment () - time_.when_);
}
+
+void
+Timing_translator::do_print () const
+{
+#ifndef NPRINT
+ time_.print ();
+ default_grouping_.print ();
+#endif
+}
# this is supposed to clear all suffixes:
.SUFFIXES:
-# so why does make still consider xx.y : RCS/xx.y,v ?
-# there is no suffix ,v anymore!
.SUFFIXES: .cc .o .hh .y .l .dep
INCLUDES = -Iinclude -I$(outdir) -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout)
CXX_OUTPUT_OPTION = $< -o $@
LDFLAGS = $(ILDFLAGS) $(USER_LDFLAGS) $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) -L$(depth)/lib/$(OUTDIR_NAME) -L$(depth)/flower/$(OUTDIR_NAME)
-LOADLIBES = $(EXTRA_LIBES) $(MODULE_LIBES) -lg++ # need lg++ for win32, really!
+LOADLIBES = $(EXTRA_LIBES) $(MODULE_LIBES) -lg++ -lstdc++ # need lg++ for win32, really!
#
# macro compiler:
# dependencies:
#
-depfile = $(depdir)/$(subst .o,.dep,$(notdir $@))
+depfile = $(depdir)/$(subst .o,.dep,$(notdir $@))#
DODEP=rm -f $(depfile); DEPENDENCIES_OUTPUT="$(depfile) $(outdir)/$(notdir $@)"
#
Begin3
Titel: LilyPond
-Versie: 0.1.46
-Inschrijf datum: 17FEB98
+Versie: 0.1.47
+Inschrijf datum: 06MAR98
Beschrijving: LilyPond is de muziek typesetter van het GNU Project.
Het programma genereert muziek in zichtbare of
hoorbare vorm uit uit een muzikale definitie file:
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.46.tar.gz
+ 395k lilypond-0.1.47.tar.gz
Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-0.1.46.tar.gz
+ 395k lilypond-0.1.47.tar.gz
Copi"eer politie: GPL
End
Begin3
Title: LilyPond
-Version: 0.1.46
-Entered-date: 17FEB98
+Version: 0.1.47
+Entered-date: 06MAR98
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/sound/convert
- 470k lilypond-0.1.46.tar.gz
+ 470k lilypond-0.1.47.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
- 470k lilypond-0.1.46.tar.gz
+ 470k lilypond-0.1.47.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 0.1.46
+Version: 0.1.47
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.46.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.47.tar.gz
Summary: A program for typesetting music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
make -C Documentation gifs
make prefix="$RPM_BUILD_ROOT/usr" install
%files
-%doc Documentation/out/ANNOUNCE.txt Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/DEDICATION.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/NEWS.txt Documentation/out/TODO.txt Documentation/out/cadenza.ly.txt Documentation/out/collisions.ly.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/font16.ly.txt Documentation/out/font20.ly.txt Documentation/out/gallina.ly.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/multi.ly.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt Documentation/out/preludes-1.ly.txt Documentation/out/preludes-2.ly.txt Documentation/out/rhythm.ly.txt Documentation/out/scsii-menuetto.ly.txt Documentation/out/standje.ly.txt Documentation/out/toccata-fuga-E.ly.txt Documentation/out/twinkle-pop.ly.txt Documentation/out/twinkle.ly.txt Documentation/out/wtk1-fugue2.ly.txt Documentation/out/wtk1-prelude1.ly.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
-%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela-course.doc Documentation/mudela-man.doc
+%doc Documentation/out/ANNOUNCE.txt Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/DEDICATION.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/NEWS.txt Documentation/out/TODO.txt Documentation/out/cadenza.ly.txt Documentation/out/collisions.ly.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/font16.ly.txt Documentation/out/font20.ly.txt Documentation/out/gallina.ly.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/multi.ly.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt Documentation/out/praeludium-fuga-E.ly.txt Documentation/out/preludes-1.ly.txt Documentation/out/preludes-2.ly.txt Documentation/out/rhythm.ly.txt Documentation/out/scsii-menuetto.ly.txt Documentation/out/standje.ly.txt Documentation/out/twinkle-pop.ly.txt Documentation/out/twinkle.ly.txt Documentation/out/wtk1-fugue2.ly.txt Documentation/out/wtk1-prelude1.ly.txt BUGS TODO NEWS DEDICATION ANNOUNCE README
+%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/praeludium-fuga-E.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/twinkle-pop.ly input/twinkle.ly Documentation/introduction.doc Documentation/mudela-course.doc Documentation/mudela-man.doc
%doc Documentation/out/lelie_logo.gif
/usr/bin/convert-mudela
/usr/bin/mudela-book
#
TEXFILES = $(wildcard *.tex)
MFFILES = $(wildcard *.mf)
-MFDEPS = mf.dep
-EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) $(MFDEPS) TODO README
+MFDEPS = $(outdir)/mf.dep
+EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO README
#
FONT_FILES = $(wildcard *[0-9].mf)
all: $(LYTABLES) $(TEXTABLES)
localclean:
- rm -f $(LYTABLES) $(TEXTABLES) $(MFDEPS)
+ rm -f $(LYTABLES) $(TEXTABLES)
+
+localrealclean:
+ rm -f $(MFDEPS)
$(outdir)/%.dvi: %.mf
mf $<
- design decent macro for bulbed endings
- printer dependencies.
- y-refpoint for rests should be the 4th staffline (gclef: b')
+ - segno, coda
- versioning
- lo-res fixes.
- work out sizes of character fonts.
* coda signs.
- 128th flags
- include important spacing dims in fetalog
-
- more sizes, see readme
+%
+% feta-generic.mf -- implement
+%
+% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
+% music font
+%
+% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+%
if test = -1:
% input feta-bolletjes;
% input feta-banier;
% input feta-eindelijk;
- input feta-klef;
+% input feta-klef;
% input feta-toevallig;
-% input feta-schrift;
+ input feta-schrift;
fi
-%
+% -*- Fundamental -*- (emacs-20 mf mode mucks
% feta-schrift.mf -- implement scripts
%
-% source file of the Feta (Font-En-Tja) music font
+% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
+% music font
%
% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
% Jan Nieuwenhuizen <jan@digicash.com>
def draw_fermata =
- save alpha, radius, crook_thinness, crook_fatness, dot_diam;
-
+ save alpha, radius, crook_thinness, crook_fatness, dot_diam;
+
% [Wanske] and some Baerenreiter editions
% suggest ca 80 degrees iso half-circle
- alpha := 10;
+ alpha := 10;
- radius# = 1.25 interline#;
- crook_thinness# = 1.5stafflinethickness#;
- crook_fatness# = 4 stafflinethickness#;
+ radius# = 1.25 interline#;
+ crook_thinness# = 1.5stafflinethickness#;
+ crook_fatness# = 4 stafflinethickness#;
- radius# + crook_fatness#/2 = h#;
- radius# + crook_thinness#/2 = w#;
- set_char_box(w#, w#, crook_thinness#/2, h#);
-
- define_pixels(radius, crook_thinness, crook_fatness);
- dot_diam = 4/3 crook_fatness;
+ radius# + crook_fatness#/2 = h#;
+ radius# + crook_thinness#/2 = w#;
+ set_char_box(w#, w#, crook_thinness#/2, h#);
+
+ define_pixels(radius, crook_thinness, crook_fatness);
+ dot_diam = 4/3 crook_fatness;
- penpos1(crook_thinness, 0);
- penpos2(crook_fatness, -90);
- z1 = (-radius,0);
- z2 = (0, radius);
+ penpos1(crook_thinness, 0);
+ penpos2(crook_fatness, -90);
+ z1 = (-radius,0);
+ z2 = (0, radius);
- fill z1l{dir (-alpha-90)}..{dir (90-alpha)}z1r..
- {right}z2r -- z2l{left} .. cycle;
+ fill z1l{dir (-alpha-90)}..{dir (90-alpha)}z1r..
+ {right}z2r -- z2l{left} .. cycle;
- addto currentpicture also
- currentpicture xscaled -1;
+ addto currentpicture also
+ currentpicture xscaled -1;
- pickup pencircle scaled dot_diam;
- x4 =0;
- bot y4 = - crook_thinness/2;
- draw z4;
+ pickup pencircle scaled dot_diam;
+ x4 =0;
+ bot y4 = - crook_thinness/2;
+ draw z4;
enddef;
fet_beginchar("fermata up", "ufermata", "ufermata")
draw_bulb(-1, z13r, z13l, bulb_size * r_fatness, 1.5);
fet_endchar;
-fet_beginchar("organ-heel", "pedalheel", "pedalheel")
+
+def draw_heel =
save radius, thickness, wall;
radius# := .5 interline#;
draw z1{down} .. z2{down} .. z3{left};
addto currentpicture also currentpicture xscaled -1;
+
+enddef;
+
+
+fet_beginchar("left heel", "upedalheel", "upedalheel")
+ draw_heel;
labels(1,2,3);
fet_endchar;
-fet_beginchar("organ-toe", "pedaltoe", "pedaltoe")
+fet_beginchar("right heel", "dpedalheel", "dpedalheel")
+ draw_heel;
+ y_mirror_char;
+fet_endchar;
+
+def draw_toe =
save ht,wd;
thickness := 1.5 stafflinethickness;
draw z1 -- z2 -- z3;
+
+enddef;
+
+fet_beginchar("left toe", "upedaltoe", "upedaltoe")
+ draw_toe;
labels(1,2,3);
fet_endchar;
+fet_beginchar("right toe", "dpedaltoe", "dpedaltoe")
+ draw_toe;
+ y_mirror_char;
+fet_endchar;
fet_beginchar("Flageolet", "flageolet", "flageolet")
save height,width,thickness;
--- /dev/null
+% Gray font for Imagen 8/300; proofsheet resolution is 75 pixels per inch.
+% Each pixel is represented by a 4x4 square, with 4/16 of the dots on.
+
+
+font_identifier "GRAYIMAGEN";
+
+boolean lightweight;
+
+input grayf
+++ /dev/null
-
-# Automatically generated by mf-deps.py 0.2
-
-out/feta-beams16.log: feta-beams16.mf feta-watzieik.mf feta-params.mf
-out/feta-beams16.dvi: feta-beams16.mf feta-watzieik.mf feta-params.mf
-out/feta-beams16.2602gf: feta-beams16.mf feta-watzieik.mf feta-params.mf
-out/feta-beams16.tfm: feta-beams16.mf feta-watzieik.mf feta-params.mf
-out/feta-beams20.log: feta-beams20.mf feta-watzieik.mf feta-params.mf
-out/feta-beams20.dvi: feta-beams20.mf feta-watzieik.mf feta-params.mf
-out/feta-beams20.2602gf: feta-beams20.mf feta-watzieik.mf feta-params.mf
-out/feta-beams20.tfm: feta-beams20.mf feta-watzieik.mf feta-params.mf
-out/feta-beams26.log: feta-beams26.mf feta-watzieik.mf feta-params.mf
-out/feta-beams26.dvi: feta-beams26.mf feta-watzieik.mf feta-params.mf
-out/feta-beams26.2602gf: feta-beams26.mf feta-watzieik.mf feta-params.mf
-out/feta-beams26.tfm: feta-beams26.mf feta-watzieik.mf feta-params.mf
-out/feta-black16.log: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-black16.dvi: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-black16.2602gf: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-black16.tfm: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-braces16.log: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-braces16.dvi: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-braces16.2602gf: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-braces16.tfm: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-braces20.log: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-braces20.dvi: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-braces20.2602gf: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-braces20.tfm: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf
-out/feta-din10.log: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
-out/feta-din10.dvi: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
-out/feta-din10.2602gf: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
-out/feta-din10.tfm: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf
-out/feta-nummer10.log: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer10.dvi: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer10.2602gf: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer10.tfm: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer12.log: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer12.dvi: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer12.2602gf: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer12.tfm: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer3.log: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer3.dvi: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer3.2602gf: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer3.tfm: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer4.log: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer4.dvi: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer4.2602gf: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer4.tfm: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer5.log: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer5.dvi: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer5.2602gf: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer5.tfm: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer6.log: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer6.dvi: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer6.2602gf: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer6.tfm: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer7.log: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer7.dvi: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer7.2602gf: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer7.tfm: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer8.log: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer8.dvi: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer8.2602gf: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-nummer8.tfm: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf
-out/feta-test16.log: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-test16.dvi: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-test16.2602gf: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-test16.tfm: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-test20.log: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-test20.dvi: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-test20.2602gf: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta-test20.tfm: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta11.log: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta11.dvi: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta11.2602gf: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta11.tfm: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta13.log: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta13.dvi: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta13.2602gf: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta13.tfm: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta16.log: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta16.dvi: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta16.2602gf: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta16.tfm: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta19.log: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta19.dvi: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta19.2602gf: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta19.tfm: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta20.log: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta20.dvi: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta20.2602gf: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta20.tfm: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta23.log: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta23.dvi: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta23.2602gf: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta23.tfm: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta26.log: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta26.dvi: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta26.2602gf: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
-out/feta26.tfm: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf
\octave c'';
\textstyle "italic";
r16\p_"legato"\< ['g-1( c-3 )e-5] r ['g-1( c )e]
- r [g( c )d] r ['b-1( d-2 \!)g-5] |
+ r ['g( c )d] r ['b-1( d-2 \!)g-5] |
r\mf ['a( d-2 ) g-5] r ['a(\< d )f-4]
r ['a( d )e-3] r [c-1( e-2 \!)a-5] |
r\f ['b e a-5] r ['b e-3 g-5]
% f4-1 e d-3\tr c |
f4-1 e d-3 c |
% g( )'g g\pr-"(#)"( )'g |
- g( )'g g-"(\\textsharp)"( )'g |
- % g\pr-"(\\textsharp)"( )'g g\pr-"(\\textsharp)"( )'g |
- g-"(\\textsharp)"( )'g g-"(\\textsharp)"( )'g |
+ g ~ 'g g-"(\\textsharp)" ~ 'g |
+ % g\pr-"(\\textsharp)" ~ 'g g\pr-"(\\textsharp)" ~ 'g |
+ g-"(\\textsharp)" ~ 'g g-"(\\textsharp)" ~ 'g |
% ugh, f should be at upper staff
g r r16 ['g-5( 'b-4 d] )f-1 s s s |
s [g-5( b-4 d'-2] )f'-1 s s s s \clef violin; [g'-4 b'-2 d''-1]
{ \stemup; c2 r4 < {c-5 ~ c8} {'a4 ~ 'a8} > }
{ \stemdown; c2 r4 'e4 ~ 'e8 }
>
+ \stemboth;
['d-1\p( 'fis-2 'a-4] ['fis-2 'd-1 c-5 'a-3] |
[)'b-4\< 'g-1( 'b-2 d-4] [ 'b-2 'g-1 f!-5 d-3] |
[)e-4 'g-1( c-2 e-4] [c-2 'g g-5 e-3] |
% [g32-1( fis-2 g8.-1] ) 'g4 g( )'g\mr |
% my edition has mordents on every g here
- [g32-1( fis-2 g8.-1] ) 'g4 g( )'g |
+ [g32-1( fis-2 g8.-1] ) 'g4 g ~ 'g |
% 'g( )g\mr 'g( )g\mr |
- g( )'g g( )'g |
- g( )'g g( )'g |
+ g ~ 'g g ~ 'g |
+ g ~ 'g g ~ 'g |
[g8 'g-5( 'b-4 d-2] ['b-4 'g-5 f!-1 d-3] |
[)e-2 c-4 e-2 g-1] [e-3 c-5 c' e-4] |
\textstyle "finger";
s('bes d g)
- s(c fis a -"poco a poco cresc.")
+%# s(c fis a -"poco a poco cresc.")
+ t(c,fis,a,-"poco a poco cresc.")
s(d g bes)
s(d fis c')
s('fis 'a c)
s('fis 'a c)
r16\p ['g 'a c] ['b 'g 'b 'g] r 'g r 'g
- s('a c fis -"poco cresc.")
+%# s('a c fis -"poco cresc.")
+ t('a,c,fis,-"poco cresc.")
s(c fis a)
s('b d g)
s('b d f -"dim.")
'd4 r ['bes8 'g] |
'd4 r [es8 c] |
- 'd4 r [d8 c] |
+ 'd4 r [d8 a] |
'g4 r [es8 c] |
'g4 r [d8 'b] |
\stemup
)'fis4\p
\skip 4*7; |
+ \textstyle "finger";
d4.\mf cis8-"4\\_5" ~ cis 'b4-5 'a8-"4\\_5" ~ |
\textstyle "italic";
'a 'g4-5 'fis8-4 ~ ['fis16 'fis-4-"dim." 'e-3 'd-2]
'b4-5 'a ~ ['a8 'g-5 ~] ['g16 'fis8-4 'e'16-3] |
['fis8-4 'e-5~] ['e 'd-5~] 'd4 'cis-4 |
'd2\p-"rall." ~ ['d16 ''a-2( ''b-3 'cis-4] )'d4-5 |
+ \bar "|.";
}
two = \melodic{
\textstyle "finger";
% ugh: koor
% \translator Staff=bass \octave c; \stemup
+ \stemup;
fis4-1( e8-2 a4 a4 gis8-2 |
) a8
\translator Staff=treble \octave c''; \stemdown
'a4 'a8 'b4.-"2\\_1" cis8 ~ |
cis8
\translator Staff=bass \octave c; \stemup
- a8 ~ [a d'] ~ d' d'4-> c'8 |
+ a8 ~ [a d'] ~ d' d'4-> cis'8 |
d'8
\translator Staff=treble \octave c''; \stemdown
d4-> cis8-1 ~ cis 'b4-1 'b8 |
r8 'a4 'a8
\translator Staff=bass \octave c; \stemup
[g'8-1( fis'-2] )e'4-1 ~ |
- e'4 d' ~ [d'16 d-1 cis'-2 g-1] cis'4-2 ~ |
- [c'8 a-3] d'4.-1 d'4-> cis'8-2 |
+ e'4 d' ~ [d'16 d'-1 cis'-2 b-1] cis'4-2 ~ |
+ [cis'8 a-3] d'4.-1 d'4^> cis'8-2 |
\translator Staff=treble \octave c''; \stemdown
'd4
\stemboth
- r16 [''b-1\< d-2 ''b~] <'g4-5 'e-3 ''b>
+ r16 [''b-1\< 'd-2 ''b~] <'g4-5 'e-3 ''b>
r16 ['cis-1 'e-2 \!'cis~] |
<'a4-5 'f-3 'cis> r16 ['d-1 'fis-2 'd~] <'b4-5 'g-3 'd>
r16 ['fis-1 'a 'fis~] |
}
>
[g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] |
- [g g-1 fis-2 e-1] fis-2 ~ fis2
+ [g g-1 fis-2 e-1] fis4-2 ~ fis2
+ \bar "|.";
}
three = \melodic{
[fis-2 g a-2 fis-4] |
)fis16 ['g( 'b 'g] [d-2 e fis-2 d-4] [)g8-. 'g-.] r16 [cis-4( e cis] |
[)fis8-. 'fis-.] \stemdown r16 ['b-4( d 'b] [)e8-. 'e-.]
- r16 ['a-4 cis a] |
+ r16 ['a-4 cis 'a] |
\stemboth
[d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 'a-5 'b cis]
[d-2 e fis-2 d-4] |
- [g8 e-3] \stemdown [a 'a] ['b8.-4 'g16-5] a4-4 |
+ [g8 e-3] \stemdown [a 'a] ['b8.-4 'g16-5] 'a4-4 |
[d8-5 a-2~] [a g-3~] [g g-3] fis4-4 |
\stemup
- r16 [g-2 b-1 g-3] [b'8.-1 c'16-1] [b8.-2 bes16-3] [a8-1 g] |
+ r16 [g-2 b-1 g-3] [d'8.-1 c'16-1] [b8.-2 bes16-3] [a8-1 g] |
\stemdown
r16 ['a-2 cis!-1 a-2] [d-1 e fis d] [e8-1 d-2] [e-1 'a-2] |
[d 'a-2~] ['a16 'a-2 'b cis-2] d2 |
\paper{
\paper_twenty
linewidth= 195.\mm;
+% arithmetic_basicspace = 2.;
+% arithmetic_multiplier = 6.\pt;
+ arithmetic_basicspace = 3.;
+ arithmetic_multiplier = 6.\pt;
}
\midi{
\tempo 4 = 110;
\multi 2 <
{
\stemup
-% c4\mr^"(\\textsharp)"\p r r |
-% c4\mr^"(\\textsharp)" r r
- c4^"(\\textsharp)"\p r r |
- c4^"(\\textsharp)" r r
+% c'4\mr^"(\\textsharp)"\p r r |
+% c'4\mr^"(\\textsharp)" r r
+ c'4^"(\\textsharp)"\p r r |
+ c'4^"(\\textsharp)" r r
}
{
\stemdown
a4 r r
}
> |
+ \stemboth;
[a'8\mf( es'-3\> d' c' bes!-3 a] |
[g fis-3 e!-2 d-1 c'-4 \!a] |
[)bes32(\p a bes16] [d'8-5 bes-3 g-1] )g'4 |
[)a-2 c'-4( a f] ) f'4 |
% r8 [c'-5 bes a g\tr f] |
r8 [c'-5 bes a g f] |
- [g-2 bes-4 a g fis-1 e-2] |
+ [g-2 bes-4 a g f-1 e-2] |
[f-3 d-1 f-2 a-3 d'-5 g-2] |
\multi 2 <
{
\stemup
- [cis'32-4 b cis'16 e'8-5-"poco cresc." cis-3 a e' cis]
+ [cis'32-4 b cis'16 e'8-5-"poco cresc." cis'-3 a e' cis']
}
{
\stemdown
[d-1 a-5 f-3 d-1 cis-2 d-1] |
[e-3\< g-5 e-3 'bes-1 g-5 e-3] |
['bes-1 g-5 e-3 \!cis-2 'a-1 g-5] |
- [f16-4\mf d-2 c-1 'bes-3] s4 s |
+ [f16-4\mf d-2 c-1 'bes-3] /stemup 'a-2 s16 s8 s4 |
% ugh
% s1 |
s4 s4 s4 |
- s4 s16 [d16-1-"m.d." f-2 a-4] [d-2-"m.g." f a] \stemup d'-1 |
+ s4 s16 [d16-1-"m.d." f-2 a-4] \stemdown [d-2-"m.g." f a] \stemup d'-1 |
+ \stemboth
[f' a'-4 f' d'] [f'-4 d' b d'-5] [gis-2 b a g] |
<g'!4.-5\f e' a> a'8-5
\multi 2 <
gis4-3 r r |
e-4( )gis-2 e |
[a8-4 e'-1 c'-2 a-4 e'-1 c'-2 ] |
+ [g!-5 es'-1 c'-1 g-5 es'-1 c'-1 ] |
fis4-5 r r
d-4( ) fis d-5 |
-% g\mr-"(\textsharp)" r r f!8 |
- g-"(\textsharp)" r r8 f! |
+% g\mr-"(\\textsharp)" r r f!8 |
+ g-"(\\textsharp)" r r8 f! |
[e32 f e8.] r4 r |
% f\pr r r8 e |
f r r8 e |
d4 r8 [f-1 e d] |
[e-2 d-3 cis-4 e-1 d-2 cis-3] |
- d4-2( )c! 'b-4 |
- 'a( )a a |
- 'a( )a a |
- 'a( )a a |
- 'a( )a a |
- 'b r r |
- 'b-5( )b 'b |
+ d4-2( )c! 'bes-4 |
+ 'a( )a 'a |
+ 'a( )a 'a |
+ 'a( )a 'a |
+ 'a( )a 'a |
+ 'bes r r |
+ 'bes-5( )bes 'bes |
'a r r |
'a-2( )d-1 'd |
'g r r |
- 'g( )g g |
+ 'g( )g 'g |
'g r r |
- 'g( )g g |
+ 'g( )g 'g |
'a r r |
- 'a( )a a |
+ 'a( )a 'a |
'a r r |
- 'a( )a a |
+ 'a( )a 'a |
'cis r r |
'cis( )cis 'cis |
'd-4 s16
\stemdown
% [d-4-"m.g." f-"cresc."] a s s8 s4\dep |
[d-4-"m.g." f-"cresc."] a s s8 s4-"*" |
+ \stemboth
% ugh, whole rest has duration of one bar
% r1 |
r4 r r |
\paper{
\paper_twenty
linewidth= 195.\mm;
+% arithmetic_basicspace = 2.;
+% arithmetic_multiplier = 6.\pt;
+ arithmetic_basicspace = 2.;
+ arithmetic_multiplier = 8.\pt;
}
\midi{
\tempo 4 = 90;
\octave c';
\skip 4*4; |
\stemup
- r4 d2-5( cis4-4 |
+ r4 d'2-5( cis'4-4 |
\stemboth
- [)d16-5\mf a'-4( g' f'] [e' f'-4 cis'-2 d'-1]
- [e32-3 d e8 f16] [d'8.-1 cis'16-3] |
+ [)d'16-5\mf a'-4( g' f'] [e' f'-4 cis'-2 d'-1]
+ [e'32-3 d' e'8 f'16] [d'8.-1 cis'16-3] |
\stemup
- )cis'4\> ~ [cis16 a \!d'8 ~] d4 c-5 |
+ )cis'4\> ~ [cis'16 a \!d'8 ~] d'4 c'-5 |
b2-4 ~ b4 a-5 ~ |
[a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ |
[\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] |
[f16 f-3 e d] b4 a-5 g-5 |
- fis4-4 g r8\<-"rall." [g16-1( bes-2] r16 [bes-2 a-2 \!g-1] |
- ) d'1-5
+ fis4-4 g r8\<-"rall." [g16-1( bes-2] \!e'4-5\> |
+ \!)d'1-5
+ \bar "|.";
}
two = \melodic{
\octave c';
r16\p [d'-5( c'-4 bes-3] [a-2 bes-3 f-1 g-2]
[a32-3 g a8 bes16-1] [g8. f16-1] |
+ \stemdown
)f2 e2 |
\translator Staff=bass \octave c; \stemup
r4 a-1 bes-2 b-1 |
s4 [e32 d e8.~] e4 d4 ~ |
d4. [cis16-2 d-1] cis4 d-1 ~ |
d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] |
- r16 [e-3 d-1 c!-2] ['bes! d8.] r8 e'4-5 |
+ r16 [e-3 d-1 c!-2] ['bes! d8.] s4 r16 [bes-2 a-2 \!g-1] |
fis1-2
}
\octave c;
\stemup
f2-1( e-2 |
- [)d16 b'( c' bes] [a-4 bes-2 f-5 g-4]
+ \stemboth;
+ [)d16 d'( c' bes] [a-4 bes-2 f-5 g-4]
[a32 g a8 bes16-2]
[g8.-4 f16-5] |
)f2-5 g4-4 gis |
a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] |
[e32 d e8 f16] [d8.-4 c16-5] \stemboth )c4.-5 d8-4 |
+ \stemdown
e4 ~ [e16 f-2( e-3 d-4] [cis 'a 'b cis-3] [d-4 e-3 f-2 d-4] |
\textstyle "finger";
)'bes!2-"5\\_4" 'a ~ |
- a a |
+ 'a 'a |
'd cis-5 |
- b1-2
+ a1-2
+ \bar "|.";
}
four = \melodic{
\octave c;
+ \stemdown;
d2-3 cis-4 |
- \skip 4*16;
+ \skip 4*12;
+ \translator Staff=treble \octave c'; \stemup \property Voice.hshift = 1
+ a4 gis-2 ~ [gis16 gis-3 fis e]
+ \skip 4*1;
+ \translator Staff=bass \octave c; \stemdown \property Voice.hshift = 0
\stemup
b2-1 a-1 |
g a4. [gis16 a] |
\type Staff=treble <
\global
% huh? try these iso directly!
- \lh
-% \one
-% \two
+% \lh
+ \multi 2 <
+ \one
+ \two
+ >
>
\type Staff=bass <
\global
- \rh
+% \rh
% or try \two having here, iso above!
-% \three
-% \four
+ \clef "bass";
+ \multi 2 <
+ \three
+ \four
+ >
>
>
\paper{
linewidth= 195.\mm;
}
\midi{
- \tempo 4 = 110;
+ \tempo 4 = 40;
}
}
\fetdef\downbow{39}
\fetdef\turn{40}
\fetdef\trill{41}
-\fetdef\pedalheel{42}
-\fetdef\pedaltoe{43}
-\fetdef\flageolet{44}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
% flags
-\fetdef\eighthflag{45}
-\fetdef\sixteenthflag{46}
-\fetdef\thirtysecondflag{47}
-\fetdef\sixtyfourthflag{48}
-\fetdef\deighthflag{49}
-\fetdef\dsixteenthflag{50}
-\fetdef\dthirtysecondflag{51}
-\fetdef\dsixtyfourthflag{52}
+\fetdef\eighthflag{47}
+\fetdef\sixteenthflag{48}
+\fetdef\thirtysecondflag{49}
+\fetdef\sixtyfourthflag{50}
+\fetdef\deighthflag{51}
+\fetdef\dsixteenthflag{52}
+\fetdef\dthirtysecondflag{53}
+\fetdef\dsixtyfourthflag{54}
% clefs
-\fetdef\altoclef{53}
-\fetdef\caltoclef{54}
-\fetdef\bassclef{55}
-\fetdef\cbassclef{56}
-\fetdef\violinclef{57}
-\fetdef\cviolinclef{58}
+\fetdef\altoclef{55}
+\fetdef\caltoclef{56}
+\fetdef\bassclef{57}
+\fetdef\cbassclef{58}
+\fetdef\violinclef{59}
+\fetdef\cviolinclef{60}
\fetdef\downbow{39}
\fetdef\turn{40}
\fetdef\trill{41}
-\fetdef\pedalheel{42}
-\fetdef\pedaltoe{43}
-\fetdef\flageolet{44}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
% flags
-\fetdef\eighthflag{45}
-\fetdef\sixteenthflag{46}
-\fetdef\thirtysecondflag{47}
-\fetdef\sixtyfourthflag{48}
-\fetdef\deighthflag{49}
-\fetdef\dsixteenthflag{50}
-\fetdef\dthirtysecondflag{51}
-\fetdef\dsixtyfourthflag{52}
+\fetdef\eighthflag{47}
+\fetdef\sixteenthflag{48}
+\fetdef\thirtysecondflag{49}
+\fetdef\sixtyfourthflag{50}
+\fetdef\deighthflag{51}
+\fetdef\dsixteenthflag{52}
+\fetdef\dthirtysecondflag{53}
+\fetdef\dsixtyfourthflag{54}
% clefs
-\fetdef\altoclef{53}
-\fetdef\caltoclef{54}
-\fetdef\bassclef{55}
-\fetdef\cbassclef{56}
-\fetdef\violinclef{57}
-\fetdef\cviolinclef{58}
+\fetdef\altoclef{55}
+\fetdef\caltoclef{56}
+\fetdef\bassclef{57}
+\fetdef\cbassclef{58}
+\fetdef\violinclef{59}
+\fetdef\cviolinclef{60}
\fetdef\downbow{39}
\fetdef\turn{40}
\fetdef\trill{41}
-\fetdef\pedalheel{42}
-\fetdef\pedaltoe{43}
-\fetdef\flageolet{44}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
% flags
-\fetdef\eighthflag{45}
-\fetdef\sixteenthflag{46}
-\fetdef\thirtysecondflag{47}
-\fetdef\sixtyfourthflag{48}
-\fetdef\deighthflag{49}
-\fetdef\dsixteenthflag{50}
-\fetdef\dthirtysecondflag{51}
-\fetdef\dsixtyfourthflag{52}
+\fetdef\eighthflag{47}
+\fetdef\sixteenthflag{48}
+\fetdef\thirtysecondflag{49}
+\fetdef\sixtyfourthflag{50}
+\fetdef\deighthflag{51}
+\fetdef\dsixteenthflag{52}
+\fetdef\dthirtysecondflag{53}
+\fetdef\dsixtyfourthflag{54}
% clefs
-\fetdef\altoclef{53}
-\fetdef\caltoclef{54}
-\fetdef\bassclef{55}
-\fetdef\cbassclef{56}
-\fetdef\violinclef{57}
-\fetdef\cviolinclef{58}
+\fetdef\altoclef{55}
+\fetdef\caltoclef{56}
+\fetdef\bassclef{57}
+\fetdef\cbassclef{58}
+\fetdef\violinclef{59}
+\fetdef\cviolinclef{60}
\fetdef\downbow{39}
\fetdef\turn{40}
\fetdef\trill{41}
-\fetdef\pedalheel{42}
-\fetdef\pedaltoe{43}
-\fetdef\flageolet{44}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
% flags
-\fetdef\eighthflag{45}
-\fetdef\sixteenthflag{46}
-\fetdef\thirtysecondflag{47}
-\fetdef\sixtyfourthflag{48}
-\fetdef\deighthflag{49}
-\fetdef\dsixteenthflag{50}
-\fetdef\dthirtysecondflag{51}
-\fetdef\dsixtyfourthflag{52}
+\fetdef\eighthflag{47}
+\fetdef\sixteenthflag{48}
+\fetdef\thirtysecondflag{49}
+\fetdef\sixtyfourthflag{50}
+\fetdef\deighthflag{51}
+\fetdef\dsixteenthflag{52}
+\fetdef\dthirtysecondflag{53}
+\fetdef\dsixtyfourthflag{54}
% clefs
-\fetdef\altoclef{53}
-\fetdef\caltoclef{54}
-\fetdef\bassclef{55}
-\fetdef\cbassclef{56}
-\fetdef\violinclef{57}
-\fetdef\cviolinclef{58}
+\fetdef\altoclef{55}
+\fetdef\caltoclef{56}
+\fetdef\bassclef{57}
+\fetdef\cbassclef{58}
+\fetdef\violinclef{59}
+\fetdef\cviolinclef{60}
\fetdef\downbow{39}
\fetdef\turn{40}
\fetdef\trill{41}
-\fetdef\pedalheel{42}
-\fetdef\pedaltoe{43}
-\fetdef\flageolet{44}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
% flags
-\fetdef\eighthflag{45}
-\fetdef\sixteenthflag{46}
-\fetdef\thirtysecondflag{47}
-\fetdef\sixtyfourthflag{48}
-\fetdef\deighthflag{49}
-\fetdef\dsixteenthflag{50}
-\fetdef\dthirtysecondflag{51}
-\fetdef\dsixtyfourthflag{52}
+\fetdef\eighthflag{47}
+\fetdef\sixteenthflag{48}
+\fetdef\thirtysecondflag{49}
+\fetdef\sixtyfourthflag{50}
+\fetdef\deighthflag{51}
+\fetdef\dsixteenthflag{52}
+\fetdef\dthirtysecondflag{53}
+\fetdef\dsixtyfourthflag{54}
% clefs
-\fetdef\altoclef{53}
-\fetdef\caltoclef{54}
-\fetdef\bassclef{55}
-\fetdef\cbassclef{56}
-\fetdef\violinclef{57}
-\fetdef\cviolinclef{58}
+\fetdef\altoclef{55}
+\fetdef\caltoclef{56}
+\fetdef\bassclef{57}
+\fetdef\cbassclef{58}
+\fetdef\violinclef{59}
+\fetdef\cviolinclef{60}
\fetdef\downbow{39}
\fetdef\turn{40}
\fetdef\trill{41}
-\fetdef\pedalheel{42}
-\fetdef\pedaltoe{43}
-\fetdef\flageolet{44}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
% flags
-\fetdef\eighthflag{45}
-\fetdef\sixteenthflag{46}
-\fetdef\thirtysecondflag{47}
-\fetdef\sixtyfourthflag{48}
-\fetdef\deighthflag{49}
-\fetdef\dsixteenthflag{50}
-\fetdef\dthirtysecondflag{51}
-\fetdef\dsixtyfourthflag{52}
+\fetdef\eighthflag{47}
+\fetdef\sixteenthflag{48}
+\fetdef\thirtysecondflag{49}
+\fetdef\sixtyfourthflag{50}
+\fetdef\deighthflag{51}
+\fetdef\dsixteenthflag{52}
+\fetdef\dthirtysecondflag{53}
+\fetdef\dsixtyfourthflag{54}
% clefs
-\fetdef\altoclef{53}
-\fetdef\caltoclef{54}
-\fetdef\bassclef{55}
-\fetdef\cbassclef{56}
-\fetdef\violinclef{57}
-\fetdef\cviolinclef{58}
+\fetdef\altoclef{55}
+\fetdef\caltoclef{56}
+\fetdef\bassclef{57}
+\fetdef\cbassclef{58}
+\fetdef\violinclef{59}
+\fetdef\cviolinclef{60}
\fetdef\downbow{39}
\fetdef\turn{40}
\fetdef\trill{41}
-\fetdef\pedalheel{42}
-\fetdef\pedaltoe{43}
-\fetdef\flageolet{44}
+\fetdef\upedalheel{42}
+\fetdef\dpedalheel{43}
+\fetdef\upedaltoe{44}
+\fetdef\dpedaltoe{45}
+\fetdef\flageolet{46}
% flags
-\fetdef\eighthflag{45}
-\fetdef\sixteenthflag{46}
-\fetdef\thirtysecondflag{47}
-\fetdef\sixtyfourthflag{48}
-\fetdef\deighthflag{49}
-\fetdef\dsixteenthflag{50}
-\fetdef\dthirtysecondflag{51}
-\fetdef\dsixtyfourthflag{52}
+\fetdef\eighthflag{47}
+\fetdef\sixteenthflag{48}
+\fetdef\thirtysecondflag{49}
+\fetdef\sixtyfourthflag{50}
+\fetdef\deighthflag{51}
+\fetdef\dsixteenthflag{52}
+\fetdef\dthirtysecondflag{53}
+\fetdef\dsixtyfourthflag{54}
% clefs
-\fetdef\altoclef{53}
-\fetdef\caltoclef{54}
-\fetdef\bassclef{55}
-\fetdef\cbassclef{56}
-\fetdef\violinclef{57}
-\fetdef\cviolinclef{58}
+\fetdef\altoclef{55}
+\fetdef\caltoclef{56}
+\fetdef\bassclef{57}
+\fetdef\cbassclef{58}
+\fetdef\violinclef{59}
+\fetdef\cviolinclef{60}
% transplant a TeX dimension into the PS output.
\def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\the\csname #1\endcsname) deftexdimen}}
-\def\turnOnPostScript{
+\def\turnOnPostScript{%
\def\embeddedps##1{%
% This sets CTM so that you get to the currentpoint
% by executing a 0 0 moveto
\special{ps: @beginspecial @setspecial ##1 @endspecial}
}
-
%
% width, slope, height
%
def
} def
}
-
-
+%
\PSsetTeXdimen{staffrulethickness}
\PSsetTeXdimen{staffheight}
\special{! %
-\def\turnOnExperimentalFeatures{
+\def\turnOnExperimentalFeatures{%
% draw a slur in embedded postscript
\special{ps:
}}
%% include file for LilyPond
%%
%% this file defines various macros to accomodate lilypond output
-
+%%
+%% let's not make par before endinput
+%
% TeXbook ex 7.7
\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
-
+%
% skip if included already
\def\SkipLilydefs{\endinput}
\ifundefined{EndLilyPondOutput}
\def\SkipLilydefs{}
\fi
\SkipLilydefs
-
+%
\ifundefined{mudelacopyright}
\def\mudelacopyright{\copyright\ \number\year}
\fi