From: Han-Wen Nienhuys Date: Wed, 11 Mar 1998 22:47:06 +0000 (+0100) Subject: release: 0.1.48 X-Git-Tag: release/0.1.48 X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=commitdiff_plain;h=c3e003dacb5689ffe384d3a2f2d5dc2afb9439bb;p=lilypond.git release: 0.1.48 --- diff --git a/.dstreamrc b/.dstreamrc index d92dd4797c..d59bde6e3e 100644 --- a/.dstreamrc +++ b/.dstreamrc @@ -7,13 +7,13 @@ Dstream 1 InitParser 1 Parser 1 InitDeclarations 1 -Declarations 1 +Declarations 0 # FlexLexer debug InitLexer 1 Lexer 1 -walking 1 +walking 0 # flower lib File_path 1 diff --git a/AUTHORS.txt b/AUTHORS.txt index a57e2b1cb2..e69de29bb2 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,132 +0,0 @@ - - - -AUTHORS(1) LilyPond documentation AUTHORS(1) - - -NAME - AUTHORS - who did what on GNU LilyPond? - -DESCRIPTION - This file lists authors of GNU LilyPond, and what they - wrote. - -AUTHORS - o Han-Wen Nienhuys , - http://www.stack.nl/~hanwen - Main author. - - o Jan Nieuwenhuizen , - http://www.digicash.com/~jan - Main author - -CONTRIBUTORS - o Mats Bengtsson , - parts of clef-reg.cc, clef-item.cc swedish notenames, - testing, general comments, duration logs/longa/brevis - etc - - o Jan Arne Fagertun , - TeX titling and lytodvi.sh - - o Shay Rojanski - Some mudela source. - - o Werner Lemberg , - misc bugfixes, some Beam and Stem code. - - o Donald Ervin Knuth, http://www.cs.stanford.edu/~? - mf/ital-*.mf (these were taken from the CM fonts) - - o Alexandre Oliva , - http://sunsite.unicamp.br/? - testing - - o Anthony Fok , - debian package: debian/* - - o Franc,ois Pinard , - Documentation/Vocab*, internationalization stuff - - o Neil Jerram . - Documentation/Vocab* - - o David R. Linn , - Mailing list maintenance. - - Your name could be here! If you want to help, then take a - look at the SMALLISH PROJECTS section of in the file TODO. - Some do not involve coding C++ - - - - -29/Jan/98 LilyPond 0.1.47 1 - - - - - -AUTHORS(1) LilyPond documentation AUTHORS(1) - - - [And of course we sincerely thank J.S.Bach, F.Schubert, T. - Merula and W.A.Mozart for their beautiful music] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -29/Jan/98 LilyPond 0.1.47 2 - - diff --git a/BUGS b/BUGS index 10c0b999d2..5f4755d57a 100644 --- a/BUGS +++ b/BUGS @@ -1,6 +1,31 @@ Document Really Ugly Bugs (coredumps, assert fails, etc) +\score{ + \melodic{ + [a8 a-2] /bla + } +} +koor.ly: 4: error: parse error, expecting `DIGIT' or `UNSIGNED': + [a8 a-2] /bla + +koor.ly: 5: error: Have to be in Lyric mode for lyrics: + } + +lilypond: parser.y:765: int yyparse(void *): Assertion `((My_lily_parser *) my_lily_parser_l)->post_reqs.empty ()' failed. +Aborted (core dumped) + + +[gcc 2.8.x/libstdc++ 2.8.x/libg++ 2.8.0] + +The latest gcc release causes lily to crash just after Interpreting +music: + +stacktrace looks something like: + + __DTOR_END__ () + __malloc () + [GNU libc] The GNU extension memmem() is known to be buggy on linux libc 5.0.9 diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod index ef6370c88a..88ddb2410a 100644 --- a/Documentation/AUTHORS.pod +++ b/Documentation/AUTHORS.pod @@ -10,7 +10,7 @@ This file lists authors of GNU LilyPond, and what they wrote. =over 4 -=item * Han-Wen Nienhuys , http://www.stack.nl/~hanwen +=item * Han-Wen Nienhuys , http://www.stack.nl/~hanwen Main author. diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index 33e6b0d44f..6aa4226af8 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -32,8 +32,7 @@ work in Windows NT/95, but we don't promise to support it. =item * -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. +GNU C++ v2.7 or better. =item * @@ -358,7 +357,7 @@ to edit the definitions in F. =head1 AUTHORS -Han-Wen Nienhuys +Han-Wen Nienhuys Jan Nieuwenhuizen diff --git a/Documentation/Makefile b/Documentation/Makefile index d6a4cf732e..412f90fac7 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -35,15 +35,18 @@ default: do-doc # XPMS=$(wildcard *.xpm) giffiles=$(XPMS:.xpm=.gif) - -gifs: $(addprefix $(outdir)/, $(giffiles)) +outgiffiles=$(addprefix $(outdir)/, $(giffiles)) EXTRA_DISTFILES = $(XPMS) $(DOCFILES) vocabulary-data vocabulary-forms.el + # don't do DVI files. They can only be made if lily is installed do-doc: $(TEXTFILES) +gifs: $(outgiffiles) + + html: $(HTMLFILES) htmldist: html @@ -62,7 +65,7 @@ localclean: -MAN1FILES = lilypond convert-mudela mi2mu mudela-book +MAN1FILES = lilypond convert-mudela mi2mu mudela-book ly2dvi MAN1GROFF = $(addprefix $(outdir)/, $(addsuffix .1,$(MAN1FILES))) localinstall: $(outdir)/lilypond.1 diff --git a/Documentation/Rules.make b/Documentation/Rules.make index c32f9214ff..dd04ca3604 100644 --- a/Documentation/Rules.make +++ b/Documentation/Rules.make @@ -16,7 +16,7 @@ $(outdir)/%.dvi: $(outdir)/%.mudtex mv $(notdir $@) $(outdir) $(outdir)/%.mudtex: %.doc - $(binout)/mudela-book --outdir=$(outdir)/ --outname=$(notdir $@) $< + $(binout)/mudela-book --noindex --outdir=$(outdir)/ --outname=$(notdir $@) $< $(outdir)/%.txt: $(outdir)/%.1 troff -man -Tascii $< | grotty -b -u -o > $@ @@ -24,7 +24,7 @@ $(outdir)/%.txt: $(outdir)/%.1 $(depth)/%.txt: $(outdir)/%.txt cp $< $@ -do_pod2html=$(pod2html) --infile $< --outfile=$@ +do_pod2html=$(pod2html) --noindex --infile $< --outfile=$@; sh $(depth)/bin/add-URLs.sh $@ # do this for perl 5.003 # do_pod2html=$(pod2html) $< # mv $(notdir $@) $(outdir)/ diff --git a/Documentation/index.pod b/Documentation/index.pod index 1bbba2ad37..2115ce220a 100644 --- a/Documentation/index.pod +++ b/Documentation/index.pod @@ -158,6 +158,13 @@ The manual page +=item * + +Easy titling for LilyPond + + =item * diff --git a/Documentation/introduction.doc b/Documentation/introduction.doc index 0b40054c99..05fdfff716 100644 --- a/Documentation/introduction.doc +++ b/Documentation/introduction.doc @@ -18,6 +18,8 @@ \author{Jan Nieuwenhuizen} \date{March 2, 1998} +\def\file#1{\verb+#1+} + % ugh: trick to get examples not generate par % these are for 16pt \def\mudelapaperlinewidth{-28.452756}% @@ -35,6 +37,9 @@ \def\mudelapaperinterbeam{3.140000}% \def\mudelapapergourlay_energybound{100000.000000}% \def\mudelapapergourlay_maxmeasures{14.000000}% +% huh? +% \def\exampleheight{2\mudelapaperbarsize pt} +\def\exampleheight{2cm} % ful of pars, needs the above \input lilyponddefs @@ -44,21 +49,19 @@ % generates par \turnOnPostScript% \def\turnOnPostScript{} +% generates par +\def\interscoreline{} % \begin{document} \maketitle -\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm} -\def\preexample{} +%\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm} +%\def\interexample{\hbox to10mm{\hfill\hbox to0pt{\hss\vbox to\exampleheight{\vss$\Longrightarrow$\vss}\hss}\hfill}} +\def\interexample{} +\def\preexample{\par} \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} @@ -68,44 +71,77 @@ This document should provide a gentle introduction to LilyPond's input language, Mudela. For completeness and nifty features see -\verb+input/*.ly+ +\file{input/*.ly} and -\verb+lily/parser.y, lily/lexer.l+. - - -\section{Notes: pitches and durations} - -\begin[fragment,verbatim]{mudela} +\file{lily/parser.y}, \file{lily/lexer.l}. +By tradition, Mudela files have the extension \file{.ly}. + +Mudela is an ascii script language +that is especially designed +to be easy to read and write. +In the following sections +the basic elements of Mudela are presented +in a series of simple examples. +Each example has +a verbatim snippet of Mudela% +% a snippet of Mudela as it's typed-in% +\footnote{ +In an effort not to bore you too much with details, +we leave-out some red tape +that's needed for a valid piece of Mudela. +Therefore, before you try-out any of the examples, +be sure to read the section `A complete example'.} +on the left +and the resulting fragment of music on the right +as it was produced by LilyPond. + +\section{Notes} + +Let's start with a single note, a quarter C + +\begin[fragment,verbatim,center]{mudela} c \end{mudela} -\begin[fragment,verbatim]{mudela} +Now that was easy and entering a scale is not much harder + +%\subsection{Pitches} + +\begin[fragment,verbatim,center]{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. +% \subsection{Durations} -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 +However, having only quarter notes may get a bit dull. +Durations are entered as their reciproce values +% a1 a2 a4 a a8 a a16 a a32 a a64 a a a a +\begin[fragment,verbatim,center]{mudela} +a1 a2 a4 a a8 a a16 a32 a64 \end{mudela} -note the explicit duration change for -the quarter e in the last measure. +note that you only have to specify +the duration when it changes: +Lily assumes a note has the same duration as the previous one. -Same for notes with flags -\begin[fragment,verbatim]{mudela} -a8 a16 a32 a64 a128 +Now we can already write a little tune +\begin[fragment,verbatim,center]{mudela} +c d e c | c d e c | e f g2 \end{mudela} - -\begin[fragment,verbatim]{mudela} +As you'll probably have guessed, +the vertical bar (pipe) \verb+|+ may be used to mark +measures. + +In the scale shown above +we left-out the last c note of the next octave. +Postfixing the pitch with a quote \verb+'+ +produces a note by one octave higher +\begin[fragment,verbatim,center]{mudela} c c' c'' \end{mudela} -\begin[fragment,verbatim]{mudela} +Prefixing the pitch with a quote \verb+'+ +produces a note by one octave lower +\begin[fragment,verbatim,center]{mudela} a 'a ''a \end{mudela} @@ -113,79 +149,269 @@ a 'a ''a A tie connects two adjacent noteheads -\begin[fragment,verbatim]{mudela} -c' ~ c +\begin[fragment,verbatim,center]{mudela} +e' ~ e \end{mudela} Whereas a slur rather connects `chords', -and tries to avoid crossing stems. +and tries to avoid crossing stems -\begin[fragment,verbatim]{mudela} -c'( )c +\begin[fragment,verbatim,center]{mudela} +e'( )e \end{mudela} -A (legato) slur can span several notes -\begin[fragment,verbatim]{mudela} -c'( d e )c +And of course, such a (legato) slur can span several notes +\begin[fragment,verbatim,center]{mudela} +c( d e )f \end{mudela} -\section{Beams and plets} +\section{Beams and Plets} -\begin[fragment,verbatim]{mudela} +A beam is +\begin[fragment,verbatim,center]{mudela} [a8 a] [a16 a a a] \end{mudela} -% [2/3 a8 a a]1/1 -\begin[fragment,verbatim]{mudela} +Here's a beamed triplet +\begin[fragment,verbatim,center]{mudela} [/3 a8 a a]/1 \end{mudela} -\begin[fragment,verbatim]{mudela} +a triplet without a beam +\begin[fragment,verbatim,center]{mudela} \[/3 a4 a8\] \end{mudela} +and a combination +\begin[fragment,verbatim,center]{mudela} +[/3 a8 a16 a] a8 \] +\end{mudela} + +Abbreviations +\begin[fragment,verbatim,center]{mudela} +c1:16 [:16 e1 g] +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +c4:32 [:16 c8 d8] +\end{mudela} + +\section{Notenames} + +Lily has predefined sets of notenames +for various languages% +\footnote{These are Dutch, English, German, Italian and Swedish. +Simply include the language specific init file \file{}.}. +The default set are the ones we like best are the Dutch notenames. + +A sharp is formed by adding \verb+is+ +\begin[fragment,verbatim,center]{mudela} +cis dis eis fis gis ais bis +\end{mudela} + +and a flat is formed by adding \verb+es+% +%\footnote{Exceptions: \verb+es+ and \verb+as+.} +\footnote{Exceptions: {\tt es} and {\tt as}.} +\begin[fragment,verbatim,center]{mudela} +ces des es fes ges as bes +\end{mudela} + +With the obvious names for double sharps +\begin[fragment,verbatim,center]{mudela} +cisis disis eisis fisis gisis aisis bisis +\end{mudela} + +and double flats +\begin[fragment,verbatim,center]{mudela} +ceses deses eses feses geses ases beses +\end{mudela} +See why we like-em? + +There are two special `notenames', the rest +\begin[fragment,verbatim,center]{mudela} +r16 [a a a] +\end{mudela} + +and the space +\begin[fragment,verbatim,center]{mudela} +a2 s-"diminuendo" | a +\end{mudela} + + \section{Commands} -\begin[fragment,verbatim]{mudela} +\begin[fragment,verbatim,center]{mudela} \clef "bass"; 'c \end{mudela} -\begin[fragment,verbatim]{mudela} +and a clef-change +\begin[fragment,verbatim,center]{mudela} +\clef "violin"; f' e' \clef "alto"; d' c' +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} \meter 3/4; c g g | \end{mudela} -\begin[fragment,verbatim]{mudela} +\begin[fragment,verbatim,center]{mudela} \key fis cis; 'g 'a 'b cis d e fis g' \end{mudela} +Note how Mudela allows you to +convey a musical message +rather than forces you to produce a list of typesetting commands. +If the music a \verb+cis+, you type a \verb+cis+. +Depending on the key and context of the note +Lily will determine what accidentals to typeset. + +A reminder accidental can be forced by +using an exclamation mark \verb+!+ +on a pitch a reminder accidental +\begin[fragment,verbatim,center]{mudela} +cis d e cis | c! d e c | +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +\meter 2/4; +\bar "|:"; c c \bar ":|:"; c c \bar ":|"; c c \bar "|."; +\end{mudela} -\section{Example} +\section{Scripts} + +Staccato may be abbreviated +\begin[fragment,verbatim,center]{mudela} +a-\staccato a-. +\end{mudela} + +Marcato +\begin[fragment,verbatim,center]{mudela} +a-\marcato a-| +\end{mudela} + +Staccatissimo +\begin[fragment,verbatim,center]{mudela} +a-\staccatissimo a-^ +\end{mudela} + +Sforzato +% duh? +% a-\sforzato a-> +\begin[fragment,verbatim,center]{mudela} +a-\accent a-> +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +a-\fermata +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +a-\fermata +\end{mudela} + +Dynamics from pianississimo upto mezzopiano +\begin[fragment,verbatim,center]{mudela} +a\ppp a\pp a\p a\mp +\end{mudela} + +from fortississimo downto mezzoforte +\begin[fragment,verbatim,center]{mudela} +a\fff a\ff a\f a\mf +\end{mudela} + +sforzando, sforzato and rinforzato +% huh? +% a\sfz a\sf a\rf +\begin[fragment,verbatim,center]{mudela} +a\sfz a\sf +\end{mudela} + +Fingering +\begin[fragment,verbatim,center]{mudela} +[e8-1 c'-5 g-3 f-2] a''-\flageolet +\end{mudela} + +Bowing +\begin[fragment,verbatim,center]{mudela} +c-\upbow d-\downbow +\end{mudela} + +Footwork +\begin[fragment,verbatim,center]{mudela} +\clef "bass"; \octave c; + 'b4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] +\end{mudela} + +\section{Chords and Voices} + +Here's a simple chord +\begin[fragment,verbatim,center]{mudela} + +\end{mudela} + +here are a few +\begin[fragment,verbatim,center]{mudela} +< + { c()d()c } + { e()f()e } + { g()a()g } +> +\end{mudela} + +and similarly voices +\begin[fragment,verbatim,center]{mudela} +< + { \voiceone c g c g } + { \voicetwo 'c2 'g2 } +> +\end{mudela} + + +\section{A complete example} +%\label{se:complete} A Mudela file needs some red tape -\begin[verbatim]{mudela} +\begin[verbatim,center]{mudela} \score{ - \melodic{ + \melodic { \octave c'; - c d e c + c d e c | + c d e c | + e f g2 | } } \end{mudela} \section{Lyrics} -% this nesting syntax sucks -\begin[verbatim]{mudela} +\begin[verbatim,center]{mudela} \score{ < - \melodic \type Staff = bla < \melodic{\octave c'; c d e c} > -% huh? -% \lyric \type Lyrics = bli < \lyric{Fre- re Ja- que} > - > + \melodic{ + \octave c'; + c d e c | c d e c | + e f g2 | e4 f g2 + \bar "|."; + } + \type Lyrics \lyric{ + Fr\`e-4 re Ja- que + Fr\`e- re Ja- que + Dor- mez vous?2 + Dor-4 mez vous?2 + } + > } \end{mudela} \section{Variables} + +\section{Ly2dvi} +Check-out this handy little script +that not only may save you quite some keystrokes, +but produces titles and takes care of +margins and (hopefully) papersizes. +See \file{ly2dvi (1)}. + \end{document} diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod index 97e7854e23..0e685b58f0 100644 --- a/Documentation/lilypond.pod +++ b/Documentation/lilypond.pod @@ -136,7 +136,7 @@ information, and small contributions. =item * -Han-Wen Nienhuys , http://www.stack.nl/~hanwen +Han-Wen Nienhuys , http://www.stack.nl/~hanwen =item * diff --git a/Documentation/links.pod b/Documentation/links.pod index 5caa99294d..965650c1ad 100644 --- a/Documentation/links.pod +++ b/Documentation/links.pod @@ -95,7 +95,7 @@ subscribe: send mail with subject "subscribe" to info-gnu-music-request@gnu.org. As this list is moderated, normal people should ask to drl@gnu.org or -hanwen@stack.nl to forward announces instead of sending it to +hanwen@cs.ruu.nl to forward announces instead of sending it to info-gnu-music@gnu.org =item help-gnu-music@gnu.org @@ -135,6 +135,10 @@ The Number One Free Operating System Kernel: Linux Dave Philips' Linux sound applications page +=item http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html + +Stochastic composing using LilyPond + =item http://www.medieval.org/emfaq/scores/software.html More software for (early) music. diff --git a/Documentation/ly2dvi.pod b/Documentation/ly2dvi.pod index 6a4767381f..7c2132b777 100644 --- a/Documentation/ly2dvi.pod +++ b/Documentation/ly2dvi.pod @@ -4,41 +4,169 @@ ly2dvi - convert mudela to DVI =head1 SYNOPSIS - ly2dvi file[.ly] + ly2dvi [options] inputfile[.ly] [....] =head1 DESCRIPTION -ly2dvi is a script that will setup LaTeX and TeX for you to ... +ly2dvi is a shell script which creates input file for LaTeX, +based on information from the output file(s) from lilypond. +The script handles multiple files. If a mudela file name is +specified lilypond is run to make an output (TeX) file. + +One or more LaTeX files are created, based on information found +in the output (TeX) file(s), and latex is finally run to create +one or more DVI files. =head1 OPTIONS =over 5 -=item B<--help> +=item B<-D,--debug> + +Set debug mode. There are two levels - in level one some debug +info is written, in level two the command C is run, which +echoes every command in the ly2dvi script. + +=item B<-O,--orientation=> + +Set orientation - portrait is the default. +(C<-O> landscape produces C<\usepackage[landscape]{article}>) + +=item B<-o,--output=> + +Set output directory. + +=item B<-h,--help> + +Print help. -give help +=item B<-k,--keep> -=item ..... +Keep the LaTeX file after the run. + +=item B<-l,--language> + +Specify LaTeX language. +(C<-l norsk> produces C<\usepackage[norsk]{babel}>). + +=item B<-p,--papersize=> + +Specify papersize. +(C<-p a4paper> produces C<\usepackage[a4paper]{article}>) + +=item B<-s,--separate> + +Normally all output files are included into one LaTeX file. +With this switch all files are run separately, to produce one +DVI file for each. =back -=head1 SOMETHING +=head1 FEATURES + +ly2dvi responds to several parameters specified in the mudela +file. They are overridden by corresponding command line options. + +=over 5 + +=item B + +Specify papersize. + +=item B + +Set orientation. + +=item B + +Specify LaTeX language + +=item B + +Specify the width (pt, mm or cm) of the printed lines. + +=back =head1 ENVIRONMENT +=over 5 + +=item B + +Additional directories for the input file(s). + +=item B + +Temporary directory. Default is /tmp + +=back + =head1 FILES -F contains ... +F is inspected for definitions used to extract +additional text definitions from the mudela file. In the current +version the following are defined: + +=over 5 + +=item B + +The title of the music. Centered on top of the first page. + +=item B<subtitle> + +Subtitle, centered below the title. + +=item B<composer> + +Name of the composer, rightflushed below the subtitle. + +=item B<arranger> + +Name of the arranger, rightflushed below the composer. + +=item B<instrument> + +Name of the instrument, leftflushed at same level as the composer. + +=back =head1 SEE ALSO -lilypond(1), +lilypond(1), TeX, LaTeX =head1 AUTHOR -JAF +Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>, +http://www.termo.unit.no/mtf/people/janaf/ =head1 BUGS -Does not handle margins properly +If you have found a bug, you should send a bugreport. + +=over 4 + +=item * +Send a copy of the input which causes the error. + +=item * +Send a description of the platform you use. + +=item * +Send a description of the LilyPond and ly2dvi version you use. + +=item * +Send a description of the bug itself. + +=item * +Send it to bug-gnu-music@gnu.org (you don't have to subscribe +to this mailinglist). + +=back + +=head1 REMARKS + +Only one papersize is supported, A4. Information on other sizes +(LaTeX names, horizontal and vertical sizes) should be mailed to +the author or to the mailing list. diff --git a/INSTALL.txt b/INSTALL.txt index 1e8ba2b80f..f953bed7f7 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -31,9 +31,7 @@ PREREQUISITES 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. If - you use gcc 2.8 or egcs then you should install a - matching libg++ (ie. 2.8) version. + o GNU C++ v2.7 or better. o GNU make. @@ -61,7 +59,9 @@ RECOMMENDED -6/Mar/98 LilyPond 0.1.47 1 + + +11/Mar/98 LilyPond 0.1.48 1 @@ -127,7 +127,7 @@ CONFIGURING and COMPILING -6/Mar/98 LilyPond 0.1.47 2 +11/Mar/98 LilyPond 0.1.48 2 @@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -6/Mar/98 LilyPond 0.1.47 3 +11/Mar/98 LilyPond 0.1.48 3 @@ -259,7 +259,7 @@ EXAMPLE -6/Mar/98 LilyPond 0.1.47 4 +11/Mar/98 LilyPond 0.1.48 4 @@ -325,7 +325,7 @@ MUSIXTEX -6/Mar/98 LilyPond 0.1.47 5 +11/Mar/98 LilyPond 0.1.48 5 @@ -370,7 +370,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) tex/eglerdefs.tex. AUTHORS - Han-Wen Nienhuys <hanwen@stack.nl> + Han-Wen Nienhuys <hanwen@cs.ruu.nl> Jan Nieuwenhuizen <jan@digicash.com> @@ -391,6 +391,6 @@ AUTHORS -6/Mar/98 LilyPond 0.1.47 6 +11/Mar/98 LilyPond 0.1.48 6 diff --git a/NEWS b/NEWS index 60d9a467b5..4ead68b8d3 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,24 @@ +pl 48 + - Pitch_squash_engraver makes Rhythmic_staff possible. + - some fixes to buildscripts for sgi irix + - misc. patches (WL) + - move away from libg++: rolled own Rational class.. + - don't make gif files Documentation/ by default + - ly2dvi manpage (JAF) + - ly2dvi 0.7 (JAF) + - more clefs. (MB) + +pl 47.jcn2 + - bf: interbeams and beam-stemlengths for size != 16 + - bf's: preludes + - more introduction + +pl 47.jcn1 + - voice{one,two,three} defines + - preludes-*: fixes, junked multi, broke-down score-block + - mudela-book: added center option + +****** pl 47 - Abbreviation now a separate item. - bf'd some gcc 2.8 warnings. @@ -6,7 +27,9 @@ pl 47 pl 46.jcn1 - start mudela introduction - - plet-fraction abbrev by guessing; /3 -> 2/3 etc. + + +pl 46.jcn2 - bf's: preludes-* ******* diff --git a/TODO b/TODO index e966bc71f1..1950f517bd 100644 --- a/TODO +++ b/TODO @@ -7,7 +7,8 @@ Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr 0.2: - * abbrevs + + * check for groff / troff/ nroff et * use kpsepath to find all TeX dirs - configure.in @@ -15,6 +16,10 @@ grep for TODO and ugh/ugr * forced breakpoints + * nicen examples: + - remove all \multi + - break-up heavily-nested score blocks + * --metafont * disable spaces in TeX stuff @@ -32,6 +37,7 @@ grep for TODO and ugh/ugr * fix stdin input * documentation + - introduction? - info? - LaTeX? - more manpages? @@ -44,19 +50,19 @@ grep for TODO and ugh/ugr * spanner that is not spanned gives assert (). -* the warning about the negative slur/tie length appears twice -which is irritating. + * 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) + * 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 + * tie/slur dir & curvature -* stem len adjustable + * stem len adjustable -* mindist for spanners + * mindist for spanners @@ -101,7 +107,7 @@ STUFF * gdb on RedHat 5 - * xdvi: PS magnifying glass. + * xdvi: PS in magnifying glass. * Rational infty(HUGE_VAL) on glibc / w32 diff --git a/VERSION b/VERSION index cab5f19d38..7936890dac 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 47 +TOPLEVEL_PATCH_LEVEL = 48 TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/bin/Makefile b/bin/Makefile index 5c0043d977..c328fef380 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -28,12 +28,16 @@ $(outdir)/%: %.py sed 's!@PYTHON@!$(PYTHON)!' < $< > $@ chmod 755 $@ -EXECUTABLES=convert-mudela mudela-book +EXECUTABLES=convert-mudela mudela-book ly2dvi localinstall: all $(INSTALL) -d $(bindir) - $(INSTALL) -m 755 $(outdir)/convert-mudela $(bindir) - $(INSTALL) -m 755 $(outdir)/mudela-book $(bindir) + cd $(outdir); \ + for a in $(EXECUTABLES); \ + do $(INSTALL) -m 755 $$a $(bindir); \ + done localuninstall: - rm -f $(bindir)/convert-mudela $(bindir)/mudela-book + for a in $(EXECUTABLES); \ + do rm -f $(bindir)/convert-mudela $(bindir)/mudela-book; \ + done diff --git a/bin/add-URLs.sh b/bin/add-URLs.sh new file mode 100644 index 0000000000..a32e6f964b --- /dev/null +++ b/bin/add-URLs.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +# add URLs for broken perl 5.004 + +perl -i~ -pe 's! ([a-z]+://[^ \t]+)! <a href=$1>$1</a>!g' $* diff --git a/bin/lilypython.py b/bin/lilypython.py index 6c4ad1ad70..6f329a8614 100644 --- a/bin/lilypython.py +++ b/bin/lilypython.py @@ -110,8 +110,13 @@ class Lilydirs: print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' sys.exit(1) - self.release_dir = self.topdir + '../releases/' - self.patch_dir = self.topdir + '../patches/' + try: + self.groupdir = os.environ['LILYPOND_GROUPDIR'] + '/' + except KeyError: + self.groupdir = self.topdir + '../' + + self.release_dir = self.groupdir + '/releases/' + self.patch_dir = self.groupdir + '/patches/' def version_tuple(self): f = open (self.topdir + 'VERSION') diff --git a/bin/ly2dvi.sh b/bin/ly2dvi.sh index 005a311196..e20f85aa11 100644 --- a/bin/ly2dvi.sh +++ b/bin/ly2dvi.sh @@ -8,7 +8,7 @@ # Original LaTeX file made by Mats Bengtsson, 17/8 1997 # -VERSION="0.6.jaf2" +VERSION="0.7" NAME=ly2dvi.sh IDENTIFICATION="$NAME $VERSION" NOW=`date` @@ -16,7 +16,18 @@ echo "$IDENTIFICATION" 1>&2 # TODO -# should detect crashing lilypond +# 0.7 +# - Improved Lilypond error checking +# - Output orientation (landscape...). Overrides mudela file +# variable orientation="landscape"; +# - Paper width and heigth put into variables (only A4!) +# - Adjusted top margin to default..... +# +#TODO +# - Include more papersizes. +# - Manual page....... +# - should detect crashing lilypond + # NEWS @@ -122,7 +133,8 @@ Usage: $0 [options] file[s] Options: -D, --debug set debug mode - -o, --output set output directory + -O, --orientation= set orientation (landscape or portrait (default)) + -o, --output= set output directory -h, --help this help text -k, --keep keep LaTeX file -l, --language= give LaTeX language (babel) @@ -133,6 +145,8 @@ Options: EOF } +PWIDTH=600; # Width of A4 paper! +PHEIGTH=830; # Heigth of A4 paper! # # RC-files ? # @@ -176,7 +190,7 @@ SEPFILE=N # # "x:" x takes argument # -switches="Do:hkl:p:s\?" +switches="DO:hkl:o:p:s\?" options="" # # ugh, "\-" is a hack to support long options @@ -194,6 +208,9 @@ do fi debug_echo=echo ;; + O ) + ORI=$OPTARG + ;; h ) help; exit 0 @@ -241,9 +258,12 @@ do p*|-p*) PSZ=`echo $OPTARG | sed -e s/"^.*="//` ;; - o*|-o*) - OUTPUTDIR=$OPTARG - ;; + or*|-or*) + ORI=`echo $OPTARG | sed -e s/"^.*="//` + ;; + ou*|-ou*) + OUTPUTDIR=`echo $OPTARG | sed -e s/"^.*="//` + ;; s*|-s*) SEPFILE=Y ;; @@ -292,29 +312,50 @@ else fi # # Find: -# paper size (PSZ, overridden by command line option -p) -# language (LNG, overridden by command line option -l) +# paper size (PSZ, overridden by command line option -p) +# paper orientation (ORI, overridden by command line option -o) +# language (LNG, overridden by command line option -l) # textwidth # eval `sed -n \\ -e 's/\\\\def\\\\mudelapapersize{\([^}]*\).*$/fPSZ=\1;/p' \\ + -e 's/\\\\def\\\\mudelaorientation{\([^}]*\).*$/fORI=\1;/p' \\ -e 's/\\\\def\\\\mudelalanguage{\([^}]*\).*$/fLNG=\1;/p' \\ -e 's/\\\\def\\\\mudelapaperlinewidth{\([^}]*\).*$/TWN=\1;/p' \\ $File` -if [ "$PSZ" = "" ] +if [ -z "$PSZ" ] then PSZ=$fPSZ fi -if [ "$PSZ" != "" ] +if [ ! -z "$PSZ" ] then - PAPER="["$PSZ"]" + PAPEROPT=$PSZ fi # -if [ "$LNG" = "" ] +if [ -z "$ORI" ] +then + ORI=$fORI +fi +if [ ! -z "$ORI" ] +then + if [ -z "$PAPEROPT" ] + then + PAPEROPT=$ORI + else + PAPEROPT=$PAPEROPT,$ORI + fi +fi +# +if [ ! -z "$PAPEROPT" ] +then + PAPER="["$PAPEROPT"]" +fi +# +if [ -z "$LNG" ] then LNG=$fLNG fi -if [ "$LNG" != "" ] +if [ ! -z "$LNG" ] then LLNG="\usepackage["$LNG"]{babel}" else @@ -324,7 +365,7 @@ fi # # Find textwidth # -if [ "$TWN" != "" ] +if [ ! -z "$TWN" ] then TW=$TWN case $TW in @@ -341,7 +382,11 @@ then $debug_echo "Text width = "$TW fi TWp=`echo $TW | sed -e 's/\..*$//'` -PWp=600; # Width of A4 paper! +PWp=$PWIDTH +if [ "$ORI" = "landscape" ] +then + PWp=$PHEIGTH +fi MARG=`expr $PWp - $TWp` MARG=`expr $MARG / 2`"pt" # @@ -362,7 +407,8 @@ $LLNG %\addtolength{\oddsidemargin}{-1cm} %\addtolength{\topmargin}{-1cm} \setlength{\textwidth}{$TW} -\geometry{width=$TW, left=$MARG, top=1cm} +%\geometry{width=$TW, left=$MARG, top=1cm} +\geometry{width=$TW, left=$MARG} \input lilyponddefs \input titledefs \begin{document} @@ -392,7 +438,7 @@ EOF # endFile(){ cat << EOF >> $LF -\vfill\hfill{\small\LilyIdString} +\vfill\hfill{(\LilyIdString)} \end{document} EOF # @@ -499,8 +545,13 @@ do lilypond $IF 2>&1 | tee /tmp/lilylog.$$ OF=`egrep '^TeX output to ' /tmp/lilylog.$$ | \\ sed -e 's/TeX output to//' -e 's/\.\.\.//'` - rm /tmp/lilylog.$$ $debug_echo "==> "$OF + STATUS=`grep -i error /tmp/lilylog.$$` + rm /tmp/lilylog.$$ + if [ ! -z "$STATUS" ] + then + exit 10 + fi fi # # "Spin through" all the files diff --git a/bin/make-patch.py b/bin/make-patch.py index 72be6f4ec8..0f5ee3057d 100644 --- a/bin/make-patch.py +++ b/bin/make-patch.py @@ -74,7 +74,12 @@ def remove_automatic(dirnames): def makepatch(fv, tv, patfile_nm): import tempfile prev_cwd = os.getcwd(); - os.chdir ('/tmp') + try: + os.mkdir ('/tmp/make-patch'); + except: + pass + + os.chdir ('/tmp/make-patch'); untar(released_tarball(fv)) untar(released_tarball(tv)) remove_automatic([dirname(fv), dirname(tv)]) @@ -93,7 +98,7 @@ def makepatch(fv, tv, patfile_nm): sys.stderr.write('diffing to %s... ' % patfile_nm) os.system('diff -urN ../%s . >> %s' % (dirname(fv), patfile_nm)) #os.system('gzip -9f %s' % patfile_nm) - os.chdir('/tmp') + os.chdir('/tmp/make-patch') sys.stderr.write('cleaning ... ') os.system('rm -fr %s %s' % (dirname(tv), dirname(fv))) diff --git a/bin/mf-to-table.py b/bin/mf-to-table.py index 927ccbbeb1..58c96c384b 100644 --- a/bin/mf-to-table.py +++ b/bin/mf-to-table.py @@ -86,7 +86,12 @@ class Ly_file(Indentable_file): self.write('\"%s\"\t' % str) def print_f_dimen(self, f): - self.write( '%.2f\\pt\t' % f); + dimstr = '%.2f' % f + + # try to mask rounding errors + if (dimstr == '-0.00'): + dimstr = '0.00' + self.write( dimstr +'\\pt\t'); def print_dimen(self, str): self.print_f_dimen(atof(str)) diff --git a/bin/mudela-book.pl b/bin/mudela-book.pl index a5ed477aea..f23b428b52 100644 --- a/bin/mudela-book.pl +++ b/bin/mudela-book.pl @@ -47,12 +47,19 @@ sub close_mudela { $mudela_b = 0; if ($fragment_b) { - print MUDELA "}\n \\paper { linewidth = -1.0\\cm; castingalgorithm = \\Wordwrap; } }\n"; + print MUDELA "}\n \\paper { linewidth = -1.0\\cm;"; + print MUDELA "castingalgorithm = \\Wordwrap; } }\n"; $fragment_b =0; } - if ( $verbatim_b) { - print BOOK "\\end{verbatim}\n\\interexample"; - $verbatim_b =0; + if ($verbatim_b) { + print BOOK "\\end{verbatim}"; + } + if ($center_b) { + print BOOK "\\end{minipage}"; + } + if ($verbatim_b) { + print BOOK "\\interexample"; + $verbatim_b = 0; } close MUDELA; my $status =0; @@ -70,8 +77,16 @@ sub close_mudela my_system "lilypond ". gen_mufile; rename gen_texbase, gen_texfile; } - print BOOK "\\preexample\\input " . gen_texfile . "\n\\postexample\n"; - + + if ($center_b) { + print BOOK "\\begin{minipage}[c]{.5\\textwidth}\n"; + } + print BOOK "\\input " . gen_texfile . "%\n"; + if ($center_b) { + print BOOK "\\end{minipage}"; + $center_b = 0; + } + print BOOK "\\postexample%\n"; } sub open_mudela @@ -79,11 +94,18 @@ sub open_mudela $mudcount++; $mudela_b = 1 ; open MUDELA, ">$outdir/book-mudela.ly"; + print BOOK "\\preexample%\n"; + if ($center_b) { + print BOOK "\\begin{minipage}[c]{.5\\textwidth}\n"; + } if ($verbatim_b) { print BOOK "\\begin{verbatim}\n"; } if ($fragment_b) { print MUDELA "\\score { \\melodic {\\octave c';"; + } else { + print MUDELA "default_paper = \\paper { \\paper_sixteen "; + print MUDELA "linewidth = 7.\\cm;}"; } } @@ -106,6 +128,7 @@ sub parse_mudela_opts $verbatim_b =1 if ($s =~ /verbatim/ ); $fragment_b = 1 if ($s =~ /fragment/ ); + $center_b = 1 if ($s =~ /center/ ); } sub help @@ -122,7 +145,10 @@ options: sub main { GetOptions( 'outdir=s', 'outname=s', 'help'); - help if ( $opt_help ) ; + if ( $opt_help ) { + help(); + $opt_help = 0; # to extinguish typo check. brr, what a language + } if (defined ($opt_outdir)) { $outdir = $opt_outdir . "/"; diff --git a/bin/release.py b/bin/release.py index fa6a9c4035..1ba3c6c87c 100644 --- a/bin/release.py +++ b/bin/release.py @@ -19,12 +19,23 @@ os.chdir(lilydirs.topdir) os.system('make dist') cur_ver = lilydirs.version_tuple() print tarball(cur_ver) -os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver)) -os.chdir('../test') +try: + os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver)) +except posix.error: + os.system('cp out/' + tarball(cur_ver) + ' ' + released_tarball(cur_ver)) + os.unlink('out/' + tarball (cur_ver)) + +os.chdir(lilydirs.groupdir + '/test') os.system('pwd') os.system('rm ../test/*gz') -os.link(released_tarball(cur_ver), tarball(cur_ver)) +#huh? +#os.symlink(released_tarball(cur_ver), tarball(cur_ver)) + +try: + os.link(released_tarball(cur_ver), tarball(cur_ver)) +except posix.error: + os.system('cp ' + released_tarball(cur_ver) + ' '+ tarball(cur_ver)) # not a module, but a script (JCN) # makepatch.main() diff --git a/flower/NEWS b/flower/NEWS index 06f5939f59..d749b00308 100644 --- a/flower/NEWS +++ b/flower/NEWS @@ -1,3 +1,6 @@ +pl 38 + - Rational + - Real.hh fixes pl 37 - various String/File_path mucking diff --git a/flower/VERSION b/flower/VERSION index d31b273055..35f9cba6c9 100644 --- a/flower/VERSION +++ b/flower/VERSION @@ -1,6 +1,6 @@ MAJOR_VERSION = 1 MINOR_VERSION = 1 -PATCH_LEVEL = 36 +PATCH_LEVEL = 38 # use to send patches, always empty for released version: MY_PATCH_LEVEL = # include separator: "-1" or ".a" # diff --git a/flower/include/arithmetic-operator.hh b/flower/include/arithmetic-operator.hh new file mode 100644 index 0000000000..6b95340495 --- /dev/null +++ b/flower/include/arithmetic-operator.hh @@ -0,0 +1,22 @@ +/* + arithmetic-operator.hh -- declare + + source file of the Flower Library + + (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> + + */ + +#ifndef ARITHMETIC_OPERATOR_HH +#define ARITHMETIC_OPERATOR_HH + +#define IMPLEMENT_ARITHMETIC_OPERATOR(type, op) \ +inline type \ +operator op (type a1, type const& a2) \ +{ \ + a1 op ## = a2; \ + return a1; \ +} + +#endif /* ARITHMETIC_OPERATOR_HH */ + diff --git a/flower/include/fproto.hh b/flower/include/fproto.hh index 694f63fed6..5c491d6114 100644 --- a/flower/include/fproto.hh +++ b/flower/include/fproto.hh @@ -50,7 +50,17 @@ struct String_convert; struct String; struct Matrix_storage; struct Vector ; +struct MyRational; + + +#if PARANOIA +#ifndef Rational +#define Rational MyRational +#endif +#else struct Rational; +#endif + struct Text_stream; struct Data_file; struct Text_db; diff --git a/flower/include/interval.hh b/flower/include/interval.hh index d236759219..b0207e0556 100644 --- a/flower/include/interval.hh +++ b/flower/include/interval.hh @@ -24,6 +24,7 @@ struct Interval_t { /* ************** */ static T infinity() ; + static String T_to_str (T arg); T center() { return (left + right) / T(2);} void translate (T t) { diff --git a/flower/include/interval.tcc b/flower/include/interval.tcc index 88dc1a7016..01dbbb1695 100644 --- a/flower/include/interval.tcc +++ b/flower/include/interval.tcc @@ -120,7 +120,7 @@ Interval_t<T>::str() const return "[empty]"; String s ("["); - return s + String (left) + String ("," ) + String (right ) + String ("]" ); + return s + T_to_str (left) + String ("," ) + T_to_str (right ) + String ("]" ); } template<class T> diff --git a/flower/include/rational.hh b/flower/include/rational.hh index fb75268d92..4160af814d 100644 --- a/flower/include/rational.hh +++ b/flower/include/rational.hh @@ -9,9 +9,68 @@ #ifndef RATIONAL_HH #define RATIONAL_HH -#include <Rational.h> -/// print a Rational. To be called from the debugger -void print_rat (Rational const&); +#if PARANOIA +#ifndef Rational +#define Rational MyRational +#endif +#endif + +#include "compare.hh" +#include "arithmetic-operator.hh" +#include "fproto.hh" + +class Rational { + int sign_; + unsigned int num_, den_; + void normalise (); + void copy (Rational const &); +public: + void set_infinite (int sign); + bool infty_b () const; + void invert (); + int num () const { return sign_ * num_; } + int den () const { return den_; } + Rational truncated () const; + void negate (); + operator bool () const; + operator String () const; + Rational operator - () const; + Rational (); + Rational (int, int =1); + Rational (double); + Rational (Rational const&); + + Rational &operator = (Rational const &); + Rational &operator *= (Rational); + Rational &operator /= (Rational); + Rational &operator += (Rational); + Rational &operator -= (Rational); + static int compare (Rational const&, Rational const&); + int sign () const; + String str () const; +}; + +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, / ); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, + ); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, * ); +IMPLEMENT_ARITHMETIC_OPERATOR (Rational, - ); + +INSTANTIATE_COMPARE (Rational const&, Rational::compare); + +int compare (Rational const&,Rational const&); +int sign (Rational r); + +inline void +Rational::copy (Rational const&r) +{ + sign_ = r.sign_; + num_ = r.num_; + den_ = r.den_; +} + +class ostream; +ostream & +operator << (ostream &, Rational); #endif // RATIONAL_HH diff --git a/flower/include/real.hh b/flower/include/real.hh index 2e8b160a22..5b5bc26f7a 100644 --- a/flower/include/real.hh +++ b/flower/include/real.hh @@ -11,14 +11,41 @@ #define REAL_HH -#include <builtin.h> -#include <minmax.h> #include <math.h> #include <limits.h> typedef double Real; const Real infinity_f = HUGE_VAL; + +template<class T> inline T abs (T x) +{ + return x > 0 ? x : -x; +} + +template<class T> inline int sign (T x) +{ + if (x) + return x > 0 ? 1 : -1; + return 0; +} + +template<class T> inline T max (T x, T y) +{ + return x >? y; +} + +template<class T> inline T sqr (T x) +{ + return x*x; +} + + +template<class T> inline T min (T x, T y) +{ + return x <? y; +} + inline Real distance (Real x,Real y) { diff --git a/flower/include/string.hh b/flower/include/string.hh index 613202bb8c..3b6f2266fa 100644 --- a/flower/include/string.hh +++ b/flower/include/string.hh @@ -13,8 +13,8 @@ #include <string.h> #include <iostream.h> -#include <Rational.h> - +#include "arithmetic-operator.hh" +#include "fproto.hh" #include "string-handle.hh" /* @@ -76,7 +76,6 @@ public: /** init to empty string. This is needed because other constructors are provided.*/ String (); - String (Rational); /// String s = "abc"; String (char const* source); @@ -206,13 +205,7 @@ inline bool operator!=(char const* s1,String s2) { return String (s2) !=s1; } - -inline String -operator + (String s1, String s2) -{ - s1 += s2; - return s1; -} +IMPLEMENT_ARITHMETIC_OPERATOR (String, +); inline ostream & operator << (ostream& os, String d) diff --git a/flower/interval.cc b/flower/interval.cc index 7d2c009839..d4ca0f40f4 100644 --- a/flower/interval.cc +++ b/flower/interval.cc @@ -21,3 +21,9 @@ Interval_t<Real>::infinity() { return HUGE_VAL; } + +String +Interval_t<Real>::T_to_str (Real r) +{ + return String (r); +} diff --git a/flower/rational.cc b/flower/rational.cc index 11963238b5..202dd9f0e7 100644 --- a/flower/rational.cc +++ b/flower/rational.cc @@ -1,18 +1,279 @@ /* - rational.cc -- implement Rational related functions - + rational.cc -- implement Rational + source file of the Flower Library (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> */ - +#include <stdlib.h> #include "rational.hh" #include "string.hh" +#include "string-convert.hh" +#include "libc-extension.hh" + + +Rational::operator bool () const +{ + return sign_; +} + +ostream & +operator << (ostream &o, Rational r) +{ + o << r.str (); + return o; +} + + + +Rational +Rational::truncated () const +{ + return Rational(num_ - (num_ % den_), den_); +} + +Rational::Rational () +{ + sign_ = 1; + num_ = den_ = 1; +} + +Rational::Rational (int n, int d) +{ + sign_ = ::sign (n) * ::sign (d); + num_ = abs (n); + den_ = abs (d); + normalise (); +} + + +static +int gcd (int a, int b) +{ + int t; + while ((t = a % b)) + { + a = b; + b = t; + } + return b; +} + +static +int lcm (int a, int b) +{ + return abs (a*b / gcd (a,b)); +} + +void +Rational::set_infinite (int s) +{ + sign_ = ::sign (s) * 2; +} + +Rational +Rational::operator - () const +{ + Rational r(*this); + r.negate (); + return r; +} + +void +Rational::normalise () +{ + if (!sign_) + { + den_ = 1; + num_ = 0; + return ; + } + if (!den_) + sign_ = 2; + if (!num_) + sign_ = 0; + + int g = gcd (num_ , den_); + + num_ /= g; + den_ /= g; +} + +int +Rational::sign () const +{ + return ::sign (sign_); +} + +bool +Rational::infty_b () const +{ + return abs (sign_) > 1; +} + +int +Rational::compare (Rational const &r, Rational const &s) +{ + if (r.sign_ < s.sign_) + return -1; + else if (r.sign_ > s.sign_) + return 1; + else if (r.infty_b ()) + return 0; + + return (r - s).sign (); +} + +int +compare (Rational const &r, Rational const &s) +{ + return Rational::compare (r, s ); +} + +Rational & +Rational::operator += (Rational r) +{ + if (infty_b ()) + ; + else if (r.infty_b ()) + { + *this = r; + } + else + { + int n = sign_ * num_ *r.den_ + r.sign_ * den_ * r.num_; + int d = den_ * r.den_; + sign_ = ::sign (n) * ::sign(d); + num_ = abs (n); + den_ = abs (d); + normalise (); + } + return *this; +} + + +/* + copied from libg++ 2.8.0 + */ +Rational::Rational(double x) +{ + num_ = 0; + den_ = 1; + if (x != 0.0) + { + sign_ = ::sign (x); + x *= sign_; + + const long shift = 15; // a safe shift per step + const double width = 32768.0; // = 2^shift + const int maxiter = 20; // ought not be necessary, but just in case, + // max 300 bits of precision + int expt; + double mantissa = frexp(x, &expt); + long exponent = expt; + double intpart; + int k = 0; + while (mantissa != 0.0 && k++ < maxiter) + { + mantissa *= width; + mantissa = modf(mantissa, &intpart); + num_ <<= shift; + num_ += (long)intpart; + exponent -= shift; + } + if (exponent > 0) + num_ <<= exponent; + else if (exponent < 0) + den_ <<= -exponent; + } else { + sign_ = 0; + } + normalise(); +} + void -print_rat (Rational const &m) +Rational::invert () { - cout << String (m) << flush; + int r (num_); + num_ = den_; + den_ = r; +} + +Rational & +Rational::operator *= (Rational r) +{ + sign_ *= ::sign (r.sign_); + if (r.infty_b ()) + { + sign_ = sign () * 2; + goto exit_func; + } + + num_ *= r.num_; + den_ *= r.den_; + + normalise (); + exit_func: + return *this; } +Rational & +Rational::operator /= (Rational r) +{ + r.invert (); + return (*this *= r); +} + +void +Rational::negate () +{ + sign_ *= -1; +} + +Rational& +Rational::operator -= (Rational r) +{ + r.negate (); + return (*this += r); +} + +/* + be paranoid about overiding libg++ stuff + */ +Rational & +Rational::operator = (Rational const &r) +{ + copy (r); + return *this; +} +Rational::Rational (Rational const &r) +{ + copy (r); +} + +Rational::operator String () const +{ + return str (); +} + +String +Rational::str () const +{ + if (infty_b ()) + { + String s (sign_ > 0 ? "" : "-" ); + return String (s + "infinity"); + } + String s (num ()); + if (den () != 1 && num ()) + s += "/" + String (den ()); + return s; +} + +int +sign (Rational r) +{ + return r.sign (); +} diff --git a/flower/scalar.cc b/flower/scalar.cc index f28e7699ed..2b61b9089f 100644 --- a/flower/scalar.cc +++ b/flower/scalar.cc @@ -1,5 +1,5 @@ /* - scalar.cc -- implement + scalar.cc -- implement Scalar source file of the Flower Library @@ -9,11 +9,11 @@ #include <assert.h> #include <stdio.h> #include "scalar.hh" +#include "rational.hh" Scalar::Scalar (Rational r) - :String (r) { - + (*this) = r.str (); } Scalar::operator Rational () diff --git a/flower/string-convert.cc b/flower/string-convert.cc index 659bf76921..79fbe1829e 100644 --- a/flower/string-convert.cc +++ b/flower/string-convert.cc @@ -4,12 +4,13 @@ --*/ - +#include <stdio.h> #include <assert.h> #include <limits.h> #include "libc-extension.hh" #include "string.hh" #include "string-convert.hh" +#include "rational.hh" /** a safe length for stringconversion buffers @@ -240,18 +241,7 @@ String_convert::char_str (char c, int n) String String_convert::rational_str (Rational r) { - char * n = Itoa (r.numerator()); // LEAK???? - - String s = n; - if (r.denominator() != 1) - { - char * d = Itoa (r.denominator()); - s += String ('/') + String (d); - //delete d; - } - /* delete n; - */ - return s; + return r.str (); } String diff --git a/flower/string.cc b/flower/string.cc index 0e479de3e5..65279ce037 100644 --- a/flower/string.cc +++ b/flower/string.cc @@ -54,12 +54,6 @@ String::operator = (String const&source) return *this; } - -String::String (Rational r) -{ - *this = String_convert::rational_str (r); -} - String::String (double f, char const* fmt) { *this= String_convert::double_str (f,fmt); diff --git a/flower/test/rattest.cc b/flower/test/rattest.cc new file mode 100644 index 0000000000..d2de9b2c12 --- /dev/null +++ b/flower/test/rattest.cc @@ -0,0 +1,39 @@ +#include <iostream.h> +#include "rational.hh" +#include "flower-test.hh" +#include "string.hh" + + +#define EXP_PRINT(a) #a << ": " << (a) << "\n" + +void +rattest () +{ + Rational r (1,4); + Rational q(1,2); + Rational s(6,4); + Rational i; + i.set_infinite (1); + + cout << r << " " << s << " " << q << "\n"; + cout << r + q << " " << (s * q + s) << " " << (q / r) << "\n"; + cout << i; + cout << "inf * r" << i * r << "inf * inf " << i * i << "inf + r" << i + r; + cout << EXP_PRINT(-i); + cout << EXP_PRINT(i >? -i) << EXP_PRINT(i >? r); + cout << EXP_PRINT(i <? r) ; + Rational one(1); + cout << EXP_PRINT(one/4); + cout << EXP_PRINT(one + one/4); + Rational nul (0,1); + Rational kwart (1,4); + nul += kwart; + cout << EXP_PRINT(nul); + nul -= 2 * kwart; + cout << EXP_PRINT(nul); + + cout << EXP_PRINT(Rational (1,128) + Rational (1919,128)); + +} + +ADD_TEST (rattest); diff --git a/init/dutch.ly b/init/dutch.ly index 0a7c423ff5..12d4b4c111 100644 --- a/init/dutch.ly +++ b/init/dutch.ly @@ -97,7 +97,3 @@ } - - - -keyCminor = \key \bes \es \as; diff --git a/init/dynamic.ly b/init/dynamic.ly index aee95db89e..737a4ffe77 100644 --- a/init/dynamic.ly +++ b/init/dynamic.ly @@ -17,5 +17,5 @@ sfz = \absdynamic { 10 } cr = \spandynamic { 1 1 } decr = \spandynamic { -1 1 } -rc = \spandynamic { 1 2 } % stop a crescendo (worrks for decrescendo too) - +rc = \spandynamic { 1 2 } % stop a crescendo +rced = \spandynamic { 1 2 } % stop a decrescendo diff --git a/init/engraver.ly b/init/engraver.ly index 6b8b41f49b..6ab87d1c81 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -14,11 +14,22 @@ Staff = \translator { \consists "Staff_sym_engraver"; \consists "Collision_engraver"; \consists "Rest_collision_engraver"; - \consists "Line_group_engraver"; \accepts "Voice"; } +Rhythmic_staff = \translator +{ + \type "Engraver_group_engraver"; + nolines = "1"; + \consists "Pitch_squash_engraver"; + + \consists "Bar_engraver"; + \consists "Meter_engraver"; + \consists "Staff_sym_engraver"; + \consists "Line_group_engraver"; + \accepts "Voice"; +} Voice = \translator { \type "Engraver_group_engraver"; \consists "Dynamic_engraver"; @@ -58,6 +69,7 @@ Staff_group = \translator { \consists "Vertical_align_engraver"; \consists "Line_group_engraver"; \accepts "Staff"; + \accepts "Rhythmic_staff"; \accepts "Grandstaff"; \accepts "Lyrics"; } @@ -94,6 +106,7 @@ Score = \translator { \accepts "Staff_group"; \accepts "Staff"; + \accepts "Rhythmic_staff"; \accepts "Lyrics"; \accepts "Grandstaff"; } diff --git a/init/feta11.ly b/init/feta11.ly index f874201e80..373d35af73 100644 --- a/init/feta11.ly +++ b/init/feta11.ly @@ -4,38 +4,38 @@ % input from out/feta11.log % name=\symboltables { "rests" = \table { - "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 + "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 - "3" "\\eighthrest" -0.00\pt 3.67\pt 2.75\pt 7.81\pt - "4" "\\sixteenthrest" -0.00\pt 4.27\pt -0.00\pt 7.81\pt - "5" "\\thirtysecondrest" -0.00\pt 4.81\pt -0.00\pt 10.56\pt - "6" "\\sixtyfourthrest" -0.00\pt 5.16\pt -0.00\pt 13.31\pt - "7" "\\hundredtwentyeighthrest" -0.00\pt 5.75\pt -0.00\pt 16.06\pt + "2" "\\quartrest" 0.00\pt 2.97\pt 2.06\pt 9.90\pt + "3" "\\eighthrest" 0.00\pt 3.67\pt 2.75\pt 7.81\pt + "4" "\\sixteenthrest" 0.00\pt 4.27\pt 0.00\pt 7.81\pt + "5" "\\thirtysecondrest" 0.00\pt 4.81\pt 0.00\pt 10.56\pt + "6" "\\sixtyfourthrest" 0.00\pt 5.16\pt 0.00\pt 13.31\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.12\pt 4.12\pt - "0" "\\natural" -0.00\pt 1.83\pt -4.12\pt 4.12\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 + "2" "\\sharpsharp" 0.00\pt 2.75\pt -1.38\pt 1.38\pt } "dots" = \table { - "dot" "\\dot" -0.00\pt 1.24\pt -0.62\pt 0.62\pt - "repeatcolon" "\\repeatcolon" -0.00\pt 1.24\pt -1.38\pt 1.38\pt + "dot" "\\dot" 0.00\pt 1.24\pt -0.62\pt 0.62\pt + "repeatcolon" "\\repeatcolon" 0.00\pt 1.24\pt -1.38\pt 1.38\pt } "balls" = \table { - "-1" "\\brevisball" -0.00\pt 5.50\pt -1.51\pt 1.51\pt + "-1" "\\brevisball" 0.00\pt 5.50\pt -1.51\pt 1.51\pt "-1l" "\\brevisledger" -1.38\pt 6.88\pt -0.28\pt 0.28\pt - "-2" "\\longaball" -0.00\pt 5.50\pt -1.51\pt 1.51\pt + "-2" "\\longaball" 0.00\pt 5.50\pt -1.51\pt 1.51\pt "-2l" "\\longaledger" -1.38\pt 6.88\pt -0.28\pt 0.28\pt - "0" "\\wholeball" -0.00\pt 5.45\pt -1.51\pt 1.51\pt + "0" "\\wholeball" 0.00\pt 5.45\pt -1.51\pt 1.51\pt "0l" "\\wholeledger" -1.36\pt 6.81\pt -0.28\pt 0.28\pt - "1" "\\halfball" -0.00\pt 3.79\pt -1.51\pt 1.51\pt + "1" "\\halfball" 0.00\pt 3.79\pt -1.51\pt 1.51\pt "1l" "\\halfledger" -0.95\pt 4.74\pt -0.28\pt 0.28\pt - "2" "\\quartball" -0.00\pt 3.63\pt -1.51\pt 1.51\pt + "2" "\\quartball" 0.00\pt 3.63\pt -1.51\pt 1.51\pt "2l" "\\quartledger" -0.91\pt 4.54\pt -0.28\pt 0.28\pt } "scripts" = \table { @@ -46,17 +46,17 @@ "ustaccatissimo" "\\ustaccatissimo" -0.55\pt 0.55\pt -0.20\pt 2.75\pt "dstaccatissimo" "\\dstaccatissimo" -0.55\pt 0.55\pt -2.75\pt 0.20\pt "tenuto" "\\tenuto" -2.47\pt 2.47\pt -0.17\pt 0.17\pt - "umarcato" "\\umarcato" -1.38\pt 1.38\pt -0.00\pt 3.03\pt + "umarcato" "\\umarcato" -1.38\pt 1.38\pt 0.00\pt 3.03\pt "dmarcato" "\\dmarcato" -1.38\pt 1.38\pt -3.03\pt 0.00\pt "open" "\\ouvert" -1.10\pt 1.10\pt -1.38\pt 1.38\pt "stopped" "\\plusstop" -1.51\pt 1.51\pt -1.51\pt 1.51\pt - "upbow" "\\upbow" -1.79\pt 1.79\pt -0.00\pt 5.72\pt - "downbow" "\\downbow" -2.06\pt 2.06\pt -0.00\pt 3.67\pt + "upbow" "\\upbow" -1.79\pt 1.79\pt 0.00\pt 5.72\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 + "trill" "\\trill" -2.75\pt 2.75\pt 0.00\pt 6.19\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 + "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 } diff --git a/init/feta13.ly b/init/feta13.ly index 4be008a657..1042f1b70e 100644 --- a/init/feta13.ly +++ b/init/feta13.ly @@ -4,38 +4,38 @@ % input from out/feta13.log % name=\symboltables { "rests" = \table { - "0" "\\wholerest" -0.00\pt 4.88\pt -2.03\pt 0.00\pt - "1" "\\halfrest" -0.00\pt 4.88\pt -0.00\pt 2.03\pt + "0" "\\wholerest" 0.00\pt 4.88\pt -2.03\pt 0.00\pt + "1" "\\halfrest" 0.00\pt 4.88\pt 0.00\pt 2.03\pt "0o" "\\outsidewholerest" -2.03\pt 6.91\pt -2.03\pt 0.33\pt "1o" "\\outsidehalfrest" -2.03\pt 6.91\pt -0.33\pt 2.03\pt - "2" "\\quartrest" -0.00\pt 3.51\pt 2.44\pt 11.70\pt - "3" "\\eighthrest" -0.00\pt 4.33\pt 3.25\pt 9.24\pt - "4" "\\sixteenthrest" -0.00\pt 5.04\pt -0.00\pt 9.24\pt - "5" "\\thirtysecondrest" -0.00\pt 5.69\pt -0.00\pt 12.49\pt - "6" "\\sixtyfourthrest" -0.00\pt 6.10\pt -0.00\pt 15.74\pt - "7" "\\hundredtwentyeighthrest" -0.00\pt 6.79\pt -0.00\pt 18.99\pt + "2" "\\quartrest" 0.00\pt 3.51\pt 2.44\pt 11.70\pt + "3" "\\eighthrest" 0.00\pt 4.33\pt 3.25\pt 9.24\pt + "4" "\\sixteenthrest" 0.00\pt 5.04\pt 0.00\pt 9.24\pt + "5" "\\thirtysecondrest" 0.00\pt 5.69\pt 0.00\pt 12.49\pt + "6" "\\sixtyfourthrest" 0.00\pt 6.10\pt 0.00\pt 15.74\pt + "7" "\\hundredtwentyeighthrest" 0.00\pt 6.79\pt 0.00\pt 18.99\pt } "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" "\\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.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 + "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.62\pt 1.62\pt + "dot" "\\dot" 0.00\pt 1.46\pt -0.73\pt 0.73\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 + "-1" "\\brevisball" 0.00\pt 6.50\pt -1.79\pt 1.79\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 + "-2" "\\longaball" 0.00\pt 6.50\pt -1.79\pt 1.79\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 + "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 + "1" "\\halfball" 0.00\pt 4.48\pt -1.79\pt 1.79\pt "1l" "\\halfledger" -1.12\pt 5.60\pt -0.33\pt 0.33\pt - "2" "\\quartball" -0.00\pt 4.29\pt -1.79\pt 1.79\pt + "2" "\\quartball" 0.00\pt 4.29\pt -1.79\pt 1.79\pt "2l" "\\quartledger" -1.07\pt 5.37\pt -0.33\pt 0.33\pt } "scripts" = \table { @@ -46,17 +46,17 @@ "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.62\pt 1.62\pt -0.00\pt 3.58\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 + "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 + "trill" "\\trill" -3.25\pt 3.25\pt 0.00\pt 7.31\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 + "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 } diff --git a/init/feta16.ly b/init/feta16.ly index c8bcf1ee2d..5017ebf420 100644 --- a/init/feta16.ly +++ b/init/feta16.ly @@ -4,38 +4,38 @@ % input from out/feta16.log % name=\symboltables { "rests" = \table { - "0" "\\wholerest" -0.00\pt 6.00\pt -2.50\pt 0.00\pt - "1" "\\halfrest" -0.00\pt 6.00\pt -0.00\pt 2.50\pt + "0" "\\wholerest" 0.00\pt 6.00\pt -2.50\pt 0.00\pt + "1" "\\halfrest" 0.00\pt 6.00\pt 0.00\pt 2.50\pt "0o" "\\outsidewholerest" -2.50\pt 8.50\pt -2.50\pt 0.40\pt "1o" "\\outsidehalfrest" -2.50\pt 8.50\pt -0.40\pt 2.50\pt - "2" "\\quartrest" -0.00\pt 4.32\pt 3.00\pt 14.40\pt - "3" "\\eighthrest" -0.00\pt 5.33\pt 4.00\pt 11.37\pt - "4" "\\sixteenthrest" -0.00\pt 6.21\pt -0.00\pt 11.37\pt - "5" "\\thirtysecondrest" -0.00\pt 7.00\pt -0.00\pt 15.37\pt - "6" "\\sixtyfourthrest" -0.00\pt 7.51\pt -0.00\pt 19.37\pt - "7" "\\hundredtwentyeighthrest" -0.00\pt 8.36\pt -0.00\pt 23.37\pt + "2" "\\quartrest" 0.00\pt 4.32\pt 3.00\pt 14.40\pt + "3" "\\eighthrest" 0.00\pt 5.33\pt 4.00\pt 11.37\pt + "4" "\\sixteenthrest" 0.00\pt 6.21\pt 0.00\pt 11.37\pt + "5" "\\thirtysecondrest" 0.00\pt 7.00\pt 0.00\pt 15.37\pt + "6" "\\sixtyfourthrest" 0.00\pt 7.51\pt 0.00\pt 19.37\pt + "7" "\\hundredtwentyeighthrest" 0.00\pt 8.36\pt 0.00\pt 23.37\pt } "accidentals" = \table { - "1" "\\sharp" -0.00\pt 4.40\pt -6.00\pt 6.00\pt - "0" "\\natural" -0.00\pt 2.67\pt -6.00\pt 6.00\pt + "1" "\\sharp" 0.00\pt 4.40\pt -6.00\pt 6.00\pt + "0" "\\natural" 0.00\pt 2.67\pt -6.00\pt 6.00\pt "-1" "\\flat" -0.48\pt 3.20\pt -2.00\pt 8.00\pt "-2" "\\flatflat" -0.48\pt 5.80\pt -2.00\pt 8.00\pt - "2" "\\sharpsharp" -0.00\pt 4.00\pt -2.00\pt 2.00\pt + "2" "\\sharpsharp" 0.00\pt 4.00\pt -2.00\pt 2.00\pt } "dots" = \table { - "dot" "\\dot" -0.00\pt 1.80\pt -0.90\pt 0.90\pt - "repeatcolon" "\\repeatcolon" -0.00\pt 1.80\pt -2.00\pt 2.00\pt + "dot" "\\dot" 0.00\pt 1.80\pt -0.90\pt 0.90\pt + "repeatcolon" "\\repeatcolon" 0.00\pt 1.80\pt -2.00\pt 2.00\pt } "balls" = \table { - "-1" "\\brevisball" -0.00\pt 8.00\pt -2.20\pt 2.20\pt + "-1" "\\brevisball" 0.00\pt 8.00\pt -2.20\pt 2.20\pt "-1l" "\\brevisledger" -2.00\pt 10.00\pt -0.40\pt 0.40\pt - "-2" "\\longaball" -0.00\pt 8.00\pt -2.20\pt 2.20\pt + "-2" "\\longaball" 0.00\pt 8.00\pt -2.20\pt 2.20\pt "-2l" "\\longaledger" -2.00\pt 10.00\pt -0.40\pt 0.40\pt - "0" "\\wholeball" -0.00\pt 7.92\pt -2.20\pt 2.20\pt + "0" "\\wholeball" 0.00\pt 7.92\pt -2.20\pt 2.20\pt "0l" "\\wholeledger" -1.98\pt 9.90\pt -0.40\pt 0.40\pt - "1" "\\halfball" -0.00\pt 5.51\pt -2.20\pt 2.20\pt + "1" "\\halfball" 0.00\pt 5.51\pt -2.20\pt 2.20\pt "1l" "\\halfledger" -1.38\pt 6.89\pt -0.40\pt 0.40\pt - "2" "\\quartball" -0.00\pt 5.28\pt -2.20\pt 2.20\pt + "2" "\\quartball" 0.00\pt 5.28\pt -2.20\pt 2.20\pt "2l" "\\quartledger" -1.32\pt 6.61\pt -0.40\pt 0.40\pt } "scripts" = \table { @@ -46,17 +46,17 @@ "ustaccatissimo" "\\ustaccatissimo" -0.80\pt 0.80\pt -0.20\pt 4.00\pt "dstaccatissimo" "\\dstaccatissimo" -0.80\pt 0.80\pt -4.00\pt 0.20\pt "tenuto" "\\tenuto" -3.60\pt 3.60\pt -0.24\pt 0.24\pt - "umarcato" "\\umarcato" -2.00\pt 2.00\pt -0.00\pt 4.40\pt + "umarcato" "\\umarcato" -2.00\pt 2.00\pt 0.00\pt 4.40\pt "dmarcato" "\\dmarcato" -2.00\pt 2.00\pt -4.40\pt 0.00\pt "open" "\\ouvert" -1.60\pt 1.60\pt -2.00\pt 2.00\pt "stopped" "\\plusstop" -2.20\pt 2.20\pt -2.20\pt 2.20\pt - "upbow" "\\upbow" -2.60\pt 2.60\pt -0.00\pt 8.32\pt - "downbow" "\\downbow" -3.00\pt 3.00\pt -0.00\pt 5.33\pt + "upbow" "\\upbow" -2.60\pt 2.60\pt 0.00\pt 8.32\pt + "downbow" "\\downbow" -3.00\pt 3.00\pt 0.00\pt 5.33\pt "turn" "\\turn" -4.38\pt 4.38\pt -2.12\pt 2.12\pt - "trill" "\\trill" -4.00\pt 4.00\pt -0.00\pt 9.00\pt + "trill" "\\trill" -4.00\pt 4.00\pt 0.00\pt 9.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 + "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 } diff --git a/init/feta19.ly b/init/feta19.ly index 146a35974e..79a0dcd0e1 100644 --- a/init/feta19.ly +++ b/init/feta19.ly @@ -4,38 +4,38 @@ % input from out/feta19.log % name=\symboltables { "rests" = \table { - "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 + "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 - "3" "\\eighthrest" -0.00\pt 6.33\pt 4.75\pt 13.50\pt - "4" "\\sixteenthrest" -0.00\pt 7.37\pt -0.00\pt 13.50\pt - "5" "\\thirtysecondrest" -0.00\pt 8.32\pt -0.00\pt 18.25\pt - "6" "\\sixtyfourthrest" -0.00\pt 8.92\pt -0.00\pt 23.00\pt - "7" "\\hundredtwentyeighthrest" -0.00\pt 9.93\pt -0.00\pt 27.75\pt + "2" "\\quartrest" 0.00\pt 5.13\pt 3.56\pt 17.10\pt + "3" "\\eighthrest" 0.00\pt 6.33\pt 4.75\pt 13.50\pt + "4" "\\sixteenthrest" 0.00\pt 7.37\pt 0.00\pt 13.50\pt + "5" "\\thirtysecondrest" 0.00\pt 8.32\pt 0.00\pt 18.25\pt + "6" "\\sixtyfourthrest" 0.00\pt 8.92\pt 0.00\pt 23.00\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.12\pt 7.12\pt - "0" "\\natural" -0.00\pt 3.17\pt -7.12\pt 7.12\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 + "2" "\\sharpsharp" 0.00\pt 4.75\pt -2.38\pt 2.38\pt } "dots" = \table { - "dot" "\\dot" -0.00\pt 2.14\pt -1.07\pt 1.07\pt - "repeatcolon" "\\repeatcolon" -0.00\pt 2.14\pt -2.38\pt 2.38\pt + "dot" "\\dot" 0.00\pt 2.14\pt -1.07\pt 1.07\pt + "repeatcolon" "\\repeatcolon" 0.00\pt 2.14\pt -2.38\pt 2.38\pt } "balls" = \table { - "-1" "\\brevisball" -0.00\pt 9.50\pt -2.61\pt 2.61\pt + "-1" "\\brevisball" 0.00\pt 9.50\pt -2.61\pt 2.61\pt "-1l" "\\brevisledger" -2.38\pt 11.88\pt -0.48\pt 0.48\pt - "-2" "\\longaball" -0.00\pt 9.50\pt -2.61\pt 2.61\pt + "-2" "\\longaball" 0.00\pt 9.50\pt -2.61\pt 2.61\pt "-2l" "\\longaledger" -2.38\pt 11.88\pt -0.48\pt 0.48\pt - "0" "\\wholeball" -0.00\pt 9.41\pt -2.61\pt 2.61\pt + "0" "\\wholeball" 0.00\pt 9.41\pt -2.61\pt 2.61\pt "0l" "\\wholeledger" -2.35\pt 11.76\pt -0.48\pt 0.48\pt - "1" "\\halfball" -0.00\pt 6.54\pt -2.61\pt 2.61\pt + "1" "\\halfball" 0.00\pt 6.54\pt -2.61\pt 2.61\pt "1l" "\\halfledger" -1.64\pt 8.18\pt -0.48\pt 0.48\pt - "2" "\\quartball" -0.00\pt 6.27\pt -2.61\pt 2.61\pt + "2" "\\quartball" 0.00\pt 6.27\pt -2.61\pt 2.61\pt "2l" "\\quartledger" -1.57\pt 7.84\pt -0.48\pt 0.48\pt } "scripts" = \table { @@ -46,17 +46,17 @@ "ustaccatissimo" "\\ustaccatissimo" -0.95\pt 0.95\pt -0.20\pt 4.75\pt "dstaccatissimo" "\\dstaccatissimo" -0.95\pt 0.95\pt -4.75\pt 0.20\pt "tenuto" "\\tenuto" -4.27\pt 4.27\pt -0.29\pt 0.29\pt - "umarcato" "\\umarcato" -2.38\pt 2.38\pt -0.00\pt 5.23\pt + "umarcato" "\\umarcato" -2.38\pt 2.38\pt 0.00\pt 5.23\pt "dmarcato" "\\dmarcato" -2.38\pt 2.38\pt -5.23\pt 0.00\pt "open" "\\ouvert" -1.90\pt 1.90\pt -2.38\pt 2.38\pt "stopped" "\\plusstop" -2.61\pt 2.61\pt -2.61\pt 2.61\pt - "upbow" "\\upbow" -3.09\pt 3.09\pt -0.00\pt 9.88\pt - "downbow" "\\downbow" -3.56\pt 3.56\pt -0.00\pt 6.33\pt + "upbow" "\\upbow" -3.09\pt 3.09\pt 0.00\pt 9.88\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 + "trill" "\\trill" -4.75\pt 4.75\pt 0.00\pt 10.69\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 + "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 } diff --git a/init/feta20.ly b/init/feta20.ly index 13488ac1ca..4651cf1f0b 100644 --- a/init/feta20.ly +++ b/init/feta20.ly @@ -4,38 +4,38 @@ % input from out/feta20.log % name=\symboltables { "rests" = \table { - "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 + "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 - "5" "\\thirtysecondrest" -0.00\pt 8.75\pt -0.00\pt 19.21\pt - "6" "\\sixtyfourthrest" -0.00\pt 9.38\pt -0.00\pt 24.21\pt - "7" "\\hundredtwentyeighthrest" -0.00\pt 10.45\pt -0.00\pt 29.21\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 + "5" "\\thirtysecondrest" 0.00\pt 8.75\pt 0.00\pt 19.21\pt + "6" "\\sixtyfourthrest" 0.00\pt 9.38\pt 0.00\pt 24.21\pt + "7" "\\hundredtwentyeighthrest" 0.00\pt 10.45\pt 0.00\pt 29.21\pt } "accidentals" = \table { - "1" "\\sharp" -0.00\pt 5.50\pt -7.50\pt 7.50\pt - "0" "\\natural" -0.00\pt 3.33\pt -7.50\pt 7.50\pt + "1" "\\sharp" 0.00\pt 5.50\pt -7.50\pt 7.50\pt + "0" "\\natural" 0.00\pt 3.33\pt -7.50\pt 7.50\pt "-1" "\\flat" -0.60\pt 4.00\pt -2.50\pt 10.00\pt "-2" "\\flatflat" -0.60\pt 7.25\pt -2.50\pt 10.00\pt - "2" "\\sharpsharp" -0.00\pt 5.00\pt -2.50\pt 2.50\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.12\pt 1.12\pt - "repeatcolon" "\\repeatcolon" -0.00\pt 2.25\pt -2.50\pt 2.50\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 { - "-1" "\\brevisball" -0.00\pt 10.00\pt -2.75\pt 2.75\pt + "-1" "\\brevisball" 0.00\pt 10.00\pt -2.75\pt 2.75\pt "-1l" "\\brevisledger" -2.50\pt 12.50\pt -0.50\pt 0.50\pt - "-2" "\\longaball" -0.00\pt 10.00\pt -2.75\pt 2.75\pt + "-2" "\\longaball" 0.00\pt 10.00\pt -2.75\pt 2.75\pt "-2l" "\\longaledger" -2.50\pt 12.50\pt -0.50\pt 0.50\pt - "0" "\\wholeball" -0.00\pt 9.90\pt -2.75\pt 2.75\pt + "0" "\\wholeball" 0.00\pt 9.90\pt -2.75\pt 2.75\pt "0l" "\\wholeledger" -2.48\pt 12.38\pt -0.50\pt 0.50\pt - "1" "\\halfball" -0.00\pt 6.89\pt -2.75\pt 2.75\pt + "1" "\\halfball" 0.00\pt 6.89\pt -2.75\pt 2.75\pt "1l" "\\halfledger" -1.72\pt 8.61\pt -0.50\pt 0.50\pt - "2" "\\quartball" -0.00\pt 6.61\pt -2.75\pt 2.75\pt + "2" "\\quartball" 0.00\pt 6.61\pt -2.75\pt 2.75\pt "2l" "\\quartledger" -1.65\pt 8.26\pt -0.50\pt 0.50\pt } "scripts" = \table { @@ -46,17 +46,17 @@ "ustaccatissimo" "\\ustaccatissimo" -1.00\pt 1.00\pt -0.20\pt 5.00\pt "dstaccatissimo" "\\dstaccatissimo" -1.00\pt 1.00\pt -5.00\pt 0.20\pt "tenuto" "\\tenuto" -4.50\pt 4.50\pt -0.30\pt 0.30\pt - "umarcato" "\\umarcato" -2.50\pt 2.50\pt -0.00\pt 5.50\pt + "umarcato" "\\umarcato" -2.50\pt 2.50\pt 0.00\pt 5.50\pt "dmarcato" "\\dmarcato" -2.50\pt 2.50\pt -5.50\pt 0.00\pt "open" "\\ouvert" -2.00\pt 2.00\pt -2.50\pt 2.50\pt "stopped" "\\plusstop" -2.75\pt 2.75\pt -2.75\pt 2.75\pt - "upbow" "\\upbow" -3.25\pt 3.25\pt -0.00\pt 10.40\pt - "downbow" "\\downbow" -3.75\pt 3.75\pt -0.00\pt 6.67\pt + "upbow" "\\upbow" -3.25\pt 3.25\pt 0.00\pt 10.40\pt + "downbow" "\\downbow" -3.75\pt 3.75\pt 0.00\pt 6.67\pt "turn" "\\turn" -5.47\pt 5.47\pt -2.65\pt 2.65\pt - "trill" "\\trill" -5.00\pt 5.00\pt -0.00\pt 11.25\pt + "trill" "\\trill" -5.00\pt 5.00\pt 0.00\pt 11.25\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 + "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 } diff --git a/init/feta23.ly b/init/feta23.ly index e1ad925c23..a1800ec469 100644 --- a/init/feta23.ly +++ b/init/feta23.ly @@ -4,38 +4,38 @@ % input from out/feta23.log % name=\symboltables { "rests" = \table { - "0" "\\wholerest" -0.00\pt 8.44\pt -3.52\pt 0.00\pt - "1" "\\halfrest" -0.00\pt 8.44\pt -0.00\pt 3.52\pt + "0" "\\wholerest" 0.00\pt 8.44\pt -3.52\pt 0.00\pt + "1" "\\halfrest" 0.00\pt 8.44\pt 0.00\pt 3.52\pt "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.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 - "7" "\\hundredtwentyeighthrest" -0.00\pt 11.75\pt -0.00\pt 32.86\pt + "2" "\\quartrest" 0.00\pt 6.08\pt 4.22\pt 20.25\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 + "7" "\\hundredtwentyeighthrest" 0.00\pt 11.75\pt 0.00\pt 32.86\pt } "accidentals" = \table { - "1" "\\sharp" -0.00\pt 6.19\pt -8.44\pt 8.44\pt - "0" "\\natural" -0.00\pt 3.75\pt -8.44\pt 8.44\pt + "1" "\\sharp" 0.00\pt 6.19\pt -8.44\pt 8.44\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.62\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 - "repeatcolon" "\\repeatcolon" -0.00\pt 2.53\pt -2.81\pt 2.81\pt + "dot" "\\dot" 0.00\pt 2.53\pt -1.27\pt 1.27\pt + "repeatcolon" "\\repeatcolon" 0.00\pt 2.53\pt -2.81\pt 2.81\pt } "balls" = \table { - "-1" "\\brevisball" -0.00\pt 11.25\pt -3.09\pt 3.09\pt + "-1" "\\brevisball" 0.00\pt 11.25\pt -3.09\pt 3.09\pt "-1l" "\\brevisledger" -2.81\pt 14.06\pt -0.56\pt 0.56\pt - "-2" "\\longaball" -0.00\pt 11.25\pt -3.09\pt 3.09\pt + "-2" "\\longaball" 0.00\pt 11.25\pt -3.09\pt 3.09\pt "-2l" "\\longaledger" -2.81\pt 14.06\pt -0.56\pt 0.56\pt - "0" "\\wholeball" -0.00\pt 11.14\pt -3.09\pt 3.09\pt + "0" "\\wholeball" 0.00\pt 11.14\pt -3.09\pt 3.09\pt "0l" "\\wholeledger" -2.78\pt 13.92\pt -0.56\pt 0.56\pt - "1" "\\halfball" -0.00\pt 7.75\pt -3.09\pt 3.09\pt + "1" "\\halfball" 0.00\pt 7.75\pt -3.09\pt 3.09\pt "1l" "\\halfledger" -1.94\pt 9.69\pt -0.56\pt 0.56\pt - "2" "\\quartball" -0.00\pt 7.43\pt -3.09\pt 3.09\pt + "2" "\\quartball" 0.00\pt 7.43\pt -3.09\pt 3.09\pt "2l" "\\quartledger" -1.86\pt 9.29\pt -0.56\pt 0.56\pt } "scripts" = \table { @@ -46,17 +46,17 @@ "ustaccatissimo" "\\ustaccatissimo" -1.13\pt 1.13\pt -0.20\pt 5.63\pt "dstaccatissimo" "\\dstaccatissimo" -1.13\pt 1.13\pt -5.63\pt 0.20\pt "tenuto" "\\tenuto" -5.06\pt 5.06\pt -0.34\pt 0.34\pt - "umarcato" "\\umarcato" -2.81\pt 2.81\pt -0.00\pt 6.19\pt + "umarcato" "\\umarcato" -2.81\pt 2.81\pt 0.00\pt 6.19\pt "dmarcato" "\\dmarcato" -2.81\pt 2.81\pt -6.19\pt 0.00\pt "open" "\\ouvert" -2.25\pt 2.25\pt -2.81\pt 2.81\pt "stopped" "\\plusstop" -3.09\pt 3.09\pt -3.09\pt 3.09\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 + "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.62\pt 5.62\pt -0.00\pt 12.66\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 + "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 } diff --git a/init/feta26.ly b/init/feta26.ly index eeafb78848..024c623b31 100644 --- a/init/feta26.ly +++ b/init/feta26.ly @@ -4,38 +4,38 @@ % input from out/feta26.log % name=\symboltables { "rests" = \table { - "0" "\\wholerest" -0.00\pt 9.75\pt -4.06\pt 0.00\pt - "1" "\\halfrest" -0.00\pt 9.75\pt -0.00\pt 4.06\pt + "0" "\\wholerest" 0.00\pt 9.75\pt -4.06\pt 0.00\pt + "1" "\\halfrest" 0.00\pt 9.75\pt 0.00\pt 4.06\pt "0o" "\\outsidewholerest" -4.06\pt 13.81\pt -4.06\pt 0.65\pt "1o" "\\outsidehalfrest" -4.06\pt 13.81\pt -0.65\pt 4.06\pt - "2" "\\quartrest" -0.00\pt 7.02\pt 4.88\pt 23.40\pt - "3" "\\eighthrest" -0.00\pt 8.67\pt 6.50\pt 18.47\pt - "4" "\\sixteenthrest" -0.00\pt 10.08\pt -0.00\pt 18.47\pt - "5" "\\thirtysecondrest" -0.00\pt 11.38\pt -0.00\pt 24.97\pt - "6" "\\sixtyfourthrest" -0.00\pt 12.20\pt -0.00\pt 31.47\pt - "7" "\\hundredtwentyeighthrest" -0.00\pt 13.58\pt -0.00\pt 37.97\pt + "2" "\\quartrest" 0.00\pt 7.02\pt 4.88\pt 23.40\pt + "3" "\\eighthrest" 0.00\pt 8.67\pt 6.50\pt 18.47\pt + "4" "\\sixteenthrest" 0.00\pt 10.08\pt 0.00\pt 18.47\pt + "5" "\\thirtysecondrest" 0.00\pt 11.38\pt 0.00\pt 24.97\pt + "6" "\\sixtyfourthrest" 0.00\pt 12.20\pt 0.00\pt 31.47\pt + "7" "\\hundredtwentyeighthrest" 0.00\pt 13.58\pt 0.00\pt 37.97\pt } "accidentals" = \table { - "1" "\\sharp" -0.00\pt 7.15\pt -9.75\pt 9.75\pt - "0" "\\natural" -0.00\pt 4.33\pt -9.75\pt 9.75\pt + "1" "\\sharp" 0.00\pt 7.15\pt -9.75\pt 9.75\pt + "0" "\\natural" 0.00\pt 4.33\pt -9.75\pt 9.75\pt "-1" "\\flat" -0.78\pt 5.20\pt -3.25\pt 13.00\pt "-2" "\\flatflat" -0.78\pt 9.42\pt -3.25\pt 13.00\pt - "2" "\\sharpsharp" -0.00\pt 6.50\pt -3.25\pt 3.25\pt + "2" "\\sharpsharp" 0.00\pt 6.50\pt -3.25\pt 3.25\pt } "dots" = \table { - "dot" "\\dot" -0.00\pt 2.92\pt -1.46\pt 1.46\pt - "repeatcolon" "\\repeatcolon" -0.00\pt 2.92\pt -3.25\pt 3.25\pt + "dot" "\\dot" 0.00\pt 2.92\pt -1.46\pt 1.46\pt + "repeatcolon" "\\repeatcolon" 0.00\pt 2.92\pt -3.25\pt 3.25\pt } "balls" = \table { - "-1" "\\brevisball" -0.00\pt 13.00\pt -3.58\pt 3.58\pt + "-1" "\\brevisball" 0.00\pt 13.00\pt -3.58\pt 3.58\pt "-1l" "\\brevisledger" -3.25\pt 16.25\pt -0.65\pt 0.65\pt - "-2" "\\longaball" -0.00\pt 13.00\pt -3.58\pt 3.58\pt + "-2" "\\longaball" 0.00\pt 13.00\pt -3.58\pt 3.58\pt "-2l" "\\longaledger" -3.25\pt 16.25\pt -0.65\pt 0.65\pt - "0" "\\wholeball" -0.00\pt 12.87\pt -3.58\pt 3.58\pt + "0" "\\wholeball" 0.00\pt 12.87\pt -3.58\pt 3.58\pt "0l" "\\wholeledger" -3.22\pt 16.09\pt -0.65\pt 0.65\pt - "1" "\\halfball" -0.00\pt 8.95\pt -3.58\pt 3.58\pt + "1" "\\halfball" 0.00\pt 8.95\pt -3.58\pt 3.58\pt "1l" "\\halfledger" -2.24\pt 11.19\pt -0.65\pt 0.65\pt - "2" "\\quartball" -0.00\pt 8.59\pt -3.58\pt 3.58\pt + "2" "\\quartball" 0.00\pt 8.59\pt -3.58\pt 3.58\pt "2l" "\\quartledger" -2.15\pt 10.73\pt -0.65\pt 0.65\pt } "scripts" = \table { @@ -46,17 +46,17 @@ "ustaccatissimo" "\\ustaccatissimo" -1.30\pt 1.30\pt -0.20\pt 6.50\pt "dstaccatissimo" "\\dstaccatissimo" -1.30\pt 1.30\pt -6.50\pt 0.20\pt "tenuto" "\\tenuto" -5.85\pt 5.85\pt -0.39\pt 0.39\pt - "umarcato" "\\umarcato" -3.25\pt 3.25\pt -0.00\pt 7.15\pt + "umarcato" "\\umarcato" -3.25\pt 3.25\pt 0.00\pt 7.15\pt "dmarcato" "\\dmarcato" -3.25\pt 3.25\pt -7.15\pt 0.00\pt "open" "\\ouvert" -2.60\pt 2.60\pt -3.25\pt 3.25\pt "stopped" "\\plusstop" -3.58\pt 3.58\pt -3.58\pt 3.58\pt - "upbow" "\\upbow" -4.23\pt 4.23\pt -0.00\pt 13.52\pt - "downbow" "\\downbow" -4.88\pt 4.88\pt -0.00\pt 8.67\pt + "upbow" "\\upbow" -4.23\pt 4.23\pt 0.00\pt 13.52\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 + "trill" "\\trill" -6.50\pt 6.50\pt 0.00\pt 14.62\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 + "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 } diff --git a/init/paper11.ly b/init/paper11.ly index 2d943fd720..ce5bc83169 100644 --- a/init/paper11.ly +++ b/init/paper11.ly @@ -26,7 +26,7 @@ paper_eleven = \paper { % interbeam = interline - (beam_thickness + staffline_thickness) / 2 % interbeam = 3.6; % ugh: interline *in fact* is rule_thickness + "interline"? - interbeam = 3.9; + interbeam = 3.0\pt; gourlay_energybound = 100000.; gourlay_maxmeasures = 12.; diff --git a/init/paper13.ly b/init/paper13.ly index 892953eb0c..0ed8c70eea 100644 --- a/init/paper13.ly +++ b/init/paper13.ly @@ -26,7 +26,7 @@ paper_thirteen = \paper { % interbeam = interline - (beam_thickness + staffline_thickness) / 2 % interbeam = 3.6; % ugh: interline *in fact* is rule_thickness + "interline"? - interbeam = 3.9; + interbeam = 3.5\pt; gourlay_energybound = 100000.; gourlay_maxmeasures = 12.; diff --git a/init/paper16.ly b/init/paper16.ly index 8abf148a52..091048ee8a 100644 --- a/init/paper16.ly +++ b/init/paper16.ly @@ -28,14 +28,15 @@ paper_sixteen = \paper { arithmetic_multiplier = 4.8\pt; % three beams span two interlines, including stafflines: - % 2 interbeam + beam_thickness = 2 interline - staffline_thickness - % ( 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"? --jcn - - % No --hwn - interbeam = 3.14; + % 2ib + bt = 2 il - st + % bt = 0.48(il - st) for now. + % 2ib + 0.48il - 0.48 st = 2il - st + % 2ib = 1.52il - 0.52 st + % ib = 0.76il - 0.26st = 2.94 --jcn + % now, it seams rather ib = 0.76il + 0.26st = 3.14 + % interbeam = 2.94\pt; + % No -- hwn + interbeam = 3.14\pt; gourlay_energybound = 100000.; gourlay_maxmeasures = 14.; diff --git a/init/paper20.ly b/init/paper20.ly index d9302be296..2804010f1e 100644 --- a/init/paper20.ly +++ b/init/paper20.ly @@ -19,14 +19,15 @@ paper_twenty = \paper { arithmetic_basicspace = 2.; arithmetic_multiplier = 6.\pt; - % % three beams span two interlines, including stafflines: - % 2 interbeam + beam_thickness = 2 interline - staffline_thickness - % ( beam_thickness = 0.48 interline for now...) - % interbeam = interline - (beam_thickness + staffline_thickness) / 2 - % interbeam = 3.6; - % ugh: interline *in fact* is rule_thickness + "interline"? - interbeam = 3.9; + % 2ib + bt = 2 il - st + % bt = 0.48(il - st) for now. + % 2ib + 0.48il - 0.48 st = 2il - st + % 2ib = 1.52il - 0.52 st + % ib = 0.76il - 0.26st = 3.70 + % now, it seams rather ib = 0.76il + 0.26st = 3.90 + % interbeam = 3.70\pt; + interbeam = 3.90\pt; gourlay_energybound = 100000.; gourlay_maxmeasures = 12.; diff --git a/init/paper26.ly b/init/paper26.ly index b092ccded2..f7ba97952f 100644 --- a/init/paper26.ly +++ b/init/paper26.ly @@ -4,7 +4,7 @@ paper_twentysix = \paper { linewidth = 15.0 \cm; - indent = 12.0\mm + indent = 12.0\mm; rulethickness = 0.5\pt; barsize = 26.0 \pt; interline = 6.5\pt; @@ -19,14 +19,15 @@ paper_twentysix = \paper { arithmetic_basicspace = 2.; arithmetic_multiplier = 7.\pt; - % % three beams span two interlines, including stafflines: - % 2 interbeam + beam_thickness = 2 interline - staffline_thickness - % ( beam_thickness = 0.48 interline for now...) - % interbeam = interline - (beam_thickness + staffline_thickness) / 2 - % interbeam = 3.6; - % ugh: interline *in fact* is rule_thickness + "interline"? - interbeam = 3.9; + % 2ib + bt = 2 il - st + % bt = 0.48(il - st) for now. + % 2ib + 0.48il - 0.48 st = 2il - st + % 2ib = 1.52il - 0.52 st + % ib = 0.76il - 0.26st = 4.81 + % interbeam = 4.81\pt; + % now, it seams rather ib = 0.76il + 0.26st = 5.07 + interbeam = 5.07\pt; gourlay_energybound = 100000.; gourlay_maxmeasures = 12.; diff --git a/init/property.ly b/init/property.ly index 372567863c..587db1d47f 100644 --- a/init/property.ly +++ b/init/property.ly @@ -63,6 +63,37 @@ stemdown = { \property Voice.ydirection = \down } +onevoice = { + \property Voice.ydirection = \center + \property Voice.hshift = 0 +} + +voiceone = { + \type Voice = one + \skip 1*0; + \property Voice.ydirection = \up +} + +voicetwo = { + \type Voice = two + \skip 1*0; + \property Voice.ydirection = \down +} + +voicethree = { + \type Voice = three + \skip 1*0; + \property Voice.ydirection = \up + \property Voice.hshift = 1 +} + +voicefour = { + \type Voice = four + \skip 1*0; + \property Voice.ydirection = \down + \property Voice.hshift = 1 +} + % ugh, cluttering global namespace... none=0 free=0 diff --git a/input/beam-bug.ly b/input/beam-bug.ly new file mode 100644 index 0000000000..75a8669be5 --- /dev/null +++ b/input/beam-bug.ly @@ -0,0 +1,35 @@ +% silly file to test beam stem lengths +% compare to *ugly* bug in preludes-1: [e'16 c'' g' f'] +% here it's okee ?? + +one = \melodic{ + \octave c'; + [e'8 c'' g' f'] + \octave c''; + [e16-1\f c'-5( g-3 f-2] % [e-1 c'-5 g-3 e-2] + \octave c'; +% [e'16 c'' g' f'] + [e'32 c'' g' f'] + [c32 c] ['b 'b] + [c8 c] + [e8 g b] + [e16 g b] c c c + [e32 g b] c + [c c c c] + c4 c4 + \onevoice; + [e'8 c'' g' f'] + [e'16 c'' g' f'] + [e'32 c'' g' f'] + [c32 c] ['b 'b] + [c8 c] + [e8 g b] + [e16 g b] c + [e32 g b] c + [c c c c] + c4 +} + +\score{ + \one +} diff --git a/input/praeludium-fuga-E.ly b/input/praeludium-fuga-E.ly index 23c66d0c1e..4e705aec23 100644 --- a/input/praeludium-fuga-E.ly +++ b/input/praeludium-fuga-E.ly @@ -7,7 +7,7 @@ "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"; + enteredby = "JCN"; copyright = "public domain"; } @@ -19,17 +19,17 @@ * organ staff... %} - \version "0.1.9"; +noShift = { \property Voice.hshift = 0 } +Shift = { \property Voice.hshift = 1 } + + 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'; @@ -38,16 +38,13 @@ praeludium_right = \melodic { % 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] | + \Shift 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 ~ | + { \stemup \Shift r4 bis4 cis'4 \noShift cis'4 | + a'4 ~ [a'16 gis'16 a'16 b'16] \Shift 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 | + { \stemup \Shift s4 gis4 } + { \stemdown \Shift r4 fis4 \noShift gis4 gis4 | a4. cis'8 gis2 | fis4 gis4 gis4 r8 e8 } > | @@ -65,11 +62,10 @@ praeludium_left = \melodic { [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 | + { \stemup \Shift 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} + { \stemup \Shift s4 fis4 e} { \stemdown s4 dis4 cis4 } > | % 16 @@ -112,9 +108,9 @@ fuga2_right = \melodic { | %} \multi 2 < - { \stemup \noshift e'4 } - { \stemup \doshift cis'4 } - { \stemup \property Voice.hshift = 2 ais4 } + { \stemup \noShift e'4 } + { \stemup \Shift cis'4 } + { \stemup \Shift ais4 } { \stemdown fis4 } > | % 16 @@ -122,7 +118,7 @@ fuga2_right = \melodic { { \stemup dis'2 dis'4 | cis'2 cis'4 | b4. [cis'8 dis'8 e'8] } - { \stemup \doshift [b8 fis8] b2 ~ | + { \stemup \Shift [b8 fis8] b2 ~ | [b8 a!16 gis16] a2 ~ | a4 gis2 } { \stemdown fis2. ~ | diff --git a/input/rhythm.ly b/input/rhythm.ly index 5b5289306a..b670410342 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -52,7 +52,9 @@ yanother = \type Staff_group < \ritme \another - \yanother + \type Rhythmic_staff { + \yanother + } > \paper{ @@ -77,6 +79,19 @@ yanother = \accepts "Grandstaff"; } +Rhythmic_staff = \translator +{ + \type "Engraver_group_engraver"; + nolines = "1"; + \consists "Pitch_squash_engraver"; + + \consists "Bar_engraver"; + \consists "Meter_engraver"; + \consists "Staff_sym_engraver"; + \consists "Line_group_engraver"; + \consists "Timing_engraver"; + \accepts "Voice"; +} %% add Timing_engraver to the staff Staff = \translator { \type "Engraver_group_engraver"; diff --git a/lib/duration-convert.cc b/lib/duration-convert.cc index 49db74195d..5947216cd5 100644 --- a/lib/duration-convert.cc +++ b/lib/duration-convert.cc @@ -114,8 +114,8 @@ Duration_convert::mom2_dur (Moment mom) // Moment as_plet_mom = mom / dur.mom (); Moment as_plet_mom = mom / dur.length (); as_plet_mom *= dur.plet_.mom (); - long num = as_plet_mom.numerator ().as_long (); - long den = as_plet_mom.denominator ().as_long (); + long num = as_plet_mom.num (); + long den = as_plet_mom.den (); dur.set_plet (num, den); return dur; } diff --git a/lib/include/moment.hh b/lib/include/moment.hh index f9d234d71f..58e8a7ec96 100644 --- a/lib/include/moment.hh +++ b/lib/include/moment.hh @@ -18,7 +18,7 @@ Can't we name this Saint_jut_mom (Sintjuttemis ?) */ -const infinity_mom = Rational (INT_MAX); +const infinity_mom = INT_MAX; class String; typedef Rational Moment; diff --git a/lib/moment.cc b/lib/moment.cc index d521b233d3..ef1fa46def 100644 --- a/lib/moment.cc +++ b/lib/moment.cc @@ -10,10 +10,3 @@ #include "string.hh" #include "moment.hh" -void -printm (Moment const &m) -{ - cout << String (m) << flush; -} - - diff --git a/lily/Makefile b/lily/Makefile index be43876df3..936d4c31a7 100644 --- a/lily/Makefile +++ b/lily/Makefile @@ -38,7 +38,7 @@ EXTRA_DISTFILES = VERSION # list of custom libraries: # MODULE_LIBDEPS= check-flower-deps check-lib-deps -MODULE_LIBES= -llily -lflower -lmcheck +MODULE_LIBES= -llily -lflower # diff --git a/lily/VERSION b/lily/VERSION index 9da9e31cad..85dfb96054 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,4 +1,4 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 47 +PATCH_LEVEL = 48 MY_PATCH_LEVEL = diff --git a/lily/beam-grav.cc b/lily/beam-grav.cc index ecb00ee083..8cd5958f17 100644 --- a/lily/beam-grav.cc +++ b/lily/beam-grav.cc @@ -115,7 +115,8 @@ Beam_engraver::acknowledge_element (Score_elem_info i) if (!current_grouping_p_->child_fit_b (start)) { String s (_("please fix me: Stem at ") - + String(now_moment ()) + _(" does not fit in beam")); + + now_moment ().str () + + _(" does not fit in beam")); if (i.req_l_) i.req_l_->warning(s); else diff --git a/lily/beam.cc b/lily/beam.cc index ebda7c1ccd..cb6159ae09 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -35,7 +35,7 @@ IMPLEMENT_IS_TYPE_B1 (Beam, Spanner); // ugh, hardcoded -const int MINIMUM_STEMLEN[] = { +const Real MINIMUM_STEMLEN[] = { 0, // just in case 5, 4, @@ -451,7 +451,7 @@ Beam::set_stemlens () int mult = max (stems_[j]->beams_left_i_, stems_[j]->beams_right_i_); if (mult > 1) // dim(y) = internote - y -= (mult - 1) * interbeam_f / internote_f; + y -= (Real)(mult - 1) * interbeam_f / internote_f; if (y < MINIMUM_STEMLEN[mult]) dy = dy >? (MINIMUM_STEMLEN[mult] - y); } diff --git a/lily/chord-iterator.cc b/lily/chord-iterator.cc index 054990199f..a21a7862cc 100644 --- a/lily/chord-iterator.cc +++ b/lily/chord-iterator.cc @@ -74,10 +74,11 @@ IMPLEMENT_IS_TYPE_B1(Chord_iterator,Music_iterator); Moment Chord_iterator::next_moment() const { - Moment next_ = infinity_mom; + Moment next; + next.set_infinite (1); for (PCursor<Music_iterator*> i (children_p_list_.top()); i.ok (); i++) - next_ = next_ <? i->next_moment() ; - return next_; + next = next <? i->next_moment() ; + return next; } diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc index 589dbf3282..5f9a9376e7 100644 --- a/lily/clef-grav.cc +++ b/lily/clef-grav.cc @@ -22,33 +22,36 @@ Clef_engraver::Clef_engraver() c0_position_i_ =0; } +/* + Ugh. Should have support for Dictionaries in mudela. + */ bool Clef_engraver::set_type (String s) { - clef_type_str_ = s; + clef_type_str_ = s; if (clef_type_str_ == "violin") - { - c0_position_i_= -6; - } + c0_position_i_= -6; + else if (clef_type_str_ == "french") + c0_position_i_= -8; else if (clef_type_str_ == "soprano") - { - c0_position_i_= -4; - } + c0_position_i_= -4; + else if (clef_type_str_ == "mezzosoprano") + c0_position_i_ = -2; else if (clef_type_str_ == "alto") - { - c0_position_i_= 0; - } + c0_position_i_= 0; else if (clef_type_str_ == "tenor") - { - c0_position_i_= 2; - } + c0_position_i_= 2; + else if (clef_type_str_ == "baritone") + c0_position_i_ = 4; + else if (clef_type_str_ == "varbaritone") + c0_position_i_ = 4; else if (clef_type_str_ == "bass") - { - c0_position_i_= 6; - } + c0_position_i_= 6; + else if (clef_type_str_ == "subbass") + c0_position_i_ = 8; else return false; - + return true; } diff --git a/lily/clef-item.cc b/lily/clef-item.cc index a63d8b72bd..b3b468047f 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -38,23 +38,53 @@ void Clef_item::read (String t) { symbol_= t; - if (t == "violin") { - y_position_i_ = -2; - } - else if (t == "soprano") { - symbol_="alto"; - y_position_i_ = -4; - } - else if (t == "alto") { - y_position_i_ = 0; - } - else if (t == "tenor") { - symbol_="alto"; - y_position_i_ = 2; - } - else if (t == "bass") { - y_position_i_ = 2; - } + if (t == "violin") + { + y_position_i_ = -2; + } + else if (t == "french") + { + symbol_="violin"; + y_position_i_ = -4; + } + else if (t == "soprano") + { + symbol_="alto"; + y_position_i_ = -4; + } + else if (t == "mezzosoprano") + { + symbol_ = "alto"; + y_position_i_ = -2; + } + else if (t == "alto") + { + y_position_i_ = 0; + } + else if (t == "tenor") + { + symbol_="alto"; + y_position_i_ = 2; + } + else if (t == "baritone") + { + symbol_ = "alto"; + y_position_i_ = 4; + } + else if (t == "varbaritone") + { + symbol_ = "bass"; + y_position_i_ = 0; + } + else if (t == "bass") + { + y_position_i_ = 2; + } + else if (t == "subbass") + { + symbol_ = "bass"; + y_position_i_ = 4; + } } void diff --git a/lily/debug.cc b/lily/debug.cc index f90e2e49eb..f33f0ba83d 100644 --- a/lily/debug.cc +++ b/lily/debug.cc @@ -16,6 +16,7 @@ #include "dstream.hh" #include "flower-debug.hh" #include "moment.hh" + #include "main.hh" Dstream *monitor=0; ostream * nulldev =0; @@ -53,13 +54,10 @@ float_handler (int) assert (false); } -/// just to make sure print_rat is linked in -static void (*rat_printer)(Moment const&); void debug_init() { - rat_printer = print_rat; #ifndef NDEBUG // libg++ 2.8.0 doesn't have set_new_handler // set_new_handler (&mynewhandler); diff --git a/lily/dots.cc b/lily/dots.cc index 8bba43afcb..041e80a8cb 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -25,7 +25,7 @@ Dots::do_post_processing () if (!no_dots_i_) { transparent_b_ = true; - set_empty(true); + set_empty (true); } } @@ -33,16 +33,17 @@ Molecule* Dots::brew_molecule_p () const { Molecule *out = new Molecule; - Atom fill = paper()->lookup_l ()->fill (Box(Interval(0,0),Interval(0,0))); + Atom fill = paper ()->lookup_l ()->fill (Box (Interval (0,0), + Interval (0,0))); out->add(fill); Atom d = paper ()->lookup_l ()->dots (); - Real dw = d.dim_[X_AXIS].length(); - d.translate_axis(-dw,X_AXIS); + Real dw = d.dim_[X_AXIS].length (); + d.translate_axis (-dw, X_AXIS); for (int i=no_dots_i_; i--; ) { - d.translate_axis(2*dw,X_AXIS); + d.translate_axis (2*dw,X_AXIS); out->add (d); } Real inter_f = paper ()->internote_f (); diff --git a/lily/head-grav.cc b/lily/head-grav.cc index d564b58e6e..61256ed63a 100644 --- a/lily/head-grav.cc +++ b/lily/head-grav.cc @@ -1,5 +1,5 @@ /* - headreg.cc -- part of GNU LilyPond + head-grav.cc -- part of GNU LilyPond (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> */ diff --git a/lily/include/global-translator.hh b/lily/include/global-translator.hh index 1d3d91ed5d..dbcc8a5254 100644 --- a/lily/include/global-translator.hh +++ b/lily/include/global-translator.hh @@ -11,6 +11,7 @@ #define GLOBAL_TRANSLATOR_HH #include "translator-group.hh" +#include "rational.hh" #include "pqueue.hh" class Global_translator : public virtual Translator_group{ diff --git a/lily/include/pitch-squash-grav.hh b/lily/include/pitch-squash-grav.hh new file mode 100644 index 0000000000..dc68980ea1 --- /dev/null +++ b/lily/include/pitch-squash-grav.hh @@ -0,0 +1,24 @@ +/* + pitch-squash-grav.hh -- declare Pitch_squash_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> + + */ + +#ifndef PITCH_SQUASH_GRAV_HH +#define PITCH_SQUASH_GRAV_HH + +#include "engraver.hh" + +class Pitch_squash_engraver : public Engraver { +public: + DECLARE_MY_RUNTIME_TYPEINFO; + TRANSLATOR_CLONE (Pitch_squash_engraver); + virtual void acknowledge_element (Score_elem_info); + +}; + +#endif /* PITCH_SQUASH_GRAV_HH */ + diff --git a/lily/include/staff-sym.hh b/lily/include/staff-sym.hh index 4a4888a522..5051dd9e07 100644 --- a/lily/include/staff-sym.hh +++ b/lily/include/staff-sym.hh @@ -17,12 +17,13 @@ */ class Staff_symbol : public Spanner { +public: /// this many lines. int no_lines_i_; Real interline_f_; -public: + DECLARE_MY_RUNTIME_TYPEINFO; - Staff_symbol (int lines); + Staff_symbol (); Real inter_note_f() const; int steps_i() const; protected: diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh index 4102ba5e88..5d9546409b 100644 --- a/lily/include/text-item.hh +++ b/lily/include/text-item.hh @@ -16,7 +16,6 @@ */ class Text_item : public Item ,public Staff_side { -public: public: /// do I have width? @@ -24,7 +23,7 @@ public: /* ***************/ - Text_item (General_script_def* ,Direction dir=0); + Text_item (General_script_def* ,Direction dir=CENTER); virtual ~Text_item (); DECLARE_MY_RUNTIME_TYPEINFO; diff --git a/lily/key-item.cc b/lily/key-item.cc index bf44f42cb5..d80f01670d 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -45,7 +45,7 @@ void Key_item::set_c_position (int c0) { int from_bottom_pos = c0 + 4; // ugh - int octaves =(abs (from_bottom_pos) / 7) +1 ; + int octaves =(from_bottom_pos / 7) +1 ; from_bottom_pos =(from_bottom_pos + 7*octaves)%7; c_position = from_bottom_pos - 4; } @@ -54,8 +54,9 @@ Key_item::set_c_position (int c0) void Key_item::add (int p, int a) { - if ((a<0 && p>FLAT_TOP_PITCH) || - (a>0 && p>SHARP_TOP_PITCH)) + if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+c_position>4)) && (p+c_position>1)) + || + (a>0 && ((p>SHARP_TOP_PITCH) || (p+c_position>5)) && (p+c_position>2))) { p -= 7; /* Typeset below c_position */ } diff --git a/lily/main.cc b/lily/main.cc index 6f3b7b07e4..66ae3e649c 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -6,6 +6,7 @@ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> */ +#include <stdlib.h> #include <iostream.h> #include <assert.h> #include "proto.hh" diff --git a/lily/meter-grav.cc b/lily/meter-grav.cc index 4fecb68d9c..9b11835eaf 100644 --- a/lily/meter-grav.cc +++ b/lily/meter-grav.cc @@ -20,9 +20,16 @@ Meter_engraver::Meter_engraver() void Meter_engraver::do_process_requests() { - Timing_engraver * timing_grav_l= (Timing_engraver*) - daddy_grav_l()->get_simple_translator (Timing_engraver::static_name()) - ->engraver_l (); + Translator * result = + daddy_grav_l()->get_simple_translator (Timing_engraver::static_name()); + + if (!result) + { + warning ("Lost in time: can't find Timing_translator"); + return ; + } + + Timing_engraver * timing_grav_l= (Timing_engraver*) result->engraver_l (); Meter_change_req *req = timing_grav_l->meter_req_l(); if (req) diff --git a/lily/parser.y b/lily/parser.y index 13cc69a973..545d72c8a6 100644 --- a/lily/parser.y +++ b/lily/parser.y @@ -709,7 +709,7 @@ command_req: ; abbrev_command_req: - '|' { + '|' { $$ = new Barcheck_req; } | COMMAND_IDENTIFIER { @@ -729,8 +729,8 @@ verbose_command_req: } | SKIP duration_length { Skip_req * skip_p = new Skip_req; - skip_p->duration_.set_plet ($2->numerator ().as_long (), - $2->denominator ().as_long ()); + skip_p->duration_.set_plet ($2->num (), + $2->den ()); delete $2; $$ = skip_p; diff --git a/lily/pitch-squash-grav.cc b/lily/pitch-squash-grav.cc new file mode 100644 index 0000000000..5671dd4af8 --- /dev/null +++ b/lily/pitch-squash-grav.cc @@ -0,0 +1,25 @@ +/* + pitch-squash-grav.cc -- implement Pitch_squash_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> + + */ + +#include "pitch-squash-grav.hh" +#include "note-head.hh" + +void +Pitch_squash_engraver::acknowledge_element (Score_elem_info i) +{ + if (i.elem_l_->is_type_b (Note_head::static_name ())) + { + Note_head * nl = (Note_head*)i.elem_l_->item (); + nl->position_i_ =0; + } +} + +ADD_THIS_TRANSLATOR (Pitch_squash_engraver); +IMPLEMENT_IS_TYPE_B1(Pitch_squash_engraver, Engraver); + diff --git a/lily/score-column.cc b/lily/score-column.cc index 2e045df7be..fda759a2da 100644 --- a/lily/score-column.cc +++ b/lily/score-column.cc @@ -47,8 +47,7 @@ Score_column::add_duration (Moment d) if (!d) { warning (_("Ignoring zero duration added to column at ") - + String (when_) - ); + + when_.str ()); return; } diff --git a/lily/score.cc b/lily/score.cc index 5dac696086..8e88f8ad36 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -74,7 +74,8 @@ Score::run_translator (Music_output_def *odef_l) while (iter->ok() || trans_p->moments_left_i ()) { - Moment w = infinity_mom; + Moment w; + w.set_infinite (1); if (iter->ok()) { w = iter->next_moment(); diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc index bf5a8094a5..91e0ba7048 100644 --- a/lily/spring-spacer.cc +++ b/lily/spring-spacer.cc @@ -440,20 +440,22 @@ Spring_spacer::get_ruling_durations(Array<Moment> &shortest_playing_arr, scol_l (i)->print (); } int start_context_i=0; - Moment context_shortest = infinity_mom; + Moment context_shortest; + context_shortest.set_infinite (1); context_shortest_arr.set_size(cols.size()); for (int i=0; i < cols.size(); i++) { Moment now = scol_l (i)->when(); - Moment shortest_playing = infinity_mom; + Moment shortest_playing; + shortest_playing.set_infinite (1); if (scol_l (i)->breakable_b_) { for (int ji=i; ji >= start_context_i; ji--) context_shortest_arr[ji] = context_shortest; start_context_i = i; - context_shortest = infinity_mom; + context_shortest.set_infinite (1); } if (scol_l (i)->durations.size()) { @@ -559,13 +561,13 @@ Spring_spacer::calc_idealspacing() if (! shortest_playing_len) { warning (_("Can't find a ruling note at ") - +String (scol_l (i)->when())); + +scol_l (i)->when().str ()); shortest_playing_len = 1; } if (! context_shortest) { warning(_("No minimum in measure at ") - + String (scol_l (i)->when())); + + scol_l (i)->when().str ()); context_shortest = 1; } Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when (); diff --git a/lily/staff-sym-grav.cc b/lily/staff-sym-grav.cc index d704518f8c..6aab67dece 100644 --- a/lily/staff-sym-grav.cc +++ b/lily/staff-sym-grav.cc @@ -11,7 +11,6 @@ #include "score.hh" #include "p-col.hh" -const NO_LINES = 5; void Staff_sym_engraver::fill_staff_info (Staff_info&i) @@ -32,7 +31,7 @@ Staff_sym_engraver::Staff_sym_engraver() void Staff_sym_engraver::do_creation_processing() { - span_p_ = new Staff_symbol (NO_LINES); + span_p_ = new Staff_symbol; span_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ()); announce_element (Score_elem_info (span_p_, 0)); } @@ -40,6 +39,12 @@ Staff_sym_engraver::do_creation_processing() void Staff_sym_engraver::do_removal_processing() { + Scalar l (get_property ("nolines")); + if (l.isnum_b ()) + { + span_p_->no_lines_i_ = l; + } + span_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ()); typeset_element (span_p_); span_p_ =0; diff --git a/lily/staff-sym.cc b/lily/staff-sym.cc index ea4576e59b..e51f1d37c5 100644 --- a/lily/staff-sym.cc +++ b/lily/staff-sym.cc @@ -13,9 +13,9 @@ #include "dimen.hh" -Staff_symbol::Staff_symbol (int l) +Staff_symbol::Staff_symbol () { - no_lines_i_ = l; + no_lines_i_ = 5; interline_f_ = 0 PT; } diff --git a/lily/stem-info.cc b/lily/stem-info.cc index 452d61786a..34aadfc976 100644 --- a/lily/stem-info.cc +++ b/lily/stem-info.cc @@ -23,7 +23,7 @@ Stem_info::Stem_info () Stem_info::Stem_info (Stem const *s) { - x = s->hpos_f(); + x = s->hpos_f (); dir_ = s->dir_; beams_i_ = 0 >? (abs (s->flag_i_) - 2); @@ -44,22 +44,21 @@ Stem_info::Stem_info (Stem const *s) */ - Real notehead_y = s->paper()->interline_f (); - // huh? why do i need the / 2 - // Real interbeam_f = s->paper()->interbeam_f (); - Real interbeam_f = s->paper()->interbeam_f () / 2; + Real internote_f = s->paper ()->internote_f (); + Real interline_f = 2 * internote_f; + Real notehead_y = interline_f; + // huh? why do i seem to need the / 2 ? + Real interbeam_f = s->paper ()->interbeam_f (); + // Real interbeam_f = s->paper ()->interbeam_f () / 2; + // perhaps bo dim (y) = internote? - /* well eh, huh? - idealy_f_ = dir_ * s->stem_begin_f() + beams_i_ * interbeam_f; - if (beams_i_ < 3) + idealy_f_ = dir_ * s->stem_begin_f () + beams_i_ * interbeam_f; + if (beams_i_ < 3) idealy_f_ += 2 * interline_f; - else + else idealy_f_ += 1.5 * interline_f; - */ - - idealy_f_ = dir_ * s->stem_end_f(); - - miny_f_ = dir_ * s->stem_begin_f() + notehead_y + beams_i_ * interbeam_f; + idealy_f_ /= internote_f; + miny_f_ = dir_ * s->stem_begin_f () + 2 + beams_i_ * interbeam_f / internote_f; idealy_f_ = miny_f_ >? idealy_f_; // assert (miny_f_ <= idealy_f_); diff --git a/lily/stem.cc b/lily/stem.cc index c4c502d268..41175bdb5f 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -139,7 +139,7 @@ Stem::get_center_distance (Direction d) Direction Stem::get_default_dir () { - return (get_center_distance (UP) >= + return (get_center_distance (UP) > get_center_distance (DOWN)) ? DOWN : UP; diff --git a/lily/template5.cc b/lily/template5.cc index d038d3d31c..4cfa4f0b70 100644 --- a/lily/template5.cc +++ b/lily/template5.cc @@ -20,7 +20,15 @@ template INTERVAL__INSTANTIATE(int); Rational Interval_t<Rational>::infinity() { - return Rational (INT_MAX); + Rational infty; + infty.set_infinite (1); + return infty; +} + +String +Interval_t<Rational>::T_to_str (Rational a) +{ + return a.str (); } int @@ -28,3 +36,9 @@ Interval_t<int>::infinity() { return INT_MAX; } + +String +Interval_t<int>::T_to_str (int i) +{ + return String (i); +} diff --git a/lily/time-description.cc b/lily/time-description.cc index 1294c6ca98..1437a7c441 100644 --- a/lily/time-description.cc +++ b/lily/time-description.cc @@ -17,9 +17,9 @@ Time_description::str() const s+=String (" (cadenza) "); s+= "at "; s+=when_; - s+="\nmeter " + String (whole_per_measure_/one_beat_) +":" + - String (Rational (Rational (1)/one_beat_)); - s+= "\nposition "+String (bars_i_) + ":"+ whole_in_measure_ +"\n}\n"; + s+="\nmeter " + (whole_per_measure_/one_beat_).str () +":" + + (Rational (Rational (1)/one_beat_)).str (); + s+= "\nposition "+String (bars_i_) + ":"+ whole_in_measure_.str () +"\n}\n"; return s; } diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 8918a48543..b91f254c38 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -11,6 +11,7 @@ #include "translator.hh" #include "debug.hh" #include "pcursor.hh" +#include "rational.hh" Translator_group::Translator_group (Translator_group const&s) : Translator(s) diff --git a/lily/translator.cc b/lily/translator.cc index 4229f61600..5655da8a15 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -11,6 +11,7 @@ #include "debug.hh" #include "translator-group.hh" #include "dictionary-iter.hh" +#include "rational.hh" Translator::~Translator () { diff --git a/lily/warn.cc b/lily/warn.cc index 0dcee118ab..86604d5853 100644 --- a/lily/warn.cc +++ b/lily/warn.cc @@ -25,7 +25,7 @@ ostream *mlog (&cerr); void error_t (String const & s, Moment const & r) { - String t_mom = String (trunc (r)) + String (r - Moment (trunc (r))); + String t_mom = r.truncated ().str () + (r - r.truncated ()).str (); String e=s+ " (t = " + t_mom + ")"; error (e); } @@ -33,6 +33,6 @@ error_t (String const & s, Moment const & r) void error_t (String const & s, Time_description const &t_tdes) { - String e=s+ " (at t=" + String (t_tdes.bars_i_) + ": " + String (t_tdes.whole_in_measure_) + ")\n"; + String e=s+ " (at t=" + String(t_tdes.bars_i_) + ": " + (t_tdes.whole_in_measure_).str () + ")\n"; error (e); } diff --git a/make/Rules.make b/make/Rules.make index 6062fbc2d3..c22e80abb8 100644 --- a/make/Rules.make +++ b/make/Rules.make @@ -53,4 +53,4 @@ $(outdir)/%: %.m4 $(depth)/%.txt: check-doc-deps rm -f $@ - ln `find ${depth}/Documentation -name $@|head -1` . + ln `find ${depth}/Documentation -name $@ -print|head -1 ` . diff --git a/make/Targets.make b/make/Targets.make index f72367cab9..9535aee6f1 100644 --- a/make/Targets.make +++ b/make/Targets.make @@ -129,7 +129,8 @@ doc: dist: -mkdir $(distdir) $(MAKE) localdist - chmod -Rf a+rX $(distdir) + chmod -R a+r $(distdir) + chmod a+x `find $(distdir) -type d -print` (cd ./$(depth)/$(outdir); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz) diff --git a/make/Toplevel.make.in b/make/Toplevel.make.in index d000ef9013..c90d0805a4 100644 --- a/make/Toplevel.make.in +++ b/make/Toplevel.make.in @@ -53,12 +53,12 @@ localdist: configure INSTALL.txt: check-doc-deps check-mf-deps rm -f INSTALL.txt - ln `$(FIND) ./ -name INSTALL.txt|head -1` . + ln `$(FIND) ./ -name INSTALL.txt -print |head -1` . # all machine generated junk resides in out/ distclean: - set -e; for i in `find -type d -name 'out'`; do \ + set -e; for i in `find . -type d -name 'out' -print`; do \ rm -f $$i/* $$i/.build; done rm -rf *-build-dir ( cd flower && rm -f config.cache config.status config.log ) @@ -74,4 +74,5 @@ Makefile: make/Toplevel.make.in echo '# WARNING WARNING WARNING WARNING' > $@ echo '# do not edit! this is generated from make/Toplevel.make.in' >> $@ cat $< >> $@ + chmod -w $@ diff --git a/make/Variables.make b/make/Variables.make index e7564f48a4..efe49e20f7 100644 --- a/make/Variables.make +++ b/make/Variables.make @@ -153,7 +153,7 @@ CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS) 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++ -lstdc++ # need lg++ for win32, really! +LOADLIBES = $(EXTRA_LIBES) $(MODULE_LIBES) -lstdc++ # need lg++ for win32, really! # # macro compiler: diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index 72e1d2a8a6..673546fc1b 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.47 -Inschrijf datum: 06MAR98 +Versie: 0.1.48 +Inschrijf datum: 12MAR98 Beschrijving: LilyPond is de muziek typesetter van het GNU Project. Het programma genereert muziek in zichtbare of hoorbare vorm uit uit een muzikale definitie file: @@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 395k lilypond-0.1.47.tar.gz + 395k lilypond-0.1.48.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.47.tar.gz + 395k lilypond-0.1.48.tar.gz Copi"eer politie: GPL End diff --git a/make/lilypond.lsm b/make/lilypond.lsm index a0620497c1..74fe198eb2 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.47 -Entered-date: 06MAR98 +Version: 0.1.48 +Entered-date: 12MAR98 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 @@ -15,8 +15,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 470k lilypond-0.1.47.tar.gz + 470k lilypond-0.1.48.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 470k lilypond-0.1.47.tar.gz + 470k lilypond-0.1.48.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index 1092351059..1f1c1addb8 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.47 +Version: 0.1.48 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.47.tar.gz +Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.48.tar.gz Summary: A program for typesetting music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys <hanwen@stack.nl> @@ -31,8 +31,8 @@ strip lily/out/lilypond mi2mu/out/mi2mu 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/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/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/convert-mudela.txt Documentation/out/faq.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/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README +%doc input/beam-bug.ly 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 diff --git a/mf/Makefile b/mf/Makefile index 95cb53e788..e40eeaddea 100644 --- a/mf/Makefile +++ b/mf/Makefile @@ -65,3 +65,13 @@ $(MFDEPS): $(FONT_FILES) include $(MFDEPS) # +# silly workaround for stupid TeXs +systempks: +# irix 5.3 +# MakeTeXPK feta16 300 300 magstep\(0.0\) + set -e ; for a in $(FONT_FILES); do \ + MakeTeXPK `basename $$a .mf` 300 300 magstep\(0.0\) ; \ + mf "\mode=ljfour; input `basename $$a .mf`" ;\ + mv -f `find . -name '*.tfm' -print -o -name '*gf' -print` out/ ; \ + done + diff --git a/mf/feta-din10.mf b/mf/feta-din10.mf index 63ed200622..f6f948fe3c 100644 --- a/mf/feta-din10.mf +++ b/mf/feta-din10.mf @@ -167,7 +167,9 @@ input feta-ital-r; input feta-ital-s; input feta-ital-z; -font_slant slant; font_x_height x_height#; +font_slant slant; +font_x_height x_height#; +font_quad 18u#; % to have a working em unit fet_endfont("feta-din"); end. diff --git a/mi2mu/main.cc b/mi2mu/main.cc index 623fc816e0..57c4359737 100644 --- a/mi2mu/main.cc +++ b/mi2mu/main.cc @@ -29,9 +29,6 @@ static File_path path; Verbose level_ver = NORMAL_ver; -/// just to make sure print_rat is linked in -static void (*rat_printer)(Moment const&); - void usage() { @@ -91,7 +88,6 @@ int main (int argc_i, char* argv_sz_a[]) { Mudela_key key (0, 0); - rat_printer = print_rat; Long_option_init long_option_init_a[] = { diff --git a/mi2mu/mudela-staff.cc b/mi2mu/mudela-staff.cc index 8507335f9d..30fb80236f 100644 --- a/mi2mu/mudela-staff.cc +++ b/mi2mu/mudela-staff.cc @@ -49,9 +49,9 @@ Mudela_staff::eat_voice (Link_list<Mudela_item*>& items) for (PCursor<Mudela_item*> i (items); i.ok();) { - LOGOUT(DEBUG_ver) << "At: " << i->at_mom() << "; "; - LOGOUT(DEBUG_ver) << "dur: " << i->duration_mom() << "; "; - LOGOUT(DEBUG_ver) << "mom: " << mom << " -> "; + LOGOUT(DEBUG_ver) << "At: " << String (i->at_mom()) << "; "; + LOGOUT(DEBUG_ver) << "dur: " << String (i->duration_mom()) << "; "; + LOGOUT(DEBUG_ver) << "mom: " << String (mom) << " -> "; if (i->at_mom() > mom) { Moment dur = i->at_mom() - mom; @@ -68,7 +68,7 @@ Mudela_staff::eat_voice (Link_list<Mudela_item*>& items) } else if (i.ok()) i++; - LOGOUT(DEBUG_ver) << "mom: " << mom << "\n"; + LOGOUT(DEBUG_ver) << "mom: " << String (mom) << "\n"; } } diff --git a/mutopia/J.S.Bach/preludes-1.ly b/mutopia/J.S.Bach/preludes-1.ly index c46593a660..2c87868ab7 100644 --- a/mutopia/J.S.Bach/preludes-1.ly +++ b/mutopia/J.S.Bach/preludes-1.ly @@ -9,7 +9,7 @@ copyright = "public domain"; \include "paper20.ly" -rh = \melodic{ +one = \melodic{ \octave c''; \textstyle "italic"; r16\p_"legato"\< ['g-1( c-3 )e-5] r ['g-1( c )e] @@ -29,16 +29,16 @@ rh = \melodic{ r [''b 'd 'a-5] r [''b 'd 'g-4] r [''a 'c 'g-5] r [''a 'c 'f!-4] | % ugh, arpeggio - \multi 2 < - { \stemup; 'f4 r s } - { \stemdown; <''g4 'd> r s } + < + { \voiceone; 'f4 r s } + { \voicetwo; <''g4 'd> r s } > - \stemboth; + \onevoice; % ugh beam across staffs, slur starts at lower staff r16 [''g-1( ''b 'd] | - \stemup; + \voiceone; )''b s4 ['g16-1( 'b-2 d] )'b s s s [f-2 g-3 b-5 f-2] | - \stemboth; + \onevoice; [e-1\f c'-5( g-3 f-2] [e-1 c'-5 g-3 e-2] [)d c'-5( f-3 e-2] [d-1 b-5 f-3 d-2] | [)c b-5( e-3 d-2] [c-1 a-5 e-3 c-2] @@ -53,18 +53,17 @@ rh = \melodic{ [f-5 d-3 es-4 c-2] ['fis-1 es-4 d-3 c-2] | ['b-1 d-5 'b-3 'g-1] ['as-4-"cresc. e rall." 'f-2 'g-3 'd-1] ['es-2 'fis-3 'a-4 c-5] - \multi 2 < - { \stemup; r [c8 'b16] } - { \stemdown; ['d8 'f-2] } + < + { \voiceone; r [c8 'b16] } + { \voicetwo; ['d8 'f-2] } > - \stemboth; | + \onevoice; | <c1\mf 'g 'e> \bar "|."; } -lh = \melodic{ +two = \melodic{ \octave c; - \clef bass; \textstyle "roman"; c4-5 e-3 [g32-1 fis-2 g8.-1] 'g4 | d-5 f-3 [a32-1 gis a8.] 'a4 | @@ -83,9 +82,9 @@ lh = \melodic{ 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] s s s s \clef bass; | - \multi 2 < - { \stemup; g1 ~ g ~ g ~ g ~ g ~ g ~ g } - { \stemdown; 'g1 ~ 'g ~ 'g ~ 'g ~ 'g ~ 'g ~ 'g } + < + { \voiceone; g1 ~ g ~ g ~ g ~ g ~ g ~ g } + { \voicetwo; 'g1 ~ 'g ~ 'g ~ 'g ~ 'g ~ 'g ~ 'g } > <c1 'c> \bar "|."; @@ -95,24 +94,31 @@ global = \melodic{ \meter 4/4; } +treble_staff = \type Staff = treble < + \global + \one +> + +bass_staff = \type Staff = bass < +% bass = Staff < + \clef "bass"; + \global + \two +> + +grand_staff = \type Grandstaff < + \treble_staff + \bass_staff +> + +a4 = \paper{ + \paper_twenty + linewidth= 195.\mm; +} + \score{ - % Moderato - % it would be nice to shut-off fingering... - \melodic \type Grandstaff < - < - \global - \rh - > - < - \global - \lh - > - > - \paper{ - \paper_twenty - linewidth= 195.\mm; - } - \midi{ - \tempo 4 = 70; - } + % Moderato + \grand_staff + \paper{ \a4 } + \midi{ \tempo 4 = 80; } } diff --git a/mutopia/J.S.Bach/preludes-2.ly b/mutopia/J.S.Bach/preludes-2.ly index c82b6d784a..39ba3fff8b 100644 --- a/mutopia/J.S.Bach/preludes-2.ly +++ b/mutopia/J.S.Bach/preludes-2.ly @@ -8,73 +8,72 @@ copyright = "public domain"; \include "paper20.ly" -rh = \melodic{ +one = \melodic{ \octave c''; \textstyle "italic"; r8\mf ['c-1( 'e-2 'g-4] ['e-2 'c-1 'bes-5 'g-3] | [)'a-4\< 'c-1( 'f-2 'a-4] ['f 'c c-5 'a-3] | [)'b-4 'g-1( 'b-2 d-4] ['b-2 'g f-5 \!d-3] | - \multi 2 < - {\stemup; )e2-4\f r4 e-5 } - {\stemdown; <c2 'g> r4 <c 'g> } + < + {\voiceone; )e2-4\f r4 e-5 } + {\voicetwo; <c2 'g> r4 <c 'g> } > - \stemboth; | - \multi 2 < - { \stemup; d2-4 r4 d-4 } - { \stemdown; <c2 'a> r4 <c 'a> } + \onevoice; | + < + { \voiceone; d2-4 r4 d-4 } + { \voicetwo; <c2 'a> r4 <c 'a> } > - \stemboth; | - \multi 2 < - { \stemup; d8 } - { \stemdown; <'b8 'g> } + \onevoice; | + < + { \voiceone; d8 } + { \voicetwo; <'b8 'g> } > - \stemboth; + \onevoice; ['g8-1\mf( 'b-2 d-4] - \multi 2 < - { \stemup; )'b4 e-5 } - { \stemdown; 'g4 'b } + < + { \voiceone; )'b4 e-5 } + { \voicetwo; 'g4 'b } > - \stemboth; | - \multi 2 < - { \stemup; c2 r4 < {c-5 ~ c8} {'a4 ~ 'a8} > } - { \stemdown; c2 r4 'e4 ~ 'e8 } + \onevoice; | + < + { \voiceone; c2 r4 < {c-5 ~ c8} {'a4 ~ 'a8} > } + { \voicetwo; c2 r4 'e4 ~ 'e8 } > - \stemboth; + \onevoice; ['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] | [)fis-4 'a-1( c-2 fis-4] [c 'a a-5 \!fis-3] | - \multi 2 < - { \stemup; )g2-5\f } - { \stemdown; <d2 'b> } + < + { \voiceone; )g2-5\f } + { \voicetwo; <d2 'b> } > - \stemboth; + \onevoice; r4 b4-2( | [c8-1 e-2 g c'] [g-2 e-1 bes-4 g-2] | [)a16->-3 g-2 f-1 e-3] [d c 'b!-3 'a-2] ['b-3\< 'g-1 'a 'b] [c-1 d e \!f] | g4-5\ff - \multi 2 < - { \stemup; c2-5 'b4-4 } - { \stemdown; 'g2-2 'd4-1 } + < + { \voiceone; c2-5 'b4-4 } + { \voicetwo; 'g2-2 'd4-1 } > - \stemboth; - \multi 2 < - { \stemup; c1^5 } - { \stemdown; 'e1_1} + \onevoice; + < + { \voiceone; c1^5 } + { \voicetwo; 'e1_1} > - \stemboth; + \onevoice; \bar "|."; } -lh = \melodic{ +two = \melodic{ \octave c; - \clef bass; - \multi 2 < - { \stemup; c1 ~ c ~ c } - { \stemdown; 'c1 ~ 'c ~ 'c } + < + { \voiceone; c1 ~ c ~ c } + { \voicetwo; 'c1 ~ 'c ~ 'c } > - \stemboth; | + \onevoice; | r8 [c-5( e-3 g-1] [e-3 c-5 c' e-4] | [)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis-4] | )g2-3 r4 g-2( | @@ -100,24 +99,32 @@ global = \melodic{ \meter 4/4; } +treble_staff = \type Staff = treble < + \global + \one +> + +bass_staff = \type Staff = bass < +% bass = Staff < + \clef "bass"; + \global + \two +> + +grand_staff = \type Grandstaff < + \treble_staff + \bass_staff +> + +a4 = \paper{ + \paper_twenty + linewidth= 195.\mm; +} + \score{ - % Moderato - % it would be nice to shut-off fingering... - \melodic \type Grandstaff < - < - \global - \rh - > - < - \global - \lh - > - > - \paper{ - \paper_twenty - linewidth= 195.\mm; - } - \midi{ - \tempo 4 = 90; - } + % Moderato + \grand_staff + \paper{ \a4 } + \midi{ \tempo 4 = 100; } } + diff --git a/mutopia/J.S.Bach/preludes-3.ly.m4 b/mutopia/J.S.Bach/preludes-3.ly.m4 index e7e85b9185..ec1ef4fc2c 100644 --- a/mutopia/J.S.Bach/preludes-3.ly.m4 +++ b/mutopia/J.S.Bach/preludes-3.ly.m4 @@ -12,7 +12,7 @@ define(comma, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |) define(s, `comma(translit($*,` ', `,'))') define(t, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |) -rh = \melodic{ +one = \melodic{ \octave c'; \textstyle "italic"; %# s(`c' `es' `g' `\p(\<' `\!' `)\!' `\>') @@ -75,7 +75,7 @@ rh = \melodic{ \bar "|."; } -lh = \melodic{ +two = \melodic{ \octave c; \clef bass; % c4 r [g8-.(\ped )es-.\*] | @@ -143,23 +143,31 @@ global = \melodic{ \key bes es as; } +treble_staff = \type Staff = treble < + \global + \one +> + +bass_staff = \type Staff = bass < +% bass = Staff < + \clef "bass"; + \global + \two +> + +grand_staff = \type Grandstaff < + \treble_staff + \bass_staff +> + +a4 = \paper{ + \paper_twenty + linewidth= 195.\mm; +} + \score{ % Semplice e non troppo legato - \melodic \type Grandstaff < - < - \global - \rh - > - < - \global - \lh - > - > - \paper{ - \paper_twenty - linewidth= 195.\mm; - } - \midi{ - \tempo 4 = 90; - } + \grand_staff + \paper{ \a4 } + \midi{ \tempo 4 = 100; } } diff --git a/mutopia/J.S.Bach/preludes-4.ly b/mutopia/J.S.Bach/preludes-4.ly index 4dc6d24caf..7060b2ea94 100644 --- a/mutopia/J.S.Bach/preludes-4.ly +++ b/mutopia/J.S.Bach/preludes-4.ly @@ -19,7 +19,7 @@ one = \melodic{ \stemup; )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ | e16\< \stemboth ['a16( cis 'a] [d-2 e fis d-1] - [g-3 fis g a-4] [a-3 b a \!g] | + [g-3 fis g a-4] [g-3 b a \!g] | \stemup )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> | <a4-5( e> <fis-4 d-2> <[)g!16-5 d> fis-2 g-3 a-4] @@ -49,7 +49,7 @@ one = \melodic{ ['d8. 'e16~] ['e 'd8 'cis16] | \stemup r16 ['d-1\< 'fis 'd] ['g 'a 'b 'g-1] [c-3 'b c d] [c e d-4 \!c] | - 'b4-5 'a ~ ['a8 'g-5 ~] ['g16 'fis8-4 'e'16-3] | + 'b4-5 'a ~ ['a8 'g-5 ~] ['g16 'fis8-4 'e16-3] | ['fis8-4 'e-5~] ['e 'd-5~] 'd4 'cis-4 | 'd2\p-"rall." ~ ['d16 ''a-2( ''b-3 'cis-4] )'d4-5 | \bar "|."; @@ -60,7 +60,7 @@ two = \melodic{ \textstyle "finger"; % ugh: koor % \translator Staff=bass \octave c; \stemup - \stemup; +% \stemup; fis4-1( e8-2 a4 a4 gis8-2 | ) a8 \translator Staff=treble \octave c''; \stemdown @@ -81,7 +81,7 @@ two = \melodic{ \stemboth 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> + <'a4-5 'fis-3 'cis> r16 ['d-1 'fis-2 'd~] <'b4-5 'g-3 'd> r16 ['fis-1 'a 'fis~] | \stemdown 'fis4 'e 'd 'cis | @@ -93,24 +93,19 @@ two = \melodic{ \translator Staff=treble \octave c''; \stemdown 'd8.-1 ~ ['d8 'c] 'd4 [''a8 ''g] | \translator Staff=bass \octave c; \stemup - [fis'8 c'-1] b4-1 <a + [fis'8 c'-1] b4-1 \stemdown <a \translator Staff=treble \octave c''; \stemdown ''a4.-2> \stemdown 'a8~ | - ['a 'g-3~] ['g16 'e 'fis8~] ['fis16 'd8.~] ['d8. cis!16] | + ['a 'g-3~] ['g16 'e 'fis8~] ['fis16 'd8.~] ['d8. 'cis!16] | \translator Staff=bass \octave c; \stemup % <[d'8-2 a-1> <a~ g]> <a4 [fis16-2> e-1 fis-2 d-1] - \multi 2 < - { - [d'8-2 a~] a4 - } - { - \property Voice.hshift = 1 - [a8-1 g] [fis16-2 e-1 fis-2 d-1] - \property Voice.hshift = 0 - } + < + { \voiceone; [d'8-2 a~] a4 } + { \voicethree; [a8-1 g] [fis16-2 e-1 fis-2 d-1] } > + \voiceone; [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] | [g g-1 fis-2 e-1] fis4-2 ~ fis2 \bar "|."; @@ -118,7 +113,7 @@ two = \melodic{ three = \melodic{ \octave c; - \stemdown; +% \stemdown; d4-3 c-4 'b e-3 | a16 ['a-5\mf( cis-3 'a-5] [d-2 e-1 fis-2 d-4] [g-1 fis-3 g a] [g b a g] | @@ -153,11 +148,11 @@ three = \melodic{ four = \melodic{ \skip 4*36; \octave c'; - \stemup; - \property Voice.hshift = 1 +% \stemup; +% \property Voice.hshift = 1 a2 fis | d - \property Voice.hshift = 0 +% \property Voice.hshift = 0 \skip 4*11; \translator Staff=bass \octave c; \stemup a4 ~ [a16 d-2 g8-1] [fis e-1] | @@ -168,66 +163,43 @@ four = \melodic{ 'd2 'd2 } -rh = \melodic{ - \multi 2 < - \one - \four - > - \bar "|."; +global = \melodic{ + \meter 4/4; + \key fis cis; } +treble_staff = \type Staff = treble < + \global + { \voiceone \one } + { \voicefour \four } +> -lh = \melodic{ +bass_staff = \type Staff = bass < +% bass = Staff < \clef "bass"; - \multi 2 < - \two - \three - > - \bar "|."; -} + \global +% { \voiceone \two } + { \type Voice = bone \skip 1*0; \property Voice.ydirection = \up \two } + { \voicetwo \three } +> +grand_staff = \type Grandstaff < + \treble_staff + \bass_staff +> -global = \melodic{ - \meter 4/4; - \key fis cis; +widea4 = \paper{ + \paper_twenty + linewidth= 195.\mm; +% arithmetic_basicspace = 2.; +% arithmetic_multiplier = 6.\pt; + arithmetic_basicspace = 3.; + arithmetic_multiplier = 6.\pt; } \score{ - % Allegretto - % it would be nice to shut-off fingering... - \melodic \type Grandstaff < - \type Staff=treble < - \global -% huh? try these iso directly! -% \lh - \multi 2 < - \one - \four - > - > - \type Staff=bass < - \global -% \rh -% or try \two having here, iso above! -% \two - { - \clef "bass"; - \multi 2 < - \two - \three - > - } - > - > - \paper{ - \paper_twenty - linewidth= 195.\mm; -% arithmetic_basicspace = 2.; -% arithmetic_multiplier = 6.\pt; - arithmetic_basicspace = 3.; - arithmetic_multiplier = 6.\pt; - } - \midi{ - \tempo 4 = 110; - } + % Allegretto + \grand_staff + \paper{ \widea4 } + \midi{ \tempo 4 = 70; } } diff --git a/mutopia/J.S.Bach/preludes-5.ly b/mutopia/J.S.Bach/preludes-5.ly index b0812f72b1..0291fe4077 100644 --- a/mutopia/J.S.Bach/preludes-5.ly +++ b/mutopia/J.S.Bach/preludes-5.ly @@ -8,62 +8,55 @@ copyright = "public domain"; \include "paper20.ly" -rh = \melodic{ +one = \melodic{ \octave c'; \textstyle "italic"; [d8-1\p a-5-"legato" f-3 d-1 a-5 f-3] | [d-1 a-5 f-3 d-1 a-5 f-3] | - [d-1\< b-4 g-2 d-1 b-4 \!g-2] | - [d-1 b-4 g-2 d-1 b-5 g-3] | + [d-1\< bes-4 g-2 d-1 bes-4 \!g-2] | + [d-1 bes-4 g-2 d-1 bes-5 g-3] | [cis-1\mf g-4 e-2 cis-1 g-4 e-2] | - [cis-1 b-5 g-4 e-2 a-5 g-4] | + [cis-1 bes-5 g-4 e-2 a-5 g-4] | [f-3\< d-1 f-2 a-4 f-1 a-2] | [d'-5 a-1 d'-2 f'-4 d'-1 \!f'-2] | [b'\> f'-3 e' d' c'-3 b] | [a gis-3 fis e d'-5 \!b-2] | - \multi 2 < + < { - \stemup + \voiceone; % 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 | - a4 r r - } + { \voicetwo; a4 r r | a4 r r } > | - \stemboth; + \onevoice; [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 | -% r8 [d'-5( c bes a\pr g] | - r8 [d'-5( c bes a g] | +% r8 [d'-5( c' bes a\pr g] | + r8 [d'-5( c' bes a g] | [)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 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'] - } - { - \stemdown - a4 + < + { + \voiceone; + [cis'32-4 bes cis'16 e'8-5-"poco cresc." cis'-3 a e' cis'] } + { \voicetwo; a4 } > - \stemboth + \onevoice; [a8 e'-5 cis' a bes!-3 a] | [g e'-5 cis'-3 g e'-5 cis'-3] | [g-1 e'-5 cis' g a-3 g] | [f-"dim." d'-5 bes f d' bes] | [f d'-5 bes f d' bes] | [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] | - [fis-2 c'-5 a-3 fis-2 c-5 a-3] | + [fis-2 c'-5 a-3 fis-2 c'-5 a-3] | [bes-4 g-1 fis-2 g-3 d-1 g-2] | [bes-4 g-2 d-1 bes-5 g-3 d-1] | [e-2\p g-4 fis-3 g-1 bes-4 g-2] | @@ -74,43 +67,34 @@ rh = \melodic{ [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] /stemup 'a-2 s16 s8 s4 | + [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] \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] | + [f' a'-4 f' d'] [f'-4 d' b d'-5] [gis-2 b a gis] | <g'!4.-5\f e' a> a'8-5 - \multi 2 < + < { - \stemup + \voiceone; f'4-4\> ~ | \![f'8 e'] [e'32-4 f' e'8. ~] [e'8 d'-3] } - { - \stemdown - <d'4 a> r4 cis'-2 - } + { \voicetwo; <d'4 a> r4 cis'-2 } > | - \stemboth; + \onevoice; [d'8-4 c'!-3 a-1 d'-4 bes-2 g-1] | [c'-5 a-3 fis-2 bes-4 g e ] | [a-5 fis-"dim. e rall." d g-5 e cis-2] | - \multi 2 < - { - \stemup - <fis2-.-5\p 'a> - } - { - \stemdown - [d32( cis d8. ~] ) d2 - } + < + { \voiceone; <fis2-.-5\p 'a> } + { \voicetwo; [d32( cis d8. ~] ) d2 } > | \bar "|."; } -lh = \melodic{ +two = \melodic{ \clef "bass"; \octave c; [d32( cis )d8.] r4 r | @@ -174,12 +158,12 @@ lh = \melodic{ r4 r r | %{ ugh, 'forget' the 8 below: - [cis-3( e cis 'a] [d16-1 c 'b 'a] | + [cis-3( e cis 'a] [d16-1 c 'bes 'a] | and lily dumps koor lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed. Aborted (core dumped) %} - [cis8-3( e cis 'a] [d16-1 c 'b 'a] | + [cis8-3( e cis 'a] [d16-1 c 'bes 'a] | [)'g8 g a-2( g-3 a-1 'a] | )d4-3 d'-1 d | d r r | @@ -188,33 +172,41 @@ Aborted (core dumped) \bar "|."; } -global = \melodic{ +global = \melodic{ \meter 3/4; \key bes; } +treble_staff = \type Staff = treble < + \global + \one +> + +bass_staff = \type Staff = bass < +% bass = Staff < + \clef "bass"; + \global + \two +> + +grand_staff = \type Grandstaff < + \treble_staff + \bass_staff +> + +widea4 = \paper { + \paper_twenty +% arithmetic_basicspace = 2.; +% arithmetic_multiplier = 6.\pt; + arithmetic_basicspace = 2.; + arithmetic_multiplier = 8.\pt; + linewidth= 195.\mm; +} + \score{ - % Moderato - % it would be nice to shut-off fingering... - \melodic \type Grandstaff < - < - \global - \rh - > - < - \global - \lh - > - > - \paper{ - \paper_twenty - linewidth= 195.\mm; -% arithmetic_basicspace = 2.; -% arithmetic_multiplier = 6.\pt; - arithmetic_basicspace = 2.; - arithmetic_multiplier = 8.\pt; - } - \midi{ - \tempo 4 = 90; - } + % Moderato + \grand_staff + \paper{ \widea4 } + \midi{ \tempo 4 = 90; } } + diff --git a/mutopia/J.S.Bach/preludes-6.ly b/mutopia/J.S.Bach/preludes-6.ly index b25d5a287f..1c46d4b0cd 100644 --- a/mutopia/J.S.Bach/preludes-6.ly +++ b/mutopia/J.S.Bach/preludes-6.ly @@ -22,7 +22,7 @@ one = \melodic{ [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] \!e'4-5\> | + fis4-4 g r8\<-"rall." [g16-1( bes-2] \!e'4-5 | \!)d'1-5 \bar "|."; } @@ -41,7 +41,7 @@ two = \melodic{ 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.] s4 r16 [bes-2 a-2 \!g-1] | + r16 [e-3 d-1 c!-2] ['bes! d8.] s4 r16\> [bes-2 a-2 \!g-1] | fis1-2 } @@ -79,65 +79,45 @@ four = \melodic{ b2-1 a-1 | g a4. [gis16 a] | gis2 <[g8 cis> <f-3 d-1]> e4-2 | - d4. [fis16-3 g-2] r16 b8.-1 ~ b4 | + d4. [fis16-3 g-2] r16 bes8.-1 ~ bes4 | \stemdown d1-5 } -rh = \melodic{ - \one - \multi 2 < - \one - \two - > - \bar "|."; +global = \melodic{ + \meter 4/4; + \key bes; } -lh = \melodic{ +treble_staff = \type Staff = treble < + \global + \one + \two +> + +bass_staff = \type Staff = bass < +% bass = Staff < \clef "bass"; - \multi 2 < - \three - \four - > - \bar "|."; -} + \global + \three + \four +> +grand_staff = \type Grandstaff < + \treble_staff + \bass_staff +> -global = \melodic{ - \meter 4/4; - \key bes; +a4 = \paper{ + \paper_twenty + linewidth = 195.\mm; } \score{ - % Allegretto - % it would be nice to shut-off fingering... - \melodic \type Grandstaff < - \type Staff=treble < - \global -% huh? try these iso directly! -% \lh - \multi 2 < - \one - \two - > - > - \type Staff=bass < - \global -% \rh -% or try \two having here, iso above! - \clef "bass"; - \multi 2 < - \three - \four - > - > - > - \paper{ - \paper_twenty - linewidth= 195.\mm; - } - \midi{ - \tempo 4 = 40; - } + % Allegretto + \grand_staff + \paper{ \a4 } + \midi{ \tempo 4 = 40; } } + diff --git a/mutopia/J.S.Bach/preludes.tex b/mutopia/J.S.Bach/preludes.tex index 942bd2d55b..6bed0be4d8 100644 --- a/mutopia/J.S.Bach/preludes.tex +++ b/mutopia/J.S.Bach/preludes.tex @@ -8,7 +8,7 @@ \hsize210mm \vsize269mm \advance\topmargin-25mm -\advance\textheight45mm +\advance\textheight50mm \pagestyle{empty} \input titledefs @@ -39,7 +39,6 @@ \kern-\staffheight \piece{1}{preludes-1}{Moderato} -\vskip2\staffheight \piece{2}{preludes-2}{Moderato} \newpage \piece{3}{preludes-3}{Semplice e non troppo legato} diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly index 56b5484e9f..0b9e7fcabc 100644 --- a/mutopia/J.S.Bach/wtk1-fugue2.ly +++ b/mutopia/J.S.Bach/wtk1-fugue2.ly @@ -14,19 +14,18 @@ copyright = "Public Domain"; \version "0.1.9"; +keyCminor = \melodic \key bes es as; % should add \need{dutch.ini} for % correct parsing of note names -global = - \melodic { +global = \melodic { \meter 4/4; % should be \meter C \keyCminor \skip 1*31; \bar "|."; | - } +} -dux = - \melodic { +dux = \melodic { \clef "violin"; \octave c'; @@ -72,11 +71,10 @@ dux = %% 30 f4 r8 f [f es16 d] [es8 <f as]> | <B d> r <B d> r <G2 c> | - } +} -comes = - \melodic { +comes = \melodic { \octave c''; \stemup r1 | @@ -117,10 +115,9 @@ comes = %% 30 [As c16 B] [c8 <d 'b! 'as!]> [G8 c16 B] [c8 d] | [F16 G] As4 [G16 F] E2 | - } +} -bassdux = - \melodic { +bassdux = \melodic { \clef "bass"; \octave c'; r1 | @@ -167,7 +164,7 @@ bassdux = \score { - \melodic \type Grandstaff < + \type Grandstaff < \type Staff=treble < \global \dux diff --git a/tex/dyndefs.tex b/tex/dyndefs.tex index 3c9b7f1438..4032e1351a 100644 --- a/tex/dyndefs.tex +++ b/tex/dyndefs.tex @@ -1,30 +1,39 @@ % dyndefs.tex % +%\let\dyn\dynfont \def\dyn{\dynfont} -\def\dynaf{\dynfont\char0} -\def\dynnf{\dynfont\char1} -\def\dynnf{\dynfont\char1} -\def\dynp{\dynfont\char2} -\def\dynm{\raise.08ex\hbox{\dynfont\char3}} -\def\dynr{\raise.1ex\hbox{\dynfont\char4}} -\def\dyns{\raise.1ex\hbox{\dynfont\char5}} -\def\dynz{\raise.1ex\hbox{\dynfont\char6}} -\def\kdynf{\dynnf\kern-.25ex} -\def\kdynp{\dynp\kern-.15ex} +\chardef\dynaf = 0 +\chardef\dynnf = 1 +\chardef\dynnp = 2 +\chardef\dynnm = 3 +\chardef\dynnr = 4 +\chardef\dynns = 5 +\chardef\dynnz = 6 -\def\dynf{{\dynaf}} -\def\dynpp{{\kdynp\dynp}} -\def\dynppp{{\kdynp\kdynp\dynp}} -\def\dynmp{{\raise.1ex\hbox{\dynm}\kern -.25ex\dynp}} -\def\dynmf{{\dynfont\raise.08ex\hbox{\dynm}\kern-.45ex\dynnf}} -\def\dynff{{\kdynf\dynnf}} -\def\dynfff{{\kdynf\kdynf\dynnf}} +\def\dynm{\raise .2ex\hbox{\dynnm}} +\def\dynmm{\raise .1ex\hbox{\dynnm}} +\def\dynr{\raise .2ex\hbox{\dynnr}} +\def\dyns{\raise .15ex\hbox{\dynns}} +\def\dynz{\raise .15ex\hbox{\dynnz}} -\def\dynfp{{\kdynf\kern.1ex\dynp}} -\def\dynsf{{\dyns\kern-.5ex\dynnf}} -\def\dynsfz{{\dynsf\kern-.15ex\dynz}} -\def\dynfz{{\dynf\dynz}} -\def\dynrf{{\dynr\kern-.4ex\dynf}} +\def\kdynf{\dynnf\kern -0.1em} +\def\kdynp{\dynnp\kern -0.05em} +\def\dynp{{\dyn\dynnp}} +\def\dynpp{{\dyn\kdynp\dynnp}} +\def\dynppp{{\dyn\kdynp\kdynp\dynnp}} +\def\dynmp{{\dyn\dynmm\kern -0.07em\dynnp}} +\def\dynmf{{\dyn\dynm\kern -0.14em\dynnf}} +\def\dynf{{\dyn\dynaf}} +\def\dynff{{\dyn\kdynf\dynnf}} +\def\dynfff{{\dyn\kdynf\kdynf\dynnf}} + +\def\dynfp{{\dyn\dynnf\kern -0.04em\dynnp}} +\def\dynsf{{\dyn\dyns\kern -0.13em\dynnf}} +\def\dynsfz{{\dyn\dynsf\dynz}} +\def\dynfz{{\dyn\dynnf\dynz}} +\def\dynrf{{\dyn\dynr\kern -0.1em\dynnf}} + +\endinput diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex index 0552dd37ae..d8e63ccbab 100644 --- a/tex/fetdefs.tex +++ b/tex/fetdefs.tex @@ -1,45 +1,49 @@ % fetdefs.tex % encapsulating tex backend for auto-generated feta definitions -\def\fetsixteendefs{ - \font\feta=feta16 - \font\vetfont=feta-beams16 - \font\fetanummer=feta-nummer8 - \font\dynfont=feta-din10 scaled \magstep1 - \font\bracefont=feta-braces16 - \font\fingerfont=feta-nummer4 +\def\fetsixteendefs{% + \font\feta = feta16 + \font\vetfont = feta-beams16 + \font\fetanummer = feta-nummer8 + \font\dynfont = feta-din10 scaled \magstep 1 + \font\bracefont = feta-braces16 + \font\fingerfont = feta-nummer4 } -\def\fettwentydefs{ - \font\feta=feta20 - \font\vetfont=feta-beams20 - \font\fetanummer=feta-nummer10 - \font\dynfont=feta-din10 scaled \magstep2 - \font\bracefont=feta-braces20 - \font\fingerfont=feta-nummer5 + +\def\fettwentydefs{% + \font\feta = feta20 + \font\vetfont = feta-beams20 + \font\fetanummer = feta-nummer10 + \font\dynfont = feta-din10 scaled \magstep 2 + \font\bracefont = feta-braces20 + \font\fingerfont = feta-nummer5 } -\def\fettwentysixdefs{ - \font\feta=feta26 - \font\vetfont=feta-beams26 - \font\fetanummer=feta-nummer12 - \font\dynfont=feta-din10 scaled \magstep3 - \font\bracefont=feta-braces16 - \font\fingerfont=feta-nummer7 + +\def\fettwentysixdefs{% + \font\feta = feta26 + \font\vetfont = feta-beams26 + \font\fetanummer = feta-nummer12 + \font\dynfont = feta-din10 scaled \magstep 3 + \font\bracefont = feta-braces16 + \font\fingerfont = feta-nummer7 } -\def\fetthirteendefs{ - \font\feta=feta13 - \font\vetfont=feta-beams26 - \font\fetanummer=feta-nummer5 - \font\dynfont=feta-din10 scaled \magstep0 - \font\bracefont=feta-braces16 - \font\fingerfont=feta-nummer3 + +\def\fetthirteendefs{% + \font\feta = feta13 + \font\vetfont = feta-beams26 + \font\fetanummer = feta-nummer5 + \font\dynfont = feta-din10 scaled \magstep 0 + \font\bracefont = feta-braces16 + \font\fingerfont = feta-nummer3 } -\def\fetelevendefs{ - \font\feta=feta11 - \font\vetfont=feta-beams26 - \font\fetanummer=feta-nummer5 - \font\dynfont=feta-din10 %scaled \magstep-1 - \font\bracefont=feta-braces16 - \font\fingerfont=feta-nummer3 + +\def\fetelevendefs{% + \font\feta = feta11 + \font\vetfont = feta-beams26 + \font\fetanummer = feta-nummer5 + \font\dynfont = feta-din10 % scaled \magstep-1 + \font\bracefont = feta-braces16 + \font\fingerfont = feta-nummer3 } @@ -48,9 +52,9 @@ \def\twentysixfonts{\fettwentysixdefs\cmrtwenty} \def\elevenfonts{\fetelevendefs\cmreleven} \def\thirteenfonts{\fetthirteendefs\cmrthirteen} -\def\fetdef#1#2{\def#1{% - \hbox{\fetchar{#2}}}} +\def\fetdef#1#2{% + \def#1{\hbox{\fetchar{#2}}}} \def\fetchar#1{\feta\char#1} %\input feta16 @@ -59,12 +63,36 @@ % stacked numbers; overrules def in lilyponddefs % widest num should be .40 balkheight % oeps: \meter 12/8; +% +% \allabreve, \threetwometer etc. have zero as the second parameter. + \def\generalmeter#1#2{% - \vbox to 0pt{\vss% - \hbox to0.45\staffheight{\hss\fetanummer #1\hss}% - \nointerlineskip% - \hbox to0.45\staffheight{\hss\fetanummer #2\hss}% - \vss}} + \ifnum #2 = 0\relax + \ifcase #1 + \or\or + % 2 + \allabreve + \or + % 3 + \threetwometer % tempus perfectum cum prolatione imperfecta + \or + % 4 + \fourfourmeter % tempus imperfectum cum prolatione imperfecta + \or\or + % 6 + \sixfourmeter % tempus imperfectum cum prolatione perfecta + \or\or\or + % 9 + \ninefourmeter % tempus perfectum cum prolatione perfecta + \fi + \else + \vbox to 0pt{% + \vss + \hbox to 0.45\staffheight{\hss\fetanummer #1\hss}% + \nointerlineskip + \hbox to 0.45\staffheight{\hss\fetanummer #2\hss}% + \vss}% + \fi} \def\pianobrace#1{{\bracefont\char #1}} @@ -79,10 +107,9 @@ % % \input lily-mf-defs -\def\EndLilyPondOutput{ - \embedclose - \csname bye\endcsname +\def\EndLilyPondOutput{% + \embedclose + \csname bye\endcsname } - - +\endinput diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 7a84124155..67cfd2e3bf 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -72,7 +72,7 @@ \def\cmrtwenty{ \font\meterfont=cmbx15 - \font\italicfont=cmti10 + \font\italicfont=cmti10 scaled \magstep1 \font\musicmathfont=cmsy10 \font\normaltextfont=cmr10 %\textfont is a primitive \font\smalltextfont=cmr8 @@ -83,7 +83,7 @@ \font\smalltextfont=cmr6 \font\normaltextfont=cmr8 %\textfont is a primitive \font\meterfont=cmbx12 - \font\italicfont=cmti8 + \font\italicfont=cmti9 \font\textmusic=cmmi10 \font\boldfont=cmbx8 }