]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.31
authorfred <fred>
Tue, 26 Mar 2002 23:27:41 +0000 (23:27 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:27:41 +0000 (23:27 +0000)
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]
flower/include/unionfind.hh [deleted file]
flower/unionfind.cc [deleted file]

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/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;    
-}