]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.31 release/1.3.31
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 9 Mar 2000 12:24:54 +0000 (13:24 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 9 Mar 2000 12:24:54 +0000 (13:24 +0100)
=========

* Fixed the page layout, reintroducing space for the header and
  trying to keep piece titles on the same page as the piece.
  The header and footer can now contain several lines.

1.3.30.j

29 files changed:
CHANGES
Documentation/index.texi
Documentation/ly2dvi.texi
Documentation/midi2ly.texi
Documentation/programmer/feta20.sty [deleted file]
Documentation/programmer/fonts.doc [deleted file]
Documentation/programmer/lilypond-overview.doc [deleted file]
Documentation/programmer/musicnotes.sty [deleted file]
TODO
VERSION
flower/include/unionfind.hh [deleted file]
flower/unionfind.cc [deleted file]
input/test/crescendi.ly [new file with mode: 0644]
input/test/span-dynamic.ly [new file with mode: 0644]
lily/crescendo.cc
lily/dynamic-engraver.cc
lily/tie-performer.cc
lily/tie.cc
ly/params.ly
ly/performer.ly
ly/property.ly
ly/spanners.ly
make/mutopia-targets.make
make/out/lilypond.lsm
make/out/lilypond.spec
ps/lily.ps
scm/lily.scm
stepmake/stepmake/documentation-targets.make
stepmake/stepmake/yolily-toplevel-targets.make

diff --git a/CHANGES b/CHANGES
index e36d3f8b0706046155bf5fa3ca66157dacbb6a27..9e5717579120a9f784e91c9a834b81df9b61f472 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,20 @@
---- ../lilypond-1.3.30.jcn1/CHANGES    Tue Mar  7 23:59:44 2000
-++ b/CHANGES   Wed Mar  8 15:35:43 2000
-@@ -1,3 +1,10 @@
+1.3.30.mb1
+=========
+
+* Fixed the page layout, reintroducing space for the header and
+  trying to keep piece titles on the same page as the piece.
+  The header and footer can now contain several lines.
+
+1.3.30.jcn3
+===========
+
+* Span_dynamic_performer; perform crescendi/decrescendi.  Bit scrappy.
+
+* Preliminary support for crescendi/decrescendi other than `hairpins', eg:
+  `cresc. poco `a poco -- -- --'
+
+* Tie performance fix.
+
 1.3.30.jcn2
 ===========
 
 
 * David's comments on opus47
 
- 1.3.30.jcn1
- ===========
- --- ../lilypond-1.3.30/CHANGES        Mon Mar  6 12:10:00 2000
-++ b/CHANGES   Tue Mar  7 23:59:44 2000
-@@ -1,3 +1,9 @@
 1.3.30.jcn1
 ===========
 
 * More Coriolan: flute-1,2; oboe-1,2; clarinet-1,2; 
   fixes and remainder french horn-1,2; trombone-1,2;
   fagotto-1,2; timpani; and several fixes.
- 1.3.29.hwn1
- ===========1.3.30.mb1
-=========
+  
+1.3.30.uu1
+==========
 
-* Fixed the page layout, reintroducing space for the header and
-  trying to keep piece titles on the same page as the piece.
-  The header and footer can now contain several lines.
+* Remove some old doco from programmer/ and put on personal homepage.
+
+* Removed union-find from flower library.
 
+* Only quantise tie horizontal part inside the staff.
+
+1.3.30
+======
 1.3.29.hwn1
 ===========
 
index 0e969c7132f3c28ba42ef0f47e9d0ebaab593178..1608ab2ad07fad17edc8b4aecd6980d3c638f3b4 100644 (file)
@@ -13,6 +13,7 @@
 @item @uref{../topdocs/out-www/AUTHORS.html, Authors}
 @item @uref{../topdocs/out-www/README.html, Readme file}
 @item @uref{../topdocs/out-www/INSTALL.html, Installation instructions}
+@item @uref{CHANGES.txt, Things recently done}
 @item @uref{faq.html,FAQ: Frequently asked questions}, with answers
 @end itemize
 
@@ -32,15 +33,13 @@ integrating text and music in LaTeX and texinfo; also available in
 LilyPond prints
 @item @uref{midi2ly.html,midi2ly} manual. midi2ly converts MIDI files to
 LilyPond input
-@item @uref{../programmer/out-www/index.html,Programmer documentation}
+@item @uref{../programmer/out-www/regression-test.html, LilyPond test document}
 @end itemize
 
 
 @unnumberedsubsec Status
 
 @itemize @bullet
-@item @uref{TODO.txt, Thing to do}
-@item @uref{CHANGES.txt, Things recently done}
 @end itemize
 
 
index 0a1d1681a355afb8cd5022ec9942bf31767c686e..d7cf664d129e50095a9475909ab8a8881feec9f9 100644 (file)
@@ -2,23 +2,8 @@
 @setfilename ly2dvi.info
 @settitle ly2dvi
 
-@node  Top, , , 
-@menu
-* Ly2dvi DESCRIPTION::            Ly2dvi DESCRIPTION
-* Ly2dvi SYNOPSIS::               Ly2dvi SYNOPSIS
-* Ly2dvi OPTIONS::                Ly2dvi OPTIONS
-* Ly2dvi Features::               Ly2dvi Features
-* Ly2dvi Environment::            Ly2dvi Environment
-* Ly2dvi Files::                  Ly2dvi Files
-* Ly2dvi Initialization Sequence::Ly2dvi Initialization Sequence
-* Ly2dvi See Also::               Ly2dvi See Also
-* Ly2dvi Bugs::                   Ly2dvi Bugs
-* Ly2dvi Remarks::                Ly2dvi Remarks
-* Ly2dvi Authors::                Ly2dvi Authors
-@end menu
 @chapter Ly2dvi
 
-@node  Ly2dvi DESCRIPTION, , , Top
 @section DESCRIPTION
 ly2dvi is a Python script which creates input file for LaTeX,
 based on information from the output files from LilyPond.
@@ -32,12 +17,11 @@ one or more DVI files.
 The majority of this utility came from a bourne script written by Jan
 Arne Fagertun name @file{ly2dvi}. 
 
-@node  Ly2dvi SYNOPSIS, , , Top
 @section SYNOPSIS
 
         ly2dvi [options] inputfile[.ly] [....]
 
-@node  Ly2dvi OPTIONS, , , Top
+
 @section OPTIONS
 
 @table @samp
@@ -85,7 +69,7 @@ Arne Fagertun name @file{ly2dvi}.
     DVI file for each.
 @end table
 
-@node  Ly2dvi Features, , , Top
+
 @section Features
 
 ly2dvi responds to several parameters specified in the mudela
@@ -104,7 +88,6 @@ file. They are overridden by corresponding command line options.
     Specify name of papersize.
 @end table
 
-@node  Ly2dvi Environment, , , Top
 @section Environment
 
 @table @samp
@@ -116,7 +99,6 @@ file. They are overridden by corresponding command line options.
     Temporary directory name. Default is /tmp
 @end table
 
-@node  Ly2dvi Files, , , Top
 @section Files
 
 @file{titledefs.tex} is inspected for definitions used to extract
@@ -218,7 +200,6 @@ present.  Possible value is a valid directory specification that is
 writable to the user.
 @end table
 
-@node  Ly2dvi Initialization Sequence, , , Top
 @section Initialization Sequence
 The initialization process reads inputs for several sources.  Below is
 a list of priorities for lowest to hightest proirity.
@@ -236,12 +217,10 @@ a list of priorities for lowest to hightest proirity.
 Note that this differs slightly from the original bourne shell
 version. 
 
-@node  Ly2dvi See Also, , , Top
 @section See Also
 
 lilypond(1), tex(1), latex(1)
 
-@node  Ly2dvi Bugs, , , Top
 @section Bugs
 
 If you have found a bug, you should send a bugreport.
@@ -255,7 +234,6 @@ If you have found a bug, you should send a bugreport.
     to this mailinglist).
 @end itemize
 
-@node  Ly2dvi Remarks, , , Top
 @section Remarks
 
 Many papersizes are now supported. Information on other sizes
@@ -268,7 +246,6 @@ a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, archA, archB, archC, archD,
 archE, b0, b1, b2, b3, b4, b5, flsa, flse, halfletter, ledger, legal,
 letter, note
 
-@node  Ly2dvi Authors, , , Top
 @section Authors
 Python Version author:
 @email{daboys@@austin.rr.com, Jeffrey B. Reed},
index 9c5fc161e187ad1aaed0fa40167d125cc4863489..7a4609d43691f28f1fea22dc328509e78e49ddb1 100644 (file)
@@ -2,21 +2,15 @@
 @setfilename midi2ly.info
 @settitle midi2ly
 
-@node  midi2ly, , , Top
-@menu
-* midi2ly DESCRIPTION::           midi2ly DESCRIPTION
-* midi2ly OPTIONS::               midi2ly OPTIONS
-@end menu
+
 @chapter midi2ly
 
-@node  midi2ly DESCRIPTION, , , midi2ly
 @section DESCRIPTION
 midi2ly translates a MIDI input file to Mudela (GNU LilyPond source
 format).  midi2ly is part of the GNU LilyPond music typesetting package.
 
        midi2ly [options] midi-file
 
-@node  midi2ly OPTIONS, , , midi2ly
 @section OPTIONS
 
 @table @samp
diff --git a/Documentation/programmer/feta20.sty b/Documentation/programmer/feta20.sty
deleted file mode 100644 (file)
index 0dbfcf9..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-% Creator: mf-to-table.py version 0.7
-% Automatically generated on
-% Do not edit
-% input from out/feta20.log
-% name
-% rests
-\fetdef\wholerest{0}
-\fetdef\halfrest{1}
-\fetdef\outsidewholerest{2}
-\fetdef\outsidehalfrest{3}
-\fetdef\breverest{4}
-\fetdef\longarest{5}
-\fetdef\multirest{6}
-\fetdef\quartrest{7}
-\fetdef\eighthrest{8}
-\fetdef\sixteenthrest{9}
-\fetdef\thirtysecondrest{10}
-\fetdef\sixtyfourthrest{11}
-\fetdef\hundredtwentyeighthrest{12}
-
-% accidentals
-\fetdef\sharp{13}
-\fetdef\natural{14}
-\fetdef\flat{15}
-\fetdef\flatflat{16}
-\fetdef\sharpsharp{17}
-\fetdef\rightparen{18}
-\fetdef\leftparen{19}
-
-% dots
-\fetdef\dot{20}
-\fetdef\repeatcolon{21}
-
-% balls
-\fetdef\brevisball{22}
-\fetdef\brevisledger{23}
-\fetdef\longaball{24}
-\fetdef\longaledger{25}
-\fetdef\wholeball{26}
-\fetdef\wholeledger{27}
-\fetdef\halfball{28}
-\fetdef\halfledger{29}
-\fetdef\quartball{30}
-\fetdef\quartledger{31}
-
-% scripts
-\fetdef\ufermata{32}
-\fetdef\dfermata{33}
-\fetdef\thumb{34}
-\fetdef\sforzatoaccent{35}
-\fetdef\staccato{36}
-\fetdef\ustaccatissimo{37}
-\fetdef\dstaccatissimo{38}
-\fetdef\tenuto{39}
-\fetdef\umarcato{40}
-\fetdef\dmarcato{41}
-\fetdef\ouvert{42}
-\fetdef\plusstop{43}
-\fetdef\upbow{44}
-\fetdef\downbow{45}
-\fetdef\reverseturn{46}
-\fetdef\turn{47}
-\fetdef\trill{48}
-\fetdef\upedalheel{49}
-\fetdef\dpedalheel{50}
-\fetdef\upedaltoe{51}
-\fetdef\dpedaltoe{52}
-\fetdef\flageolet{53}
-\fetdef\trilelement{54}
-\fetdef\prall{55}
-\fetdef\mordent{56}
-\fetdef\prallprall{57}
-\fetdef\prallmordent{58}
-\fetdef\upprall{59}
-\fetdef\downprall{60}
-\fetdef\accDiscant{61}
-\fetdef\accDiscantF{62}
-\fetdef\accDiscantEh{63}
-\fetdef\accDiscantE{64}
-\fetdef\accDiscantFE{65}
-\fetdef\accDiscantFEh{66}
-\fetdef\accDiscantEE{67}
-\fetdef\accDiscantFEE{68}
-\fetdef\accDiscantEEE{69}
-\fetdef\accDiscantFEEE{70}
-\fetdef\accDiscantS{71}
-\fetdef\accDiscantFS{72}
-\fetdef\accDiscantES{73}
-\fetdef\accDiscantEhS{74}
-\fetdef\accDiscantFES{75}
-\fetdef\accDiscantFEhS{76}
-\fetdef\accDiscantEES{77}
-\fetdef\accDiscantFEES{78}
-\fetdef\accDiscantEEES{79}
-\fetdef\accDiscantFEEES{80}
-\fetdef\accDiscantSS{81}
-\fetdef\accDiscantESS{82}
-\fetdef\accDiscantEESS{83}
-\fetdef\accDiscantEEESS{84}
-\fetdef\accFreebass{85}
-\fetdef\accFreebassF{86}
-\fetdef\accFreebassE{87}
-\fetdef\accFreebassFE{88}
-\fetdef\accStdbass{89}
-\fetdef\accStdbassM{90}
-\fetdef\accStdbassBp{91}
-\fetdef\accStdbassT{92}
-\fetdef\accStdbassTp{93}
-\fetdef\accBayanbass{94}
-\fetdef\accBayanbassT{95}
-\fetdef\accBayanbassE{96}
-\fetdef\accBayanbassTE{97}
-\fetdef\accBayanbassEE{98}
-\fetdef\accBayanbassTEE{99}
-\fetdef\accSB{100}
-\fetdef\accBB{101}
-\fetdef\accOldEE{102}
-\fetdef\accOldEES{103}
-
-% flags
-\fetdef\eighthflag{104}
-\fetdef\sixteenthflag{105}
-\fetdef\thirtysecondflag{106}
-\fetdef\sixtyfourthflag{107}
-\fetdef\deighthflag{108}
-\fetdef\dsixteenthflag{109}
-\fetdef\dthirtysecondflag{110}
-\fetdef\dsixtyfourthflag{111}
-
-% clefs
-\fetdef\altoclef{112}
-\fetdef\caltoclef{113}
-\fetdef\bassclef{114}
-\fetdef\cbassclef{115}
-\fetdef\trebleclef{116}
-\fetdef\ctrebleclef{117}
-
-% timesig
-\fetdef\fourfourmeter{118}
-\fetdef\allabreve{119}
-\fetdef\oldfourfourmeter{120}
-\fetdef\oldallabreve{121}
-\fetdef\oldthreetwometer{122}
-\fetdef\oldsixfourmeter{123}
-\fetdef\oldninefourmeter{124}
-
diff --git a/Documentation/programmer/fonts.doc b/Documentation/programmer/fonts.doc
deleted file mode 100644 (file)
index 287dde4..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-
-                                % -*-LaTeX-*-
-
-\documentclass{article}
-\def\kdots{,\ldots,}
-\title{Not the Font-En-Tja font}
-\author{HWN \& JCN} 
-\def\preMudelaExample{}
-\def\postMudelaExample{}
-\begin{document}
-\maketitle
-
-
-\section{Introduction}
-
-This document are some design notes of the Feta font, and other
-symbols related to LilyPond.  Feta (not an abbreviation of
-Font-En-Tja) is a font of music symbols.  All MetaFont sources are
-original.  The symbols are modelled after various editions of music,
-notably \begin{itemize} \item B\"arenreiter \item Hofmeister \item
-Breitkopf \item Durand \& C'ie \end{itemize}
-
-The best references on Music engraving are Wanske\cite{wanske} and
-Ross\cite{ross} some of their insights were used.  Although it is a
-matter of taste, I'd say that B\"arenreiter has the finest typography
-of all.
-
-
-\section{Bezier curves for slurs}
-
-Objective:  slurs in music are curved objects designating that notes
-should fluently bound.  They are drawn as smooth curves, with their
-center thicker and the endings tapered.
-
-There are some variants: the simplest slur shape only has the width as
-parameter.  Then we give some suggestions for tuning the shapes.  The
-simple slur algorithm is used for drawing ties as well.
-
-
-
-\subsection{Simple slurs}
-
-Long slurs are flat, whereas short slurs look like small circle arcs.
-Details are given in Wanske\cite{ross} and Ross\cite{wanske}.  The
-shape of a slur can be given as a Bezier curve with four control
-points:
-
-\begin{eqnarray*}
-  B(t) &=& (1-t)^3c_1 +3(1-t)^2tc_2 + 3(1-t)t^2c_3 + t^3c_4.
-\end{eqnarray*}
-
-We will assume that the slur connects two notes of the same
-pitch.  Different slurs can be created by rotating the derived shape.
-We will also assume that the slur has a vertical axis of symmetry
-through its center.  The left point will be the origin.     So we have
-the following equations for the control points $c_1\kdots c_4$.
-
-\begin{eqnarray*}
-c_1&=& (0,0)\\
-c_2&=& (i, h)\\
-c_3&=& (b-i, h)\\
-c_4&=& (b, 0)
-\end{eqnarray*}
-
-The quantity $b$ is given, it is the width of the slur.  The
-conditions on the shape of the slur for small and large $b$ transform
-to
-\begin{eqnarray*}
- h \to h_{\infty} , &&\quad b \to \infty\\
- h \approx r_{0} b, &&\quad b \to 0.
-\end{eqnarray*}
-To tackle  this, we  will  assume that $h   = F(b)$, for  some kind of
-$F(\cdot)$.  One function that satisfies the above conditions is
-$$
-F(b) = h_{\infty} \frac{2}{\pi} \arctan \left( \frac{\pi r_0}{2
-h_{\infty}} b \right).
-$$
-
-For satisfying results we choose $h_{\infty} = 2\cdot \texttt{interline}$
-and $r_0 = \frac 13$.
-
-\subsection{Height correction}
-
-Aside from being a smooth curve, slurs should avoid crossing
-enclosed notes and their stems.
-
-An easy way to achieve this is to extend the slur's height,
-so that the slur will curve just above any disturbing notes.
-
-The parameter $i$ determines the flatness of the curve.  Satisfying
-results have been obtained with $i = h$.
-
-The formula can be generalised to allow for corrections in the shape, 
-\begin{eqnarray*}
-c_1&=& (0,0)\\
-c_2&=& (i', h')\\
-c_3&=& (b-i', h')\\
-c_4&=& (b, 0)
-\end{eqnarray*}
-Where
-$$
-i' = h(b) (1 + i_{corr}), \quad h' = h(b) (1 + h_{corr}).
-$$
-
-The default values for these corrections are $0$.  A $h_{corr}$ that is
-negative, makes the curve flatter in the center.  A $h_{corr}$ that is
-positive make the curve higher. 
-
-At every encompassed note's x position the difference $\delta _y$ 
-between the slur's height and the note is calculated.  The greatest 
-$\delta _y$ is used to calculate $h_{corr}$ is by lineair extrapolation.
-
-However, this simple method produces satisfactory results only for 
-small and symmetric disturbances.
-
-
-\subsection{Tangent method correction}
-
-A somewhat more elaborate\footnote{While staying in the realm 
-of empiric computer science} way of having a slur avoid 
-disturbing notes is by first defining the slur's ideal shape 
-and then using the height correction.  The ideal shape of a 
-slur can be guessed by calculating the tangents of the disturbing 
-notes:
-% a picture wouldn't hurt...
-\begin{eqnarray*}
-  y_{disturb,l} &=& \rm{rc}_l x\\
-  y_{disturb,r} &=& \rm{rc}_r + c_{3,x},
-\end{eqnarray*}
-where
-\begin{eqnarray*}
-  \rm{rc}_l &=& \frac{y_{disturb,l} - y_{encompass,1}}
-    {x_{disturb,l} - x_{encompass,1}}\dot x\\
-  \rm{rc}_r &=& \frac{y_{encompass,n} - y_{disturb,r}}
-    {x_{encompass,n} - x_{disturb,r}} \dot x + c_{3,x}.
-\end{eqnarray*}
-
-We assume that having the control points $c_2$ and $c_3$ located 
-on tangent$_1$ and tangent$_2$ resp. 
-% t: tangent
-\begin{eqnarray*}
-  y_{tangent,l} &=& \alpha \rm{rc}_l x\\
-  y_{tangent,r} &=& \alpha \rm{rc}_r + c_{3,x}.
-\end{eqnarray*}
-
-Beautiful slurs have rather strong curvature at the extreme
-control points.  That's why we'll have $\alpha > 1$.
-Satisfactory resulsts have been obtained with
-$$
-  \alpha \approx 2.4.
-$$
-
-The positions of control points $c_2$ and $c_3$ are obtained
-by solving with the height-line
-\begin{eqnarray*}
-  y_h &=& \rm{rc}_h + c_h.
-\end{eqnarray*}
-
-The top-line runs through the points disturb$_{left}$ and
-disturb$_{right}$.  In the case that 
-$$
-z_{disturb,l} = z_{disturb,r},
-$$
-we'll have 
-$$
-  \angle(y_{tangent,l},y_h) = \angle(y_{tangent,r},y_h).
-$$
-
-
-
-\section{Sizes}
-
-Traditional engraving uses a set of 9 standardised sizes for Staffs
-(running from 0 to 8).  
-
-We have tried to measure these (helped by a magnifying glass), and
-found the staffsizes in  table~\ref{fonts:staff-size}.  One should note that
-these are estimates, so I think there could be a measuring error of ~
-.5 pt.  Moreover [Ross] states that not all engravers use exactly
-those sizes.
-
-\begin{table}[h]
-  \begin{center}
-    \begin{tabular}{lll}
-Staffsize       &Numbers                &Name\\
-\hline\\
-26.2pt  &No. 0\\
-22.6pt  &No. 1          &Giant/English\\
-21.3pt  &No. 2          &Giant/English\\
-19.9pt  &No. 3          &Regular, Ordinary, Common\\
-19.1pt  &No. 4          &Peter\\
-17.1pt  &No. 5          &Large middle\\
-15.9pt  &No. 6          &Small middle\\
-13.7pt  &No. 7          &Cadenza\\
-11.1pt  &No. 8          &Pearl\\
-    \end{tabular}
-    \caption{Foo}
-    \label{fonts:staff-size}
-  \end{center}
-\end{table}
-
-
-
-
-\section{Beams}
-
-\subsection{Slope}
-
-Traditionally, beam slopes are computed by following a large and hairy
-set of rules.  Some of these are talked-about in Wanske, a more
-recipy-like description can be found in Ross.
-
-There are some problems when trying to follow these rules:
-\begin{itemize}
-
-\item the set is not complete
-
-\item they are not formulated as a general rule with exceptions, but
-rather as a huge case of individual rules\cite{ross}
-
-\item in some cases, the result is wrong or ugly (or both)
-
-\item they try to solve a couple of problems at a time (e.g. Ross
-handles ideal slope and slope-quantisation as a paired problem)
-\end{itemize}
-Reading Ross it is clear that the rules presented there are certainly
-not the ultimate idea of what beam(slope)s should look like, but
-rather a (very much) simplified hands-on recipy for a human engraver.
-
-There are good reasons not to follow those rules:
-
-\begin{itemize}
-\item One cannot expect a human engraver to solve least-squares
-problems for every beam
-  
-\item A human engravers will allways trust themselves in judging the
-outcome of the applied recipy.  If, in a complicated case, the result
-"doesn't look good", they will ignore the rules and draw their own
-beams, based on experience.
-
-\item The exact rules probably don't "really exist" but in the minds
-  of good engravers, in the form of experience
-\end{itemize}
-
-We'll propose to do a least-squares solve.  This seems to be the best
-way to calculate the slope for a computerised engraver such as Lily.
-
-It would be nice to have some rules to catch and handle "ugly" cases,
-though.  In general, the slope of the beam should mirror the pitches
-of the notes.  If this can't be done because there simply is no
-uniform trend, it would probably be best to set the slope to zero.
-
-
-\subsection{Quantising}
-
-The beams should be prevented to conflict with the stafflines,
-especially at small slopes.  Traditionally, poor printing techniques
-imposed rather strict rules for quantisation.  In modern (post 1955)
-music printing we see that quality has improved substantially and
-obsoleted the technical justification for following some of these
-strict rules, notably the avoiding of so-called wedges.
-
-
-\subsection{Thickness and spacing}
-
-The spacing of double and triple beams (sixteenth and thirtysecond beams)
-is the same, quadruple and quintuple (thirtyfourth and hundredtwentyeighth
-beams) is wider.
-All beams are equally thick.  Using the layout of triple beams and the 
-beam-thickness $bt$ we can calculate the inter-beam spacing $ib$.
-
-Three beams span two interlines, including stafflines:
-\begin{eqnarray*}
- 2 ib + bt &=& 2 il\\
- ib &=& (2 il - bt) / 2
-\end{eqnarray*}
-
-We choose
-\begin{eqnarray*}
-  bt &=& 0.48(il - st)
-\end{eqnarray*}
-
-\subsubsection{Quadruple beams}
-
-If we have more than three beams they must open-up
-in order to not collide with staff lines.  The only valid
-position that remains is for the upper beam to hang.
-
-\begin{eqnarray*}
- 3 ib_{4+} + bt &=& 3 il\\
- ib_{4+} &=& (3 il - bt) / 3
-\end{eqnarray*}
-
-
-\section{Layout of the source files}
-
-The main font (with the fixed size music glyphs) uses a the \TeX\
-logfile as a communication device.  Use the specialised macros to
-create and export glyphs.
-
-\bibliographystyle{plain}
-\bibliography{engraving}
-
-
-
-\end{document}
-
-\begin{verbatim}
-Paul Terry <paul@musonix.demon.co.uk> writes:
-
-Ross states that the dies (the stamps to make the symbols) come in
-12 different sizes.
-
->Can you tell me how big rastrals are?
-
-According to the Score manual:
-
-   Rastral Size     Height in millimetres
-
-   0                9   mm
-   1                8   mm
-   2                7.5 mm
-   3                7   mm
-   4                6.5 mm
-   5                6   mm
-   6                5.5 mm
-
-I must say, despite having been a music setter for many years, I had to
-look these up - none of the publishers I work for deal in Rastral sizes
-these days (they all use millimetres).
diff --git a/Documentation/programmer/lilypond-overview.doc b/Documentation/programmer/lilypond-overview.doc
deleted file mode 100644 (file)
index a408a9e..0000000
+++ /dev/null
@@ -1,743 +0,0 @@
-%-*-LaTeX-*-
-
-\documentclass{article}
-\usepackage{a4}
-\def\postMudelaExample{\setlength{\parindent}{1em}}
-\title{LilyPond, a Music Typesetter}
-\author{HWN}
-\usepackage{musicnotes}
-\usepackage{graphics}
-
-
-\begin{document}
-\maketitle
-
-[THIS IS WORK IN PROGRESS.  THIS IS NOT FINISHED]
-
-% -*-LaTeX-*-
-\section{Introduction}
-
-The Internet has become a popular medium for collaborative work on
-information.  Its success is partly due to its use of simple, text-based
-formats.  Examples of these formats are HTML and \LaTeX.  Anyone can
-produce or modify such files using nothing but a text editor, they are
-easily processed with run-of-the-mill text tools, and they can be
-integrated into other text-based formats.
-
-Software for processing this information and presenting these formats
-in an elegant form is available freely (Netscape, \LaTeX, etc.).
-Ubiquitousness of the software and simplicity of the formats have
-revolutionised the way people publish text-based information
-nowadays.
-
-In the field of performed music, where the presentation takes the form
-of sheet music, such a revolution has not started yet.  Let us review
-some alternatives that have been available for transmitting sheet
-music until now:
-\begin{itemize}
-\item MIDI\cite{midi}.  This format was designed for interchanging performances
-  of music; one should think of it as a glorified tape recorder
-  format.  It needs dedicated editors, since it is binary.  It does
-  not provide enough information for producing musical scores: some of
-  the abstract musical content of what is performed is thrown away.
-  
-\item PostScript\cite{Postscript}. This format is a printer control
-  language.  Printed musical scores can be transmitted in PostScript,
-  but once a score is converted to PostScript, it is virtually
-  impossible to modify the score in a meaningful way.
-  
-\item Formats for various notation programs.  Notation programs either
-  work with binary  formats (e.g., NIFF\cite{niff-web}), need specific
-  platforms   (e.g.,  Sibelius\cite{sibelius}),  are   proprietary  or
-  non-portable  tools  themselves  (idem), produce  inadequate  output
-  (e.g.,  MUP\cite{mup}),  are   based  on  graphical  content  (e.g.,
-  MusixTeX\cite{musixtex1}),  limit themselves to  specific subdomains
-  (e.g.,  ABC\cite{abc2mtex}),  or   require  considerable  skill  and
-  knowledge to use (e.g., SCORE\cite{score})
-  
-\item SMDL\cite{smdl-web}.  This is a very rich ASCII format, that is
-  designed for storing many types of music.  Unfortunately, there is
-  no implementation of a program to print music from SMDL available.
-  Moreover, SMDL is so verbose, that it is not suitable for human
-  production.
-  
-\item TAB\cite{tablature-web}.  Tab (short for tablature) is a popular
-  format, for interchanging music over e-mail, but it can only be used
-  for guitar music.
-\end{itemize}
-
-In summary, sheet music is not published and edited on a wide scale
-across the internet  because no format for music
-interchange exists that is:
-\begin{itemize}
-\item open, i.e., with publically available specifications.
-\item based on ASCII, and therefore suitable for human consumption and
-  production.
-\item rich enough for producing publication quality sheet music from
-  it.
-\item based on musical content (unlike, for example, PostScript), and
-  therefore suitable for making modifications.
-\item accompanied by tools for processing it that are freely available
-  across multiple platforms.
-\end{itemize}
-
-
-With the creation of LilyPond, we have tried to create both a
-convenient format for storing sheet music, and a portable,
-high-quality implementation of a compiler, that compiles the input
-into a printable score.  You can find a small example of LilyPond
-input along with output in Figure~\ref{fig:intro-fig}.
-%
-\begin{figure}[htbp]
-  \begin{center}
-\begin[verbatim]{mudela}
-      \score {
-        \notes
-          \context GrandStaff <
-             \transpose c'' { c4 c4 g4 g4 a4 a4 g2 }
-             { \clef "bass"; c4 c'4
-               \context Staff <e'2 {\stemdown c'4 c'4}> f'4 c'4 e'4 c'4 }
-           >
-           \paper { 
-             linewidth = -1.0\cm ;
-           }
-        }      
-\end{mudela}
-    \caption{A small example of LilyPond input}
-    \label{fig:intro-fig}
-  \end{center}
-\end{figure}
-%
-
-The input language encodes musical events (such as notes and rests) on
-the basis of their time-ordering.  For example, the grammar includes
-constructs that specify that notes start simultaneous and that notes
-are to be played in sequence.  In this encoding some context that is
-present in sheet music is lost.
-
-The compiler reconstructs the notation from the encoded music.  Its
-operation comprises four different steps (see
-Figure~\ref{fig:intro-steps}).
-
-\begin{description}
-\item[Parsing] During parsing, the input is converted in a syntax tree.
-  
-\item[Interpreting] In the \emph{interpreting} step, it is determined
-  which symbols have to be printed.  Objects that correspond to
-  notation (\emph{Graphical objects}) are created from the syntax tree
-  in this phase. Generally speaking, for every symbol printed there is
-  one graphical object.  These objects are incomplete: their position
-  and their final shape is unknown.
-  
-  The context that was lost by encoding the input in a language is
-  reconstructed during this conversion.
-\item[Formatting] The next step is determing where symbols are to be
-  placed, this is called \emph{formatting}.
-\item[Outputting]   
-  Finally, all Graphical objects are outputted as PostScript or \TeX\ code.
-\end{description}
-
-\def\staffsym{\vbox to 16pt{
-    \hbox{\vrule width 1cm depth .2pt height .2pt}\nointerlineskip
-    \vfil
-    \hbox{\vrule width 1cm depth .2pt height .2pt}\nointerlineskip
-    \vfil
-    \hbox{\vrule width 1cm depth .2pt height .2pt}\nointerlineskip
-    \vfil
-    \hbox{\vrule width 1cm depth .2pt height .2pt}\nointerlineskip
-    \vfil
-    \hbox{\vrule width 1cm depth .2pt height .2pt}\nointerlineskip
-}}
-
-\def\vspacer{\vbox to 20pt{\vss}}
-\begin{figure}[h]
-\def\spacedhbox#1{\hbox{\ #1\ }}
-\begin{eqnarray*}
-  {\spacedhbox{Input}\atop \hbox{\texttt{\{c8 c8\}}}} {\spacedhbox{Parsing}\atop\longrightarrow}
-  {\spacedhbox{Syntax tree}\atop\spacedhbox{\textsf{Sequential(Note,Note)}}}
-  {\spacedhbox{Interpreting}\atop\longrightarrow}\\
-  \vspacer\\
-  {\spacedhbox{Graphic objects}\atop\spacedhbox{\texttrebleclef \textquarterhead\texteighthflag\textquarterhead\texteighthflag \staffsym }}
-  {\spacedhbox{Formatting}\atop\longrightarrow}
-  {\spacedhbox{Formatted objects}\atop\hbox{
-    \mudela{c''8 c''8}
-    }}\\
-\vspacer\\
-  {\spacedhbox{Outputting}\atop\longrightarrow}
-  {\spacedhbox{PostScript code}\atop\hbox{\texttt{\%!PS-Adobe}\ldots}}
-\end{eqnarray*}
-  \caption{Parsing, Interpreting, Formatting and Outputting}
-    \label{fig:intro-steps}
-\end{figure}
-
-
-The second step, the interpretation phase of the compiler, can be
-manipulated as a separate entity: the interpretation process is
-composed of many separate modules, and the behaviour of the modules is
-parameterised.  By recombining these interpretation modules,
-and changing parameter settings, the same piece of music can be
-printed differently, as is shown in Figure~\ref{fig:intro-interpret}.
-
-This makes it easy to extend the program. Moreover, this enables the
-same music to be printed in different versions, e.g., in a conductors
-score and in extracted parts.
-
-
-\begin{figure}[h]
-  \begin{center}
-    \begin{mudela}
-      \score {
-        \notes
-          \context GrandStaff <
-             \transpose c'' { c4 c4 g4 g4 a4 a4 g2 }
-             { \clef "bass"; c4 c'4
-               \context Staff <e'2 {\stemdown c'4 c'4}> f'4 c'4 e'4 c'4 }
-           >
-           \paper { 
-             linewidth = -1.0\cm ;
-             \translator {  
-                \VoiceContext
-                \remove "Stem_engraver";
-             }
-           \translator {
-             \StaffContext
-               numberOfStaffLines = 3;
-           }
-          }
-        }
-    \end{mudela}
-    \caption{The interpretation phase can be manipulated: the same
-      music as in Figure~\ref{fig:intro-fig} is interpreted
-      differently: three staff lines and no stems.}
-    \label{fig:intro-interpret}
-  \end{center}
-\end{figure}
-
-
-
-\section{Preliminaries}
-
-To understand the rest of the article, it is necessary to know
-something about music notation and music typography.  Since both
-communicate music, we will explain some characteristics of instruments
-and western music that motivate some notational constructs.
-
-\subsection{Music}
-
-Music notation is meant to be read by human performers.  They sing or
-play instruments that can produce sounds of different pitches.  These
-sounds are called \emph{notes}. Additionally, the sounds can be
-articulated in differents ways, e.g., staccato (short and separated)
-or legato (fluently bound together).  The loudness of the notes can
-also be varied.  Changes in loudness are called \emph{dynamics}.
-
-Silence is also an element of music.  The musical terminology for
-silence within music is \emph{rest}.
-
-The basic unit of pitch is the \emph{octave}.  The octave corresponds
-to a frequency ratio of 1:2. For example the pitch denoted by a'
-(frequency: 440 hertz) is one octave lower than a'' (frequency: 880
-hertz).  Various instruments have a limited \emph{pitch range}, for
-example, a trumpet has a range of about 2.5 octaves.  Not all
-instruments have ranges in the same register: a tuba also has a range
-of 2.5 octaves, but the range of the tuba is much lower.
-
-Musicology has a confusing mix of relative and absolute measures for
-pitches: the term `octave' refers to both a difference between two
-pitches (the frequency ratio of 1:2), and to a range of pitches.  For
-example, the term `[eengestreept] octave' refers to the pitch range
-between 261.6 Hz and 523.3 Hz.
-
-
-The octave is divided into smaller pitch steps.  In modern western
-music, every octave is divided into twelve approximately equidistant
-pitch steps, and each step is called a \emph{semitone}.  Usually, the
-pitches in a musical piece come from a smaller subset of these twelve
-possible pitches.  This smaller subset along with the musical
-functions fo the pitches is called the
-\emph{tonality}\footnote{Tonality also refers to the relations between
-  and functions of certain pitches.  Since these do not have any
-  impact on notation, we ignore this} of the piece.
-
-
-The standard tonality that forms the basis of music notation 
-(the key of C major) is a set of seven pitches within every octave.
-Each of these seven is denoted by a name. In English, these are names
-are (in rising pitch) denoted by c, d, e, f, g, a and b.  Pitches that
-are a semitone higher or lower than one of these seven can be
-represented by suffixing the name with `sharp' or `flat'
-respectively (this is called an \emph{chromatic alteration}).
-
-A pitch therefore can be fully specified by a combination of the
-octave number, the note name and a chromatic alteration.
-Figure~\ref{fig:intro-pitches} shows the relation between names and
-frequencies.
-
-
-
-
-\begin{figure}[h]
-  \begin{center}
-    [te doen]
-  \end{center}
-  \caption{Pitches in western music.  The octave number is denoted
-    by a superscript.}
-  \label{fig:intro-pitches}
-\end{figure}
-
-
-Many instruments can produce more than one note at the same time, e.g.
-pianos and guitars.  When more notes are played simultaneously, they
-form a so-called \emph{chord}.
-
-The unit of duration is the \emph{beat}. When playing, the tempo is
-determined by setting the number of beats per minute.  In western
-music, beats are often stressed in a regular pattern: for example
-Waltzes have a stress pattern that is strong-weak-weak, i.e. every
-note that starts on a `strong' beat is louder and has more pronounced
-articulation.  This stress pattern is called \emph{meter}.
-
-\subsection{Music notation}
-
-Music notation is a system that tries to represent musical ideas
-through printed symbols.  Music notation has no precise definition,
-but most conventions have described in reference manuals on music
-notation\cite{read-notation}.
-
-In music notation, sounds and silences are represented by symbols that
-are called note and rest respectively.\footnote{These names serve a
-  double purpose: the same terms are used to denote the musical
-  concepts.}  The shape of notes and rests indicates their duration
-(See figure~\ref{noteshapes}) relative to the whole note.
-
-
-\begin{figure}[h]
-  \begin{center}
-\begin{mudela}
-  \score {
-    \notes \transpose c''{ c\longa*1/4 c\breve*1/2 c1 c2 c4 c8 c16 c32 c64 }
-    \paper {
-     \translator {
-       \StaffContext
-       \remove "Staff_symbol_engraver";
-        \remove "Time_signature_engraver";
-%        \remove "Bar_engraver";
-        \remove "Clef_engraver";
- }
-linewidth = -1.;
-    }
-}
-\end{mudela}
-\begin{mudela}
-  \score {
-    \notes \transpose c''\context Staff { r\longa*1/4 r\breve*1/2 r1 r2 r4 r8 r16 r32 r64 }
-    \paper {
-      \translator {
-        \StaffContext
-        \remove "Staff_symbol_engraver";
-        \remove "Time_signature_engraver";
-%        \remove "Bar_engraver";
-        \remove "Clef_engraver";
-        }
-      linewidth = -1.;
-    }
-}
-\end{mudela}
-    \caption{Note and rest shapes encode the length.  At the top notes
-      are shown, at the bottom rests.  From left to right a quadruple
-      note (\emph{longa}), double (\emph{breve}), whole, half,
-      quarter, eigth, sixteenth, thirtysecond and sixtyfourth. Each
-      note has half of the duration of its predecessor.}
-    \label{fig:noteshapes}
-\end{center}
-\end{figure}
-
-
-Notes are printed in a grid of horizontal lines called \emph{staff} to
-denote their pitch: each line represents the pitch of from the
-standard scale (c, d, e, f, g, a, b).  The reference point is the
-\emph{clef}, eg., the treble clef marks the location of the $g^1$
-pitch.  The notes are printed in their time order, from left to right.
-
-
-\begin{figure}[h]
-  \begin{center}
-    \begin{mudela}
-      \score { \notes {
-      a4 b c d e f g a \clef bass;
-      a4 b c d e f g a \clef alto;
-      a4 b c d e f g a \clef treble;
-      }
-      \paper { linewidth = 15.\cm; }
-      }
-    \end{mudela}
-    \caption{Pitches ranging from $a, b, c',\ldots a'$, in different
-      clefs.  From left right the bass, alto and treble clef are
-      featured.}
-    \label{fig:pitches}
-  \end{center}
-\end{figure}
-
-The chromatic alterations are indicated by printing a flat sign or a
-sharp sign in front of the note head.  If these chromatic alterations
-occur systematically (if they are part of the tonality of the piece),
-then this indicated with a \emph{key signature}.  This is a list of
-sharp/flat signs which is printed next to the clef.
-
-Articulation is notated by marking the note shapes wedges, hats and
-dots all indicate specific articulations.  If the notes are to be
-bound fluently (legato), the note shapes are encompassed by a smooth
-curve called \emph{slur},
-
-\begin{figure}[h]
-  \begin{center}
-    \begin{mudela}
-      c'4-> c'4-. g'4 ( b'4  ) g''4
-    \end{mudela}
-    \caption{Some articulations.  From left to right: extra stress
-      (\emph{marcato}), short (staccato), slurred notes (legato).}
-    \label{fig:articulation}
-  \end{center}
-\end{figure}
-
-
-
-Dynamics are notated in two ways: absolute dynamics are indicated by
-letters: \textbf{f} (from Italian ``forte'') stands for loud,
-\textbf{p} (from Italian ``piano'') means soft.  Gradual changes in
-loudness are notated by (de)crescendos.  These are hairpin like shapes
-below the staff.
-
-\begin{figure}[h]
-  \begin{center}
-    \begin{mudela}
-      g'4\pp \<  g'4 \! g'4 \ff \> g'4 g' \! g'\ppp
-    \end{mudela}
-    \caption{Dynamics: start very soft (pp), grow to loud (ff) and
-      decrease to extremely soft (ppp)}
-    \label{fig:dynamics}
-  \end{center}
-\end{figure}
-
-
-The meter is indicated by barlines: every start of the stress pattern
-is preceded by a vertical line, the \emph{bar line}.  The space
-between two bar lines is called measure.  It is therefore the unit of
-the rhythmic pattern.
-
-The time signature also indicates what kind of rhythmic pattern is
-desired.  The time signature takes the form of two numbers stacked
-vertically. The top number is the number of beats in one measure, the
-bottom number is the duration (relative to the whole note) of the note
-that takes  one beat.  Example: 2/4  time signature means ``two beats
-per measure, and a quarter note takes one beat''
-
-Chords are written by attaching multiple note heads to one stem.  When
-the composer wants to emphasize the horizontal relationships between
-notes, the simultaneous notes can be written as voices (where every
-note head has its own stem).  A small example is given in
-Figure~\ref{fig:simultaneous}.
-
-\begin{figure}[h]
-  \begin{center}
-    \begin{mudela}
-      \relative c'' {\time 2/4;  <c4 e> <d f>
-                \context Staff < \context Voice = VA{
-                  \stemdown
-                  c4 d
-                  b16 b b b b b b b }
-                \context Voice = VB {
-                  \stemup e4 f g8 g4 g8 } >
-          }
-    \end{mudela}
-    \caption{Notes sounding together.  Chord notation (left, before
-      the bar line) emphasizes vertical relations, voice notation
-      emphasizes horizontal relations. Separate voices needn't have
-      synchronous rhythms (third measure). 
-      }
-    \label{fig:simultaneous}
-  \end{center}
-\end{figure}
-
-Separate voices do not have to share one rhythmic pattern---this is
-also demonstrated in Figure~\ref{fig:simultaneous}--- they are in a sense%vaag
-independent.  A different way to express this in notation, is by
-printing each voice on a different staff.  This is customary when
-writing for piano (both left and right hand have a staff of their own)
-and for ensemble (every instrument has a staff of its own).
-
-
-
-\subsection{Music typography}
-
-Music typography is the art of placing symbols in esthetically
-pleasing configuration.  Little is explicitly known about music
-typography.  There are only a few reference works
-available\cite{ross,wanske}.  Most of the knowledge of this art has
-been transmitted verbally, and was subsequently lost.
-
-The motivation behind choices in typography is to represent the idea
-as clearly as possible. Among others, this results in the following
-guidelines:
-\begin{itemize}
-\item The printed score should use visual hints to accentuate the
-  musical content
-\item The printed score should not contain distracting elements, such
-  as large empty regions or blotted regions.
-\end{itemize}
-
-An example of the first guideline in action is the horizontal spacing.
-The amount of space following a note should reflect the duration of
-that note: short notes get a small amount of space, long notes larger
-amounts.  Such spacing constraints can be  subtle, for the
-``amount of space'' is only the impression that should be conveyed; there
-has to be some correction for optical illusions.  See
-Figure~\ref{fig:spacing}.
-
-\begin{figure}[h]
-  \begin{center}
-    \begin{mudela}
-      \relative c'' { \time 3/4; c16 c c c c8 c8 | f4 f, f'  }
-    \end{mudela}
-    \caption{Spacing conveys information about duration. Sixteenth
-      notes at the left get less space than quarter notes in the
-      middle. Spacing is ``visual'', there should be more space
-      after  the first note of the last measure, and  less after second. }
-    \label{fig:spacing}
-  \end{center}
-\end{figure}
-
-Another example of music typography is clearly visible in collisions.
-When chords or separate voices are printed, the notes that start at
-the same time should be printed aligned (ie., with the same $x$
-position).  If the pitches are close to each other, the note heads
-would collide. To prevent this, some notes (or note heads) have to be
-shifted horizontally.  An example of this is given in
-Figure~\ref{fig:collision}.
-\begin{figure}[h]
-  \begin{center}
-    [todo]
-    \caption{Collisions}
-    \label{fig:collision}
-  \end{center}
-\end{figure}
-
-\bibliographystyle{hw-plain}
-\bibliography{engraving,boeken,colorado,computer-notation,other-packages}
-
-\section{Requirements}
-
-
-\section{Approach}
-
-\subsection{Input}
-
-The input format consists of combining a symbolic representation of
-music with style sheet that describes how the symbolic presentation
-can converted to notation.  The symbolic representation is based on a
-context free language called \textsf{music}.  Music is a recursively
-defined construction in the input language.  It can be constructed by
-combining lists of \textsf{music} sequentially or parallel or from
-terminals like notes or lyrics.
-
-The grammar for \textsf{music} is listed below.  It has been edited to
-leave out the syntactic and ergonomic details.
-
-\begin{center}
-    \begin{tabular}{ll}
-Music:  & SimpleMusic\\
-        & $|$ REPEATED int Music ALTERNATIVE MusicList\\
-        & $|$ SIMULTANEOUS MusicList\\
-        & $|$ SEQUENTIAL MusicList\\
-        & $|$ CONTEXT STRING '=' STRING Music\\
-        & $|$ TIMES int int Music     \\
-        & $|$ TRANSPOSE PITCH Music \\
-SimpleMusic: & $|$ Note\\
-        & $|$ Lyric\\
-        & $|$ Rest\\
-        & $|$ Chord\\
-        & $|$ Command\\
-Command: & METERCHANGE\\
-        & $|$ CLEFCHANGE\\
-        &$|$ PROPERTY STRING '=' STRING\\
-Chord: &PitchList DURATION\\
-Rest: &REST DURATION\\
-Lyric: &STRING DURATION\\
-Note: &PITCH DURATION\\
-\end{tabular}
-\end{center}
-  
-The terminals are both purely musical concepts that have a duration,
-and take a non-zero amount of musical time, like notes and lyrics, and
-commands that behave as if they have no duration.\footnote{The
-  PROPERTY command is a generic mechanism for controlling the
-  interpretation, i.e. the musical style sheets. See [forward ref]}
-
-The nonterminal productions can
-\begin{itemize}
-\item Some productions combine multiple elements: one can specify that
-  element are to be played in sequence, simultaneously or repetitively.
-\item There are productions for transposing music, and for dilating
-  durations of music: the TIMES production can be used to encode a
-  triplet.\footnote{A triplet is a group of three notes marked by a
-    bracket, that are played 3/2 times faster.}
-\item
-  There are productions that give directions to the interpretation
-  engine (the CONTEXT production)
-\end{itemize}
-
-
-\section{Context in notation} 
-
-Music notation relies heavily on context.  Notational symbols do not
-have meaning if they are not surrounded by other context elements.  In
-this section we give some examples how the reader uses this context do
-derive meaning of a piece of notation.   We will focus on the prime
-example of context: the staff. 
-
-A staff is the grid of five horizontal lines, but it contains more components :
-\begin{itemize}
-\item A staff can have a key signature (printed at the left)
-\item A staff can have a time signature (printed at the left)
-\item A staff has bar lines
-\item A staff has a clef (printed at the left)
-\end{itemize}
-
-It is still possible to print notes without these components, but one
-cannot determine the meaning of the notes.
-\begin{mudela}
-\score{
-\notes \relative c' {  \time 2/4; g'4 c,4 a'4 f4 e c d2 }
-\paper { 
-  linewidth = -1.;
-  \translator {
-  \StaffContext
-  \remove "Time_signature_engraver";
-%  \remove "Bar_engraver";
-  \remove "Staff_symbol_engraver";
-  \remove "Clef_engraver";
-  \remove "Key_engraver";
-  }
- }
-}
-\end{mudela}
-
-As you can see, you can still make out the general form of the melody
-and the rhythm that is to be played, but the notation is difficult to
-read and the musical information is not complete.  The stress
-pattern in the notes can't be deduced from this output.  For this, we
-need a time signature.  Adding barlines helps with finding the strong
-and weak beats.
-\begin{mudela}
-\score {
-  \notes \relative c' {  \time 2/4; g'4 c,4 a'4 f4 e c d2 }
-  \paper{
-  linewidth = -1.;
-\translator{
-  \StaffContext
-  \remove "Staff_symbol_engraver";
-  \remove "Clef_engraver";
-  \remove "Key_engraver";}
-  }
- }
-\end{mudela}
-
-It is impossible to deduce the exact pitch of the notes.  One needs a
-clef to do so.  Staff lines help the eye in determining the vertical
-position of a note wrt. to the clef.
-\begin{mudela}
-\score {
-  \notes \relative c' {\clef alto;  \time 2/4; g'4 c,4 a'4 f4 e c d2 }
-  \paper {
-    linewidth = -1.;
-  }
-}  
-\end{mudela}
-
-Now you know the pitch of the notes: you look at the start of the line
-and see a clef, and with this clef, you can determine the notated pitches.
-You have found the em(context) in which the notation is to be
-interpreted!
-
-
-\section{Interpretation context}
-
-Context (clef, time signature etc.) determines the relationship
-between musical and its notation in notes.  Because LilyPond writes
-notation, context works the other way around for LilyPond: with
-context a piece of music can be converted to notation.
-
-A reader remembers this context while reading the notation from left
-to right.  By analogy, LilyPond constructs this context while
-constructing notes from left to right.  This is what happens in the
-``Interpretation'' phase from~\ref{fig:intro-fig}.  In LilyPond, the
-state of this context is a set of variables with their values; A staff
-context contains variables like
-
-\begin{itemize}
-\item current clef
-\item current time signature
-\item current key
-\end{itemize}
-
-These variables determine when and how clefs, time signatures, bar
-lines and accidentals are printed.
-
-
-Staff is not the only form of context in notation.  In polyphonic
-music, the stem direction shows which notes form a voice: all notes of
-the same voice have stems pointing in the same direction.  The value
-of this variable determines the appearance of the printed stems.
-
-In LilyPond ``Notation context'' is abstracted to a data structure
-that is used, constructed and modified during the interpretation
-phase.  It contains context properties, and is responsible for
-creating notational elements: the staff context creates symbols for
-clefs, time signatures and key signatures.  The Voice context creates
-stems, note heads.
-
-For the fragment of polyphonic music below,
-\begin{mudela}
-  \context Staff { c'4 < { \stemup c'4 } \context Voice = VB { \stemdown a4 } > }
-\end{mudela}
-A staff context is created.  Within this staff context (which printed
-the clef), a Voice context is created, which prints the first note.
-Then, a second Voice context is created, with stem direction set to
-``up'', and the direction for the other is set to down. Both Voice
-contexts  are  still part of the same Staff context.
-
-In the same way, multiple staff scores are created: within the score
-context, multiple staff contexts are created.  Every staff context
-creates the notation associated with a staff.  
-
-\section{Discussion}
-
-
-
-\end{document}
-
-The complexity of  music notation was tackled by adopting a modular
-design: both the formatting system (which encodes the esthetic rules of
-notation), and the interpretation system (which encodes the semantic
-rules) are highly modular.
-
-
-The difficulty in creating a format for music notation is rooted in
-the fact that music is multi dimensional: each sound has its own
-duration, pitch, loudness and articulation. Additionally, multiple
-sounds may be played simultaneously.  Because of this, there is no
-obvious way to ``flatten'' music into a context-free language.
-
-The difficulty in creating a printing engine is rooted in the fact
-that music notation complicated: it is very large graphical
-``language'' with many arbitrary esthetic and semantic conventions.
-Building a system that formats full fledged musical notation is a
-challenge in itself, regardless of whether it is part of a compiler or
-an editor.
-
-The fact that music and its notation are of a different nature,
-implies that the conversion between input notation is non-trivial.
-
-In LilyPond we solved the above problem in the following way:
-
diff --git a/Documentation/programmer/musicnotes.sty b/Documentation/programmer/musicnotes.sty
deleted file mode 100644 (file)
index 31d2f83..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-
-\input lilyponddefs
-
-\def\fetdef#1#2{%
-  \def#1{\hbox{\char#2}}}
-
-% huh? from where
-\input feta20.sty
-
-\font\fetasixteenfont=feta16
-\font\fetaelevenfont=feta11
-\def\fetafont{\fetasixteenfont}
-
-\newdimen\ild
-\ild=4pt
-\newdimen\stemthick
-\stemthick=0.4pt
-
-\def\eighthstem{{\fetafont\vrule height 3.5ex width \stemthick depth0pt\raise
-  3.5ex\hbox{\eighthflag}}}
-\def\texteighthflag{{\fetafont\raise 0ex\hbox{\fetafont\eighthflag}}}
-\def\textdeighthflag{{\fetafont\raise 0ex\hbox{\deighthflag}}}
-
-\def\texteighthnote{{\hbox{\hbox{\fetafont\quartball}\kern
-      -0.5\stemthick\eighthstem}}}
-\def\quarterstem{{\fetafont\vrule height 3.5ex width \stemthick depth0pt}}
-\def\textquarterstem{\quarterstem}
-\def\textchord{{\hbox{\fetafont\lower.5ex\hbox to
-      0pt{\textquarterhead}\raise.5ex\hbox{\textquarterhead}\kern
-      -0.5\stemthick\eighthstem}}}
-\def\textbassclef{\hbox{\fetafont\bassclef}}
-\def\texttrebleclef{\hbox{\fetafont\trebleclef}}
-\def\textslur{\embeddedps{9.378744 -3.171539 3.923099 -3.171539 0.000000 0.000000 12.800000 0.000000 3.672177 -3.672177 9.127823 -3.672177 12.800000 0.000000 0.000000 0.000000  draw_slur}}
-
-\def\textmarcato{{\fetafont\raise 1ex\hbox{\hskip 1ex\sforzatoaccent}}}
-
-
-\def\textquarterhead{\hbox{\fetafont\raise 2.5pt\hbox{\quartball}}}
-\def\texteighthstem{\hbox{\lower 5pt\hbox{\eighthstem}}}
-\def\texthalfnote{{\hbox{\hbox{\fetafont\halfball}\kern -0.5\stemthick\quarterstem}}}
-\def\textquarternote{{\hbox{\hbox{\fetafont\quartball}\kern -0.5\stemthick\quarterstem}}}
-\def\textflat{{\fetafont\raise 1ex\hbox{\flat}}}
-\def\textsharp{{\fetafont\raise1ex\hbox{\sharp}}}
diff --git a/TODO b/TODO
index 94b4f38ce557d357b2bd3f23103e1470a8606f73..ee47eb587a64ee5ed28cba3d0f41b07140a08c77 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,580 +1,2 @@
--*-outline-layout:(2 (-1 -1 0 :) 0);outline-stylish-prefixes:nil -*-
 
-
-* GNU LilyPond TODO
-Features you cannot find in the documentation as working, should be
-mentioned here.  This is an assorted collection of stuff that will be
-done, might be done, or is an idea that we want to think about.
-Most of the items are marked in the code as well
-Grep -i for TODO, FIXME and ugh/ugr/urg.  
-
-.* TODO
-. * use hash tabs iso. alist_ for elt property?
-. * unhardcode stuff in bezier-bow: all sizes other than 20pt are
-    broken
-. * use ports iso. iostream. 
-. * hard constraints for  broken slurs to.
-. * Staff_margin_engraver placement is broken for Staff.instr(ument)
-. * Bracket/brace placement and stacking is broken
-. * Lattermann:
-
- 2. There dynamic markings of the cello part are set in roman (maybe
-    because of pizz. and arco in roman?)
-
- 4. Bar 41/42, violins: the ties should be the same direction, pref.
-    down in bar 42.
-    -- dir of broken ties
-
- 7. This is a bug: there's a colon in the middle of the two harmonium
-    staves
-
- 12. bars 82 to 84 and 88: the ties of upper harmonium should all bend down.
-     -- stemdown ~ stemup and at linebreak
-
- 15. bar 89, harmonium, the ties coming from the previous line look strangely
-     asymmetric.
-
-
-. * Mondrup:
-
-- In some cases I don't get the large textsize within note examples I request.
-Consider for example the entry 'c clef', where \property Lyrics.textStyle = "large"
-used to give that result. It doesn't now. The large text sizes DO work in other cases,
-for example in the entry 'chord' (\property Voice.textStyle = "large"). To me it looks
-like the property Voice.textStyle is working while Lyrics.textStyle isn't. Consider
-for example the entry 'functional harmony' which has the same problem as 'chord'
-
-- I don't get full size clef changes upon issuing \property Voice.clefStyle =
-"fullSizeChanges", see for example the entry 'c clef'.
-
-- In the entry 'brace' the second note example using \context StaffGroup gets the
-staff bracket offset to the left page margin !! while the first note example behaves
-normally.
-
-- <p><img> in mudela-book
-. * mats
-
-If textStyle is set (in the \paper section), this setting 
-applies also to dynamics. 
-
-Also, the marginScriptPadding should be set by default to give 
-a nice layout, but that's already been reported on the list.
-
--  What happened to the StaffGroup brackets? 
-  Try input/test/orchestscore.ly which worked fine in pl 27.
-
-- Why do I get bar numbers on every bar (both for the score
-  and the parts)?
-
-- Bar numbers and marks are not printed on top of the staffs,
-  but at one of the middle parts of the score. This may be 
-  related to the problem with the brackets, since the 
-  corresponding StaffGroup is the only one to get a bracket,
-  even though it is misplaced horisontally.
-
-- The score extends too high on the page, it often overwrites the
-  page number. LaTeX warns about overfull boxes. I'll take a look
-  at the page layout.
-
-. * control paper-size/-file from commandline ?
-  lilypond --paper=paper16 foo.ly
-  lilypond --paper=paper20 foo.ly
-  lilypond --paper=paper-as9 foo.ly
-. * detangle ly/* paper-params papersize stuff
-. * fix tremolos.
-. * change ) c4  to c4-)
-. * automated marks. 
-. * There should be no pagebreak below the title of the movement!!
-. * tempo:
-
->   - Tempo Indications:
->     * \tempo 4 = 60 should be printed
->     * There should be commands like \alloegro that also do something
->       sensible in midi.
-> 
-. *  - It should be possible to have Bar numbers on every bar.
-
-. * dynamics: 
->       * Notes should be spaced out for crescendos (had to use c^"      ")
->       * something like c-.->\ff looks ugly.  The dynamc indication should
->         appear left of the marks
-> 
-. * 
-There's insufficient leading between lines of lyrics, so risers like
-`l' and 'b' collide with the bottom of the line above.
-
-Also the lines are unevenly spaced.
-
-. * write comments in the source code
-. * internationalize GUILE msgs.
-. * roy rankin:
-1> The volta brackets are on top of the lyrics. This problem existed in
-   1.2.x which I corrected by giving the brackets a vertical size. I
-   have not had the time to check what is going on in 1.3.
-
-2> Part names are being written on top of the staff and not in the
-   left margin.
-
-3> The tag at the end is spaced out clear across the page. (new problem
-   in 1.3.27)
-
-I also get the following error messages from ly2dvi.
-. * unbroken marks.
-. * chubb:
--- Take a piece of early music, and typeset it as closely as possible to
-the original edition.  This means: moveable clefs, sometimes funny or no
-time signatures, few or no bar lines, few or no ties, slurs or
-phrasemarks, ornaments implied by the structure of the music, or
-indicated by, e.g., one or more thick lines through the stem of a note
-(Purcell and Farnaby both use this extensively, but with rather
-different meanings).  For Dowland's music it may also mean being able
-to rotate one or more staves (but I can do this in LaTeX).
-
--- Add to this music a set of critical marks that:
-   * regularises clef, time and key signature.
-   * add slurs, phrase marks, articulation, etc.
-   * Halve or quarter the durations, so that minims become crotchets, say.
-   * add ornaments (mordents, trills, turns etc)
-   * add regular barlines (which sometimes will mean splitting a note
-     and adding a tie, e.g., in some of Byrd's music)
-   * Add footnotes to particular symbols, groups of notes, etc.
-   * When translating from chant notation, add a square bracket over a
-     group of notes to indicate a ligature in the original
-etc.
-   * Discretionary sharp or flat signs, for Musica Ficta
-
--- print out both editions from the same source.
-. * write smobifying howto.
-. * put property test files in refman.
-. * alignment within @itemize
-. * interstaff stems
-. * junk dstream output.
-. * Change website to be index to documentation.
-. * \grace { c d } c1 in midi
-. * \prop slurdir in grace notes
-. * Make fingering and playing instructions Music_wrappers?
-. * script columns
-. * Must stop before this music ends:
-verse=\lyrics {
-. * input/test/grace.sly: wierd big spacing on grace notes
-. * TODO^2:
-.  * make  a TODO.texi, like http://www.gnu.org/software/guile/ideas.html
-.  * make this file understandable for 3rd parties.
-. * \accepts -> \acceptedby 
-. * context in embedded SCM errors.
-. * acc at tied note after linebreak.
-. * fontSize for time sigs and beams.
-. * fix font-naming and selecting
-. * add context information to warnings
-Paper:
-waarschuwing: Kan niet beide uiteinden van bindingsboog vinden
-MIDI:
-pa.ly:33:23: waarschuwing: Schroot verzoek: `Span_req':
-  g' a4 bes8 \grace f8(
-                         )es16 d es8 r c |
-. * chord tonic: placement of accidental  C#, Cb (from scm and C++)
-. * note head on stem err msg in dutch.
-. * why need to run -C mf twice?
-. * here's no difference at all in output. When either is jacked up to 7.0,
-everything works and matches up; when either is set just a bit above the
-default 5.0 (5.4 is what I was hoping to use), stems miss note heads. So
-it's some sort of a numerical (truncation/roundoff) problem.
-John
-. * fix #'margin-shape;  setting indent to 0 with \shape fails
-. * Fixed size staff/system heights;
-. * ly2dvi : don't repeat opus if same. 
-. * hara kiri _8 clef. 
-. * junk -M ? 
-. * mudela-book doco
-. * bracket pdf hack
-. * Added StaffContents and RhythmicStaffContents context, they are
-between Staff (which groups the elements), and generates the Staff
-level elements (key, clef, meter, etc). This construction makes
-\consistsend redundant
-
-. * Mondrup:
-- if I change the property minVerticalAlign in a multi staff score with
-lyrics the change affects the lyrics too. I would like the change to
-_only_ affect staves.
-- after the leading measure in the above mentioned score I want a double
-bar line fully drawn across the staves and after that keep to the
-ChoirStaff bar line types in the rest of the scores
-. * Write script that uses --find-old-relative to do auto relativization. 
-
-
-.* Cleanups needed
-. * \$ and $ identifier syntax in examples. 
-. * Key_engraver, Local_key_item
-. * Think of comprehensive solution for "if (grace_b == self_grace_b_)"
-. * String[String.length] doesn't trap.
-. * Rhythmic_column and interaction stem/rhythmic_column/note_head/dots.
-. * clef engraver 
-. * parser
-. * Lookup::text -> needs  to be TeX independent.
-. * junk Music_iterator::first_b_
-
-.* ACCIDENTALS
-. * half-sharps, half-flats
-. * adaptive accidental spacing.
-. * accidentals closer to note head
-
-
-.* BEAMS
-. * [c8. c16 c16 c16] in 6/8 timesig.
-. * Rewrite Stem, Beam (hairy)
-.  * beams over barlines
-. * autoBeamMelisma: if I explicitly beam notes in a staff with auto
-beaming disabled I would like to have these beams also to be
-melismatic.
-. * The stemLength property should affect also beamed stems.
-. * staffside spanner (crescendo!) along with staffswitch.
-. * * auto melismaBusy for beams.
-
-. * \context Staff <
->   {\voiceone''4. r8}
->  \voicetwo c,4 r4}
-> >
-. * \time forces keysig?
-
-.* STUFF
-. * We need feta-din*.mf files for more sizes than 10.
-. * align left edge of broken tuplet-spanner (have a test case?)
-. * fix dynamics decently, ie. use kerning & ligatures.
-. * key restorations & repeats
-. * paperXX.ly \quartwidth, font setting not up to date. (Should read from AFM?)
-. *In Caro Mio Ben, bar 8, there's a syllable that starts on a note, and
-ends on a pair of grace notes.  Standard practice is to mark this with
-a slur starting on the main note and ending on the grace note, so a
-singer knows where to break the words.
-
-In bar 27, there's a crescendo that's supposed to start at the start
-of the grace notes and extend to the note after the grace notes.
-. * 4. Lyrics and grace sections don't go too well together.
- The words are aligned with the main note, not the start of the
- grace note.  This is usually wrong, but is sometimes right.
-. * rhythmic staff & accidentals.
-. * use melismaBusy in Lyric context to typeset melismata correctly.  
-. * ly2dvi/lilypond logfile.
-. * hang Item on Spanner
-. * do --safe for PS output?
-. * msgfmt -o check?
-. * collision of lyrics with span_bars. See star-spangled.
-. * It is impossible to typeset two textual scripts that are stacked
-  on top of each other and avoids note collisions and at the same
-  time are typeset with different textStyle. I tried to move around
-  the text_engraver and other engravers between Voice and Thread 
-  but the granularity is not fine enough, the scripts have to 
-  share the same engraver in order to be get correct vertical 
-  position but than they cannot have different style.
-  In my opinion, all scripts that share the same staff, should
-  be stacked vertically, avoiding collisions with the notes
-  in all voices.
-
-. * Matanya's tips: 
-.  * don't  shorten stems/staffs closer to each other.
-.  * to space the staffs/staffgroups contained in the score.  
-.  * heavier beams?
-. * Abstraction for engravers:
-.  * make "in-between" engraver (Tie)
-.  * make wide_spanner_engraver (line_group_spanner, staff_symbol)
-. * store req -> element, element -> element causes for warnings
-. *  My wish list for lyrics. I dream of a time when I will have enough time to
-become familiar enough with the source code to be able to implement some of
-these myself, but I don't know when that will be, so I thought I'd "publish"
-my suggestions in case someone else is in a position to give them some
-priority. Otherwise, perhaps they could go on the todo list?
-
-If any of these are already implemented, please let me what the syntax is to
-use them!
-
-1. Stanza numbering. Numbering at the beginning of a song with the number
-set to the left of the first note. It would also be nice (but not as
-important) to be able to have some form of automatic numbering at the
-beginning of each new line. This would make it easier to follow songs with a
-large number of stanzas.
-
-3. Notes centred above/below lyrics rather than left-aligned.
-
-4. It would be very nice to be able to build some kind of phrasing into the
-lyrics of hymns, etc, so that the first words of a phrase are left aligned
-with each other, the last words are right aligned, and the words in between
-are centred.
-
-5. In a song, with (say) four stanzas and a chorus, it would be nice to be
-able to vertically align the chorus midway between the staves.
-
-6. It would be nice to be able to put vertical brackets either side of a
-repeated section with different words for each repeat.
-. * Give # lines in linebreaking.  
-. * arrows on slurs.
-. * rewrite context defs using Scheme
-. * junk TeX specifics from internal code.
-. * \selectmusic to cut pieces from music. 
-. * formatting of input stuff. 
-.  * deps for ly2dvi
-. * Align_element::padding  ?
-. * use streambufs and iostream
-to provide IO handling for TeX stream, mudela stream, data-file.
-. * seriously buffer TeX output (do profile of writing .5 mb TeX file.)
-. * uniformise recent feta contributions.
-.  * bigger and fatter 4/4 C
-. * relative mode for midi2ly
-. * junking \skip req in lyrics
-. * midi2ly empty staffs.
-. * use Fourier transformation for rhythmic quantisation.
-. * horizontal centering of dynamics 
-. * $DEPENDENCIES_OUTPUT support
-. * turn slope-damping on/off
-. * sort out directory stuff.
-.  * --prefix option?
-.  * -I option per filetype?
-.  * kpathsea?
-. * declaring Performers
-. * text-items clash with stems/beams
-. * --include, -I option for ly2dvi (pass on to lily)
-. * fix placement of beam-less abbrev
-. * Musical_pitch (analogous to Duration and Rhythmic_req)
-         think about, analogous to pitch: 
-          * { a4 a16 } c <-- duration of c?
-          * < a4 b8 > c <-- duration of c?
-. * \tempo 4. = 90;
-. * do rest-collisions for Multi_measure_rests as well.
-. * split error/warning in error/warning/non_fatal_error
-.  * discourage breaking of slurs
-. * fix variable define/lookup parser global<->paper
-. * fix title/instrument placements; see input/test/title.ly
-. * <\voiceone c4. \voicetwo c4>
-. *  I'd like to change the \repetitions command to Jan's suggested
-  syntax: \repeat "repeatsymbol" 2 {...}, but I'm not sure that
-  I understand the implementation of repeats well enough.
-. * add mudela-book-doc source to webstie.
-. * fix singleStaffBracket
-. * move paper vars into engraver properties
-. * add new glyphs to font.ly
-. * more intelligent file searching
-. * disable spaces in TeX stuff
-. * handle ^C for tmp/file creation.
-. * make LilyPond RPM fully relocatable
-. * didot / big point.
-. * clefs (AG): The "8" should appear closer to the actual clef,
-touching it.
-. * put errorlevel in Input class
-. * junk nesting slurs
-
-
-.* FONT
-. * the bracket is ugly (wings are too parabolic, should be more circular)
-. * fix accordion turning paths.
-. * versioning for Feta
-. * rewrite dynamic signs.  They're kind of spaghetti now. 
-. * The `3' in the meter key is a one or two pixels too thin (at 600dpi)
-       in the middle:
-. * design macro for penstroke with rounded endings
-. * timesig C: fat yet less curved.  Check out relations. 
-. * design decent macro for bulbed endings
-. * printer dependencies.
-. * versioning 
-. * lo-res fixes.
-. * work out sizes of character fonts.
-. * more symbols
-.  * piano pedals: Ped/*
-.  * coda signs: Segno, O+
-.  * glissando, arpeggio
-.  * lengthened trill
-. * include important spacing dims in fetalog 
-. * scalability: use blot_diameter everywhere, make font chubbier for
-    small sizes.
-
-.* 3RD PARTY BUGS
-. * UMR: Uninitialized memory read
-      This is occurring while in:
-            qst            [qsort.c]
-            qsort          [libc.so.1]
-            Keyword_table::Keyword_table(Keyword_ent*) [keyword.cc:28]
-            My_lily_lexer::My_lily_lexer() [my-lily-lexer.cc:78]
-            My_lily_parser::parse_file(String,String) [my-lily-parser.cc:54]
-            do_one_file(String,String) [scores.cc:124]
-      Reading 4 bytes from 0xefffeca8 on the stack.
-      Address 0xefffeca8 is 728 bytes below frame pointer in function 
-. * patch: don't touch timestamp if all patches fail.
-. * MetaPost: should not generate setgray for unfill
-. * glibc 2.0:
-         f = fopen ("/dev/null", "r")
-         assert (feof (f))
-. * Texinfo, add [ A | B | C ] style tocs to .html output, and don't rely
-    on @node names for html tocs.
-
-.* PROJECTS
-. * Scripts:
-.  * stack scripts in chords:
-         % fingering:        footing:
-           < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
-.  * script-spacing
-.  * slur parts as a script
-.  * stack parameterised scripts for fingering and footing:
-
-. * convert-mudela:
-.  * better parsing
-.  * make smarter
-.  * convert-mudela -e empty.ly
-
-. * emacs mudela-mode
-.  *  should handle block comments too.
-.  *  handle lexer modes (\header, \melodic, \lyric) etc.
-.  *  indentation
-.  *  notenames?
-.  *  fontlock: \melodic \melodic
-
-. * use properties for:
-.  * default tempo.
-
-. * page handling:
-.  * PS output
-.  * optimal pagebreaking.
-
-. * internationalisation for input.
-.  * Unicode support? -> man 7 unicode
-.  * (The explanation below is mostly intended for Han-Wen and Jan)
-> Before, the font was changed with macros declared separately for 
-> pure TeX and LaTeX, but now all the fonts are declared directly in
-> the generated code using the low-level TeX commands. This circumvents
-> the fontencoding mechanism of LaTeX and is a potential source of
-> problems also for us users of the Latin-1 character set. 
-> I think it still works since the inputencoding latin1 is 
-> declared by ly2dvi, but it still means that e.g. an o with
-> umlaut is typeset as a combination of the two symbols 'o' and
-> 'umlaut' instead of as a single character, as would be the case
-> if fontencoding OT1 had been used. This shouldn't give any 
-> difference in layout, though. One of the main argument for using
-> fontencoding OT1 is for the hyphenation mechanism to work, an 
-> argument that's clearly irrelevant in our application. Yet we
-> see the problem for August.
-
-. * \header
-.  * output header info to MIDI too.
-.  * dump \header into easily parsable format.
-
-. * chords
-.  * guitar chords (fret diagrams)
-.  * other chord name styles (american(?) style)
-.  * basso continuo
-.  * MIDI output?
-
-. * Debug logs:
-.  * derive lily_stream, Dstream, texstream from ostream?
-.  * indentable stream as baseclass for TeX stream, lily stream, Dstream.
-.  * use dstream feature in midi2ly
-.  * integrate IO checking into stream class
-
-. * input converters
-.  * NIFF?
-.  * musedata
-
-. * add to MIDI output:
-.  * sharp / flat on trills (in MIDI ??)
-.  * ornaments (and trills?)
-.  * slurs
-.  * accents
-.  * dynamics
-.  * account for rhythmic position in measure
-.  * etc.
-
-
-. * logfile output?
-
-. * PS 
-.  * speed up PS code.
-.  * PS lines to .eps files
-.  * write custom prolog
-.  * fix ps font switching
-
-. * more spanners (smallish)
-.  * Glissando
-.  * trill
-
-. * Keys:
-.  * merge key{item} & localkey{item}?
-.  * spacing
-
-. * Support for TAB
-.  * redo Notehead to allow digits as heads
-.  * add a \tablature {} lexer mode for easy entering
-
-. * should adjust stemlength for flag number.
-
-. * breaking:
-.  * specify number of lines
-
-.* INPUTLANGUAGE
-. * convention for slurs vs. phrasing marks.
-. * Language:
-.  * \translator -> ?
-.  * fix \partial 
-.  * \bla {} vs \bla ; 
-.  * \once\property  KEY = VAL
-.  * input property
-. * Figure out semicolons.
-. * <c f a>4 ?
-. * configure pitch_byte
-. * rest name configurable
-
-
-.* SMALLISH PROJECTS
-
-. * lyric in staff  (sharpsharp in staff, text below)
-
-. * write Dynamic_line (to group dynamics horizontally)
-
-. * handle EOF graciously in error messages.
-
-. * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
-
-. * lily \tempo
-
-. *   % toe to bheel   four to five
-           %   ^_u            4_5  
-           %     -                           
-           %  --|x--         --|x--
-           %  --|---         --|---
-           %  --|---         --|---
-          (where "to" is a tiny bow)
-
-. * Text_crescendo
-
-.* IDEAS
-. * Output data structures of Mudela in XML/SGML.
-. * create libmudela, or liblily_frontend
-. * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
-
-* OUTLINE SETUP
-.* .EMACS
-;;; from outline.el
-(defvar outline-font-lock-keywords
-  '(;; Highlight headings according to the level.
-    ;; must change this to allout node layout
-    ;;("^\\(\\*+\\)[ \t]*\\(.+\\)?[ \t]*$"
-    ("^\\([.]*[ ]*[*]\\)[ \t]*\\(.*\\)$"
-     (1 font-lock-string-face)
-     (2 (let ((len (- (match-end 1) (match-beginning 1))))
-         (or (cdr (assq len '((1 . font-lock-function-name-face)
-                              (2 . font-lock-keyword-face)
-                              (3 . font-lock-comment-face))))
-             font-lock-variable-name-face))
-       nil t))
-    ;; Highlight citations of the form [1] and [Mar94].
-    ("\\[\\([A-Z][A-Za-z]+\\)*[0-9]+\\]" . font-lock-type-face))
-  "Additional expressions to highlight in Outline mode.")
-
-(add-hook 'outline-mode-hook
-         '(lambda ()
-           (setq font-lock-maximum-decoration t)
-           (setq font-lock-maximum-decoration t)
-           (make-local-variable 'font-lock-defaults)
-           (setq font-lock-defaults '(outline-font-lock-keywords t))
-           (font-lock-mode global-font-lock-mode)
-       ))
-(require 'allout)
-(outline-init 't)
-
+[see http://www.cs.uu.nl/people/hanwen/lily-devel/index.html]
diff --git a/VERSION b/VERSION
index f1b86883ae645d36582f16c47a8777103ce26b27..023bbc67dee1740d78ad71ab1e48dc2cf917337d 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=30
-MY_PATCH_LEVEL=jcn2
+PATCH_LEVEL=31
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --git a/flower/include/unionfind.hh b/flower/include/unionfind.hh
deleted file mode 100644 (file)
index b83a673..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef UNIONFIND_HH
-#define UNIONFIND_HH
-#include "array.hh"
-
-/**
-    which points of a graph are connected?.
-    Union find, a standard algorithm:
-
-    Union_find represents an undirected graph of N points. You can
-    connect two points using #connect()#. #find (i)# finds a uniquely
-    determined representant of the equivalence class of points
-    connected to #i#.
-    
-    */
-struct Union_find {    
-  void connect (int i, int j);
-  int find (int i);
-  bool equiv (int i, int j) { return find (i) == find (j); }
-  Union_find (int sz);
-
-  /**
-     This array provides the representing point for each node in the graph.
-  */
-  Array<int> classes_;
-};
-#endif
diff --git a/flower/unionfind.cc b/flower/unionfind.cc
deleted file mode 100644 (file)
index cb5afce..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "unionfind.hh"
-/*
-  see a book on data structures
-  */
-
-Union_find::Union_find (int n)
-{
-  classes_.set_size (n);
-
-  for (int i=0; i < n; i++) 
-    {
-      classes_[i] = i;
-    }
-}
-
-int
-Union_find::find (int i)
-{
-  int rep = i;
-  while (classes_[rep] != rep)
-    rep = classes_[rep];
-  while (classes_[i] != rep) 
-    {
-      int next =classes_[i];
-      classes_[i] = rep;
-      i = next;
-    }
-  return rep;
-}
-
-void
-Union_find::connect (int i, int j)
-{
-  i = find (i);
-  j = find (j);
-  classes_[i] = j;    
-}
diff --git a/input/test/crescendi.ly b/input/test/crescendi.ly
new file mode 100644 (file)
index 0000000..3d47741
--- /dev/null
@@ -0,0 +1,17 @@
+\score{
+\notes\relative c''{
+a1\fff\< \!a
+a\> \!a
+\property Voice.crescendoText = "cresc."
+\property Voice.crescendoSpanner = "dashed-line"
+a\mf\cresc \endcresc a
+%a\decresc \enddecresc a
+a1\< \!a
+a\> \!a
+}
+\paper{
+}
+\midi{
+\tempo 1 = 60;
+}
+}
diff --git a/input/test/span-dynamic.ly b/input/test/span-dynamic.ly
new file mode 100644 (file)
index 0000000..8c48f7d
--- /dev/null
@@ -0,0 +1,17 @@
+\score{
+\notes\relative c''{
+a1\ppp\<
+a
+a
+a
+a
+a
+a
+\!a\fff
+}
+\paper{
+}
+\midi{
+\tempo 1 = 60;
+}
+}
index bdf26864df3bb5b7f5358906a2580a8e58e5703e..ca1cf50cd01a53dba783116bb96dc728333d9403 100644 (file)
@@ -69,28 +69,45 @@ Crescendo::do_brew_molecule () const
 
   Drul_array<bool> broken;
   Direction d = LEFT;
-  do {
-    Paper_column* s = dynamic_cast<Paper_column*>(spanned_drul_[d]); // UGH
-    broken[d] = (!s->musical_b ());
-  } while (flip (&d) != LEFT);
+  do
+    {
+      Paper_column* s = dynamic_cast<Paper_column*>(spanned_drul_[d]); // UGH
+      broken[d] = (!s->musical_b ());
+    }
+  while (flip (&d) != LEFT);
   
 
-  bool continued = broken[Direction (-gd)];
-  Real height = paper_l()->get_var ("crescendo_height");
-  Real thick = paper_l ()->get_var ("crescendo_thickness");
-
-  const char* hairpin = (gd < 0)? "decrescendo" :  "crescendo";
-
-  Box b (Interval (0, width),
-        Interval (-2*height, 2*height));
-
-  SCM at = gh_list (ly_symbol2scm (hairpin),
-                    gh_double2scm (thick),
-                    gh_double2scm (width),
-                    gh_double2scm (height),
-                    gh_double2scm (continued ? height/2 : 0.0),
-                    SCM_UNDEFINED);
-
+  SCM at;
+  SCM s = get_elt_property ("spanner");
+  Real height;
+  if (gh_string_p (s) && ly_scm2string (s) == "dashed-line")
+    {
+      Real thick = paper_l ()->get_var ("crescendo_dash_thickness");
+      Real dash = paper_l ()->get_var ("crescendo_dash");
+      height = thick;
+      at = gh_list (ly_symbol2scm (ly_scm2string (s).ch_C ()),
+                   gh_double2scm (thick),
+                   gh_double2scm (dash),
+                   gh_double2scm (width),
+                   SCM_UNDEFINED);
+    }
+  else
+    {
+      bool continued = broken[Direction (-gd)];
+      height = paper_l()->get_var ("crescendo_height");
+      Real thick = paper_l ()->get_var ("crescendo_thickness");
+      
+      const char* hairpin = (gd < 0)? "decrescendo" :  "crescendo";
+
+      at = gh_list (ly_symbol2scm (hairpin),
+                   gh_double2scm (thick),
+                   gh_double2scm (width),
+                   gh_double2scm (height),
+                   gh_double2scm (continued ? height/2 : 0.0),
+                   SCM_UNDEFINED);
+    }
+  
+  Box b (Interval (0, width), Interval (-2*height, 2*height));
   Molecule m (b, at);
   
   m.translate_axis (extra_left, X_AXIS);
index 88de9812a2142b2cc4184b260eaa608fe3b54a3f..254271080f1110fef47d0575d3b998ee95a35e26 100644 (file)
@@ -22,7 +22,9 @@
 
 /*
   TODO:
-    multiple type of span dynamic:
+    * why handle absolute and span requests in one cryptic engraver,
+    what about Span_dynamic_engraver?
+
     * hairpin
     * text:
       - `cresc. --  --  --'
@@ -34,7 +36,8 @@
  */
 class Dynamic_engraver : public Engraver
 {
-  Text_item * text_p_;
+  Text_item * abs_text_p_;
+  Text_item * cr_text_p_;
   Crescendo * to_end_cresc_p_;
   Crescendo * cresc_p_;
 
@@ -70,10 +73,9 @@ Dynamic_engraver::announce_element (Score_element_info i)
 Dynamic_engraver::Dynamic_engraver()
 {
   do_post_move_processing();
-  text_p_ =0;
-
+  abs_text_p_ = 0;
+  cr_text_p_ = 0;
   to_end_cresc_p_ = cresc_p_ = 0;
-
   cresc_req_l_ = 0;
 }
 
@@ -121,7 +123,7 @@ Dynamic_engraver::do_process_requests()
       if (Text_script_req *absd =
          dynamic_cast<Text_script_req *> ( dynamic_req_l_arr_[i]))
        {
-         if (text_p_)
+         if (abs_text_p_)
            {
              dynamic_req_l_arr_[i]->warning (_("Got a dynamic already.  Continuing dazed and confused."));
              continue;
@@ -129,19 +131,19 @@ Dynamic_engraver::do_process_requests()
          
          String loud = absd->text_str_;
 
-         text_p_ = new Text_item;
-         text_p_->set_elt_property ("text",
+         abs_text_p_ = new Text_item;
+         abs_text_p_->set_elt_property ("text",
                                     ly_str02scm (loud.ch_C()));
-         text_p_->set_elt_property ("style", gh_str02scm ("dynamic"));
-         text_p_->set_elt_property ("script-priority",
+         abs_text_p_->set_elt_property ("style", gh_str02scm ("dynamic"));
+         abs_text_p_->set_elt_property ("script-priority",
                                     gh_int2scm (100));
          
-         Side_position_interface (text_p_).set_axis (Y_AXIS);
+         Side_position_interface (abs_text_p_).set_axis (Y_AXIS);
 
          
          if (absd->get_direction ())
            {
-             text_p_->set_elt_property ("direction", gh_int2scm (absd->get_direction ()));
+             abs_text_p_->set_elt_property ("direction", gh_int2scm (absd->get_direction ()));
            }
 
 
@@ -155,14 +157,14 @@ Dynamic_engraver::do_process_requests()
            }
 
          if (isdir_b (prop) && to_dir (prop))
-           text_p_->set_elt_property ("direction", prop);
+           abs_text_p_->set_elt_property ("direction", prop);
 
          prop = get_property ("dynamicPadding");
          if (gh_number_p(prop))
            {
-             text_p_->set_elt_property ("padding", prop);
+             abs_text_p_->set_elt_property ("padding", prop);
            }
-         announce_element (Score_element_info (text_p_, absd));
+         announce_element (Score_element_info (abs_text_p_, absd));
        }
       else if (Span_req *span_l
               = dynamic_cast <Span_req *> (dynamic_req_l_arr_[i]))
@@ -186,10 +188,50 @@ Dynamic_engraver::do_process_requests()
              cresc_req_l_ = span_l;
              assert (!new_cresc_p);
              new_cresc_p  = new Crescendo;
-             new_cresc_p
-               ->set_elt_property ("grow-direction",
-                                   gh_int2scm ((span_l->span_type_str_ == "crescendo") ? BIGGER : SMALLER));
+             new_cresc_p->set_elt_property
+               ("grow-direction",
+                gh_int2scm ((span_l->span_type_str_ == "crescendo")
+                            ? BIGGER : SMALLER));
              
+             SCM s = get_property (span_l->span_type_str_ + "Text");
+             if (gh_string_p (s))
+               {
+                 cr_text_p_ = new Text_item;
+                 cr_text_p_->set_elt_property ("text", s);
+                 // urg
+                 cr_text_p_->set_elt_property ("style", gh_str02scm ("italic"));
+                 // ?
+                 cr_text_p_->set_elt_property ("script-priority",
+                                               gh_int2scm (100));
+                 
+                 /*
+                   This doesn't work.
+                   I'd like to have support like this:
+                           |
+                          x|
+                         cresc. - - -
+
+                   or
+                           |
+                          x|
+                         ff cresc. - - -
+
+                  */
+                 if (0) //abs_text_p_)
+                   {
+                     Side_position_interface (cr_text_p_).set_axis (X_AXIS);
+                     Side_position_interface (cr_text_p_).add_support (abs_text_p_);
+                   }
+                 //Side_position_interface (cr_text_p_).set_axis (Y_AXIS);
+                 announce_element (Score_element_info (cr_text_p_, span_l));
+               }
+
+             s = get_property (span_l->span_type_str_ + "Spanner");
+             if (gh_string_p (s)) //&& ly_scm2string (s) != "hairpin")
+               {
+                 new_cresc_p->set_elt_property ("spanner", s);
+               }
+         
              side_position (new_cresc_p).set_axis (Y_AXIS);
              announce_element (Score_element_info (new_cresc_p, span_l));
            }
@@ -210,7 +252,8 @@ Dynamic_engraver::do_process_requests()
       cresc_p_ = new_cresc_p;
       cresc_p_->set_bounds(LEFT,get_staff_info().musical_pcol_l ());
 
-      if (text_p_)
+      // arrragh, brr, urg: we know how wide text is, no?
+      if (abs_text_p_)
        {
          index_set_cell (cresc_p_->get_elt_property ("dynamic-drul"),
                          LEFT, SCM_BOOL_T);
@@ -256,10 +299,16 @@ Dynamic_engraver::typeset_all ()
 
     }
   
-  if (text_p_)
+  if (abs_text_p_)
+    {
+      typeset_element (abs_text_p_);
+      abs_text_p_ = 0;
+    }
+
+  if (cr_text_p_)
     {
-      typeset_element (text_p_);
-      text_p_ =0;
+      typeset_element (cr_text_p_);
+      cr_text_p_ = 0;
     }
 }
 
@@ -277,8 +326,14 @@ Dynamic_engraver::acknowledge_element (Score_element_info i)
       || dynamic_cast<Note_head *> (i.elem_l_)
       )
     {
-      if (text_p_)
-       Side_position_interface (text_p_).add_support (i.elem_l_);
+      if (abs_text_p_)
+       Side_position_interface (abs_text_p_).add_support (i.elem_l_);
+
+      if (cr_text_p_)  ///&& !abs_text_p_)
+       {
+         Side_position_interface (cr_text_p_).set_axis (Y_AXIS);
+         Side_position_interface (cr_text_p_).add_support (i.elem_l_);
+       }
 
       if (to_end_cresc_p_)
        Side_position_interface (to_end_cresc_p_).add_support (i.elem_l_);
index a05b54cce6464150adc57d94326c56d2df95e950..b9109b9d86d3d53a37f082e6370b4dd844ea1cf1 100644 (file)
@@ -23,10 +23,13 @@ Tie_performer::Tie_performer()
 bool
 Tie_performer::do_try_music (Music *m)
 {
-  if (Tie_req * c = dynamic_cast<Tie_req*> (m))
+  if (!req_l_)
     {
-      req_l_ = c;
-      return true;
+      if (Tie_req * c = dynamic_cast<Tie_req*> (m))
+       {
+         req_l_ = c;
+         return true;
+       }
     }
   return false;
 }
index 7f1befbf66a19e613f4062fba48b000167791f00..87de462d7391656f316118bf2c377c9faebb76b6 100644 (file)
@@ -232,7 +232,8 @@ Tie::get_curve () const
       Real ry = rint (y/staff_space) * staff_space;
       Real diff = ry - y;
       Real newy = y;
-      if (fabs (diff) < paper_l ()->get_var ("tie_staffline_clearance"))
+      if (fabs (y) <= 2.0
+         && fabs (diff) < paper_l ()->get_var ("tie_staffline_clearance"))
        {
          newy = ry - 0.5 * staff_space * sign (diff) ;
        }
index 5c5d505123f5d972f426d62635833e1a075d7ac4..d02f17dd9782d5927e3fa855d02903e17b5b0aa0 100644 (file)
@@ -175,6 +175,8 @@ multi_measure_rest_expand_limit = 10.0;
 crescendo_shorten = 4.0 * \staffspace;
 crescendo_thickness   = \stafflinethickness;
 crescendo_height = 0.666 * \staffspace;
+crescendo_dash_thickness = 1.2*\stafflinethickness;
+crescendo_dash = 4.0*\staffspace;
 
 % in internote.
 restcollision_minimum_dist = 3.0;
index 21ec1095f2f6efac7d1ad6389dc80bce2435d771..132d0e8c84cb5af325eae5f07dc02c57257a13a1 100644 (file)
@@ -14,6 +14,7 @@ StaffContext = \translator {
        \consists "Key_performer";
        \consists "Time_signature_performer";
        \consists "Tempo_performer";
+%      \consists "Span_dynamic_performer";
        dynamicStyle = #"dynamic"
 };
 \translator { \StaffContext }
@@ -43,6 +44,7 @@ VoiceContext = \translator {
        \name Voice;
 % All notes fall to Grace if you leave Thread out (huh?)
        \consists "Dynamic_performer";   % must come before text_engraver.
+       \consists "Span_dynamic_performer";
        \consists "Grace_position_performer";
        \accepts Thread;
        \accepts Grace;
index d416d2edd9db4a044320ba9d2018e7596fb714b8..8fe96e79a81f541b627aa6f545a92f04f84bdf10 100644 (file)
@@ -123,3 +123,4 @@ autoBeamOn = \property Voice.noAutoBeaming = ##f
 
 emptyText = \property Voice.textEmptyDimension = ##t
 fatText = \property Voice.textEmptyDimension = ##f
+
index bf8cafcee236a7f7caf7bc32eb32cba32016cc5c..b21bcc716535fa200a4956582192cad220417db0 100644 (file)
@@ -5,3 +5,23 @@ cr = \spanrequest \start "crescendo"
 decr = \spanrequest  \start "decrescendo"
 rc = \spanrequest   \stop "crescendo"
 rced = \spanrequest \stop "decrescendo"
+
+%% urg, these don't work yet.
+xcresc = {
+%\spanrequest \start "crescendo"
+\property Voice.crescendoText = "cresc."
+\property Voice.crescendoSpanner = "dashed"
+}
+
+xendcresc = {
+%\spanrequest \start "crescendo"
+\property Voice.crescendoText = ##f
+\property Voice.crescendoSpanner = ##f
+}
+
+cresc = \spanrequest \start "crescendo"
+endcresc = \spanrequest   \stop "crescendo"
+
+%crescpoco = \property Voice.crescendoText = "cresc. poco a poco"
+%decresc = \property Voice.crescendoText = "decr."
+%dim = \property Voice.crescendoText = "dim."
index 8fd98809577ecb3999512695b462c4abaf01232a..769b7ab8feed98a241bd0c080744df8c6042e41c 100644 (file)
@@ -4,7 +4,6 @@ all: $(OUT_FILES)
 
 local-WWW: $(ly_examples) $(fly_examples) $(ps_examples) $(png_examples)
 #      (cd $(outdir); $(PYTHON) ../$(buildscripts)/mutopia-index.py --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(all_examples))
-#      echo $^ > $(depth)/wwwlist
 #      $(footify) $(outdir)/index.html
 
 local-web:
index 757b492e989d15478a48188b897f08c1108e2e9a..fa4818f2ea6fd62e39751e2c680ef16473b55be0 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.30
-Entered-date: 06MAR00
+Version: 1.3.31
+Entered-date: 09MAR00
 Description: 
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.3.30.tar.gz 
+       1000k lilypond-1.3.31.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.30.tar.gz 
+       1000k lilypond-1.3.31.tar.gz 
 Copying-policy: GPL
 End
index f06d1a84b74e02ddaa0c19fe1a9f3b714d0a0336..a8e3f0b345a82e92dff5131c2f0cf7f508cad8c5 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.30
+Version: 1.3.31
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.30.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.31.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # get Packager from (undocumented?) ~/.rpmmacros!
index c88e20c71ea58ee452e713bba758663b64812642..72da29ec209cd9cc8f4f57e64fe1a6dc94d8541b 100644 (file)
 } bind def 
 % 
 % this is for drawing slurs. 
-/draw_bezier_sandwich  % thickness  
+/draw_bezier_sandwich  % thickness controls 
 { 
        setlinewidth 
        moveto 
        stroke 
 } bind def 
 % 
-/draw_dashed_slur 
+/draw_dashed_line % dash thickness width
+{ 
+       1 setlinecap 
+       1 setlinejoin 
+       setdash 
+       setlinewidth 
+       0 0 moveto
+       0 lineto
+       stroke 
+} bind def 
+%
+/draw_dashed_slur % dash thickness controls
 { 
        1 setlinecap 
        1 setlinejoin 
index f2b009aa9e7ebc6e86e51cf85f39069e0db07552..841ecade60b67b1467af676033133c908967886f 100644 (file)
   (define (char i)
     (string-append "\\char" (inexact->string i 10) " "))
   
+  (define (dashed-line thick dash w)
+    (embedded-ps ((ps-scm 'dashed-line) thick dash w)))
+
   (define (decrescendo thick w h cont)
     (embedded-ps ((ps-scm 'decrescendo) thick w h cont)))
 
            (define bracket ,bracket)
            (define char ,char)
            (define crescendo ,crescendo)
+           (define dashed-line ,dashed-line) 
            (define dashed-slur ,dashed-slur) 
            (define decrescendo ,decrescendo) 
            (define end-output ,end-output)
        ((eq? action-name 'tuplet) tuplet)
        ((eq? action-name 'bracket) bracket)
        ((eq? action-name 'crescendo) crescendo)
+       ((eq? action-name 'dashed-line) dashed-line) 
        ((eq? action-name 'dashed-slur) dashed-slur) 
        ((eq? action-name 'decrescendo) decrescendo) 
        ((eq? action-name 'end-output) end-output)
      (number->string (* 10 thick))     ;UGH.  10 ?
      " ] 0 draw_dashed_slur"))
 
+  (define (dashed-line thick dash width)
+    (string-append 
+     (number->string width) 
+     " "
+     (number->string thick) 
+     " [ "
+     (number->string dash)
+     " "
+     (number->string dash)
+     " ] 0 draw_dashed_line"))
+
   (define (decrescendo thick w h cont)
     (string-append 
      (numbers->string (list w h (inexact->exact cont) thick))
            (define crescendo ,crescendo)
            (define volta ,volta)
            (define bezier-sandwich ,bezier-sandwich)
+           (define dashed-line ,dashed-line) 
            (define dashed-slur ,dashed-slur) 
            (define decrescendo ,decrescendo) 
            (define end-output ,end-output)
        ((eq? action-name 'bracket) bracket)
        ((eq? action-name 'char) char)
        ((eq? action-name 'crescendo) crescendo)
+       ((eq? action-name 'dashed-line) dashed-line) 
        ((eq? action-name 'dashed-slur) dashed-slur) 
        ((eq? action-name 'decrescendo) decrescendo)
        ((eq? action-name 'experimental-on) experimental-on)
index 7223b973c4f13680f1eca3bfa3c077a456d58006..8172d03b0bad6693b009ef9da0fba3183f36ff17 100644 (file)
@@ -3,7 +3,6 @@ default:
 
 
 local-WWW: $(OUTHTML_FILES)
-       echo $^ > $(depth)/wwwlist
 
 local-web:
        $(MAKE) CONFIGSUFFIX=www local-WWW
index 4de1e457397b41e20c23cf184dc937524df31b7f..73565b8c2e4cf9247a707af585545fb360165dad 100644 (file)
@@ -17,11 +17,11 @@ htmldoc:
        $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
        rm -f `find . -name \*.html~ -print`
        $(footify-all-command)
-       find `find Documentation -type d -name 'out-www'` -not -name '*dvi' -not -name '*ly' -not -name '*tex' -not -name '*.ps' -not -name 'out-www' > wwwlist
+       find `find Documentation -type d -name 'out-www'` -not -name '*dvi' -not -name '*ly' -not -name '*tex' -not -name '*.ps' -not -name 'out-www' 
        tar cfz $(outdir)/htmldoc.tar.gz  `cat wwwlist` `ls *.png $(ERRORLOG)`  index.html
 
 localclean:
-       rm -f wwwlist
+
 
 # if you fix this, please fix yodl too!
 check-top-web: