]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.1.62 release/0.1.62
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 6 May 1998 22:58:51 +0000 (00:58 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 6 May 1998 22:58:51 +0000 (00:58 +0200)
162 files changed:
AUTHORS.txt
Documentation/INSTALL.pod
Documentation/Makefile
Documentation/gnu-music-history [new file with mode: 0644]
Documentation/gnu-music.pod
Documentation/index.pod
Documentation/links.pod
Documentation/man/lilypond.pod
Documentation/relative-octaves.pod [new file with mode: 0644]
Documentation/tex/fonts.doc
Documentation/tex/mudela.doc
Documentation/topweb.pod [new file with mode: 0644]
INSTALL.txt
NEWS
PATCHES.txt
README
TODO
VERSION
aclocal.m4
bin/add-html-footer.py [new file with mode: 0644]
bin/conflily.sh
bin/make-patch.py
bin/make-website.py [deleted file]
bin/mutopia-index.py
bin/ps-to-gifs.sh
flower/NEWS
flower/include/string-convert.hh
flower/string-convert.cc
init/book-fragment.ly
init/declarations.ly
init/lily-init.ly
init/paper-params16.ly [new file with mode: 0644]
init/paper-params20.ly [new file with mode: 0644]
init/paper11.ly
init/paper13.ly
init/paper16.ly
init/paper20.ly
init/paper26.ly
init/params.ly [new file with mode: 0644]
init/property.ly
input/Makefile
input/pedal.ly
input/scales.ly
input/test/Makefile
input/test/abbrev.ly
input/test/beam-pos.ly
input/test/clefs.ly
input/test/dotted-slur.ly [new file with mode: 0644]
input/test/multi-rest.ly [new file with mode: 0644]
input/test/slurs.ly
lily/abbrev.cc
lily/abbreviation-beam-engraver.cc
lily/bar-grav.cc
lily/beam.cc
lily/bezier.cc
lily/bow.cc
lily/break.cc
lily/clef-grav.cc
lily/clef-item.cc
lily/command-request.cc
lily/include/bar-grav.hh
lily/include/bezier.hh
lily/include/bow.hh
lily/include/clef-grav.hh
lily/include/clef-item.hh
lily/include/command-request.hh
lily/include/lily-proto.hh
lily/include/lookup.hh
lily/include/main.hh
lily/include/multi-measure-rest-engraver.hh
lily/include/musical-request.hh
lily/include/my-lily-parser.hh
lily/include/paper-def.hh
lily/include/score-column.hh
lily/include/score-grav.hh
lily/include/spring-spacer.hh
lily/include/time-description.hh
lily/include/timing-grav.hh
lily/include/timing-translator.hh
lily/lexer.ll
lily/lookup.cc
lily/main.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/musical-request.cc
lily/my-lily-lexer.cc
lily/my-lily-parser.cc
lily/paper-def.cc
lily/parser.hh [deleted file]
lily/parser.yy
lily/rod.cc
lily/score-column.cc
lily/score-grav.cc
lily/scores.cc
lily/separating-group-spanner.cc
lily/slur-grav.cc
lily/slur.cc
lily/span-score-bar.cc
lily/spring-spacer.cc
lily/stem-info.cc
lily/stem.cc
lily/tie-grav.cc
lily/tie.cc
lily/timing-grav.cc
lily/timing-translator.cc
make/Docrules.make
make/Mutopia.make
make/Toplevel.make.in
make/WWW.make
make/lilypond.spec.in
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
mf/README
mi2mu/mudela-stream.cc
mudela-mode.el
mutopia/Coriolan/clarinetti-part.ly
mutopia/Coriolan/clarinetto-1.ly
mutopia/Coriolan/clarinetto-2.ly
mutopia/Coriolan/coriolan.ly
mutopia/Coriolan/corni-part.ly
mutopia/Coriolan/corno-1.ly
mutopia/Coriolan/corno-2.ly
mutopia/Coriolan/fagotti-part.ly
mutopia/Coriolan/fagotto-1.ly
mutopia/Coriolan/fagotto-2.ly
mutopia/Coriolan/flauti-part.ly
mutopia/Coriolan/flauto-1.ly
mutopia/Coriolan/flauto-2.ly
mutopia/Coriolan/oboe-1.ly
mutopia/Coriolan/oboe-2.ly
mutopia/Coriolan/oboi-part.ly
mutopia/Coriolan/part-paper.ly [new file with mode: 0644]
mutopia/Coriolan/timpani.ly
mutopia/Coriolan/trombe-part.ly
mutopia/Coriolan/trombo-1.ly
mutopia/Coriolan/trombo-2.ly
mutopia/Coriolan/violino-2.ly
mutopia/J.S.Bach/Makefile
mutopia/J.S.Bach/preludes-1.ly
mutopia/J.S.Bach/preludes-2.ly
mutopia/J.S.Bach/preludes-3.ly.m4
mutopia/J.S.Bach/preludes-4.ly
mutopia/J.S.Bach/preludes-5.ly
mutopia/J.S.Bach/preludes-6.ly
mutopia/J.S.Bach/scsii-menuetto.ly
mutopia/J.S.Bach/wtk1-fugue2.ly
mutopia/Makefile
mutopia/los-toros-oboe-16.tex [deleted file]
mutopia/los-toros-oboe-20.tex [deleted file]
mutopia/los-toros-oboe.ly
mutopia/ltor.ly [new file with mode: 0644]
mutopia/standchen-16.tex [deleted file]
mutopia/standchen-20.ly
mutopia/standchen-20.tex [deleted file]
mutopia/standchen-easy.ly [new file with mode: 0644]
mutopia/standchen.ly
mutopia/standje.ly [deleted file]
test/bow.cc
tex/headers.tex
tex/lily-ps-defs.tex
tex/lilyponddefs.tex

index 11fde65e9787b8894f54a7fdfcbd1b322459aa29..ae928060c5e169de966aa1116427c9c5dcde3445 100644 (file)
@@ -61,7 +61,7 @@ CONTRIBUTORS
 
 
 
-6/Apr/98                 LilyPond 0.1.59                        1
+6/Apr/98                 LilyPond 0.1.62                        1
 
 
 
@@ -127,6 +127,6 @@ AUTHORS(1)            LilyPond documentation           AUTHORS(1)
 
 
 
-6/Apr/98                 LilyPond 0.1.59                        2
+6/Apr/98                 LilyPond 0.1.62                        2
 
 
index a52cccadc72c41a74842d2618e3887a29c5b94eb..093db58f920638b2bcaf40ee91f94c8e94b0dad8 100644 (file)
@@ -173,11 +173,15 @@ Set the directory where TeX and Metafont live
 
 =item B<--enable-tex-dir>
 
-Set then directory TeX input is in (detected as a subdir of tex-prefix)
+Set then directory TeX input is in (detected as a subdir of
+tex-prefix).  This should be a directory that is reachable both for
+tex and latex.  On my system the best choice would be
+F</usr/lib/texmf/texmf/tex/generic//>.
 
 =item B<--enable-mf-dir>
 
-Set the directory mf input is in (idem)
+Set the directory mf input is in (idem).   On my system the best
+choice would be F</usr/lib/texmf/texmf/fonts/source/public/>.
 
 =item B<--enable-config>
 
@@ -273,11 +277,15 @@ Please refer to the man page for more information.
 
 =head1 REDHAT LINUX
 
-RedHat Linux users should be able to get a RPM. A spec file is in
-F<make/out/lilypond.spec>. You should be able to create an rpm as a
-normal user. Be sure you have a F<~/.rpmrc>, and edit the RPM-dir in
-F<Variables.make>. (If you create the RPM as a normal user the
-permissions will not be set correctly, unfortunately)
+RedHat Linux users can compile an RPM. A spec file is in
+F<make/out/lilypond.spec>.  You should install a gif file called
+F<lelie_icon.gif> along with the sources.  You can generate this gif
+file by typing
+
+     make gifs
+
+in the directory F<Documentation>.
+
 
 
 =head1 DEBIAN GNU/LINUX
index c1522874121d2dc79ef26fbdf3057f522d458c92..fc2341ae547e5c51bf224161a83d70a676199e27 100644 (file)
@@ -8,7 +8,7 @@ depth = ..
 # identify module:
 #
 NAME = Documentation
-SUBDIRS=man tex
+SUBDIRS=man tex 
 
 #
 
@@ -33,19 +33,28 @@ default: all do-doc
 # list of distribution files:
 #
 XPMS=$(wildcard *.xpm)
-giffiles=$(XPMS:.xpm=.gif)
+giffiles = $(addprefix $(outdir)/,$(XPMS:.xpm=.gif))
 
-gifs: $(addprefix $(outdir)/, $(giffiles))
+gifs: $(giffiles)
 
-
-EXTRA_DISTFILES = $(XPMS)   vocabulary-data vocabulary-forms.el  automake.urgh
+EXTRA_DISTFILES = $(XPMS)   vocabulary-data vocabulary-forms.el  automake.urgh\
+       gnu-music-history
 
 # don't do DVI files. They can only be made if lily is installed
 do-doc: $(TEXTFILES)
 
-local-WWW: $(HTMLFILES)
+
+$(outdir)/%.txt: $(depth)/%
+       -rm $@
+       ln $< $@
+
+README_TOPFILES=NEWS DEDICATION TODO ANNOUNCE-0.1
+README_TXTFILES=$(addprefix $(outdir)/,$(addsuffix .txt, $(README_TOPFILES)))
+
+local-WWW: $(HTMLFILES) $(README_TXTFILES)  $(giffiles)
 
 # generic targets and rules:
 #
 include $(depth)/make/Targets.make
 include $(depth)/make/Rules.make
+
diff --git a/Documentation/gnu-music-history b/Documentation/gnu-music-history
new file mode 100644 (file)
index 0000000..4ed2814
--- /dev/null
@@ -0,0 +1,57 @@
+
+=head1 HISTORY 
+
+
+Please note that this all happened when I wasn't around yet.  If you
+think that I am a biased, unfair, predisposed hypocrite, then don't
+bother flaming me;  I already know that.
+
+The GNU Music project is a project which aims to create free software
+for music printing and composing.  It was started in november '92 by a
+core team of four members (Bryan Ford <baford@cs.utah.edu>, David Linn
+<drl@vuse.vanderbilt.edu>, Francois Pinard <pinard@iro.umontreal.ca>,
+Neil Jerram <nj104@cus.cam.ac.uk>) and in January '93 Robert Strandh
+<Robert.Strandh@labri.u-bordeaux.fr> joined.
+
+After serious disputes with Robert Strandh and the FSF staff in '94,
+the project core team got divided. The development efforts of GMP
+stopped.
+
+Independently, I (HWN) started LilyPond. When I showed it to
+RMS, he was very enthousiastic about having LilyPond in the GNU
+project. I subsequently learned about the GNU Music project, and
+contacted them.  
+
+What was left of the GMP (Robert Strandh) and us, LilyPond people,
+agreed that cooperation would be desirable. Although merging of both
+efforts was and is technically infeasible, we did decide that LilyPond
+should also be part of the GNU Music project.
+
+Only later did I discover the previous quarrels about the GMP-"take
+1". To show that I am aware of the history, and to make sure nobody
+gets me wrong or is angry at me because I stole a project or a
+project's name, I wrote this note.
+
+In summary, LilyPond is now the only substantial embodiment of the GNU
+Music Project, and it is part of the GNU project.
+
+For completeness' sake, I will mention the other efforts  here:
+
+=over 4
+
+=item G Sharp, http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp
+
+An alpha version notation editor for X in Scheme. Source available on
+request from Robert Strandh.
+
+=item GNU music, 
+
+An alpha version of a music editing system with Musictex
+output. Pretest versions of GNU Music (v0.3) can still be obtained from
+Francois Pinard.
+
+=back
+
+This history note is probably biased in some way, because I wrote it.
+The rest of this document is also entirely mine, and is not meant to
+reflect anyone else's opinion.
index 2d52c811958989823f67da816e605a8eb0377423..97656daf6e7a28201a1afee3494eabb943d363e4 100644 (file)
@@ -174,60 +174,3 @@ stages, having a hard and small core which does a lot of work, is more
 efficient than lots of people doing small subprojects. Finanicial
 support would be desirable.
 
-
-=head1 HISTORY 
-
-
-Please note that this all happened when I wasn't around yet.  If you
-think that I am a biased, unfair, predisposed hypocrite, then don't
-bother flaming me;  I already know that.
-
-The GNU Music project is a project which aims to create free software
-for music printing and composing.  It was started in november '92 by a
-core team of four members (Bryan Ford <baford@cs.utah.edu>, David Linn
-<drl@vuse.vanderbilt.edu>, Francois Pinard <pinard@iro.umontreal.ca>,
-Neil Jerram <nj104@cus.cam.ac.uk>) and in January '93 Robert Strandh
-<Robert.Strandh@labri.u-bordeaux.fr> joined.
-
-After serious disputes with Robert Strandh and the FSF staff in '94,
-the project core team got divided. The development efforts of GMP
-stopped.
-
-Independently, I (HWN) started LilyPond. When I showed it to
-RMS, he was very enthousiastic about having LilyPond in the GNU
-project. I subsequently learned about the GNU Music project, and
-contacted them.  
-
-What was left of the GMP (Robert Strandh) and us, LilyPond people,
-agreed that cooperation would be desirable. Although merging of both
-efforts was and is technically infeasible, we did decide that LilyPond
-should also be part of the GNU Music project.
-
-Only later did I discover the previous quarrels about the GMP-"take
-1". To show that I am aware of the history, and to make sure nobody
-gets me wrong or is angry at me because I stole a project or a
-project's name, I wrote this note.
-
-In summary, LilyPond is now the only substantial embodiment of the GNU
-Music Project, and it is part of the GNU project.
-
-For completeness' sake, I will mention the other efforts  here:
-
-=over 4
-
-=item G Sharp, http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp
-
-An alpha version notation editor for X in Scheme. Source available on
-request from Robert Strandh.
-
-=item GNU music, 
-
-An alpha version of a music editing system with Musictex
-output. Pretest versions of GNU Music (v0.3) can still be obtained from
-Francois Pinard.
-
-=back
-
-This history note is probably biased in some way, because I wrote it.
-The rest of this document is also entirely mine, and is not meant to
-reflect anyone else's opinion.
index 573226533c2a8883c96c183a78c1f3eb8540ee6c..8b6ddc24d73590d67a879213cc9edf8d6a5825f0 100644 (file)
@@ -1,58 +1,13 @@
 =head1 NAME
 
-The Homepage of LilyPond -- the GNU Project music typesetter
+The Documentation of LilyPond -- the GNU Project music typesetter
 
 =head1 DESCRIPTION
 
-LilyPond is the GNU Project music typesetter.  It generates visual or
-auditive output from a music definition file: it can typeset formatted
-sheet music to a TeX file and play (mechanical) performances to a MIDI
-file.
-
-This is not a Fanmail/Hype page. These pages were entirely created from
-the LilyPond package-sources. 
-
 Note: These pages are created from the latest B<development snapshots>
 of LilyPond.  You can look at the bottom if you want to know which
 version this was.
 
-=head2 Mirrors
-
-=over 4
-
-=item http://sca.uwaterloo.ca/lilypond/
-
-Eric Praetzel was kind enough to provide a mirror of both the website
-and the ftp site.  
-
-=back
-
-=head2 Examples
-
-=over 4
-
-=item *
-<a href=examples_output.html
->
-short examples of what LilyPond can do: MIDI, PS, .gif and input.
-</a
->
-
-=item *
-<a href=mutopiaexamples_output.html 
->
-examples of what LilyPond can do
-with real music: MIDI, PS, .gif and input 
-</a
->
-
-=back
-
-=head2 NEWS! 
-
-This is what the latest version brings:
-
-top_of_NEWS
 
 =head2 Documentation: Introduction
 
@@ -139,7 +94,7 @@ The lilypond logo (medium size, format: .gif)
 =item *
 <a href=../tex/out-www/index.html
 >
-PS documents about LilyPond
+TeX documents about LilyPond
 </a
 >
 
@@ -187,7 +142,7 @@ The coding standards of the lilypond project.
 =item *
 <a href=docxx/index.html
 >
-The DOC++ documentation of the C++ sources.
+The DOC++ documentation of the C++ sources. [temporarily disabled]
 </a
 >
 
@@ -226,12 +181,6 @@ B<download> LilyPond and other interesting links
 >
 
 
-=item *
-<a href=sconstat/stats.html
->
-Stats on this page. [temporarily out of order]
-</a
->
 
 =back
 
index 965650c1adeb20bf35fe70bc044715049123d07a..ebc316f93322ba71c3e392e313d600c5b5634ba2 100644 (file)
@@ -115,7 +115,10 @@ bug-gnu-music-request@gnu.org
 
 For discussions concerning the GNU Music project, to subscribe: send
 mail with subject "subscribe" to
-gnu-music-discuss-request@gnu.org
+gnu-music-discuss-request@gnu.org 
+
+This list is archived at
+http://www.jab.org/mail/gnu-music-discuss@gnu.org
 
 =back
 
index 9338fd8f79702eb6ad11c4851930370ab9c909fd..9ba489dc1c282c09c27a5e006a7082ef57923f07 100644 (file)
@@ -65,15 +65,11 @@ Add F<DIRECTORY> to the search path for input files.
 
 Make incompatible mudela version non-fatal.
 
-=item B<--no-postscript, -P>,
+=item B<--find-quarts, -Q>,
 
-Don't generate embedded PostScript (or MetaFont) symbols, but resort to
-less beautiful fixed-size versions.
+Warn about melodic intervals larger than a fourth.  Useful for
+converting absolute octave mode stuff to relative octaves.
 
-LilyPond uses PostScript for variable symbols where possible.  (For some 
-of these symbols runtime MetaFont source will be genarated too.  These are 
-not used unless you also include the appropriate  TeX file too.  See 
-F<tex/fetdefs.tex>.)
 
 =back
 
diff --git a/Documentation/relative-octaves.pod b/Documentation/relative-octaves.pod
new file mode 100644 (file)
index 0000000..b6b3150
--- /dev/null
@@ -0,0 +1,88 @@
+=head1 NAME
+
+Octaves --  how to do pitches
+
+=head1 DESCRIPTION
+
+The LilyPond input language, Mudela (help, silly name), should be easy
+to read and write.  In my experience Mudela is already quite convenient 
+for entering music.  Every time i've entered a substantial piece of music, 
+however, i found that i made quite a few mistakes.  The MIDI output helps 
+a lot with locating and correcting the errors.  There's one type of error 
+that seems to be frequent, stubborn and hard to catch, and that's the
+octavation error.  The relative octave feature is an attempt to make
+Mudela a bit easier to write.  In addition, this featuer makes it harder 
+to make octavation mistakes, yet if you made one, its a lot simpler to find 
+and correct.
+
+Here's how it works.  
+
+=over 5
+
+=item * 
+forget the old "\octave c';" command
+
+=item * 
+forget the old octave boundaries with octaves c .. c'
+
+=back
+
+You start the relative octave mode (for now) with the command
+
+    \octave relative;
+
+From then on, the pitch of a note will be the closest to the last one,
+assuming that large intervals are a lot more rare than small ones. 
+Thus, you can enter a scale without using octavation quotes:
+
+    c d e f g a b c
+
+the last c being an octave higher than the first.  If you have to
+enter an interval that is greater than a quart, you must specify
+whether the pitch goes up, using post-quotes:
+
+    c c' % octave up
+    c g' % quart up 
+
+or down, using pre-quotes:
+
+    c 'c % octave down
+    c 'f % quart down
+
+Although it is not necesary, and thus redundant, information to specify
+the direction of smaller intervals, you are allowed to do so:
+
+    c d  % second up
+    c d' % second up
+
+    c a  % third down
+    c 'a % third down
+
+
+=head1 CONVERTING
+
+To convert a piece of music from the old absolute-octave notation to
+relative octaves, lilypond provides the B<-f, --find-quarters> feature
+to locate all big intervals in your music (sorry, fully automated convert 
+is too complex).
+
+You'll do something like this:
+
+    lilypond -f los-toros-oboe 2>&1 | tee intervals
+    ...
+    los-toros-oboe.ly: 59: warning: Interval greater than quart, relative: d':
+        [)g8  r d
+                 '] r |
+    los-toros-oboe.ly: 100: warning: Interval bigger than quart, relative: d':
+       [d8 d
+             '] [es'8.-> c'16] |
+    ...
+
+Then you load a copy of the original mudela file in your favourite editor, 
+and let it parse the 'error file' F<intervals>.  First you remove all 
+octavation quotes.  Then, jumping from warning to warning, you enter quotes 
+as suggested by LilyPond.
+
+=head1 EXAMPLE
+
+See F<mutopia/ltor.ly>.
index a8c78d20caffc0b2f0abdb8e9c85555d0dfcd9d4..200e4bcdd614d97d949d8ca5c5ae677c537f011d 100644 (file)
@@ -259,6 +259,36 @@ 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*}
+
 
 \bibliographystyle{plain}
 \bibliography{engraving}
index 0e0cb6cf022ccb403ccd382520b7e2a00fe41644..9ffc13a0badcbfc74edbb3526a90183a773c40c7 100644 (file)
@@ -20,7 +20,6 @@
 \usepackage{a4wide}
 \title{Mudela}
 \author{Jan Nieuwenhuizen \& Han-Wen Nienhuys}
-\date{March 2, 1998}
 
 \def\file#1{\verb+#1+}
 
@@ -71,7 +70,7 @@
 
 \chapter{A tutorial}
 
-\emph{\Large ***Under construction***}
+\emph{\Large ***Under construction: april 98***}
 
 \section{Introduction}
 
@@ -188,7 +187,7 @@ special words and punctation.  The remainder of this document explains
 how to combine these elements to express a piece of music in the
 language that LilyPond understands.  In other words, we try to explain
 how to use LilyPond, and not how LilyPond works.  For want of a better
-name we call this language Mudela (short for Music Description
+name we call the language Mudela (short for Music Description
 Language).
 
 This document does not cover all of Mudela.  Due to technical details,
@@ -329,9 +328,9 @@ to cs), Italian, Swedish, Norwegian
 
 \section{Handy input}
 
-% \subsection{Durations}
 
-However, having only quarter notes may get a bit dull.
+\chapter{Features}
+
 Durations are entered as their reciproce values
 % a1 a2 a4 a a8 a a16 a a32 a a64 a a a a
 \begin{mudela}[fragment,verbatim,center]
diff --git a/Documentation/topweb.pod b/Documentation/topweb.pod
new file mode 100644 (file)
index 0000000..e917dc6
--- /dev/null
@@ -0,0 +1,72 @@
+=head1 NAME
+
+The Homepage of LilyPond -- the GNU Project music typesetter
+
+=head1 DESCRIPTION
+
+LilyPond is the GNU Project music typesetter.  This program can print
+beautiful sheet music from a music definition file.  It can also play
+a play (mechanical) performances to a MIDI file.  Features include
+multiple staffs, meters, clefs, keys, lyrics, versatile
+input-language, cadenzas, beams, slurs, triplets.  It includes a nice
+font of musical symbols.
+
+This is not a Fanmail/Hype page. These pages were entirely created from
+the LilyPond package-sources. 
+
+Note: These pages are created from the latest B<development snapshots>
+of LilyPond.  You can look at the bottom if you want to know which
+version this was.
+
+=head2 Mirrors
+
+=over 4
+
+=item http://sca.uwaterloo.ca/lilypond/
+
+Eric Praetzel was kind enough to provide a mirror of both the website
+and the ftp site.  
+
+=back
+
+=head2 Examples
+
+=over 4
+
+=item *
+<a href=../input/out-www/index.html
+>
+short examples of what LilyPond can do: MIDI, PS, .gif and input.
+</a
+>
+
+=item *
+<a href=../mutopia/out-www/index.html
+>
+examples of what LilyPond can do
+with real music: MIDI, PS, .gif and input 
+</a
+>
+
+=back
+
+=head2 NEWS! 
+
+This is what the latest version brings:
+
+top_of_NEWS
+
+=head2 Documentation: Introduction
+
+=over 4
+
+=item *
+<a href=../Documentation/out-www/index.html
+>
+All of the LilyPond documentation.
+</a
+>
+
+
+
+=back
index d1baab30154dbd207a9e74837151ac930fb97686..70ee6927dd4910a171a9cc472682ae8661ae6cfc 100644 (file)
@@ -61,7 +61,7 @@ RECOMMENDED
 
 
 
-25/Apr/98                LilyPond 0.1.59                        1
+6/May/98                 LilyPond 0.1.62                        1
 
 
 
@@ -127,7 +127,7 @@ CONFIGURING and COMPILING
 
 
 
-25/Apr/98                LilyPond 0.1.59                        2
+6/May/98                 LilyPond 0.1.62                        2
 
 
 
@@ -163,10 +163,15 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
        --enable-tex-dir
            Set then directory TeX input is in (detected as a
-           subdir of tex-prefix)
+           subdir of tex-prefix).  This should be a directory
+           that is reachable both for tex and latex.  On my
+           system the best choice would be
+           /usr/lib/texmf/texmf/tex/generic//.
 
        --enable-mf-dir
-           Set the directory mf input is in (idem)
+           Set the directory mf input is in (idem).   On my
+           system the best choice would be
+           /usr/lib/texmf/texmf/fonts/source/public/.
 
        --enable-config
            Output to different configuration files.  Needed for
@@ -185,15 +190,10 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
        subdirectories out/ (which contain all files generated
        during compilation).
 
-CONFIGURING FOR MULTIPLE PLATFORMS
-       If you want to compile LilyPond with different
-       configuration settings, then, you can use the --enable-
-       config option.  Example: suppose I want to build with and
-       without profiling.  Then I'd use the following for the
 
 
 
-25/Apr/98                LilyPond 0.1.59                        3
+6/May/98                 LilyPond 0.1.62                        3
 
 
 
@@ -202,6 +202,11 @@ CONFIGURING FOR MULTIPLE PLATFORMS
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+CONFIGURING FOR MULTIPLE PLATFORMS
+       If you want to compile LilyPond with different
+       configuration settings, then, you can use the --enable-
+       config option.  Example: suppose I want to build with and
+       without profiling.  Then I'd use the following for the
        normal build,
 
              configure --prefix=~ --disable-optimise --enable-checking
@@ -244,22 +249,17 @@ EXAMPLE
 
        This is what the output looks like over here:
 
-               GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
-               Parsing ... [/home/hw/share/lilypond/init//
-                       <..etc..>
-                       init//performer.ly]]][input/kortjakje.ly]
-               Creating elements ...[8][16][24][25]
-               Preprocessing elements...
-               Calculating column positions ... [14][25]
-               Postprocessing elements...
-               TeX output to someinput.tex ...
-               Creating MIDI elements ...MIDI output to someinput.midi ...
 
 
 
 
 
-25/Apr/98                LilyPond 0.1.59                        4
+
+
+
+
+
+6/May/98                 LilyPond 0.1.62                        4
 
 
 
@@ -268,6 +268,17 @@ EXAMPLE
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+               GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
+               Parsing ... [/home/hw/share/lilypond/init//
+                       <..etc..>
+                       init//performer.ly]]][input/kortjakje.ly]
+               Creating elements ...[8][16][24][25]
+               Preprocessing elements...
+               Calculating column positions ... [14][25]
+               Postprocessing elements...
+               TeX output to someinput.tex ...
+               Creating MIDI elements ...MIDI output to someinput.midi ...
+
                hw:~/musix/spacer$ xdvi someinput&
                [1] 855
 
@@ -275,12 +286,14 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
        Please refer to the man page for more information.
 
 REDHAT LINUX
-       RedHat Linux users should be able to get a RPM. A spec
-       file is in make/out/lilypond.spec. You should be able to
-       create an rpm as a normal user. Be sure you have a
-       ~/.rpmrc, and edit the RPM-dir in Variables.make. (If you
-       create the RPM as a normal user the permissions will not
-       be set correctly, unfortunately)
+       RedHat Linux users can compile an RPM. A spec file is in
+       make/out/lilypond.spec.  You should install a gif file
+       called lelie_icon.gif along with the sources.  You can
+       generate this gif file by typing
+
+            make gifs
+
+       in the directory Documentation.
 
 DEBIAN GNU/LINUX
        A Debian package is also available; contact Anthony Fok
@@ -309,6 +322,18 @@ AUTHORS
 
        Jan Nieuwenhuizen <jan@digicash.com>
 
+
+
+
+6/May/98                 LilyPond 0.1.62                        5
+
+
+
+
+
+INSTALL(1)            LilyPond documentation           INSTALL(1)
+
+
        Have fun!
 
 
@@ -325,6 +350,47 @@ AUTHORS
 
 
 
-25/Apr/98                LilyPond 0.1.59                        5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6/May/98                 LilyPond 0.1.62                        6
 
 
diff --git a/NEWS b/NEWS
index 51026e6884ac1f94c3dfce01c5d94300ca292ce6..cd3c31277ce804380740067454ca43512e88c42e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,59 @@
+pl 62
+       - no-touch hak.
+       - bfs: multi measure rests
+       - fixed the website.
+       - add extra space after breakable columns.
+
+
+pl 61.jcn8
+       - mudela relative octave feature: 
+         * Documentation/relative-octaves.pod
+         * \octave relative;
+         * lilypond -f for automatically finding new relative quote positions
+           (sorry, fully automated convert is too complex)
+         * mutopia/ltor.ly: octave quotes reduced from 511 to 59
+       - better conflily
+       - bf: abbreviation-beam-engraver: set beam::multiple_i_
+       - bf: open_abbrev_parens
+       - dotted/dashed slurs/ties
+       - fixed-up scsii-menuetto; use dotted-slurs
+       - slur_thickness runtime
+       - bf: typo lilyponddefs: elevendefs
+       - moved hard-coded slur parameters to runtime
+       - make-patch -r: diff against latest release
+       - allow semicolons after paper_identifier and \include
+       - params.ly: parameterised some paper vars
+       - bf: beam quantise for slope = 0
+       - interbeam (mult>3) open-up to paper-def to paper!
+       - "implemented" Paper-def::staffheight
+       - simplification + bf bezier clipping
+       - vandale fix
+       - moved doco from paper*ly to fonts.doc
+       - papers with expressions
+       - paper20.ly: rewrote precalculated values as expressions
+       - simple expressions in mudela (paper-body only)
+       - beam_thickness centralised and run-time...
+       - \nobreak
+       - bf: beamquantise: never sit if mult > 1
+       - bf: broken slur y-offset (not!)
+       - pagelength hack in tex/headers
+       - alignment of bracket (in span-score-bar.cc)
+       - boolean *break_b to continue break_penalty_i; maar nu...
+       - removed paper20 includes, \paper_twenty from examples
+       - dropped latex files
+       - renamed standje, standchen.
+       - parser accepts range of mudela-versions
+       - Mudela_version
+       - String_convert::split
+       - bf's: los-toros-oboe
+       - braindead Break_req with penalty; junked Disallow_break_req and 
+         Break_force_req 
+       
+pl 61.ag1
+       - implemented octave-shifted clefs.
+
+********
+
 pl 61
        - bf: mudela-book error msgs
        - don't dist feta-tables.
index 70d234cbd706774963c572326b064e43eb7efe46..47ec14729113cf3859aa22c1c2875d9e825dad8e 100644 (file)
@@ -61,7 +61,7 @@ PREREQUISITES
 
 
 
-28/Apr/98                LilyPond 0.1.60                        1
+28/Apr/98                LilyPond 0.1.62                        1
 
 
 
@@ -127,7 +127,7 @@ MAINTAINER
 
 
 
-28/Apr/98                LilyPond 0.1.60                        2
+28/Apr/98                LilyPond 0.1.62                        2
 
 
 
@@ -193,6 +193,6 @@ PATCHES(1)            LilyPond documentation           PATCHES(1)
 
 
 
-28/Apr/98                LilyPond 0.1.60                        3
+28/Apr/98                LilyPond 0.1.62                        3
 
 
diff --git a/README b/README
index 9b9075c73f78f58f0911cf06ccb7caf11a1b3a1c..4eece482a0130a691f71638e872c3aa2bc1ed106 100644 (file)
--- a/README
+++ b/README
@@ -30,6 +30,9 @@ packages. Please refer to the installation instructions.
 For your convenience, a formatted copy of the INSTALL instructions are
 in the toplevel directory, as INSTALL.text
 
+The process is fairly straightforward, but chances are that you have
+to specify directories for TeX to configure (--enable-tex-dir,
+--enable-mf-dir)
 
 4. DOCUMENTATION
 
diff --git a/TODO b/TODO
index e57940c8969eaa04aece29d7bd0fe5d49a45bea6..076258f3c533dc2ad14ed510ad564c33852f5de9 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,8 +7,11 @@ Most of the items are marked in the code as well, with full explanation.
 grep for TODO and ugh/ugr/urg
 
 0.2:
+       * do rest-collisions for Multi_measure_rests as well.
 
-       * add a Duration_convert memberr to Duration_iter to set parameters.
+       * split error/warning in error/warning/non_fatal_error
+
+       * add a Duration_convert member to Duration_iter to set parameters.
        Junk global duration settings. 
  
        * deps for ly2dvi
@@ -19,20 +22,21 @@ grep for TODO and ugh/ugr/urg
 
        * minimum length second part broken tie
  
-        * lowest beam of (UP) beam must never be lower than second staffline
-
-       * multibar rests
+       * en-,discouraged linebreaking: 
+         - handle DISALLOW < penalty > FORCE
+         - discourage breaking of slurs
 
-       * make lily output make dependencies.
+       * multibar rest
+         - symbol(s)
 
-       * make sure that columns never touch
-         old hack at spring-spacer.cc:690 seems to be broken
        * latex mutopia/los-toros-oboe-16.tex: max memsize
  
+       * move all hard-coded constants and staffheight dependent to runtime,
+         i.e. init/params.ly.  e.g.: stem length params, beam positions
+
        * fix position of bar number
-       * fix website.
+
+       * fix position of brace in conjunction with bracket
 
        * libtoolize flowerlib
 
@@ -42,15 +46,12 @@ grep for TODO and ugh/ugr/urg
 
        * robustify Beam (in case of no stems, 32nd notes)
 
-       * fix silly " "2*12 a4 (=4*12) sticky plet 
-
        * check for groff / troff/ nroff et
 
        * use kpsepath to find all TeX dirs
        - configure.in 
        - clean-fonts.sh
 
-       * mudela-convert.
 
        * nicen examples:
        - remove all \multi
@@ -60,8 +61,6 @@ grep for TODO and ugh/ugr/urg
        
        * handle ^C for tmp/file creation.
 
-       * WWW mirror/archive for the mailing lists.
-
        * dots & rest collisions.
 
        * add a screenshot to the website. :)
@@ -84,32 +83,22 @@ grep for TODO and ugh/ugr/urg
 
        * the tenuto script is too long and too thin
 
+       * the bracket is ugly (wings are too parabolic, should be more circular)
+
        * better hshift (dots, distance, head dependent)
 
        * stem len adjustable
 
 STUFF
        * convert-mudela:
+       - better parsing
        - make smarter
        - fix convert-mudela -e *.ly ;
        - convert-mudela -e empty.ly
        - redo in python.
 
-      * clefs (AG): The names I'd like are of the form
-
-            [FGC]n{[_^]8}   F, G or C clef, on nth line, subscripted
-                            or superscripted with an 8.
-        So:                 
-            G, G2, treble, (== current `violin') G clef on second line.
-            F, F4, bass    (== current `bass' )  F clef on fourth line
-            G_8, G2_8      G clef on 2nd line, with 8 subscript
-            G^8            G clef on 2nd line with 8 superscript
-            C1, soprano    (==current `soprano') C clef on first line.
-            C2,            (==current `mezzosoprano') C clef on second line
-            C3, alto       (==current `alto')      C clef on third line
-            C4, tenor      (==current `tenor')     C clef on fourth line
-            C5             (==current `baritone') C clef on fifth line)
-
+        * clefs (AG): The "8" should appear closer to the actual clef,
+          touching it.
 
 
        * give Items/Spanners access to unbroken originals      
@@ -124,7 +113,6 @@ STUFF
        this modifies \stem for the c2
 
        * emacs mudela-mode
-
        -  should handle block comments too.
        -  handle lexer modes (\header, \melodic, \lyric) etc.
        -  indentation
@@ -166,6 +154,8 @@ STUFF
 
        * Fix profiling. gprof bugreport?
 
+       * GNU patch 2.1: hardcoded limit of 1024 to the linelength
+
        * GNU diff 2.7: diff -rN does not see a new directory with empty file
 
        * GNU patch 2.1: <must find simple example> if patch chokes on a
@@ -190,10 +180,6 @@ PROJECTS
        * \header
        - output header info to MIDI too.
 
-
-       * Makefile stuff:
-       - shared lib on Solaris too.
-
        * Add mudela-output to Rosegarden.
 
        * a musical dictionary. See Documentation/vocabulary-*, other
@@ -473,7 +459,6 @@ IDEAS
 
        * versioning stuff (cvt mudela, mudela, etc.)
 
-       * a real convert-mudela
 
        * dots into separate item.
 
diff --git a/VERSION b/VERSION
index 5f824472e8dc52b046e5a312edd2e21666fc3249..71356ecbb71446bbdad2b058c376dc8a1df3883f 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 MAJOR_VERSION=0
 MINOR_VERSION=1
-PATCH_LEVEL=61
+PATCH_LEVEL=62
 MY_PATCH_LEVEL=
 
 # use the above to send patches, always empty for released version:
index a459924cb2d335de98a4b0767cd74b43ba2356f0..d1ec16c75ec30b1001061d99b8d3792dd23fcb08 100644 (file)
@@ -23,6 +23,8 @@ dnl should cache result.
 dnl should  look in $prefix first.
 dnl should probably assume TDS
 
+
+
 AC_DEFUN(AC_TEX_PREFIX, [
     
 
@@ -78,6 +80,30 @@ AC_DEFUN(AC_FIND_DIR_IN_PREFIX, [
     AC_MSG_RESULT($1/$find_dirdir)
 ])
 
+# ugh.  this is hopeless
+AC_DEFUN(AC_KPSE_TEX_DIR, [
+       kpse_paths=`(kpsepath -n latex tex; kpsepath -n tex tex) | sed 's/:/ /g' | tr ' ' '\012' |sort | uniq -d`
+       kpse_syspaths=`echo $kpse_paths | grep '!'| sed 's/!//g'`
+       echo $kpse_paths
+       if test -w "$kpse_syspaths";
+       then
+               dir=`echo $kpse_syspaths | head -1`
+       else
+               dir=`echo $kpse_paths | grep -v '!'| head -1`
+       fi
+       if test "$prefix" = "NONE"; then
+               local_prefix=$ac_default_prefix
+               local_prefix_quote='${prefix}'
+
+       else
+               local_prefix=$prefix
+               local_prefix_quote=$prefix
+       fi
+       echo $local_prefix_quote = $local_prefix
+       echo $dir
+       echo $dir  | sed 's!'$local_prefix'!\$local_prefix_quote!g'
+])
+
 AC_DEFUN(AC_TEX_SUBDIR, [
 dnl    AC_REQUIRE([AC_TEX_PREFIX])
     AC_FIND_DIR_IN_PREFIX($find_texprefix, $1, tex,TeX input)
diff --git a/bin/add-html-footer.py b/bin/add-html-footer.py
new file mode 100644 (file)
index 0000000..5900427
--- /dev/null
@@ -0,0 +1,74 @@
+#!@PYTHON@
+import os
+import sys
+import getopt
+import __main__
+
+lilypath =''
+try:
+    lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
+except KeyError:
+    print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+    sys.exit(1)
+
+lilypath = lilypath + '/bin/'
+sys.path.append(lilypath)
+from lilypython import *
+
+lilyversion= ''
+mailaddress = "unknown"
+fullname = "unknown"
+news_file = ''
+
+def set_vars():
+    __main__.lilyversion =  version_tuple_to_str(lilydirs.version_tuple())
+    os.environ["CONFIGSUFFIX"] = 'www';
+    __main__.mailaddress= os.environ['MAILADDRESS']
+    pw = pwd.getpwuid (os.getuid());
+
+    __main__.fullname= pw[4];
+
+
+backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
+of LilyPond -- The GNU Project Music typesetter\n\
+<hr><font size=-1>\n\
+This page was built using from lilypond-%s by <p>\n\
+<address><br>%s <a href=mailto:%s>&lt<!bla>%s</a>&gt</address>\n\
+<p></font>' 
+set_vars ()
+banner_file = ''
+news_file=''
+news =''
+(options, files) = getopt.getopt(sys.argv[1:], '', ['news=']) 
+
+for opt in options:
+    o = opt[0]
+    a = opt[1]
+    if o == '--news':
+       news_file = a
+
+def footstr(index):
+     return backstr % (index, lilyversion, fullname, mailaddress, mailaddress)
+
+index_file='../../out-www/index.html'
+banner = footstr (index_file)
+banner_id = '<! banner_id >'
+
+
+if news_file:
+    news = gulp_file (news_file)
+    i = regex.search ('^\*\*', news)
+    news = news[:i]
+    
+    
+for f in files:
+    s = gulp_file (f)
+    if news_file:
+       s = regsub.sub ('top_of_NEWS', '<XMP>\n'+ news  + '\n</XMP>\n', s)
+
+    if regex.search (banner_id, s) == -1:
+       s = regsub.sub ('</body>', '</BODY>', s)
+       s = regsub.sub ('</BODY>', banner_id  + banner + '</BODY>', s)
+
+    dump_file (f, s)
index e42d608713373f8e2a8f8b3228fe86c533c4c912..0ca024ad8f2da010df0db603c0b3fab3ce68d71c 100755 (executable)
@@ -1,35 +1,51 @@
 #!/bin/sh
-# conflily
-# ugh: must be executed from lilypond-x.x.x (bin/conflily)
-
-# the lilypond root dir looks like this:
-# current -> ./lilypond-x.x.x  symlink to current source
-# lilypond-x.x.x               the lilypond source
-# patches                      gzipped patches
-# releases                     gzipped releases
-
-# the lily root dir
+# conflily --- configure LilyPond sourcetree
 #
-lelie=$HOME/music/lily
+# You should set LILYPOND_SOURCEDIR to the latest uppacked source dir,
+# it will default to:
+#
+export LILYPOND_SOURCEDIR=$HOME/lelie/current
+#
+# and create links to here, if necessary
 #
-
 if [ ! -e $HOME/lelie ]; then
-       ln -s $lelie $HOME/lelie
+       (cd ..; ln -s `pwd` $HOME/lelie)
 fi
-
-rm $lelie/current 2>&1 > /dev/null
+#
+#
 current=`basename \`pwd\``
-echo ln -s $lelie/$current $lelie/current
-ln -s $lelie/$current $lelie/current
-
+(cd ..; rm -f current 2>&1 > /dev/null)
+(cd ..; ln -s $current current)
+#
+# The LilyPond root dir looks like this:
+#
+#    current -> ./lilypond-x.x.x    symlink to current source
+#    lilypond-x.x.x/                the unpacked LilyPond source
+#    patches/                       gzipped patches
+#    releases/                      tar gzipped releases
+#    test/                          latest output of 'release'
+#
+#
 if [ "x$LILYINCLUDE" = "x" ]; then
-       echo you should make add the following to your login script
-       echo "export LILYINCLUDE=$lelie/current/init:$lelie/current/mutopia:$lelie/current/input:$lelie/current/mutopia/J.S.Bach:"
-       echo "export PATH=$PATH:$lelie/current/bin"
-       echo "export MFINPUTS=$MFINPUTS:$lelie/current/mf"
+       # we can try...
+       echo you should add the following to your login script
+       if [ "x$MAILADDRESS" = "x" ]; then
+               export MAILADDRESS=$USER@`hostname`
+               echo "        export MAILADDRESS=\$USER@`hostname`"
+       fi
+       export LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/mf/out
+       export PATH=$PATH$LILYPOND_SOURCEDIR/bin:
+       export MFINPUTS=$MFINPUTS:$LILYPOND_SOURCEDIR/mf
+       export TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out
+       cat <<EOF
+       export LILYINCLUDE=\$LILYPOND_SOURCEDIR/init:\$LILYPOND_SOURCEDIR/mf/out
+       export PATH=\$PATH:$LILYPOND_SOURCEDIR/bin
+       export MFINPUTS=\$MFINPUTS:\$LILYPOND_SOURCEDIR/mf
+       export TEXINPUTS=\$TEXINPUTS:\$LILYPOND_SOURCEDIR/mf/out
+EOF
 fi
 
-ln -sf $lelie/current/lily/out/lilypond bin/lilypond
-ln -sf $lelie/current/mi2mu/out/mi2mu bin/mi2mu
+ln -sf $LILYPOND_SOURCEDIR/lily/out/lilypond bin/out/lilypond
+ln -sf $LILPPOND_SOURCEDIR/out/mi2mu bin/out/mi2mu
 
 configure --prefix=/usr --enable-debugging --enable-printing --enable-checking --disable-optimise
index bf3eb0ce1fa9d682782c068bd5166d920016bc9b..d72c672e0a572899f8ff643ef3dc8cb2b84d448d 100755 (executable)
@@ -32,13 +32,12 @@ options = Options()
 def help():
     sys.stdout.write(
        'Generate a patch to go to this version.\n'
-       '  --from=FROM, -f FROM    old is FROM\n'
-       '  --to=TO, -t TO          to version TO\n'  
-       '  --dir=DIR, -d TO        directory\n'  
+       '  -f, --from=FROM      old is FROM\n'
+       '  -d, --dir=DIR        diff to (or from) directory DIR\n'  
+       '  -r, --release        diff against latest release\n'  
+       '  -t, --to=TO          to version TO\n'  
        )
 
-
-
 def untar(fn):
     # os.system('pwd');
     sys.stderr.write('untarring ' + fn + '\n')
@@ -81,13 +80,13 @@ def makepatch(fromdir, todir, patfile_nm):
     os.system('pwd')
     print ('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
     os.system('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
-    os.system('gzip -9f %s' % patfile_nm)
+    os.system('gzip --quiet -9f %s' % patfile_nm)
    
 def main():
     os.environ['GZIP'] = '-q'
     sys.stderr.write('This is make-patch version %s\n' % mp_version)
     (cl_options, files) = getopt.getopt(sys.argv[1:], 
-       'd:hf:o:t:', ['output=', 'help', 'from=', 'to='])
+       'd:hf:o:rt:', ['output=', 'help', 'from=', 'to='])
     outfn = ''
     srcdir = ''
 
@@ -106,11 +105,17 @@ def main():
        elif o == '--dir' or o == '-d':
            srcdir = a;
            to_b=0
-       elif o== '--help' or o == '-h':
+       elif o == '--help' or o == '-h':
            help()
            return 0;
        elif o == '--output' or o == '-o':
            outfn = os.path.join(os.getcwd(), a)
+       elif o == '--release' or o == '-r':
+# huh?
+#          if options.from_version[3]:
+#              options.from_version[3] = '';
+           options.from_version = (options.from_version[0], 
+               options.from_version[1], options.from_version[2], '');
        else:
            raise getopt.error
 
diff --git a/bin/make-website.py b/bin/make-website.py
deleted file mode 100755 (executable)
index ac6d865..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-#!@PYTHON@
-# -*-python-*-
-# make-website.py --  implement The lilypond WWW site
-# 
-# source file of the GNU LilyPond music typesetter
-# 
-# (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
-# 
-
-""" 
- stupid script to generate WWW site.  
-
- The WWW site is my test-suite for LilyPond, I usually don't
- distribute versions that fail to complete this script 
-
-You should set the following environment vars:
-
-LILYPOND_SOURCEDIR
-TEXINPUTS
-MAILADDRESS
-
-
- """
-
-import sys
-import os
-
-lilypath =''
-try:
-    lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
-except KeyError:
-    print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
-    sys.exit(1)
-
-lilypath = lilypath + '/bin/'
-sys.path.append(lilypath)
-from lilypython import *
-import __main__
-import glob
-
-depth = ''
-makewebsite_id = "<!make_website!>";
-id_str = "make-website 0.9";
-tar = "tar";
-make = "make -f Makefile outdir=out-www";
-mailaddress = "unknown"
-fullname = "unknown"
-footstr = ""
-lilyversion= ''
-
-include_path=[ 'input', 'mutopia' , 'mutopia/J.S.Bach', 'mutopia/Coriolan',
-              'mutopia/J.S.Bach/out' ]
-
-def set_vars():
-    __main__.lilyversion =  version_tuple_to_str(lilydirs.version_tuple())
-    os.environ["TEXINPUTS"] = os.environ["TEXINPUTS"] + ":%s/input/:" % depth;
-    os.environ["CONFIGSUFFIX"] = 'www';
-    
-    os.environ["LILYINCLUDE"] = join (':', __main__.include_path) +':'+ os.environ["LILYINCLUDE"];
-    os.environ["LILYTOP"] = depth;
-    __main__.mailaddress= os.environ['MAILADDRESS']
-    pw = pwd.getpwuid (os.getuid());
-
-    __main__.fullname= pw[4];
-
-backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
-of LilyPond -- The GNU Project Music typesetter\n\
-<hr><font size=-1>\n\
-This page was built using <code>%s</code> from lilypond-%s by <p>\n\
-<address><br>%s <a href=mailto:%s>&lt<!bla>%s</a>&gt</address>\n\
-<p></font>' 
-
-    
-def footstr(index):
-     return backstr % (index, id_str, lilyversion, fullname, mailaddress, mailaddress)
-
-    
-
-# do something, check return status
-def my_system(cmds):
-    for cmd in cmds:
-       ignoreret=0;
-       if cmd[0] == '-':
-           ignoreret = 1
-           cmd = cmd[1:]
-       
-       ret = os.system (cmd)
-       if ret:
-           if ignoreret: 
-               sys.stderr.write( "ignoring failed command `%s\' (status %d)\n" % (cmd, ret))
-           else:
-               sys.stderr.write( 'make-website: failed on command %s (status %d)\n' % (cmd, ret))
-               sys.exit (2)
-
-base="lilypond/";
-
-
-def gen_html():
-    print 'generating HTML'
-    my_system (["make -f Makefile -kC .. html"]);
-    
-
-
-texstuff = ["mudela"]
-
-def gen_manuals():
-    print 'generating TeX doco manuals'
-    list = open('tex_manuals.html', 'w')
-    list.write( "<HTML><TITLE>PostScript Manuals</TITLE>\n" 
-     "<BODY><h1>LilyPond manuals (in PostScript)</h1>"
-     "<ul>\n")
-    todo='' 
-    for stuff in texstuff:
-       todo = todo + ' out/' + stuff + '.ps.gz'
-       list.write("<li><a href=%s.ps.gz>%s.ps.gz</a>" % (stuff, stuff))
-    list.write('</ul></BODY></HTML>')
-    list.close ()
-
-    my_system (['make -C .. ' + todo])
-
-
-def copy_files():
-    print "copying files\n"
-    
-#    my_system ("ln -s depth/out ./docxx" )
-    my_system([ "cp %s/TODO ./TODO.txt" % depth,
-    "cp %s/ANNOUNCE-0.1 ./ANNOUNCE-0.1.txt" % depth,
-    "cp %s/NEWS ./NEWS.txt" % depth,
-    "cp %s/DEDICATION ./DEDICATION.txt" % depth]);
-    my_system([ "make -C .. gifs"]);
-    
-def docxx_update():
-    print 'docxx.. \n'
-    banner= open('/tmp/lilybanner.html', 'w');
-    banner.write (footstr('../index.html'))
-    banner.close ()
-    my_system(['BANNEROPT=\"-B /tmp/lilybanner.html\" %s/bin/out/make-docxx' % depth]);
-#    os.unlink( "/tmp/lilybanner.html");
-
-def get_glob(exts):
-    result = []
-    for a in exts:
-       result = result + glob.glob1('./', '*.' + a)
-
-    return result
-
-def join(inter, list):
-    return reduce (lambda x,y, i=inter: x + i + y, list)
-
-def do_tar():
-     print "tarring.\n";
-     list = get_glob( ['html', 'gif', 'ps.gz' , 'txt', 'midi']) 
-     files = join (' ', list)
-     print files
-     my_system( ['-tar zvhcf website.tar.gz ' + files + ' docxx/*'])
-
-
-def identify():
-    print 'This is %s\n' % id_str
-    
-def clean_tmp():
-    my_system(['-rm -f /tmp/gs*'])
-    
-def get_top_of_NEWS():
-    i = open('NEWS.txt')
-    lines = i.readlines()
-    i.close ()
-    s = ''
-    for l in lines:
-       if regex.search('^\*\*\*\*\*\*', l) <> -1:
-           return s;
-       s = s + l
-    return s
-
-def edit_index():
-    s = gulp_file('index.html')
-    s = regsub.sub ('top_of_NEWS', '<XMP>\n' + get_top_of_NEWS () + '\n</XMP>', s)
-    dump_file ('index.html', s)
-
-def edit_html():
-    files = get_glob(['html'])
-    for f in files:
-
-       s = gulp_file(f)
-       if regex.search(makewebsite_id, s) <> -1:
-           continue;
-
-       s = regsub.sub ('</BODY>', footstr('index.html') + makewebsite_id + '</BODY>', s)
-       s = regsub.sub('<TITLE>\(.*\)</TITLE>$', 
-                      '<TITLE>LilyPond WWW: \\1</TITLE>', s)
-
-       dump_file (f,s)
-
-
-def do_examples (examples, filename):
-    located_files = gen_examples (examples)
-    gen_list (examples, filename)
-def main():
-    identify();
-
-    os.chdir (lilydirs.topdir + 'Documentation')
-    
-#    my_system (['-rm ../WWW/*.pod ../WWW/*.xpm ../WWW/*.doc',
-#              'ln ../Documentation/*.pod ../Documentation/*.doc ../Documentation/*.xpm .']);
-    os.chdir (lilydirs.topdir + 'Documentation/out/')
-    __main__.depth = "../../";
-    __main__.include_path = map(lambda p: __main__.depth + '/' + 
-                               p, __main__.include_path)
-
-    set_vars();
-    gen_html();
-    copy_files();
-    do_examples (examples, 'examples_output.html');
-    do_examples (mutopia_examples, 'mutopiaexamples_output.html');
-    gen_manuals();
-    #set_images();
-    edit_html();
-    edit_index();
-    docxx_update()
-    do_tar()
-    clean_tmp();
-
-
-main()
-
-
index ba178fdb72f7abee109c70f002174dca8dfbdad7..485578f0dc27c829036ed47763d31bd8e0fd0ddc 100644 (file)
@@ -27,7 +27,7 @@ def gen_list(inputs, subdir, filename):
        list.write  ('<ul>')    
         for ex in subdirs:
            print 'subdir %s ' % ex
-           list.write ('<li><a href=%s>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
+           list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
 
        list.write ('</ul>')
 
index 57021850f5d8e1ed338920294c6704f39b45216e..c276406a2bf6b0f5696b990afbab72419031748b 100755 (executable)
@@ -17,6 +17,6 @@ esac
 
 # generate the pixmap at twice the size, then rescale (for antialiasing)
 cat $1 | gs  -q -sDEVICE=ppmraw \
-    -sOutputFile="|pnmscale 0.5|ppmtogif > $FILE-page%d.gif" \
+    -sOutputFile="|pnmscale 0.3333|ppmtogif > $FILE-page%d.gif" \
     -r200 -dNOPAUSE - -c quit
 
index e0736d4cf09c83348cc8766c3ec2cbc8bd171f48..e9a200561383a813a8ef2b4c1115e7c5b89bc5a6 100644 (file)
@@ -1,3 +1,6 @@
+pl 42.jcn1
+       - String_convert::split_arr
+
 pl 42
        - interval.*: Slice (Interval of int)
        trying to get rid of 2.8 ice:
index 72149f78ec3c4969034abce31b335f9cd5183aad..4842eac2d7add955f6844c9f923eba1755f8c396 100644 (file)
@@ -37,6 +37,7 @@ public:
     static String rational_str (Rational);
     static String pointer_str (void const *);
     static String precision_str (double x, int n);
+    static Array<String> split_arr (String str, char c);
     static String i64_str (I64, char const * fmt = 0);
 };
 
index 79fbe1829ea6a3d6d99e7bd4f3d114942e73bb98..dd89038d09d0e2caa309cdd08ad567e555b858e7 100644 (file)
@@ -11,6 +11,7 @@
 #include "string.hh"
 #include "string-convert.hh"
 #include "rational.hh"
+#include "varray.hh"
 
 /**
    a safe length for stringconversion buffers
@@ -289,3 +290,20 @@ String_convert::precision_str (double x, int n)
   return (sign (x) > 0 ? str : "-" + str);
 }
 
+Array<String>
+String_convert::split_arr (String str, char c)
+{
+  Array<String> a;
+  int i = str.index_i (c);
+  while (i >=0)
+    {
+      String s = str.left_str (i);
+      a.push (s);
+      str = str.cut (i + 1, INT_MAX);
+      i = str.index_i (c);
+    }
+  if (str.length_i ())
+    a.push (str);
+  return a;
+}
+
index f6789cf2627da34a566709a92257862e4c8214b0..01762e927eba9e95a094e1c19d29275309d863a5 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "0.1.9";
+\version "0.1.10";
 
 
 \include "declarations.ly"
index 76933ee1280893da94d4fd9dc517287ff204bd4e..e54f56738d7bd997d65aaa81879df1ebea21c1d1 100644 (file)
@@ -28,4 +28,7 @@ down = -1
 % zillie spellink?
 center=0
 
+break = { \penalty = 10000; }
+nobreak = { \penalty = -10000; }
+
 \include "property.ly"
index 22b5bffa6d393e65d3559b24c0a08a37c369e6d5..81fec7443fc330ceee53c2dd47c0b4551759c518 100644 (file)
@@ -1,8 +1,8 @@
 % Toplevel initialisation file. 
        
-\version "0.1.10";
+\version "0.1.13";
 
 
-\include "declarations.ly"
+\include "declarations.ly";
 
 \maininput
diff --git a/init/paper-params16.ly b/init/paper-params16.ly
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/init/paper-params20.ly b/init/paper-params20.ly
new file mode 100644 (file)
index 0000000..e69de29
index ce5bc83169bcdbe8256714afbb4817768b8f748d..4ad47c88aca646115b7041f1f735047b504d724a 100644 (file)
@@ -1,38 +1,20 @@
-% paper20.ly
+% paper11.ly
 
-\include "table11.ly"
+\include "table11.ly";
 
 paper_eleven = \paper {
+       staffheight = 11.0\pt;
        linewidth = 15.0 \cm;
-       indent = 8.0\mm;
-       rulethickness = 0.25\pt;
-       barsize = 11.0 \pt;
-       interline = 2.75\pt;
-       notewidth = 7.15\pt; % ugh see table20 for sizes
-       wholewidth = 10.44\pt;
-       unitspace = 22.\pt;
-%      basicspace = 4.\pt;
-%      geometric = 1.414;
-       geometric = 0.;
-       basicspace = 9.\pt;
 
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 7.\pt;
-       
-       %
-       % three beams span two interlines, including stafflines:
-       % 2 interbeam + beam_thickness = 2 interline - staffline_thickness
-       % ( beam_thickness = 0.48 interline for now...)
-       % interbeam = interline - (beam_thickness + staffline_thickness) / 2
-       % interbeam = 3.6;
-       % ugh: interline *in fact* is rule_thickness + "interline"?
-       interbeam = 3.0\pt;
+        % ugh see table11 for sizes
+       quartwidth = 3.63\pt;
+       wholewidth = 5.45\pt;
 
-       gourlay_energybound = 100000.;
-       gourlay_maxmeasures = 12.;
+       basicspace = 3.\pt;
+       arithmetic_basicspace = 2.;
+        arithmetic_multiplier = 4.8\pt;
        
-       castingalgorithm = \Gourlay;
        \symboltables { \table_eleven }
-\include "engraver.ly"
+       \include "params.ly";
 }
 
index 0ed8c70eeaf939e5d03e5a8a1447c5aca98fa307..664283269157fba95e1e397aaeb0e539ef5046ad 100644 (file)
@@ -1,38 +1,20 @@
-% paper20.ly
+% paper13.ly
 
-\include "table13.ly"
+\include "table13.ly";
 
 paper_thirteen = \paper {
+       staffheight = 13.0\pt;
        linewidth = 15.0 \cm;
-       indent = 8.0\mm;
-       rulethickness = 0.25\pt;
-       barsize = 13.0 \pt;
-       interline = 3.25\pt;
-       notewidth = 7.15\pt; % ugh see table20 for sizes
-       wholewidth = 10.44\pt;
-       unitspace = 22.\pt;
-%      basicspace = 4.\pt;
-%      geometric = 1.414;
-       geometric = 0.;
-       basicspace = 9.\pt;
 
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 7.\pt;
-       
-       %
-       % three beams span two interlines, including stafflines:
-       % 2 interbeam + beam_thickness = 2 interline - staffline_thickness
-       % ( beam_thickness = 0.48 interline for now...)
-       % interbeam = interline - (beam_thickness + staffline_thickness) / 2
-       % interbeam = 3.6;
-       % ugh: interline *in fact* is rule_thickness + "interline"?
-       interbeam = 3.5\pt;
+       % ugh see table13 for sizes
+       quartwidth = 4.29\pt;
+       wholewidth = 6.44\pt;
 
-       gourlay_energybound = 100000.;
-       gourlay_maxmeasures = 12.;
+       basicspace = 3.\pt;
+       arithmetic_basicspace = 2.;
+        arithmetic_multiplier = 4.8\pt;
        
-       castingalgorithm = \Gourlay;
        \symboltables { \table_thirteen }
-       \include "engraver.ly"
+       \include "params.ly";
 }
 
index 35b411d5d9609bcc6a125c2f57354ff521528134..b9b777403d1c0fb2b7b4fffd9c546c9923c7281c 100644 (file)
@@ -1,6 +1,6 @@
 % paper16.ly
 
-\include "table16.ly"
+\include "table16.ly";
 
 
 %{
@@ -9,42 +9,20 @@ TODO make this somehow parametric. for example the linewidth was
 chosen to look good on A4 paper.  This probably looks less good on US
 paper sizes.
 
-
 %}
+
 paper_sixteen = \paper {
+       staffheight = 16.0\pt;
        linewidth = 15.5 \cm;
-       indent = 10.\mm;
-       rulethickness = 0.4\pt;
-       barsize = 16.0 \pt;
-       interline = 4.\pt;
-       notewidth = 5.93\pt; % ugh, see table16 for sizes
-       wholewidth = 8.64\pt;
-       unitspace = 22.\pt;
-       %geometric = 1.414;
-       basicspace = 4.\pt;
 
-       geometric = 0.;
+       % ugh, see table16 for sizes
+       quartwidth = 5.28\pt;
+       wholewidth = 7.92\pt;
+
+       basicspace = 4.\pt;
        arithmetic_basicspace = 2.;
         arithmetic_multiplier = 4.8\pt;
    
-       % three beams span two interlines, including stafflines:
-       % 2ib + bt = 2 il - st
-       % bt = 0.48(il - st) for now.
-       % 2ib + 0.48il - 0.48 st = 2il - st
-       % 2ib = 1.52il - 0.52 st
-       % ib = 0.76il - 0.26st = 2.94 --jcn
-       % now, it seams rather ib = 0.76il + 0.26st = 3.14
-       % interbeam = 2.94\pt;
-       % No -- hwn
-       interbeam = 3.14\pt;
-
-       gourlay_energybound = 100000.;
-       %{
-       The following bounds the number of measures
-       on a line.  Decreasing it greatly reduces computation time
-       %}
-       gourlay_maxmeasures = 10.;
-       castingalgorithm = \Gourlay;
        \symboltables { \table_sixteen }
-       \include "engraver.ly"
+       \include "params.ly";
 }
index eca46a73a46d5e630613e1de15df0483e462aa44..0375e79def6cd7af10d4f5f4365619d9ca3045b6 100644 (file)
@@ -1,39 +1,20 @@
 % paper20.ly
 
-\include "table20.ly"
+\include "table20.ly";
 
 paper_twenty = \paper {
+       staffheight = 20.0\pt;
        linewidth = 17.0 \cm;
-       indent = 12.\mm;
-       rulethickness = 0.4\pt;
-       barsize = 20.0 \pt;
-       interline = 5.\pt;
-       notewidth = 7.15\pt; % ugh see table20 for sizes
-       wholewidth = 10.44\pt;
-       unitspace = 22.\pt;
-%      basicspace = 4.\pt;
-%      geometric = 1.414;
-       geometric = 0.;
-       basicspace = 8.\pt;
 
+       % ugh see table20 for sizes
+       quartwidth =  6.61\pt;
+       wholewidth = 9.90\pt;
+
+       basicspace = 8.\pt;
        arithmetic_basicspace = 2.;
         arithmetic_multiplier = 6.\pt;
        
-       % three beams span two interlines, including stafflines:
-       % 2ib + bt = 2 il - st
-       % bt = 0.48(il - st) for now.
-       % 2ib + 0.48il - 0.48 st = 2il - st
-       % 2ib = 1.52il - 0.52 st
-       % ib = 0.76il - 0.26st = 3.70
-       % now, it seams rather ib = 0.76il + 0.26st = 3.90
-       % interbeam = 3.70\pt;
-       interbeam = 3.90\pt;
-
-       gourlay_energybound = 100000.;
-       gourlay_maxmeasures = 10.;
-       
-       castingalgorithm = \Gourlay;
        \symboltables { \table_twenty }
-\include "engraver.ly"
+       \include "params.ly";
 }
 
index f7ba97952ffa32c5e56405a9d46f578ec844ea45..1e38b8bec8ffc65bdcc8588f81bcc1121110ffc4 100644 (file)
@@ -1,39 +1,20 @@
-% paper20.ly
+% paper26.ly
 
-\include "table26.ly"
+\include "table26.ly";
 
 paper_twentysix = \paper {
-       linewidth = 15.0 \cm;
-       indent = 12.0\mm;
-       rulethickness = 0.5\pt;
-       barsize = 26.0 \pt;
-       interline = 6.5\pt;
-       notewidth = 7.15\pt; % ugh see table20 for sizes
-       wholewidth = 10.44\pt;
-       unitspace = 22.\pt;
-%      basicspace = 4.\pt;
-%      geometric = 1.414;
-       geometric = 0.;
-       basicspace = 9.\pt;
+       staffheight = 20.0\pt;
+       linewidth = 17.0 \cm;
 
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 7.\pt;
-       
-       % three beams span two interlines, including stafflines:
-       % 2ib + bt = 2 il - st
-       % bt = 0.48(il - st) for now.
-       % 2ib + 0.48il - 0.48 st = 2il - st
-       % 2ib = 1.52il - 0.52 st
-       % ib = 0.76il - 0.26st = 4.81
-       % interbeam = 4.81\pt;
-       % now, it seams rather ib = 0.76il + 0.26st = 5.07
-       interbeam = 5.07\pt;
+       % ugh see table26 for sizes
+       notewidth = 8.59\pt
+       wholewidth = 12.87\pt;
 
-       gourlay_energybound = 100000.;
-       gourlay_maxmeasures = 12.;
+       basicspace = 8.\pt;
+       arithmetic_basicspace = 2.;
+        arithmetic_multiplier = 6.\pt;
        
-       castingalgorithm = \Gourlay;
-       \symboltables { \table_twentysix }
-\include "engraver.ly"
+       \symboltables { \table_twenty }
+       \include "params.ly";
 }
 
diff --git a/init/params.ly b/init/params.ly
new file mode 100644 (file)
index 0000000..f6313c6
--- /dev/null
@@ -0,0 +1,49 @@
+% params.ly
+% generic paper parameters
+
+interline = staffheight / 4.0;
+internote = interline / 2.0;
+staffline = interline / 10.0;
+
+beam_thickness = 0.48 * (interline - staffline);
+interbeam = (2.0 * interline - beam_thickness) / 2.0;
+interbeam4 = (3.0 * interline - beam_thickness) / 3.0;
+
+% OSU: suggested gap = ss / 5;
+slur_x_gap = interline / 5.0;
+slur_x_minimum = 2.0 * interline;
+tie_x_minimum = slur_x_minimum;
+tie_x_gap = slur_x_gap;
+
+% ugh: rename to bow (in bezier.cc and fonts.doc too...)
+slur_thickness = 1.8 * staffline;
+slur_height_limit = staffheight;
+slur_ratio = 1.0 / 3.0;
+slur_clip_ratio = 1.2;
+slur_clip_height = 3.0 * staffheight;
+slur_clip_angle = 100.0;
+slur_rc_factor = 2.4;
+
+% ugh
+notewidth = (quartwidth + wholewidth) / 2.0;
+
+% ugh
+barsize = staffheight;
+rulethickness = staffline;
+
+% mmm
+indent = linewidth / 14.0;
+
+% uhm
+unitspace = 22.\pt;
+geometric = 0.;
+
+gourlay_energybound = 100000.;
+%{
+The following bounds the number of measures
+on a line.  Decreasing it greatly reduces computation time
+%}
+gourlay_maxmeasures = 10.;
+castingalgorithm = \Gourlay;
+\include "engraver.ly";
+
index 587db1d47f950ec78dd99e5073a2e63bce14f863..9520dbb86f8b59d77a3b41e368dfcc309faef5b7 100644 (file)
@@ -17,6 +17,10 @@ pletvisibility               1       show number
 pletvisibility         2       show number, and bracket-if-no-beam
 pletvisibility         4       show number, and bracket
 
+slurdash               0       normal slurs
+slurdash               1       dotted slurs
+slurdash               >1      dashed slurs
+
 [Score?]
 beamslopedamping       0       no damping              \beamslopeproportional  
 beamslopedamping       1       damping1)               \beamslopedamped
@@ -127,3 +131,11 @@ beampostraditional = {
        \property Score.beamquantisation = \traditional
 }
 
+slurnormal = {
+       \property Voice.slurdash = 0
+}
+
+slurdotted = {
+       \property Voice.slurdash = 1
+}
+
index 4167e225f98fb4cb2403b6470a1ac5d9f162549c..b74c0c32a3c5bc9e9b10379a471bfc126e2c9b44 100644 (file)
@@ -9,6 +9,6 @@ SUBDIRS=test bugs
 
 include $(depth)/make/Mutopia.make
 
-WWW_examples=twinkle-pop praeludium-fuga-E cadenza twinkle
+examples=twinkle-pop praeludium-fuga-E cadenza twinkle
 
 include $(depth)/make/WWW.make
index 41affb55f2e103659cd7fdb77c54db50f531d097..bdf20beb9d437f4ef3eccb75be01196b903d10c7 100644 (file)
                        < 'c-\ltoe-\lheel 'e > < c'-\rtoe-\rheel e' >
                        < 'c-\lheel-\ltoe 'e > < c'-\rheel-\rtoe e' > |
                        % 46
-                       \duration 16; 
-                       [d-\lfheel e-\rbtoe fis-\ltoe e-\rbtoe]
+
+                       [d16-\lfheel e-\rbtoe fis-\ltoe e-\rbtoe]
                        [d-\lfheel e-\rbtoe fis-\lheel e] [d e fis e] [d e fis e] |
-                       d4 r4 r4 [b-\rtoe a-\ltoe b-\rtoe fis-\ltoe] |
+                       d4 r4 r4 [b16-\rtoe a-\ltoe b-\rtoe fis-\ltoe] |
        }
        \paper{}
 }
index 3e3ad7de7f9b1078ec121297cb8e4af5b65c249d..373689564877774139815c5cb1d9e5ee0ead412b 100644 (file)
@@ -64,7 +64,7 @@ blah =        \melodic {
   \meter 4/4;
 
 c1
-       \duration  8;
+
                r8-"text" r8^. r8_. r8 r8 r8 r8 r8
        [c-> d-> e-> f->][g-> a-> b-> c'->] % 1
 \octave c';    [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]
index b03bae72a4eac4d052a849dd81fcf20f9e216d6b..9fa614ef2e78834654917c33bb571f2d0c9ca70b 100644 (file)
@@ -6,4 +6,8 @@ depth = ../..
 #
 
 
+examples = font20
+
 include $(depth)/make/Mutopia.make
+
+include $(depth)/make/WWW.make
index c2522e60a1062db6ccf3d0bfa61944e43319403f..c57aeabdae631c3ca62431a6b6c30e9d38a7898f 100644 (file)
@@ -5,13 +5,13 @@
                'a1
                'a1:32
                'c4:8 c': 'c4:16 c':
-%              [ 'c8:16 'c 'c 'c ] [ a a a a ]
-%              [ 'c 'f 'b e ] 
-%              [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ]
-%%             % there's still some hairy beam bugfixing todo
-%%             [ c'8:16 g d 'a ]
-%%             [ c'16:32 g d 'a ]
-%%             [ 'c8:32 'f 'b e ]
+               [ 'c8:16 'c 'c 'c ] [ a a a a ]
+               [ 'c 'f 'b e ] 
+               [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ]
+%              % there's still some hairy beam bugfixing todo
+               [ c'8:16 g d 'a ]
+               [ c'16:32 g d 'a ]
+               [ 'c8:32 'f 'b e ]
                [:32 c16 e]
                [:32 c16 e]
                [:16 c8 e]
index 74367dc474e383912d14b90af24b70208ee0ade1..76030ec43e5c944f932f96c0858471aacb1dd28f 100644 (file)
@@ -3,7 +3,9 @@
                \property Score.beamquantisation = 3 % TEST
                \octave c';
                [c8 c] [c c] [c c] [c c]
-               [a'8 a'] [a' a'] [a' a'] [a' a']
+               [a' a'] [a' a'] [a' a'] [a' a']
+               [c16 c] [c c] [c c] [c c]
+               [a' a'] [a' a'] [a' a'] [a' a']
        }
        \paper{
                castingalgorithm = \Wordwrap;
index 7722d99d1b14131e82d30b5e1a6b28532850e2ac..3c14564347d60d111c36b00f2605e349957bf25c 100644 (file)
@@ -8,6 +8,8 @@
          \clef "tenor";c1^"{tenor}" \bar "||";
          \clef "baritone";c1^"{baritone}" \bar "||";
          \clef "varbaritone";c1^"{varbaritone}" \bar "||";
+         \clef "G_8";c1^"{sub 8?}" \bar "||";
+         \clef "G^8";c1^"{sup 8?}" \bar "|.";
          \clef "bass";c1^"{bass}" \bar "||";
          \clef "subbass";c1^"{subbass}" \bar "|.";
          }
diff --git a/input/test/dotted-slur.ly b/input/test/dotted-slur.ly
new file mode 100644 (file)
index 0000000..067f019
--- /dev/null
@@ -0,0 +1,20 @@
+\score{
+       \melodic{
+               c( d e )c |
+               \slurdotted;
+               c( d e )c |
+               \slurnormal;
+               c( d e )c |
+               \property Voice.slurdash = 3
+               c( d e )c |
+               \slurnormal;
+               c( d e )c |
+       }
+       \paper{ 
+             indent = 0.0\pt;
+               %for broken!
+               % linewidth= 30.\mm;
+               castingalgorithm = \Wordwrap;
+       }
+}
+
diff --git a/input/test/multi-rest.ly b/input/test/multi-rest.ly
new file mode 100644 (file)
index 0000000..691427b
--- /dev/null
@@ -0,0 +1,30 @@
+voice_one = \melodic   { \octave c'; \stemup
+       R1 * 2 | f'4-. r r2 | R1 * 3 |
+       f'4-. r r2 | R1 * 3 |
+       es'4-. r r2 | r1 |
+       \property Score.SkipBars = 1
+       g4-. r r2 | g4-. r r2 |
+       R1 * 5 |
+       r2 r4 g4-. |
+       }
+
+voice_two = \melodic
+       { \transpose 'c { \stemdown
+       R1 * 2 | f'4-. r r2 | R1 * 3 |
+       f'4-. r r2 | R1 * 3 |
+       es'4-. r r2 | r1 |
+       \property Score.SkipBars = 1
+       g4-. r r2 | g4-. r r2 |
+       R1 * 5 |
+       r2 r4 g4-. |
+
+       }}
+
+\score {  \melodic
+       \type Staff <
+               \$voice_two
+               \$voice_one
+               >
+
+ }
+
index 6663ffdffab3aab43644d081a180a4f23e6957a4..14dedf18fe0653f109f329cd72e14ed813bbc8f8 100644 (file)
@@ -3,7 +3,6 @@
 
 \score{
        \melodic{\octave c';
-               \duration "last";
 
                'c4 ~ 'c c'' ~ c'' ~ g ~ c ~
                d ~ e ~ f ~ g ~
index 54088537b6700a8adb971cc462f7313383cd375c..977c1307c68ccf20ef1ce25451a1b6abbd5ad5c8 100644 (file)
@@ -30,10 +30,9 @@ Abbreviation::do_print () const
 Molecule*
 Abbreviation::brew_molecule_p () const
 {
-  Real dy = paper ()->interbeam_f ();
+  Real dy = paper ()->interbeam_f (stem_l_->mult_i_);
   Real w = 1.5 * paper ()->lookup_l ()->ball (2).dim_.x ().length ();
   Real interline_f = paper ()->interline_f ();
-  Real beamdy = interline_f/2;
 
   int beams_i = 0;
   Real slope_f = paper ()->internote_f () / 4;
index ca62b92d24644994f3e0b502134ac8aad1f30f21..f2a69f5504cafd124308ea2c3d6c845ad2a4cc6f 100644 (file)
@@ -94,6 +94,7 @@ Abbreviation_beam_engraver::acknowledge_element (Score_elem_info i)
   else
     s->beams_right_i_ = s->flag_i_;
 
+  abeam_p_->multiple_i_ = s->flag_i_;
   if (s->type_i () != 1) // no abbrev gaps on half note
     s->beam_gap_i_ = s->flag_i_ - ((s->type_i () >? 2) - 2);
 
index b711bf4a07c3e249a55e125ab14b9df6e3866f38..33e62ad6a9f28ed39b32f65baa03e700f08dcfa7 100644 (file)
@@ -46,24 +46,6 @@ Bar_engraver::create_bar ()
     }
 }
 
-void
-Bar_engraver::acknowledge_element (Score_elem_info i)
-{
-  if (!bar_p_ || !i.elem_l_->is_type_b (Multi_measure_rest::static_name ()))
-    return;
-
-#if 0
-  if (!bar_p_ || !i.req_l_ || !i.req_l_->musical () 
-    || !i.req_l_->musical ()->multi_measure ())
-    return;
-
-  // would this be enough?
-  //urg segfault
-  bar_p_->unlink ();
-  delete bar_p_;
-  bar_p_ = 0;
-#endif
-}
 
 void 
 Bar_engraver::do_creation_processing ()
@@ -101,8 +83,9 @@ Bar_engraver::do_process_requests()
   
   if (!bar_p_)
     {
-      Disallow_break_req r;
-      daddy_grav_l()->try_request (&r);
+      Break_req r;
+      r.penalty_i_ = Break_req::DISALLOW;
+      daddy_grav_l ()->try_request (&r);
     }
 }
 
index fef050e58ba962cf11604b351afe9e8b3df58c42..e792aeddbd34b65fbf471d4a775a1ae033b8255d 100644 (file)
@@ -11,7 +11,6 @@
 
 /*
   [TODO]
-    * lowest beam of (UP) beam must never be lower than second staffline
     * centre beam symbol
     * less hairy code
     * redo grouping 
@@ -68,10 +67,7 @@ Beam::brew_molecule_p () const
 {
   Molecule *mol_p = new Molecule;
 
-  Real interline_f = paper ()->interline_f ();
-  Real internote_f = interline_f / 2;
-  Real staffline_f = paper ()->rule_thickness ();
-  Real beam_f = 0.48 * (interline_f - staffline_f);
+  Real internote_f = paper ()->internote_f ();
 
   Real x0 = stems_[0]->hpos_f ();
   for (int j=0; j <stems_.size (); j++)
@@ -275,7 +271,7 @@ Beam::quantise_dy ()
   Real interline_f = paper ()->interline_f ();
   Real internote_f = interline_f / 2;
   Real staffline_f = paper ()->rule_thickness ();
-  Real beam_f = 0.48 * (interline_f - staffline_f);
+  Real beam_f = paper ()->beam_thickness_f ();
 
   Real dx_f = stems_.top ()->hpos_f () - stems_[0]->hpos_f ();
 
@@ -330,12 +326,16 @@ Beam::quantise_left_y (bool extend_b)
        hang       straddle   sit        inter      hang
    */
 
-  Real interbeam_f = paper ()->interbeam_f ();
   Real interline_f = paper ()->interline_f ();
-  Real internote_f = interline_f / 2;
+  Real internote_f = paper ()->internote_f ();
   Real staffline_f = paper ()->rule_thickness ();
-  Real beam_f = 0.48 * (interline_f - staffline_f);
-  Real symbol_f = beam_f + interbeam_f * (multiple_i_ - 1);
+  Real beam_f = paper ()->beam_thickness_f ();
+
+  /*
+    [TODO]
+    it would be nice to have all allowed positions in a runtime matrix:
+    (multiplicity, minimum_beam_dy, maximum_beam_dy)
+   */
 
   Real straddle = 0;
   Real sit = beam_f / 2 - staffline_f / 2;
@@ -354,25 +354,28 @@ Beam::quantise_left_y (bool extend_b)
   // dim(left_y_) = internote
   Real dy_f = dir_ * left_y_ * internote_f;
 
+  Real beamdx_f = stems_.top ()->hpos_f () - stems_[0]->hpos_f ();
+  Real beamdy_f = beamdx_f * slope_f_ * internote_f;
+
   Array<Real> allowed_position;
   if (quantisation_ != TEST)
     {
       if (quantisation_ <= NORMAL) 
        {
-         if ((multiple_i_ <= 2) || (abs (dy_f) >= staffline_f / 2))
+         if ((multiple_i_ <= 2) || (abs (beamdy_f) >= staffline_f / 2))
            allowed_position.push (straddle);
-         if ((multiple_i_ <= 1) || (abs (dy_f) >= staffline_f / 2))
+         if ((multiple_i_ <= 1) || (abs (beamdy_f) >= staffline_f / 2))
            allowed_position.push (sit);
          allowed_position.push (hang);
        }
       else
         // TODO: check and fix TRADITIONAL
        {
-         if ((multiple_i_ <= 2) || (abs (dy_f) >= staffline_f / 2))
+         if ((multiple_i_ <= 2) || (abs (beamdy_f) >= staffline_f / 2))
            allowed_position.push (straddle);
-         if ((multiple_i_ <= 1) && (dy_f <= staffline_f / 2))
+         if ((multiple_i_ <= 1) && (beamdy_f <= staffline_f / 2))
            allowed_position.push (sit);
-         if (dy_f >= -staffline_f / 2)
+         if (beamdy_f >= -staffline_f / 2)
            allowed_position.push (hang);
        }
     }
@@ -420,18 +423,7 @@ Beam::quantise_left_y (bool extend_b)
 void
 Beam::set_stemlens ()
 {
-  Real interbeam_f = paper ()->interbeam_f ();
-  Real interline_f = paper ()->interline_f ();
-  Real internote_f = interline_f / 2;
   Real staffline_f = paper ()->rule_thickness ();
-  Real beam_f = 0.48 * (interline_f - staffline_f);
-
-  /*
-    if we have more than three beams they must open-up
-    in order to not collide with staff lines
-   */
-  if (multiple_i_ > 3)
-    interbeam_f += 2.0 * staffline_f / 4;
 
   Real x0 = stems_[0]->hpos_f ();
   Real dy = 0;
@@ -457,13 +449,6 @@ Beam::set_stemlens ()
        }
     } while (abs (dy) > epsilon);
 
-  // ugh asymmetric symbol ?
-  if (dir_ == UP)
-    left_y_ -= dir_ * staffline_f / 4;
-
-  if ((multiple_i_ >= 3) && (dir_ == UP))
-    left_y_ -= dir_ * staffline_f / 4;
-
   test_pos++;
   test_pos %= 4;
 }
@@ -519,13 +504,10 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
   assert (!prev || prev->hpos_f () < here->hpos_f ());
 
   Real staffline_f = paper ()->rule_thickness ();
-  Real interbeam_f = paper ()->interbeam_f ();
-  Real internote_f =paper ()->internote_f (); 
-  Real interline_f = 2 * internote_f;
-  Real beamheight_f = 0.48 * (interline_f - staffline_f);
+  Real interbeam_f = paper ()->interbeam_f (multiple_i_);
+  Real internote_f = paper ()->internote_f (); 
+  Real beam_f = paper ()->beam_thickness_f ();
 
-  if (multiple_i_ > 3)
-    interbeam_f += 2.0 * staffline_f / 4;
   Real dy = interbeam_f;
   Real stemdx = staffline_f;
   Real sl = slope_f_* internote_f;
@@ -542,7 +524,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
       Real w = (here->hpos_f () - prev->hpos_f ())/4 <? paper ()->note_width ();;
       Atom a;
       if (lhalfs)              // generates warnings if not
-       a =  paper ()->lookup_l ()->beam (sl, w, beamheight_f);
+       a =  paper ()->lookup_l ()->beam (sl, w, beam_f);
       a.translate (Offset (-w, -w * sl));
       for (int j = 0; j  < lhalfs; j++)
        {
@@ -558,7 +540,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
       int rwholebeams = here->beams_right_i_ <? next->beams_left_i_;
 
       Real w = next->hpos_f () - here->hpos_f ();
-      Atom a = paper ()->lookup_l ()->beam (sl, w + stemdx, beamheight_f);
+      Atom a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f);
       a.translate_axis( - stemdx/2, X_AXIS);
       int j = 0;
       Real gap_f = 0;
@@ -574,7 +556,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
          // TODO: notehead widths differ for different types
          gap_f = paper ()->note_width () / 2;
          w -= 2 * gap_f;
-         a = paper ()->lookup_l ()->beam (sl, w + stemdx, beamheight_f);
+         a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f);
        }
 
       for (; j  < rwholebeams; j++)
@@ -586,7 +568,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
 
       w = w/4 <? paper ()->note_width ();
       if (rhalfs)
-       a = paper ()->lookup_l ()->beam (sl, w, beamheight_f);
+       a = paper ()->lookup_l ()->beam (sl, w, beam_f);
 
       for (; j  < rwholebeams + rhalfs; j++)
        {
index 2267e2d42c95560d0880df422d034b744755d3da..2242c4ffa5b2f1518067cb487d12890f5f7842c9 100644 (file)
@@ -144,8 +144,7 @@ Bezier_bow::blow_fit ()
   Real internote_f = STAFFHEIGHT / 8;
 #endif
 
-  //urg
-  Real epsilon = internote_f / 2;
+  Real epsilon = internote_f / 4;
   if (abs (dy2 - dy1) < epsilon)
     return;
   
@@ -200,7 +199,7 @@ Bezier_bow::calc_f (Real height)
   Real dy = check_fit_f ();
   calc_return (0, 0);
 
-  transform_controls_back ();
+  transform_back ();
   return dy;
 }
 
@@ -211,7 +210,7 @@ Bezier_bow::calc ()
 
   calc_controls ();
 
-  transform_controls_back ();
+  transform_back ();
 }
 
 /*
@@ -249,30 +248,33 @@ bool
 Bezier_bow::calc_clipping ()
 {
 #ifndef STANDALONE
-  Real staffsize_f = paper_l_->get_var ("barsize");
+  Real clip_height = paper_l_->get_var ("slur_clip_height");
+  Real clip_ratio = paper_l_->get_var ("slur_clip_ratio");
+  Real clip_angle = paper_l_->get_var ("slur_clip_angle");
 #else
   Real staffsize_f = STAFFHEIGHT;
+  Real clip_height = 3.0 * staffsize_f;
+  Real clip_ratio = 1.2;
+  Real clip_angle = 100;
 #endif
 
   Real b = control_[3].x () - control_[0].x ();
-  Real clip_h = 1.2 * b <? 3.0 * staffsize_f;
+  Real clip_h = clip_ratio * b <? clip_height;
   Real begin_h = control_[1].y () - control_[0].y ();
   Real end_h = control_[2].y () - control_[3].y ();
   Real begin_dy = 0 >? begin_h - clip_h;
   Real end_dy = 0 >? end_h - clip_h;
   
   Real pi = M_PI;
-  Real begin_alpha = (control_[1] - control_[0]).arg () + alpha_;
-  Real end_alpha = pi -  (control_[2] - control_[3]).arg () - alpha_;
+  Real begin_alpha = (control_[1] - control_[0]).arg () + dir_ * alpha_;
+  Real end_alpha = pi -  (control_[2] - control_[3]).arg () - dir_ * alpha_;
 
-  Real max_alpha = (100.0 / 90) * pi/2;
+  Real max_alpha = clip_angle / 90 * pi / 2;
   if ((begin_dy < 0) && (end_dy < 0)
     && (begin_alpha < max_alpha) && (end_alpha < max_alpha))
     return false;
 
-  encompass_.rotate (alpha_);
-  origin_.y () *= dir_;
-  encompass_.translate (origin_);
+  transform_back ();
 
   bool again = true;
 
@@ -280,8 +282,8 @@ Bezier_bow::calc_clipping ()
     {
       Real dy = (begin_dy + end_dy) / 4;
       dy *= cos (alpha_);
-      encompass_[0].y () += dy;
-      encompass_[encompass_.size () - 1].y () += dy;
+      encompass_[0].y () += dir_ * dy;
+      encompass_[encompass_.size () - 1].y () += dir_ * dy;
     }
   else
     {
@@ -292,17 +294,14 @@ Bezier_bow::calc_clipping ()
       if (end_alpha >= max_alpha)
        end_dy = 0 >? c * end_alpha / max_alpha * end_h;
 
-      encompass_[0].y () += begin_dy;
-      encompass_[encompass_.size () - 1].y () += end_dy;
+      encompass_[0].y () += dir_ * begin_dy;
+      encompass_[encompass_.size () - 1].y () += dir_ * end_dy;
 
       Offset delta = encompass_[encompass_.size () - 1] - encompass_[0];
       alpha_ = delta.arg ();
     }
 
-  origin_ = encompass_[0];
-  encompass_.translate (-origin_);
-  origin_.y () *= dir_;
-  encompass_.rotate (-alpha_);
+  transform ();
 
   return again;
 }
@@ -335,7 +334,7 @@ void
 Bezier_bow::calc_return (Real begin_alpha, Real end_alpha)
 {
 #ifndef STANDALONE
-  Real thick = 1.8 * paper_l_->rule_thickness ();
+  Real thick = paper_l_->get_var ("slur_thickness");
 #else
   Real thick = 1.8 * 0.4 PT;
 #endif
@@ -400,7 +399,13 @@ Bezier_bow::calc_tangent_controls ()
 
   // emperic computer science:
   //   * tangents somewhat steeper than minimal line
+#ifndef STANDALONE
+  Real internote = paper_l_->internote_f ();
+  Real rc_correct = paper_l_->get_var ("slur_rc_factor");
+#else
+  Real internote = STAFFHEIGHT / 8;
   Real rc_correct = 2.4;
+#endif
 
   begin_rc *= rc_correct;
   end_rc *= rc_correct;
@@ -411,11 +416,6 @@ Bezier_bow::calc_tangent_controls ()
   Real end_alpha = atan (-end_rc);
   Real theta = (begin_alpha - end_alpha) / 2;
 
-#ifndef STANDALONE
-  Real internote = paper_l_->internote_f ();
-#else
-  Real internote = STAFFHEIGHT / 8;
-#endif
   Real epsilon = internote / 5;
 
   // if we have two disturbing points, have height line through those...
@@ -491,11 +491,8 @@ Bezier_bow::transform ()
 }
 
 void
-Bezier_bow::transform_controls_back ()
+Bezier_bow::transform_back ()
 {
-  // silly name; let's transform encompass back too
-  // to allow recalculation without re-set()ting encompass array
-
   if (dir_ == DOWN)
     {
       control_.flipy ();
@@ -511,7 +508,6 @@ Bezier_bow::transform_controls_back ()
 
   encompass_.rotate (alpha_);
   encompass_.translate (origin_);
-
 }
 
 /*
@@ -522,13 +518,13 @@ Bezier_bow::calc_default (Real h)
 {
   Real pi = M_PI;
 #ifndef STANDALONE
-  Real staffsize_f = paper_l_->get_var ("barsize");
+  Real height_limit = paper_l_->get_var ("slur_height_limit");
+  Real ratio = paper_l_->get_var ("slur_ratio");
 #else
   Real staffsize_f = STAFFHEIGHT;
-#endif
-
   Real height_limit = staffsize_f;
   Real ratio = 1.0/3.0;
+#endif
 
   Real alpha = height_limit * 2.0 / pi;
   Real beta = pi * ratio / (2.0 * height_limit);
index 770fd8a9735feffce6bf5a67087a5e5b1207fbeb..b986debd303d301679687daccb5e0c2047310692 100644 (file)
@@ -21,16 +21,22 @@ Bow::Bow ()
 {
   dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0;
   dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
+  dash_i_ = 0;
 }
 
 Molecule*
 Bow::brew_molecule_p () const
 {
-  Molecule* mol_p = new Molecule;
-  
+  Real thick = paper ()->get_var ("slur_thickness");
   Array<Offset> c = get_controls ();
-  Atom a = paper ()->lookup_l ()->slur (c);
   Real dy = c[3].y () - c[0].y ();
+  Atom a;
+
+  if (!dash_i_)
+    a = paper ()->lookup_l ()->slur (c);
+  else
+    a = paper ()->lookup_l ()->dashed_slur (c, thick, dash_i_);
+
   if (check_debug && !monitor->silent_b ("Bow"))
     {
       static int i = 1;
@@ -46,6 +52,7 @@ Bow::brew_molecule_p () const
     }
   a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
 
+  Molecule* mol_p = new Molecule;
   mol_p->add (a);
 
   return mol_p;
index f25ac5e32f29d1c27a3819ffd888851440981b06..42db7970f51e5e5295634657435eaffac54bfab3 100644 (file)
@@ -9,15 +9,17 @@
 #include "score-column.hh"
 #include "break.hh"
 #include "paper-def.hh"
-#include "line-spacer.hh"
+#include "spring-spacer.hh"
 #include "debug.hh"
 #include "scoreline.hh"
 #include "p-score.hh"
 #include "p-col.hh"
 #include "cpu-timer.hh"
+#include "command-request.hh"
 
 String
-Col_stats::str () const {
+Col_stats::str () const
+{
   String s (count_i_);
   s += _ (" lines");
   if  (count_i_)
@@ -98,7 +100,7 @@ Break_algorithm::find_breaks () const
 Line_spacer*
 Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line) const
 {
-  Line_spacer * sp= (*get_line_spacer) ();
+  Spring_spacer * sp= (Spring_spacer*) (*get_line_spacer) (); // ugh
 
   sp->paper_l_ = pscore_l_->paper_l_;
   sp->add_column (curline[0], true, line.min ());
@@ -106,7 +108,10 @@ Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line)
     sp->add_column (curline[i]);
 
   if (line.length () > 0)
-    sp->add_column (curline.top (), true, line.max ());
+    {
+      sp->add_column (curline.top (), true, line[RIGHT]);
+      sp->energy_normalisation_f_  = sqr (line.length ());
+    }
   else
     sp->add_column (curline.top ());
 
@@ -138,7 +143,7 @@ Break_algorithm::feasible (Line_of_cols curline) const
   for (int i=0; i < curline.size (); i++)
     {
       if (i && i < curline.size () -1
-         && ((Score_column*)curline[i])->forced_break_b ())
+         && (((Score_column*)curline[i])->break_penalty_i () >= Break_req::FORCE))
        return false;
     }
   return true;
index d7ce0c4df0608a728b3ee013d901508adbddb2a9..bc981272a490e425e88d362d869797e151abda2f 100644 (file)
@@ -20,6 +20,7 @@ Clef_engraver::Clef_engraver()
   clef_req_l_ =0;
   clef_type_str_ = 0;
   c0_position_i_ =0;
+  octave_dir_ = CENTER;
 }
 
 /*
@@ -28,6 +29,18 @@ Clef_engraver::Clef_engraver()
 bool
 Clef_engraver::set_type (String s)
 {
+  if (s.right_str(2) == "_8") // Down one octave
+    {
+      octave_dir_ = DOWN;
+      s = s.left_str(s.length_i() - 2);
+    }
+  else if (s.right_str(2) == "^8") // Up one octave
+    {
+      octave_dir_ = UP;
+      s = s.left_str(s.length_i() - 2);
+    }
+  else
+    octave_dir_ = CENTER;
   clef_type_str_ = s;
   if (clef_type_str_ == "violin" || clef_type_str_ == "G" || clef_type_str_ == "G2")
     c0_position_i_= -6;
@@ -64,6 +77,7 @@ Clef_engraver::set_type (String s)
     default:
     return false;
     }              
+  c0_position_i_ -= (int) octave_dir_ * 7;
   
   return true;
 }
index eda65592b94e6c2944767b3b001a95a4c0d9b1c8..234b85fbb4af1963ba0466d896e7f5903255bc42 100644 (file)
@@ -13,7 +13,7 @@
 #include "paper-def.hh"
 #include "lookup.hh"
 #include "clef-grav.hh"
-
+#include "text-item.hh"
 
 void
 Clef_item::do_pre_processing()
@@ -32,7 +32,12 @@ Clef_item::Clef_item()
   breakable_b_ =true;
   default_b_ = false;
   change_b_ = true;
+  octave_dir_ = CENTER;
   read ("violin");
+  // Ugh: This should be const, I guess.
+  octave_marker_td_p_ = new Text_def();
+  octave_marker_td_p_->text_str_ = "8";
+  octave_marker_td_p_->style_str_ = "italic";
 }
 
 /*
@@ -129,6 +134,7 @@ void
 Clef_item::read (Clef_engraver const &k)
 {
   read (k.clef_type_str_);
+  octave_dir_ = k.octave_dir_;
 }
 
 Molecule*
@@ -140,6 +146,11 @@ Clef_item::brew_molecule_p() const
   Atom s = paper()->lookup_l ()->clef (t);
   Molecule*output = new Molecule (Atom (s));
   output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS);
+  if (octave_dir_)
+    output->add_at_edge (Y_AXIS, 
+                        octave_dir_,
+                        Molecule(octave_marker_td_p_->get_atom(paper(), 
+                                                               CENTER)));
   return output;
 }
 
index 6742e6bee75b64ac8ecddd0b59c75b9ef8ed70c5..b4f142a7ed6f80dae3400f8c721f3902d6e12a03 100644 (file)
@@ -90,14 +90,6 @@ IMPLEMENT_IS_TYPE_B1(Command_req,Request);
 void
 Command_req::do_print() const{}
 
-IMPLEMENT_IS_TYPE_B1(Disallow_break_req,Command_req);
-
-void
-Disallow_break_req::do_print() const
-{
-}
-/* *************** */
-
 IMPLEMENT_IS_TYPE_B1(Barcheck_req,Timing_req);
 
 void
@@ -252,12 +244,17 @@ Key_change_req::Key_change_req()
   multi_octave_b_= false;
 }
 
-void
-Break_force_req::do_print () const
+IMPLEMENT_IS_TYPE_B1(Break_req, Command_req);
+
+Break_req::Break_req ()
 {
+  penalty_i_ = 0;
 }
 
-IMPLEMENT_IS_TYPE_B1(Break_force_req, Command_req);
+void
+Break_req::do_print () const
+{
+}
 
 Key_change_req::Key_change_req (Key_change_req const&c)
   : Command_req (c)
index 7677f5279d66b08ca43c082021a7c154bb119d77..b513e3e517b56aa7c825dbe7f376b4415371f7d6 100644 (file)
@@ -26,7 +26,6 @@ public:
 
      
 protected:
-  virtual void acknowledge_element (Score_elem_info);
   virtual void do_creation_processing ();
   virtual void do_removal_processing ();
   virtual bool do_try_request (Request *req_l);
index df6b3362cb6cb429dfdf7a7312fd810667ddadea..ea8c1ed00de0a24900d4f418af06ab93f5b470bf 100644 (file)
@@ -62,7 +62,7 @@ public:
   Real check_fit_f ();
   void set (Array<Offset> points, int dir);
   void transform ();
-  void transform_controls_back ();
+  void transform_back ();
 
   Paper_def* paper_l_;
   Curve encompass_;
index 4dbf2ead7074cab1b98194150e1d9eb1bab4ee8f..e7e3e912cc13ace2bc9ff0515288b45dade68775 100644 (file)
@@ -25,6 +25,8 @@ public:
 
   DECLARE_MY_RUNTIME_TYPEINFO;
 
+  int dash_i_;
+
 protected:
   virtual Molecule* brew_molecule_p () const;
   virtual Interval do_width () const;    
index 61318648edad7f5900de05aeb1d8e2241f73dfef..ec4702cac896b8fdf3232b13a03a564e8df737cc 100644 (file)
@@ -13,6 +13,7 @@
 #include "scalar.hh"
 #include "varray.hh"
 #include "engraver.hh"
+#include "direction.hh"
 
 /// where is c-0 in the staff?
 class Clef_engraver : public  Engraver {
@@ -33,6 +34,7 @@ protected:
 public:
   TRANSLATOR_CLONE(Clef_engraver);
   int c0_position_i_;
+  Direction octave_dir_;
   String clef_type_str_;
 
   /* ************** */
index c6e00a992e04427c578b8c8d61f7daebaf6933c5..3b82f9d426e77d994707d7cb8bca3033e752d883 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef CLEFITEM_HH
 #define CLEFITEM_HH
 #include "item.hh"
+#include "text-def.hh"
+#include "direction.hh"
 
 /**
   Set a clef in a staff.
@@ -26,6 +28,12 @@ public:
     /// set because of existence of a bar
     bool default_b_;
 
+    /// should we print an octave symbol (8), and where? (up=1, down=1)?
+    Direction octave_dir_;
+
+    /// text def to put above/below clef (ugh: should be const)
+    Text_def * octave_marker_td_p_;
+  
     /* *************** */
     DECLARE_MY_RUNTIME_TYPEINFO;
     SCORE_ELEM_CLONE(Clef_item);
index 9a12dc8e19d146ca7f639909d7ff2aaf1b806d5b..112fa2f6d87bafc138692f3b2ad90cac4ad90cf9 100644 (file)
@@ -26,16 +26,18 @@ public:
   virtual Meter_change_req * meterchange() { return 0; }
   virtual Bar_req *bar() { return 0; }
   virtual Cadenza_req *cadenza() { return 0; }
-  virtual Disallow_break_req *disallowbreak() { return 0; }
   virtual Timing_req*timing() {  return 0; }
   virtual Command_script_req*commandscript() { return 0;}
-  virtual Break_force_req *forcebreak () { return 0; }
+  virtual Break_req *linebreak () { return 0; }
 };
 
 
-class Break_force_req : public Command_req {
+class Break_req : public Command_req {
 public:
-  REQUESTMETHODS(Break_force_req, forcebreak);
+  enum { DISALLOW = -10000, FORCE = 10000 };
+  int penalty_i_;
+  Break_req ();
+  REQUESTMETHODS (Break_req, linebreak);
 };
 
 class Command_script_req : public Command_req,  public Script_req {
@@ -46,13 +48,6 @@ public:
   REQUESTMETHODS(Command_script_req, commandscript);
 };
 
-
-class Disallow_break_req : public Command_req {
-public:
-  REQUESTMETHODS(Disallow_break_req, disallowbreak);
-};
-
-
 /** Baseclass for meter/partial req. It has to be handled by
   Staff_{walker,column} baseclass.  */
 class Timing_req  : public Command_req  {
index 670125e1c7a491eef657a6274a45ecffd5847934..9f47f8834eafa46ee93d10cb3911d016ac4e4cd8 100644 (file)
@@ -44,8 +44,9 @@ struct Beam_req;
 struct Blank_req;
 struct Bow;
 struct Box;
-struct Break_align_item;
 struct Bracket_req;
+struct Break_align_item;
+struct Break_req;
 struct Cadenza_req;
 struct Change_iterator;
 struct Change_translator;
@@ -68,13 +69,11 @@ struct Decresc_req;
 struct Dots;
 struct Dot_column;
 struct Directional_spanner;
-struct Disallow_break_req;
 struct Durational_req;
 struct Dynamic;
 struct Dynamic_req;
 struct Element_group;
 struct Element_group_item;
-struct Break_force_req;
 struct General_script_def;
 struct Graphical_element;
 struct Music_output;
index 9b291ee9ab1dca54db51aa58b771a9ac5f18c341..292363bb9c056cae9ef0fd598278d1906806d94f 100644 (file)
@@ -50,6 +50,7 @@ struct Lookup {
   Atom bar (String, Real height) const;
     
   Atom dots () const;
+  Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
   Atom slur (Array<Offset> controls) const;
   Atom plet (Real dy, Real dx, Direction dir) const;
   Atom text (String style, String text, int align = 1) const;
index e5c3191723ae9305c3704b72522caf54d5c09547..b96b62df56a8ab2521f4d17d4425210b3b85fa04 100644 (file)
@@ -22,6 +22,7 @@ void call_constructors ();
 extern Sources* source_global_l;
 extern bool no_paper_global_b;
 extern bool no_timestamps_global_b;
+extern bool find_quarts_global_b;
 extern int exit_status_i_;
 extern bool experimental_features_global_b;
 extern bool dependency_global_b;
index 280934398208e13e1a4e6845c4e1949f8a41bd11..067ff3eae18059c86bacfac2565d2ae3bdb94e0f 100644 (file)
@@ -22,16 +22,18 @@ public:
   Multi_measure_rest_engraver ();
 
 protected:
-  virtual void do_removal_processing ();
   virtual void do_process_requests ();
   virtual bool do_try_request (Request*);
   virtual void do_pre_move_processing ();
-  
+  virtual void do_post_move_processing ();
 private:
-  bool part_b_;
-  Moment last_mom_;
+  Moment rest_req_stop_mom_;
+  Moment rest_item_creation_mom_;
+  Moment req_start_mom_;
+
+  
+  int start_measure_i_;
   Multi_measure_rest_req* multi_measure_req_l_;
   Multi_measure_rest* mmrest_p_;
 };
-
 #endif // MULTI_MEASURE_REST_ENGRAVER_HH
index 329b1cd0d050dd75b4820b7f8721cd76e599bd72..850ba3463fbd3091c5998c34b2cd47e20f45b696 100644 (file)
@@ -163,6 +163,7 @@ public:
 class Multi_measure_rest_req : public Rhythmic_req  {
 public:
   REQUESTMETHODS(Multi_measure_rest_req, multi_measure);
+
 };
 
 /**
index 63b520ecabba7fceb3ab6277a8e0fa92ab054976..8c751af072d24e6582eeaf627e529d83d996aff3 100644 (file)
@@ -30,16 +30,21 @@ class My_lily_parser {
   Chord * get_note_element (Note_req * ,Duration *);
   Chord* get_rest_element (String,Duration *);
   Chord* get_word_element (Text_def*, Duration*);
+  Melodic_req* get_melodic_req (Melodic_req* melodic, int quotes);
+  void set_nearest (Melodic_req* melodic);
+  String notename_str (Melodic_req* melodic);
 
   void set_last_duration (Duration const *);
   void set_default_duration (Duration const *);
   void set_abbrev_beam (int type_i);
   void set_duration_mode (String s);
+  void set_octave_mode (String s);
   friend int yyparse (void*);
 
 public:
   int abbrev_beam_type_i_;
   int default_octave_i_;
+  Melodic_req* last_melodic_;
   Duration default_duration_;
   Plet plet_;
   Header *default_header_p_;
@@ -47,6 +52,7 @@ public:
   String textstyle_str_;
   bool first_b_;
   bool last_duration_mode_b_ ;
+  bool relative_octave_mode_b_;
   Array<Request*> pre_reqs, post_reqs;
   int fatal_error_i_;
   Sources * source_l_;
index 671faf456e836ba79ea48224a3a247a2130618a7..d2728d42f3a307f405f2c3439d6039ecd567d03e 100644 (file)
@@ -59,21 +59,28 @@ public:
   void set (Lookup*);
 
   Paper_def (Paper_def const&);
-  /// The distance between beams
-  Real interbeam_f () const;
-  /**
-    The distance between lines
-    */
+  /// The distance between beams of multiplicity_i
+  Real interbeam_f (int multiplicity_i) const;
+
+  /// The thickness of a beam
+  Real beam_thickness_f () const;
+
+  /// The distance between lines
   Real interline_f () const;
   /// half the distance between lines
   Real internote_f () const;
 
   /// thickness of the standard line 
   Real rule_thickness () const;
+
+  /// thickness of the staff line
+  Real staffline_f () const;
+
   Interval line_dimensions_int (int) const;
   Real linewidth_f () const;
+
   /// height of the staff
-  Real standard_height () const;
+  Real staffheight_f () const;
 
   /// width of a crotchet ball
   Real note_width () const;
index 961de68e2bc0790e4ada149fa87f18a91171a9e3..e82b51aa80069f47f8b34bdecec1f8a5e2356207 100644 (file)
@@ -30,10 +30,11 @@ class Score_column : public Paper_column {
   friend class Score_engraver;
 
   bool musical_b_;
-  bool forced_break_b_;
+  int break_penalty_i_;
   Moment when_;
+
 public:
-  bool forced_break_b () { return forced_break_b_ ; }
+  int break_penalty_i () { return break_penalty_i_; }
   DECLARE_MY_RUNTIME_TYPEINFO;
   SCORE_ELEM_CLONE(Score_column);
   /// length of notes/rests in this column
index 4f11fd0f8f42070ee47d3d86a315eb1c9e777a65..bd89d2fd360cccbfe529f02157a30ebcf61704b3 100644 (file)
@@ -20,7 +20,7 @@ class Score_engraver :
   public Engraver_group_engraver, public Global_translator 
 {
   Line_of_score * scoreline_l_;
-  bool disallow_break_b_;
+  int break_penalty_i_;
   int breaks_i_;
 
   Link_array<Score_elem> elem_p_arr_;
index ea94a97c6869b62f32e5eb95a22e601756752111..609fb666d6e6da6d4c18081bd0775678955edc67 100644 (file)
@@ -45,6 +45,7 @@
 
 class Spring_spacer : public Line_spacer {
   friend class Durations_iter;
+  
     
   Pointer_list<Idealspacing *> ideal_p_list_;
   Array<Colinfo> cols_;
@@ -83,7 +84,8 @@ class Spring_spacer : public Line_spacer {
   Real calculate_energy_f (Vector) const;
 public:
   static Line_spacer *constructor();
-
+  Real energy_normalisation_f_;
+  Spring_spacer ();
   virtual void solve (Col_hpositions*) const;
   virtual void lower_bound_solution (Col_hpositions*) const;
   virtual void add_column (Paper_column  *, bool fixed=false, Real fixpos=0.0);
index cafd9a066435a49e93365d1deccb81d2180241fb..5a84817ed93e3c99bf99561d141d0d8d4dbfd58d 100644 (file)
 
 /// full info on where we are
 struct Time_description {
-    Moment when_;
+  Moment when_;
 
-    /// found an error so far?
-    bool error_b_ ;
+  /// found an error so far?
+  bool error_b_ ;
 
-    /// if true, no bars needed, no reduction of whole_in_measure
-    bool cadenza_b_;
+  /// if true, no bars needed, no reduction of whole_in_measure
+  bool cadenza_b_;
     
-    /// current measure info
-    Moment whole_per_measure_;
-
-    /// where am i 
-    Moment whole_in_measure_;
-
-    /// how long is one beat?
-    Moment one_beat_;
-
-    /// idem
-    int bars_i_;
-
-    /* *************** */
-    void set_cadenza (bool);
-    void OK() const;
-    Time_description();
-    void add (Moment dt);
-    bool allow_meter_change_b();
-    String str() const;
-    void print() const;
-    void setpartial (Moment p);
-    String try_set_partial_str (Moment) const;
-    Moment barleft() const;
-    Moment next_bar_moment() const;
-    void set_meter (int,int);
-    static int compare (const Time_description&, const Time_description&);
+  /// current measure info
+  Moment whole_per_measure_;
+
+  /// where am i 
+  Moment whole_in_measure_;
+
+  /// how long is one beat?
+  Moment one_beat_;
+
+  /// idem
+  int bars_i_;
+
+  /* *************** */
+  void set_cadenza (bool);
+  Moment when_mom () const { return when_; }
+  void OK() const;
+  Time_description();
+  void add (Moment dt);
+  bool allow_meter_change_b();
+  String str() const;
+  void print() const;
+  void setpartial (Moment p);
+  String try_set_partial_str (Moment) const;
+  Moment barleft() const;
+  Moment next_bar_moment() const;
+  void set_meter (int,int);
+  static int compare (const Time_description&, const Time_description&);
 };
 
 #include "compare.hh"
@@ -57,7 +58,7 @@ INSTANTIATE_COMPARE(Time_description&,Time_description::compare);
 
 void
 process_timing_reqs (Time_description &time_, 
-                   Rhythmic_grouping *default_grouping,
-                   Array<Timing_req*> const& timing_req_l_arr);
+                    Rhythmic_grouping *default_grouping,
+                    Array<Timing_req*> const& timing_req_l_arr);
 #endif // Time_description_HH
 
index 22c7274a3464a7328faeae4e93f4b11a0eae136f..01c36c1aca7f65d6f026bc2e75a1399595f7e1d9 100644 (file)
@@ -18,7 +18,6 @@
 class Timing_engraver : public Timing_translator, public Engraver
 {   
 protected:
-  virtual void acknowledge_element (Score_elem_info i);
   virtual void fill_staff_info (Staff_info&);
   virtual Engraver * engraver_l () { return Engraver::engraver_l (); }
 public:
index 82aa0e19de7c58546cd5d6117feb496fb23f8aed..1b2fe054eaca9887c4a5ccfd98beb7d963bba7e9 100644 (file)
@@ -33,6 +33,5 @@ protected:
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
 
-  bool mmrest_b_;
 };
 #endif // TIMING_TRANSLATOR_HH
index 6d38b2451eb618aa6feb974b7e755fdc089c2262..7e09d03e58d9f6a8cc50e29af79b9e986ae31842 100644 (file)
@@ -33,6 +33,7 @@
 #include "debug.hh"
 #include "parseconstruct.hh"
 #include "main.hh"
+#include "musical-request.hh"
 #include "identifier.hh"
 void strip_trailing_white (String&);
 void strip_leading_white (String&);
@@ -136,9 +137,9 @@ TELP                \\\]
 <notes,INITIAL,lyrics>\\include           {
        yy_push_state (incl);
 }
-<incl>\"[^"]*\"   { /* got the include file name */
+<incl>\"[^"]*\";?   { /* got the include file name */
        String s (YYText ()+1);
-       s = s.left_str (s.length_i ()-1);
+       s = s.left_str (s.index_last_i ('"'));
        DOUT << "#include `" << s << "\'\n";
        new_input (s,source_global_l);
        yy_pop_state ();
@@ -153,6 +154,9 @@ TELP                \\\]
        DOUT << "rest:"<< yylval.string;
        return RESTNAME;
 }
+<notes>R               {
+       return MEASURES;
+}
 <INITIAL,lyrics,notes>\\\${BLACK}*{WHITE}      {
        String s=YYText () + 2;
        s=s.left_str (s.length_i () - 1);
@@ -370,6 +374,7 @@ My_lily_lexer::scan_escaped_word (String str)
                if (mel_l) {
                    DOUT << "(notename)\n";
                    yylval.melreq = mel_l;
+                   mel_l->set_spot (Input (source_file_l (), here_ch_C ()));
                    return NOTENAME_ID;
                }
        }
@@ -390,6 +395,7 @@ My_lily_lexer::scan_bare_word (String str)
                if (mel_l) {
                    DOUT << "(notename)\n";
                    yylval.melreq = mel_l;
+                   mel_l->set_spot (Input (source_file_l (), here_ch_C ()));
                    return NOTENAME_ID;
                }
        }
index bbdfd3c11196927b558aa6a031807307d6ec6826..2a446f01a7ed4df3de3ee828a58182539ea75515 100644 (file)
@@ -146,6 +146,39 @@ Lookup::flag (int j, Direction d) const
   return (*symtables_p_)("flags")->lookup (c + String (j));
 }
 
+Atom
+Lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
+{
+  assert (controls.size () == 8);
+
+  String ps = "\\embeddedps{\n";
+  
+  Real dx = controls[3].x () - controls[0].x ();
+  Real dy = controls[3].y () - controls[0].y ();
+
+  for (int i = 1; i < 4; i++)
+    ps += String_convert::double_str (controls[i].x ()) + " "
+      + String_convert::double_str (controls[i].y ()) + " ";
+
+  ps += String_convert::double_str (controls[0].x ()) + " "
+    + String_convert::double_str (controls[0].y ()) + " ";
+
+  ps += String_convert::double_str (thick) + " ";
+  Real on = dash > 1? thick * dash - thick : 0;
+  Real off = 2 * thick;
+  ps += "[" + String_convert::double_str (on) + " ";
+  ps += String_convert::double_str (off) + "] ";
+  ps += String_convert::int_str (0) + " ";
+  ps += " draw_dashed_slur}";
+
+  Atom s;
+  s.tex_ = ps;
+  
+  s.dim_[X_AXIS] = Interval (0, dx);
+  s.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
+  return s;
+}
+
 Atom
 Lookup::slur (Array<Offset> controls) const
 {
@@ -196,7 +229,7 @@ Lookup::hairpin (Real width, bool decresc, bool continued) const
 {
   String embed;
   Atom ret;  
-  Real height = paper_l_->get_var ("barsize") / 6;
+  Real height = paper_l_->staffheight_f () / 6;
   embed = "\\embeddedps{\n" ;
   embed += String (width) + " " 
        + String (height) + " " 
index 2049462714fbf31e19491d47e2495d9b0dd6ad4a..bd5c6276dec7a6121bb88d70b998ec1f28a1102b 100644 (file)
@@ -24,6 +24,7 @@
 bool version_ignore_global_b = false;
 bool no_paper_global_b = false;
 bool no_timestamps_global_b = false;
+bool find_quarts_global_b = false;
 String default_outname_base_global =  "lelie";
 int default_count_global;
 
@@ -45,6 +46,7 @@ Long_option_init theopts[] = {
   {0, "no-paper", 'M'},
   {0, "dependencies", 'd'},
   {0, "no-timestamps", 'T'},
+  {0, "find-quarts", 'Q'},
   {0, "ignore-version", 'V'},
   {0,0,0}
 };
@@ -58,17 +60,17 @@ usage ()
     "\n"
     "Options:\n"
     "  -D, --debug            enable debugging output\n"
-    "  -d, --dependencies     write dependency files for every output\n"
+    "  -d, --dependencies     write Makefile dependencies for every input file\n"
+    "  -Q, --find-quarts      show all intervals bigger than a quart\n"
     "  -I, --include=DIR      add DIR to search path\n"
     "  -i, --init=FILE        use FILE as init file\n"
     "  -h, --help             this help\n"
-    "  -w, --warranty         show warranty and copyright\n"
+    "  -M, --no-paper         produce midi output only\n"
     "  -o, --output=FILE      set FILE as default output\n"
     "  -t, --test             switch on experimental features\n"
-    "  -M, --no-paper         produce midi output only\n"
-    "  -V, --ignore-version   ignore mudela version\n"
-
     "  -T, --no-timestamps    don't timestamp the output\n"
+    "  -V, --ignore-version   ignore mudela version\n"
+    "  -w, --warranty         show warranty and copyright\n"
     "\n"
     "GNU LilyPond was compiled with the following settings:\n")
 #ifdef NDEBUG
@@ -85,8 +87,6 @@ usage ()
     "\n";
 
   ;
-
-
 }
 
 void
@@ -160,6 +160,9 @@ main (int argc, char **argv)
          notice ();
          exit (0);
          break;
+       case 'Q':
+         find_quarts_global_b = true;
+         break;
        case 'I':
          path.push (oparser.optional_argument_ch_C_);
          break;
index 2c93ec04c695259a0dd817921a68c801f36729bd..56a3b8d93c4b6abf9628902a7f73af467709264d 100644 (file)
@@ -2,6 +2,7 @@
   multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
 
   (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+       Han-Wen Nienhuys <hanwen@cs.ruu.nl>
 */
 
 #include "proto.hh"
 #include "multi-measure-rest.hh"
 #include "multi-measure-rest-engraver.hh"
 #include "score-column.hh"
+#include "time-description.hh"
 
 IMPLEMENT_IS_TYPE_B1 (Multi_measure_rest_engraver, Engraver);
 ADD_THIS_TRANSLATOR (Multi_measure_rest_engraver);
 
 Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 {
-  last_mom_ = 0;
+  start_measure_i_ = 0;
+  rest_item_creation_mom_ = rest_req_stop_mom_ =0;
   multi_measure_req_l_ = 0;
   mmrest_p_ = 0;
 }
@@ -26,59 +29,54 @@ Multi_measure_rest_engraver::do_try_request (Request* req_l)
   if (!req_l->musical () || !req_l->musical ()->multi_measure ())
     return false;
 
+  if (multi_measure_req_l_)
+    if (!multi_measure_req_l_->equal_b (req_l)
+       || req_start_mom_ != now_moment ())
+      return false;
+  
   multi_measure_req_l_ = req_l->musical ()->multi_measure ();
-  last_mom_ = now_moment () + multi_measure_req_l_->duration_.length ();
+  req_start_mom_ = now_moment ();
+  
+  rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
 
   return true;
 }
 
 void
-Multi_measure_rest_engraver::do_removal_processing ()
+Multi_measure_rest_engraver::do_process_requests ()
 {
-  if (mmrest_p_)
+  if (multi_measure_req_l_ && !mmrest_p_)
     {
-      typeset_element (mmrest_p_);
-      mmrest_p_ = 0;
+      Time_description const *time = get_staff_info().time_C_;
+      mmrest_p_ = new Multi_measure_rest;
+      rest_item_creation_mom_ =  time->when_mom ();
+      announce_element (Score_elem_info (mmrest_p_, multi_measure_req_l_));
+      start_measure_i_ = time->bars_i_;
     }
 }
 
 void
-Multi_measure_rest_engraver::do_process_requests ()
+Multi_measure_rest_engraver::do_pre_move_processing ()
 {
-  if (mmrest_p_ || !multi_measure_req_l_)
-    return;
-
-  mmrest_p_ = new Multi_measure_rest;
-
-  Scalar prop = get_property ("part");
-  if (prop.isnum_b ()) 
-    part_b_ = prop.to_bool ();
-
-//  if (!part_b_)
-//    return;
-
-  int measures_i = (int)multi_measure_req_l_->duration_.plet_.iso_i_;
-  if (part_b_)
-    mmrest_p_->measures_i_ = measures_i;
-
-  announce_element (Score_elem_info (mmrest_p_, multi_measure_req_l_));
-
-  multi_measure_req_l_ = 0;
+  Moment now (now_moment ());
+  if (mmrest_p_ && rest_item_creation_mom_ == now)
+    {
+      typeset_element (mmrest_p_);
+    }
 }
 
 void
-Multi_measure_rest_engraver::do_pre_move_processing ()
+Multi_measure_rest_engraver::do_post_move_processing ()
 {
-  if (!mmrest_p_)
-    return;
-
-  typeset_element (mmrest_p_);
-  mmrest_p_ = 0;
-
-  if (part_b_)
-    return;
-
-  if (last_mom_ <= now_moment ())
+  Time_description const *time = get_staff_info().time_C_;
+  Moment now (now_moment ());
+  if (rest_req_stop_mom_ <= now)
     multi_measure_req_l_ = 0;
-}
 
+  if (mmrest_p_ && (!time->whole_in_measure_ || !multi_measure_req_l_))
+    {
+      assert (rest_item_creation_mom_ < now);
+      mmrest_p_->measures_i_ = time->bars_i_ - start_measure_i_;
+      mmrest_p_ = 0;
+    }
+}
index a018c531077eaead300bbb53222796a17ce47b02..4e7e05ff4c57a26c030bd1eff2fc7ffe7722f3d1 100644 (file)
@@ -44,7 +44,7 @@ Multi_measure_rest::brew_molecule_p () const
   Real interline_f = paper ()->interline_f ();
   mol_p->translate_axis (interline_f, Y_AXIS);
 
-  if (measures_i_)
+  if (measures_i_ > 1)
     {
       Text_def text;
       text.text_str_ = measures_i_;
index 3469aaff33df17796041c183f7039324df1e58fe..a74eed07009d570923923f5d5dab24d36ba2e318 100644 (file)
@@ -260,6 +260,8 @@ Rest_req::do_print () const
 
 /* *************** */
 
+
+
 IMPLEMENT_IS_TYPE_B1 (Multi_measure_rest_req, Rhythmic_req);
 
 void
@@ -268,6 +270,7 @@ Multi_measure_rest_req::do_print () const
       Rhythmic_req::do_print ();
 }
 
+
 /* *************** */
 
 IMPLEMENT_IS_TYPE_B1 (Beam_req,Span_req);
index 77f13bf18e56bc3a26dbeb71c6c939097d699f2f..fc6cae778dd6097164c2fca8089a6ee655320e60 100644 (file)
@@ -24,7 +24,6 @@
 static Keyword_ent the_key_tab[]={
   {"accepts", ACCEPTS},
   {"bar", BAR},
-  {"break", BREAK},
   {"cadenza", CADENZA},
   {"clear", CLEAR},
   {"clef", CLEF},
@@ -50,6 +49,7 @@ static Keyword_ent the_key_tab[]={
   {"output", OUTPUT},
   {"partial", PARTIAL},
   {"paper", PAPER},
+  {"penalty", PENALTY},
   {"property", PROPERTY},
   {"pt", PT_T},
   {"score", SCORE},
index beb8d7df3cbf9e41e0bbf93e74f93ae180dadd91..cb1666207b92e7dba06bb348d70ef734c1a6730f 100644 (file)
@@ -30,6 +30,13 @@ My_lily_parser::My_lily_parser (Sources * source_l)
   last_duration_mode_b_ = true;
   fatal_error_i_ = 0;
   default_header_p_ =0;
+
+  relative_octave_mode_b_ = false;
+
+  last_melodic_ = new Melodic_req;
+  last_melodic_->octave_i_ = 0; // -1; // huh?
+  last_melodic_->notename_i_ = 0;
+  last_melodic_->accidental_i_ = 0;
 }
 
 My_lily_parser::~My_lily_parser()
@@ -104,6 +111,23 @@ My_lily_parser::set_duration_mode (String s)
   last_duration_mode_b_ = (s== "LAST");
 }
 
+void
+My_lily_parser::set_octave_mode (String s)
+{
+  s = s.upper_str();
+  if (s == "RELATIVE")
+    {
+      relative_octave_mode_b_ = true;
+      // must reset these
+      last_melodic_ = new Melodic_req;
+      last_melodic_->octave_i_ = 0; // -1; // huh?
+      last_melodic_->notename_i_ = 0;
+      last_melodic_->accidental_i_ = 0;
+    }
+  else
+    relative_octave_mode_b_ = false;
+}
+
 void
 My_lily_parser::set_abbrev_beam (int type_i)
 {
@@ -132,6 +156,71 @@ My_lily_parser::set_last_duration (Duration const *d)
     }
 }
 
+String
+My_lily_parser::notename_str (Melodic_req* melodic)
+{
+  // ugh
+  String str ((char)('a' + ((melodic->notename_i_ + 2) % 7)));
+  int i = melodic->accidental_i_;
+  while (i-- > 0) 
+    str += "is";
+  i++;
+  while (i++ < 0)
+    str += "es";
+  return str;
+}
+
+Melodic_req* 
+My_lily_parser::get_melodic_req (Melodic_req* melodic, int quotes)
+{
+  if (relative_octave_mode_b_)
+    {
+      set_nearest (melodic);
+      int d = melodic->pitch () - last_melodic_->pitch ();
+      if (quotes && (sign (d) == sign (quotes)))
+       quotes -= sign (quotes);
+      melodic->octave_i_ += quotes;
+    }
+  else
+    {
+      Melodic_req nearest (*melodic);
+      set_nearest (&nearest);
+      melodic->octave_i_ += quotes;
+
+      if (find_quarts_global_b)
+       {
+         int e = melodic->pitch () - nearest.pitch ();
+         if (e)
+           {
+             int d = melodic->pitch () - last_melodic_->pitch ();
+             String str = _("Interval bigger than quart");
+             int n = 1 + (abs (d) - 1) / 12;
+             String quote_str ('\'', n);
+#if 0
+             str += d < 0 ? _(", prepend: ") : _(", append: ");
+             str += quote_str;
+#else
+             str += _(", relative: ");
+             String name_str = notename_str (melodic);
+             str += d < 0 ? quote_str + name_str : name_str + quote_str;
+#endif
+             melodic->warning (str);
+           }
+       }
+    }
+  delete last_melodic_;
+  last_melodic_ = melodic->clone ()->musical ()->melodic ();
+  return melodic;
+}
+
+void
+My_lily_parser::set_nearest (Melodic_req* melodic)
+{
+  melodic->octave_i_ = last_melodic_->octave_i_;
+  int d = melodic->pitch () - last_melodic_->pitch ();
+  if (abs (d) > 6)
+    melodic->octave_i_ -= sign (d);
+}
 
 Chord*
 My_lily_parser::get_word_element (Text_def* tdef_p, Duration * duration_p)
@@ -149,6 +238,7 @@ My_lily_parser::get_word_element (Text_def* tdef_p, Duration * duration_p)
   return velt_p;
 }
 
+
 Chord *
 My_lily_parser::get_rest_element (String s,  Duration * duration_p)
 {
@@ -163,16 +253,6 @@ My_lily_parser::get_rest_element (String s,  Duration * duration_p)
       skip_p->set_spot (here_input());
       velt_p->add (skip_p);
     }
-  else if ((duration_p->plet_.type_i_ == 1) && (duration_p->plet_.iso_i_ > 1))
-    {
-      Multi_measure_rest_req* m = new Multi_measure_rest_req;
-      // these shouldn't be necessary anymore
-//      plet_.iso_i_ = 1;
-//      default_duration_.plet_.iso_i_ = 1;
-      m->duration_ = *duration_p;
-      m->set_spot (here_input());
-      velt_p->add (m);
-    }
   else
     {
       Rest_req * rest_req_p = new Rest_req;
@@ -337,3 +417,4 @@ My_lily_parser::add_notename (String s, Melodic_req * m_p)
 {
   lexer_p_->add_notename (s, m_p);
 }
+
index 20e412dde81f1da2260c1932079e58540b9f4da7..dbb99fd73030778d2904e6599d9fe83d00dcec5f 100644 (file)
 #include "main.hh"
 
 
-Paper_def::Paper_def()
+Paper_def::Paper_def ()
 {
   lookup_p_ = 0;
   real_vars_p_ = new Dictionary<Real>;
 }
 
-Paper_def::~Paper_def()
+Paper_def::~Paper_def ()
 {
   delete real_vars_p_;
   delete lookup_p_;
@@ -50,7 +50,7 @@ Real
 Paper_def::get_var (String s) const
 {
   if (! real_vars_p_->elt_b (s))
-    error (_("unknown paper variable `")  + s+"'");
+    error (_ ("unknown paper variable `")  + s+"'");
   return real_vars_p_->elem (s);
 }
 
@@ -69,6 +69,12 @@ Paper_def::line_dimensions_int (int n) const
   return shape_int_a_[n];
 }
 
+Real
+Paper_def::beam_thickness_f () const
+{
+  return get_var ("beam_thickness");
+}
+
 Real
 Paper_def::linewidth_f () const
 {
@@ -78,9 +84,9 @@ Paper_def::linewidth_f () const
 Real
 Paper_def::duration_to_dist (Moment d,Real k) const
 {
-  if (get_var("geometric"))
-    return geometric_spacing(d);
-  return arithmetic_spacing(d,k);
+  if (get_var ("geometric"))
+    return geometric_spacing (d);
+  return arithmetic_spacing (d,k);
 }
 
 
@@ -94,21 +100,21 @@ Paper_def::duration_to_dist (Moment d,Real k) const
 
   */
 Real
-Paper_def::arithmetic_constant(Moment d) const
+Paper_def::arithmetic_constant (Moment d) const
 {
-  return get_var("arithmetic_basicspace") - log_2(Moment(1,8) <? d);
+  return get_var ("arithmetic_basicspace") - log_2 (Moment (1,8) <? d);
 }
 
 Real
-Paper_def::arithmetic_spacing(Moment d ,Real k) const
+Paper_def::arithmetic_spacing (Moment d ,Real k) const
 {
-  return (log_2(d) + k)* get_var("arithmetic_multiplier");
+  return (log_2 (d) + k)* get_var ("arithmetic_multiplier");
 }
 
 Real
-Paper_def::geometric_spacing(Moment d) const
+Paper_def::geometric_spacing (Moment d) const
 {
-  Real dur_f = (d) ?pow (get_var ("geometric"), log_2(d)) : 0;
+  Real dur_f = (d) ?pow (get_var ("geometric"), log_2 (d)) : 0;
   return get_var ("basicspace") + get_var ("unitspace")  * dur_f;
 }
 
@@ -122,66 +128,81 @@ Paper_def::set (Lookup*l)
 }
 
 Real
-Paper_def::interline_f() const
+Paper_def::interline_f () const
 {
   return get_var ("interline");
 }
 
+Real
+Paper_def::rule_thickness () const
+{
+  return get_var ("rulethickness");
+}
 
 Real
-Paper_def::rule_thickness() const
+Paper_def::staffline_f () const
 {
   return get_var ("rulethickness");
 }
 
 Real
-Paper_def::interbeam_f() const
+Paper_def::staffheight_f () const
+{
+  return get_var ("staffheight");
+}
+
+Real
+Paper_def::interbeam_f (int multiplicity_i) const
 {
-  return get_var ("interbeam");
+  if (multiplicity_i <= 3)
+    return get_var ("interbeam");
+  else
+    return get_var ("interbeam4");
 }
+
 Real
-Paper_def::internote_f() const
+Paper_def::internote_f () const
 {
-  return interline_f() / 2;
+  return get_var ("internote");
 }
 
 Real
-Paper_def::note_width() const
+Paper_def::note_width () const
 {
   return get_var ("notewidth");
 }
 
 void
-Paper_def::print() const
+Paper_def::print () const
 {
 #ifndef NPRINT
   Music_output_def::print ();
   DOUT << "Paper {";
-  lookup_p_->print();
-  for (Assoc_iter<String,Real> i (*real_vars_p_); i.ok(); i++)
+  lookup_p_->print ();
+  for (Assoc_iter<String,Real> i (*real_vars_p_); i.ok (); i++)
     {
-      DOUT << i.key() << "= " << i.val () << "\n";
+      DOUT << i.key () << "= " << i.val () << "\n";
     }
   DOUT << "}\n";
 #endif
 }
 
 Lookup const *
-Paper_def::lookup_l()
+Paper_def::lookup_l ()
 {
   assert (lookup_p_);
   return lookup_p_;
 }
 
-IMPLEMENT_IS_TYPE_B1(Paper_def, Music_output_def);
+IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def);
 
 String
 Paper_def::TeX_output_settings_str () const
 {
-  String s("\n ");
-  for (Assoc_iter<String,Real> i (*real_vars_p_); i.ok(); i++)
+  String s ("\n ");
+  for (Assoc_iter<String,Real> i (*real_vars_p_); i.ok (); i++)
     s += String ("\\def\\mudelapaper") + i.key () + "{" + i.val () + "}\n";
-  s +=  lookup_p_->texsetting + "%(Tex id)\n";
+  s +=  lookup_p_->texsetting + "% (Tex id)\n";
   return s;
 }
 
diff --git a/lily/parser.hh b/lily/parser.hh
deleted file mode 100644 (file)
index 7e0baa9..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-typedef union {
-    Array<Interval>* intarr;
-    Array<Melodic_req*> *melreqvec;/* should clean up naming */
-    Array<String> * strvec;
-    Array<int> *intvec;
-    Box *box;
-    Chord * chord;
-    Duration *duration;
-    Identifier *id;
-    Translator* trans;
-    Music *music;
-    Music_list *musiclist;
-    Score *score;
-    Header *header;
-    Interval *interval;
-    Lookup*lookup;
-    Melodic_req * melreq;
-    Musical_req* musreq;
-    Music_output_def * outputdef;
-    Midi_def* midi;
-    Moment *moment;
-    Note_req *notereq;
-    Paper_def *paper;
-    Real real;
-    Request * request;
-    General_script_def * script;
-    Scalar *scalar;
-    String *string;
-    Atom * symbol;
-    Symtable * symtable;
-    Symtables * symtables;
-    Text_def * textdef;
-    Tempo_req *tempo;
-    char c;
-    const char *consstr;
-    int i;
-    int pair[2];
-    int ii[10];
-} YYSTYPE;
-#define        ALIAS   258
-#define        BAR     259
-#define        BEAMPLET        260
-#define        MAEBTELP        261
-#define        BREAK   262
-#define        CADENZA 263
-#define        CLEAR   264
-#define        CLEF    265
-#define        CONTAINS        266
-#define        CONSISTS        267
-#define        ACCEPTS 268
-#define        CM_T    269
-#define        DURATION        270
-#define        ABSDYNAMIC      271
-#define        END     272
-#define        GROUPING        273
-#define        TRANSLATOR      274
-#define        HEADER  275
-#define        IN_T    276
-#define        LYRIC   277
-#define        KEY     278
-#define        MELODIC 279
-#define        MIDI    280
-#define        MELODIC_REQUEST 281
-#define        METER   282
-#define        MM_T    283
-#define        MULTI   284
-#define        NOTENAMES       285
-#define        OCTAVE  286
-#define        OUTPUT  287
-#define        PAPER   288
-#define        PARTIAL 289
-#define        PLET    290
-#define        TELP    291
-#define        PT_T    292
-#define        SCORE   293
-#define        SCRIPT  294
-#define        SHAPE   295
-#define        SKIP    296
-#define        SPANDYNAMIC     297
-#define        STAFF   298
-#define        START_T 299
-#define        SYMBOLTABLES    300
-#define        TABLE   301
-#define        TRANSPOSE       302
-#define        TEMPO   303
-#define        TYPE    304
-#define        TEXID   305
-#define        TEXTSTYLE       306
-#define        TITLE   307
-#define        PROPERTY        308
-#define        VERSION 309
-#define        E_EXCLAMATION   310
-#define        E_SMALLER       311
-#define        E_BIGGER        312
-#define        E_CHAR  313
-#define        DIGIT   314
-#define        NOTENAME_ID     315
-#define        DURATION_IDENTIFIER     316
-#define        IDENTIFIER      317
-#define        MELODIC_REQUEST_IDENTIFIER      318
-#define        MUSIC_IDENTIFIER        319
-#define        VOICE_IDENTIFIER        320
-#define        POST_REQUEST_IDENTIFIER 321
-#define        SCRIPT_IDENTIFIER       322
-#define        COMMAND_IDENTIFIER      323
-#define        REAL_IDENTIFIER 324
-#define        TRANS_IDENTIFIER        325
-#define        INT_IDENTIFIER  326
-#define        SCORE_IDENTIFIER        327
-#define        MIDI_IDENTIFIER 328
-#define        PAPER_IDENTIFIER        329
-#define        REQUEST_IDENTIFIER      330
-#define        REAL    331
-#define        RESTNAME        332
-#define        STRING  333
-#define        UNSIGNED        334
-#define        POST_QUOTES     335
-#define        PRE_QUOTES      336
-
index f4db759c99bff8a909975413e303b080aa643642..871e5d97be4c934f78e444873e2586a8d0d9c6b2 100644 (file)
@@ -11,9 +11,6 @@
 
 #include <iostream.h>
 
-// mmm
-#define MUDELA_VERSION "0.1.10"
-
 #include "scalar.hh"
 #include "translation-property.hh"
 #include "script-def.hh"
 #include "duration-convert.hh"
 #include "change-translator.hh"
 #include "file-results.hh"
+#include "mudela-version.hh"
+
+// mmm
+Mudela_version oldest_version ("0.1.8");
+Mudela_version version ("0.1.13");
+
 
 // needed for bison.simple's malloc() and free()
 #include <malloc.h>
@@ -54,6 +57,8 @@ int guess_plet_a[GUESS_PLET] =
   4
 };
 
+Paper_def* current_paper = 0;
+
 #ifndef NDEBUG
 #define YYDEBUG 1
 #endif
@@ -131,7 +136,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token BAR
 %token BEAMPLET
 %token MAEBTELP
-%token BREAK
+%token PENALTY
 %token CADENZA
 %token CLEAR
 %token CLEF
@@ -175,6 +180,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token TEMPO
 %token TYPE
 %token TEXID
+%token MEASURES
 %token TEXTSTYLE
 %token TITLE
 %token PROPERTY
@@ -212,8 +218,9 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <header>         mudela_header mudela_header_body
 %type <box>    box
 %type <i>      open_request_parens close_request_parens
-%type <c>      open_abbrev_parens
+%type <i>      open_abbrev_parens
 %type <i>      open_plet_parens close_plet_parens
+%type <i>      post_quotes pre_quotes
 %type <music>  simple_element music_elt full_element lyrics_elt command_elt
 %type <i>      abbrev_type
 %type <i>      int unsigned
@@ -236,7 +243,8 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <musiclist> Voice Voice_body
 %type <chord>  Chord Chord_body
 %type <paper>  paper_block paper_body
-%type <real>   dim real
+%type <real>   dim real real_expression
+%type <real>   real_add_expression real_mult_expression real_primary
 %type <real>   unit
 %type <request> abbrev_command_req
 %type <request>        post_request structured_post_request
@@ -275,7 +283,8 @@ mudela:     /* empty */
 
 check_version:
        VERSION STRING ';'              {
-               if (String (*$2) != MUDELA_VERSION) {
+               Mudela_version ver (*$2);
+               if (!((ver >= oldest_version) && (ver <= version))) {
                        if (THIS->ignore_version_b_) {
                                THIS->here_input ().error ("Incorrect mudela version");
                        } else {
@@ -368,9 +377,8 @@ identifier_init:
                $$ = new Lookup_id ($1, IDENTIFIER);
 
        }
-       | real  {
+       | real {
                $$ = new Real_id (new Real ($1), REAL_IDENTIFIER);
-
        }
        | int   {
                $$ = new Int_id (new int ($1), INT_IDENTIFIER);
@@ -390,8 +398,6 @@ identifier_init:
        }
        ;
 
-
-
 translator_spec:
        TRANSLATOR '{' translator_spec_body '}'
                { $$ = $3; }
@@ -490,11 +496,16 @@ paper_block:
        '{' paper_body '}'      { $$ = $3; }
        ;
 
+optional_semicolon:
+       /* empty */
+       | ';'
+       ;
+
 paper_body:
        /* empty */                     {
                $$ = THIS->default_paper ();
        }
-       | PAPER_IDENTIFIER      {
+       | PAPER_IDENTIFIER optional_semicolon   {
                $$ = $1->paperdef ();
        }
        | paper_body OUTPUT STRING ';'  { 
@@ -502,11 +513,10 @@ paper_body:
                delete $3;
        }
        | paper_body symtables          { $$->set ($2); }
-       | paper_body STRING '=' dim ';'         {
-               $$->set_var (*$2, $4);
-       }
-       | paper_body STRING '=' real ';' {
+       | paper_body STRING '=' real_expression ';'             {
                $$->set_var (*$2, $4);
+// ugh, huh?
+               current_paper = $$;
        }
        | paper_body STRING '=' translator_spec {
                $$-> assign_translator (*$2, $4);
@@ -521,6 +531,43 @@ paper_body:
        }
        ;
 
+real_primary:
+       real
+       | dim
+       | STRING {
+// ugh, huh?
+//             $$ = THIS->default_paper ()->get_var (*$1);
+               $$ = current_paper->get_var (*$1);
+       }
+       | '(' real_expression ')' {
+               $$ = $2;
+       }
+       ;
+
+real_expression:
+       real_add_expression
+       ;
+
+real_add_expression:
+       real_mult_expression
+       | real_add_expression '+' real_mult_expression {
+               $$ = $1 + $3;
+       }
+       | real_add_expression '-' real_mult_expression {
+               $$ = $1 - $3;
+       }
+       ;
+
+real_mult_expression:
+       real_primary
+       | real_mult_expression '*' real_primary {
+               $$ = $1 * $3;
+       }
+       | real_mult_expression '/' real_primary {
+               $$ = $1 / $3;
+       }
+       ;
+
 shape_array:
        /* empty */ {
                $$ = new Array<Interval>;
@@ -727,10 +774,11 @@ verbose_command_req:
                $$ = new Bar_req (*$2);
                delete $2;
        }
-       | BREAK {
-               Break_force_req * f = new Break_force_req;
-               f-> set_spot (THIS->here_input ());
-               $$ = f;
+       | PENALTY '=' int       {
+               Break_req * b = new Break_req;
+               b->penalty_i_ = $3;
+               b-> set_spot (THIS->here_input ());
+               $$ = b;
        }
        | METER unsigned '/' unsigned   {
                Meter_change_req *m = new Meter_change_req;
@@ -811,29 +859,56 @@ post_request:
        }
        ;
 
+pre_quotes:
+       PRE_QUOTES {
+//             int i = $1;
+               $$ = $1;
+       }
+       | pre_quotes PRE_QUOTES {
+//             int i = $1 + $2;
+               $$ =  $1 + $2;
+       }
+       ;
 
+post_quotes:
+       POST_QUOTES {
+//             int i = $1;
+               $$ = $1;
+       }
+       | post_quotes POST_QUOTES {
+//             int i = $1 + $2;
+               $$ = $1 + $2;
+       }
+       ;
 
 /*
        URG!!
+
+       Whitespace mustn't be stripped.  So what?
+       Python is cool, and there even the amount *and* type of whitespace
+       is significant.  So this is not uncool per se, maybe context-free
+       just sucks for humans.
+       jcn
 */
 steno_melodic_req:
        NOTENAME_ID     {
-               $$ = $1->clone ()->musical ()->melodic ();
-               $$->octave_i_ += THIS->default_octave_i_;
+               Melodic_req* m =  $1->clone ()->musical ()->melodic ();
+               $$ = THIS->get_melodic_req (m, 0 + THIS->default_octave_i_);
        }
-       | steno_melodic_req POST_QUOTES         {
-               $$-> octave_i_ += $2;
+       | NOTENAME_ID post_quotes       {
+               Melodic_req* m =  $1->clone ()->musical ()->melodic ();
+               $$ = THIS->get_melodic_req (m, $2 + THIS->default_octave_i_);
        }
-       | PRE_QUOTES steno_melodic_req   {
-               $$ = $2;
-               $2-> octave_i_ -= $1;
+       | pre_quotes NOTENAME_ID         {
+               Melodic_req* m =  $2->clone ()->musical ()->melodic ();
+               $$ = THIS->get_melodic_req (m, -$1 + THIS->default_octave_i_);
        }
        ;
 
 steno_note_req:
        steno_melodic_req       {
                $$ = new Note_req;
-               * (Melodic_req *) $$ = *$1;
+               *(Melodic_req *) $$ = *$1;
                delete $1;
        }
        | steno_note_req   '!'          {
@@ -926,8 +1001,7 @@ close_request_parens:
        | E_BIGGER {
                $$ = '>';
        }
-       | close_plet_parens {
-       }
+       | close_plet_parens
        ;
 
 open_abbrev_parens:
@@ -969,10 +1043,8 @@ open_request_parens:
        | '['   {
                $$='[';
        }
-       | open_abbrev_parens {
-       }
-       | open_plet_parens {
-       }
+       | open_abbrev_parens
+       | open_plet_parens
        ;
 
 
@@ -1099,6 +1171,10 @@ voice_command:
                THIS->default_octave_i_ = $3->octave_i_;
                delete $3;
        }
+       | OCTAVE STRING {
+               THIS->set_octave_mode (*$2);
+               delete $2;
+       }
        | TEXTSTYLE STRING      {
                THIS->textstyle_str_ = *$2;
                delete $2;
@@ -1192,7 +1268,18 @@ music_elt:
        }
        | RESTNAME notemode_duration            {
                $$ = THIS->get_rest_element (*$1, $2);
-               delete $1;
+               delete $1;  // delete notename
+       }
+       | MEASURES notemode_duration    {
+               Multi_measure_rest_req* m = new Multi_measure_rest_req;
+               m->duration_ = *$2;
+               delete $2;
+
+               Chord*velt_p = new Request_chord;
+               velt_p->set_spot (THIS->here_input ());
+               velt_p->add (m);
+               $$ = velt_p;
+
        }
        ;
 
index 3e87138669d8b97ec1726fe21889c5e552acc3f0..6bbcbd6dcc468b4115a93cc92d4f60cb0514b30c 100644 (file)
@@ -10,6 +10,8 @@
 #include "p-col.hh"
 #include "debug.hh"
 #include "single-malt-grouping-item.hh"
+#include "dimen.hh"
+
 
 Rod::Rod (Single_malt_grouping_item *l, Single_malt_grouping_item *r)
 {
@@ -21,7 +23,7 @@ Rod::Rod (Single_malt_grouping_item *l, Single_malt_grouping_item *r)
   if (li.empty_b () || ri.empty_b ())
     distance_f_ = 0;
   else
-    distance_f_ = li[RIGHT] - ri[LEFT];
+    distance_f_ = li[RIGHT] - ri[LEFT] + 1.5 PT; // ugh
 }
          
 Rod::Rod ()
index 9f40322a0a16bbbd2cd6a1c6b2c02298bd7ff2ab..abe35406c0fbd2c5a174a8bb024f3f6fd145e44d 100644 (file)
@@ -9,10 +9,11 @@
 #include "debug.hh"
 #include "p-col.hh"
 #include "score-column.hh"
+#include "command-request.hh"
 
 Score_column::Score_column (Moment w)
 {
-  forced_break_b_ = false;
+  break_penalty_i_ = 0;
   when_ = w;
   musical_b_ = false;
 }
@@ -22,7 +23,7 @@ Score_column::do_print() const
 {
 #ifndef NPRINT
   DOUT << "mus "<< musical_b_ <<" at " <<  when_<< '\n';
-  if (forced_break_b_)
+  if (break_penalty_i_ >= Break_req::FORCE)
     DOUT << "Break forced";
       
   DOUT << "durations: [";
index cfce99e6b37b1e2ed26b344bb5b004513ef4ccc7..27b149a5471b7fd2c46e82982ef763e38b5c5e1f 100644 (file)
@@ -20,7 +20,7 @@
 
 Score_engraver::Score_engraver()
 {
-  disallow_break_b_ = false;
+  break_penalty_i_ = 0;
   scoreline_l_ =0;
   command_column_l_ =0;
   musical_column_l_ =0;
@@ -34,7 +34,7 @@ Score_engraver::prepare (Moment w)
   Global_translator::prepare (w);
   set_columns (new Score_column (w),  new Score_column (w));
   
-  disallow_break_b_ = false;
+  break_penalty_i_ = 0;
   post_move_processing();
 }
 
@@ -165,7 +165,7 @@ Score_engraver::typeset_all()
 void
 Score_engraver::do_pre_move_processing()
 {
-  if (!disallow_break_b_)
+  if (break_penalty_i_ > Break_req::DISALLOW)
     {
       get_staff_info().command_pcol_l ()-> breakable_b_ = true;
       breaks_i_ ++;
@@ -242,14 +242,18 @@ Score_engraver::do_try_request (Request*r)
 {
   bool gotcha = Engraver_group_engraver::do_try_request (r);  
 
-  if (!gotcha && r->command())
+  if (gotcha || !r->command ())
+    return gotcha;
+
+  Command_req * c = r->command ();
+  if (c->linebreak ())
     {
-      Command_req * c = r->command ();
-      if (c->disallowbreak ())
-       disallow_break_b_ = true;
-      else if (c->forcebreak ())
+      Break_req* b = (Break_req*)c->linebreak ();
+      if (b->penalty_i_ <= Break_req::DISALLOW)
+       break_penalty_i_ = b->penalty_i_;
+      else if (b->penalty_i_ >= Break_req::FORCE)
        {
-         command_column_l_->forced_break_b_ = true;
+         command_column_l_->break_penalty_i_ = b->penalty_i_;
          gotcha = true;
        }
     }
index 4a25a85a0fc78201c2013868b05a20a770d8acd6..b481921c3a88c722fef2d2c3600598297a9a3caf 100644 (file)
@@ -106,12 +106,12 @@ do_one_file (String init_str, String file_str)
 {
   if (init_str.length_i () && path.find (init_str).empty_b ())
     {
-      error (_("Can not find `") + init_str +"\'");
+      warning (_("Can not find `") + init_str +"\'");
       return ;
     }
   if (file_str.length_i () && path.find (file_str).empty_b ())
     {
-      error (_("Can not find `") + file_str + "'");
+      warning (_("Can not find `") + file_str + "'");
       return ;
     }
 
index 3361dadc554300bd23a7556fb351c90b5910671f..7ff3fca4819139019ba59af15b914eeba64e6117 100644 (file)
@@ -10,6 +10,7 @@
 #include "separating-group-spanner.hh"
 #include "single-malt-grouping-item.hh"
 #include "p-col.hh"
+#include "paper-def.hh"
 
 Array<Rod>
 Separating_group_spanner::get_rods () const
@@ -22,9 +23,11 @@ Separating_group_spanner::get_rods () const
       bool lb =spacing_unit_l_arr_[i]->column_l ()->breakable_b_;
       if (lb)
        {
-         a.push (Rod ((Single_malt_grouping_item*)
+         Rod r((Single_malt_grouping_item*)
                       spacing_unit_l_arr_[i]->find_prebroken_piece (RIGHT),
-                      spacing_unit_l_arr_[i+1]));
+                      spacing_unit_l_arr_[i+1]);
+         r.distance_f_ += paper ()->interline_f () *1.5;
+         a.push (r);
        }
       bool rb=spacing_unit_l_arr_[i+1]->column_l ()->breakable_b_;
       if (rb)
@@ -35,10 +38,12 @@ Separating_group_spanner::get_rods () const
        }
       if (lb && rb)
        {
-         a.push (Rod ((Single_malt_grouping_item*)
+         Rod r((Single_malt_grouping_item*)
                       spacing_unit_l_arr_[i]->find_prebroken_piece (RIGHT),
                       (Single_malt_grouping_item*)
-                      spacing_unit_l_arr_[i+1]->find_prebroken_piece (LEFT)));
+                      spacing_unit_l_arr_[i+1]->find_prebroken_piece (LEFT));
+         r.distance_f_ += paper ()->interline_f () *1.5;
+         a.push (r);
        }
        
     }
index 55133511a3aa2e1528ecb6c0680ef3e3662e0d51..4076e2bb7c548f8ffcff60f8985fca30570a0f26 100644 (file)
@@ -81,6 +81,9 @@ Slur_engraver::do_process_requests()
          // push a new slur onto stack.
          //(use temp. array to wait for all slur STOPs)
          Slur * s_p =new Slur;
+         Scalar prop = get_property ("slurdash");
+         if (prop.isnum_b ()) 
+           s_p->dash_i_ = prop;
          requests_arr_.push (slur_req_l);
          start_slur_l_arr_.push (s_p);
          announce_element (Score_elem_info (s_p, slur_req_l));
index f091c426caf442b62e760133fc6c98c699bec930..0971bfd73821688c3b4490fd21438fe94715f780 100644 (file)
@@ -26,7 +26,7 @@
 #include "boxes.hh"
 #include "bezier.hh"
 #include "encompass-info.hh"
-// #include "main.hh"
+#include "main.hh"
 
 IMPLEMENT_IS_TYPE_B1(Slur,Bow);
 
@@ -95,10 +95,10 @@ Slur::do_post_processing ()
   if (!dir_)
     set_default_dir ();
 
-  Real interline = paper ()->interline_f ();
-  Real internote = interline / 2;
-  Real notewidth = paper ()->note_width ();
-  Real const SLUR_MIN = 2.0 * interline;
+  Real interline_f = paper ()->interline_f ();
+  Real internote_f = interline_f / 2;
+  Real notewidth_f = paper ()->note_width ();
+  Real slur_min = paper ()->get_var ("slur_x_minimum");
 
   /* 
    [OSU]: slur and tie placement
@@ -109,12 +109,10 @@ Slur::do_post_processing ()
    * y = length < 5ss : horizontal raakpunt + d * 0.25 ss
      y = length >= 5ss : y next interline - d * 0.25 ss
      --> height <= 5 length ?? we use <= 3 length, now...
-
-   * suggested gap = ss / 5;
    */
-  // jcn: 1/5 seems so small?
-  Real gap_f = interline / 2; // 5;
   
+  Real gap_f = paper ()->get_var ("slur_x_gap");
+
   Drul_array<Note_column*> extrema;
   extrema[LEFT] = encompass_arr_[0];
   extrema[RIGHT] = encompass_arr_.top ();
@@ -129,29 +127,17 @@ Slur::do_post_processing ()
       if (extrema[d] != spanned_drul_[d]) 
        {
          dx_f_drul_[d] = -d 
-           *(spanned_drul_[d]->width ().length () -0.5*notewidth);
-         Direction u = d;
-         flip(&u);
-         if ((extrema[u] == spanned_drul_[u]) && extrema[u]->stem_l_)
-           {
-             dy_f_drul_[d] = extrema[u]->stem_l_->height ()[dir_];
-             dy_f_drul_[u] = extrema[u]->stem_l_->height ()[dir_];
-           }
+           *(spanned_drul_[d]->width ().length () -0.5 * notewidth_f);
 
          // prebreak
          if (d == RIGHT)
            {
              dx_f_drul_[LEFT] = spanned_drul_[LEFT]->width ().length ();
-//           dx_f_drul_[LEFT] -= 2 * notewidth;
 
              // urg
              if (encompass_arr_.size () > 1)
-               dx_f_drul_[RIGHT] += notewidth;
+               dx_f_drul_[RIGHT] += notewidth_f;
            }
-
-         // postbreak
-         if (d == LEFT)
-           dy_f_drul_[d] += 2.0 * dir_ * internote;
        }
       /*
         normal slur
@@ -159,21 +145,21 @@ Slur::do_post_processing ()
       else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_) 
         {
          dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_->height ()[dir_]);
-         dx_f_drul_[d] += 0.5 * notewidth - d * gap_f;
+         dx_f_drul_[d] += 0.5 * notewidth_f - d * gap_f;
          if (dir_ == extrema[d]->stem_l_->dir_)
            {
              if (dir_ == d)
-               dx_f_drul_[d] += 0.5 * (dir_ * d) * d * notewidth;
+               dx_f_drul_[d] += 0.5 * (dir_ * d) * d * notewidth_f;
              else
-               dx_f_drul_[d] += 0.25 * (dir_ * d) * d * notewidth;
+               dx_f_drul_[d] += 0.25 * (dir_ * d) * d * notewidth_f;
            }
        }
       else 
         {
          dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval ()
-           [dir_])* internote;
+           [dir_]) * internote_f;
        }
-      dy_f_drul_[d] += dir_ * interline;
+      dy_f_drul_[d] += dir_ * interline_f;
     }
   while (flip(&d) != LEFT);
 
@@ -185,14 +171,22 @@ Slur::do_post_processing ()
        */
       if (extrema[d] != spanned_drul_[d]) 
         {
+         Direction u = d;
+         flip(&u);
+
+         // postbreak
+         if (d == LEFT)
+           dy_f_drul_[u] += dir_ * internote_f;
+
+         dy_f_drul_[d] = dy_f_drul_[(Direction)-d];
+
          // pre and post
-         if (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT] < SLUR_MIN)
+         if (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT] < slur_min)
            {
-             dx_f_drul_[d] -= d * SLUR_MIN 
+             dx_f_drul_[d] -= d * slur_min 
                - (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
-             dx_f_drul_[d] = dx_f_drul_[(Direction)-d] + d * SLUR_MIN;
+             dx_f_drul_[d] = dx_f_drul_[(Direction)-d] + d * slur_min;
            }
-         dy_f_drul_[d] = dy_f_drul_[(Direction)-d];
        }
      }
   while (flip(&d) != LEFT);
index 6e921573c9c9496691c4b000cdbce71a85f9fa00..0849f15c609b1c3dfb09db00c45659661f3022b6 100644 (file)
@@ -51,7 +51,9 @@ Piano_brace::do_width() const
 Atom
 Staff_bracket::get_bar_sym (Real dy) const
 {
-  return paper()->lookup_l ()->vbracket (dy);
+  Atom a = paper()->lookup_l ()->vbracket (dy);
+  a.translate_axis (- 1.5 * a.extent ().x ().length (), X_AXIS);
+  return a;
 }
 
 Interval
index ac4b00b623d9118898dbb38ce321f5f38a254c1f..3855777a58411d0e884eea81d220460d5d44ce1c 100644 (file)
@@ -317,6 +317,11 @@ Spring_spacer::lower_bound_solution (Col_hpositions*positions) const
   positions->satisfies_constraints_b_ = check_constraints (solution_vec);
 }
 
+Spring_spacer::Spring_spacer ()
+{
+  energy_normalisation_f_ = 1.0;
+}
+
 void
 Spring_spacer::solve (Col_hpositions*positions) const
 {
@@ -340,7 +345,7 @@ Spring_spacer::solve (Col_hpositions*positions) const
          WARN << _("solution doesn't satisfy constraints.\n") ;
        }
       position_loose_cols (solution_vec);
-      positions->energy_f_ = calculate_energy_f (solution_vec);
+      positions->energy_f_ = calculate_energy_f (solution_vec) / energy_normalisation_f_;
       positions->config = solution_vec;
       positions->error_col_l_arr_ = error_pcol_l_arr();
     }
index 11990ea3e7e08e3f69f4ef4201244cc46b15c73e..d109e96e8062e39faf03ae7958441fc4e21e0086 100644 (file)
@@ -28,8 +28,8 @@ Stem_info::Stem_info (Stem const *s)
   mult_i_ = s->mult_i_;
 
   /*
-    [todo] 
-    * get algorithm runtime
+    [TODO]
+    make this runtime
 
     Breitkopf + H\"artel:
     miny_f_ = interline + #beams * interbeam
@@ -45,18 +45,16 @@ Stem_info::Stem_info (Stem const *s)
 
   Real internote_f = s->paper ()->internote_f ();
   Real interline_f = 2.0 * internote_f;
-  Real interbeam_f = s->paper ()->interbeam_f ();
-  Real staffline_f = s->paper ()->rule_thickness ();
-  Real beam_f = 0.48 * (interline_f - staffline_f);
+  Real interbeam_f = s->paper ()->interbeam_f (mult_i_);
+  Real beam_f = s->paper ()->beam_thickness_f ();
          
-  if (check_debug && !monitor->silent_b ("Stem_info"))
-    {
+
+  {
       static int i = 1;
-      cout << "******" << i++ << "******" << endl;
-      cout << "begin_f: " << s->stem_begin_f () * dir_ << endl;
-      // urg urg urg
-      cout << "chord_f/i: " << s->chord_start_f () * dir_ / internote_f << endl;
-    }
+      DOUT << "******" << i++ << "******\n" 
+          << "begin_f: " << s->stem_begin_f () * dir_ 
+          << "\nchord_f/i: " << s->chord_start_f () * dir_ / internote_f << '\n';
+  }
 
   /*
     For simplicity, we'll assume dir = UP and correct if 
@@ -84,13 +82,12 @@ Stem_info::Stem_info (Stem const *s)
   idealy_f_ /= internote_f;
   miny_f_ /= internote_f;
 
-  if (check_debug && !monitor->silent_b ("Stem_info"))
-    {
-      cout << "dir_: " << dir_ << endl;
-      cout << "mult_i_: " << mult_i_ << endl;
-      cout << "idealy_f_: " << idealy_f_ << endl;
-      cout << "miny_f_: " << miny_f_ << endl;
-    }
+
+  DOUT << "dir_: " << dir_ << '\n';
+  DOUT << "mult_i_: " << mult_i_ << '\n';
+  DOUT << "idealy_f_: " << idealy_f_ << '\n';
+  DOUT << "miny_f_: " << miny_f_ << '\n';
+
 
   idealy_f_ = miny_f_ >? idealy_f_;
 }
index a2361b4fe8a295e77fb14e8b3d0ea11051b771d8..d867f16bf357b1773918b294d84e32e41556db4d 100644 (file)
@@ -162,7 +162,7 @@ void
 Stem::set_default_stemlen ()
 {
   Real len = STEMLEN;
-  Real dy = paper ()->interbeam_f ();
+  Real dy = paper ()->interbeam_f (mult_i_);
 
   if (!dir_)
     set_default_dir ();
index a690cb36a11b79e9442d7ff1210452ea1fee4c26..ae9f6d2961f7001e2b2bcf09b141f51b1d06a2a0 100644 (file)
@@ -61,6 +61,9 @@ Tie_engraver::do_process_requests()
   if (req_l_ && ! tie_p_)
     {
       tie_p_ = new Tie;
+      Scalar prop = get_property ("slurdash");
+      if (prop.isnum_b ()) 
+       tie_p_->dash_i_ = prop;
     }
 }
 
index 0d17f409ce08caa247a7f2d55c12ad7c629e45b1..9fe73f7d9ee9a9792e104fc459ead924b3d282a8 100644 (file)
@@ -11,6 +11,7 @@
 #include "note-head.hh"
 #include "p-col.hh"
 #include "debug.hh"
+#include "main.hh"  // experimental features
 
 IMPLEMENT_IS_TYPE_B1(Tie,Bow);
 
@@ -65,7 +66,7 @@ Tie::do_post_processing()
 
   Real notewidth = paper ()->note_width ();
   Real interline_f = paper ()->interline_f ();
-  Real const TIE_MIN = 2.0 * interline_f;
+  Real tie_min = paper ()->get_var ("tie_x_minimum");
 
   /* 
    [OSU]: slur and tie placement
@@ -76,11 +77,9 @@ Tie::do_post_processing()
    * y = length < 5ss : horizontal raakpunt
      y = length >= 5ss : y next interline - d * 0.25 ss
      --> height <= 5 length ?? we use <= 3 length, now...
-
-   * suggested gap = ss / 5;
    */
-  // jcn: 1/5 seems so small?
-  Real gap_f = interline_f / 2; // 5;
+
+  Real gap_f = paper ()->get_var ("slur_x_gap");
 
   Direction d = LEFT;
   do
@@ -122,11 +121,11 @@ Tie::do_post_processing()
       // tie attached to outer notehead
       if (!head_l_drul_[d])
        {
-         if (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT] < TIE_MIN)
+         if (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT] < tie_min)
            {
-             dx_f_drul_[d] -= d * TIE_MIN 
+             dx_f_drul_[d] -= d * tie_min 
                - (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
-             dx_f_drul_[d] = dx_f_drul_[(Direction)-d] + d * TIE_MIN;
+             dx_f_drul_[d] = dx_f_drul_[(Direction)-d] + d * tie_min;
            }
 
          dy_f_drul_[d] = dy_f_drul_[(Direction) -d];
index 17f110fda3a9524acc0e060c5a689c4e389ec19a..a994334fc2f5bde10ec731916464c90acc5823aa 100644 (file)
 #include "score-elem-info.hh"
 #include "multi-measure-rest.hh"
 
-void
-Timing_engraver::acknowledge_element (Score_elem_info i)
-{
-  if (!i.elem_l_->is_type_b (Multi_measure_rest::static_name ()))
-    return;
-  if (((Multi_measure_rest*)i.elem_l_->item ())->measures_i_)
-    mmrest_b_ = true;
-}
 
 void
 Timing_engraver::fill_staff_info (Staff_info &inf)
index b244db903c8de7e3fb14b079107c28f64c9e23ce..ce04be40a97f4e25c60fab59d08b3c8348994cb4 100644 (file)
@@ -16,7 +16,6 @@
 Timing_translator::Timing_translator ()
 {
   default_grouping_ = Rhythmic_grouping (MInterval (0, 1), 4); // ugh
-  mmrest_b_ = false;
 }
 
 bool
@@ -115,9 +114,10 @@ Timing_translator::do_pre_move_processing()
   Global_translator *global_l =
     daddy_trans_l_->ancestor_l (100)->global_l (); // ugh 100.
 
-  if (!time_.cadenza_b_ && !mmrest_b_)
+
+  bool allbars = ! get_property ("SkipBars").to_bool ();
+  if (!time_.cadenza_b_ && allbars)
     global_l->add_moment_to_process (time_.next_bar_moment ());
-//  mmrest_b_ = false;
 }
 
 IMPLEMENT_IS_TYPE_B1(Timing_translator, Translator);
index e718c7779ac0a067f701c9da20fb28ef77ff6ae5..578dcea07edaa85999bb0fd805b3dba447bd96ea 100644 (file)
@@ -30,11 +30,12 @@ POD2HTML5004=$(POD2HTML) --noindex --infile $< --outfile=$@;  sh $(depth)/bin/ad
 POD2HTML5003=$(POD2HTML) $< ; mv $(notdir $@) $(outdir)/
 
 
-do_pod2html=$(POD2HTML5003)
+do_pod2html=$(POD2HTML5004)
 
 
 $(outdir)/%.html: %.pod $(depth)/VERSION
        $(do_pod2html) 
+       add-html-footer $@
 
 $(outdir)/%.5: %.pod
        $(pod2groff)
index 65f407c8fbcabdcec1077f2d5b3a8925c80ea164..bb489a95d4edc785c928c561b0cef706c00fd3a7 100644 (file)
@@ -3,9 +3,8 @@
 
 include $(depth)/make/Include.make
 LYFILES = $(wildcard *.ly)
-TEXFILES = $(wildcard *.tex)
 M4FILES = $(wildcard *.m4)
-DISTFILES = Makefile $(EXTRA_DISTFILES) $(LYFILES) $(TEXFILES) $(wildcard *.m4)
+DISTFILES = Makefile $(EXTRA_DISTFILES) $(LYFILES) $(wildcard *.m4)
 #
 
 OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%))
index f10c3474c7ba5249a721456d8e490082808dfe96..ef9c9ccd7879a42a6d9452196bad3d1ef7451fad 100644 (file)
@@ -66,13 +66,24 @@ Makefile: make/Toplevel.make.in
 
 
 website:
+       $(MAKE) CONFIGSUFFIX='www' local-WWW
        $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
-
+       tar cfz $(outdir)/htmldoc.tar.gz  `find Documentation -type d -name 'out-www' -print` out-www
 
 examples:
        $(MAKE) CONFIGSUFFIX='www' -C input WWW
        $(MAKE) CONFIGSUFFIX='www' -C mutopia WWW
-       tar cfz $(outdir)/examples.tar.gz  `find input mutopia -type d -name 'out-www' -print`
+       tar --exclude='*.dvi' --exclude='*.tex' --exclude='*.ps' -czf $(outdir)/examples.tar.gz  `find input mutopia -type d -name 'out-www' -print`
+
+
+
+
 
+local-WWW: $(outdir)/index.html
 
+$(outdir)/index.html: Documentation/$(outdir)/topweb.html NEWS
+       cp Documentation/$(outdir)/topweb.html $@
+       add-html-footer --news=NEWS $@
 
+Documentation/$(outdir)/topweb.html: 
+       make -C Documentation/ html
index bb47c54f876b699f6e48a20039d6bf5751097666..7f9c96fbea9e0676eae93a583a92c277f2c56f62 100644 (file)
@@ -10,4 +10,5 @@ html_subdirs=$(addprefix --subdirs ,$(SUBDIRS))
 
 local-WWW: $(ly_examples) $(ps_examples) $(gif_examples)
        (cd $(outdir); $(PYTHON) ../$(depth)/bin/mutopia-index.py --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(examples))
+       add-html-footer $(outdir)/index.html
 
index bf99632045eebf6a69592bb07b7952eb0541069d..594fc775178c259432144f9f7e5be45b53618b0e 100644 (file)
@@ -9,17 +9,18 @@ URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
 Icon: lelie_icon.gif
 Buildroot: /tmp/lilypond-install
+Prereq: tetex
 
 %description 
-LilyPond is the GNU Project music typesetter.  The program
-generates visual or auditive output from a music 
-definition file: it can typeset formatted sheet music 
-to a TeX file and play (mechanical) performances to a 
+LilyPond is the GNU Project music typesetter.  This program can print
+beautiful sheet music from a  music 
+definition file.  It can also play a play (mechanical) performances to a 
 MIDI file.  Features include multiple staffs, meters, 
 clefs, keys, lyrics, versatile input-language, 
 cadenzas, beams, slurs, triplets.
 It includes a nice font of musical symbols.
 
+
 %prep
 %setup
 %build
@@ -53,8 +54,8 @@ make prefix="$RPM_BUILD_ROOT/usr" install
 /usr/share/lilypond/
 %post
 
-ln -s 
+
+ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
 texhash                # takes some time...
 rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
 
-ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
index d110ebc68efc605b1a6d2fa1e2ea5ad609f526fa..b735fc4dda3e3354186014865309fafaee7aecca 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.61
-Inschrijf datum: 03MAY98
+Versie: 0.1.62
+Inschrijf datum: 06MAY98
 Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
                Het programma genereert muziek in zichtbare of 
                hoorbare vorm uit uit een muzikale definitie file: 
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-0.1.61.tar.gz 
+       395k lilypond-0.1.62.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-0.1.61.tar.gz 
+       395k lilypond-0.1.62.tar.gz 
 Copi"eer politie: GPL
 End
index ab0be3a7453b70b727b8ddfe052d955f19c9aab2..b8eb27fcb86737bbaca6bb9a5e5acae461653033 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 0.1.61
-Entered-date: 03MAY98
+Version: 0.1.62
+Entered-date: 06MAY98
 Description: LilyPond is the GNU Project music typesetter.  The program
                generates visual or auditive output from a music 
                definition file: it can typeset formatted sheet music 
@@ -15,8 +15,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       570k lilypond-0.1.61.tar.gz 
+       570k lilypond-0.1.62.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-       570k lilypond-0.1.61.tar.gz 
+       570k lilypond-0.1.62.tar.gz 
 Copying-policy: GPL
 End
index 289561852befce0e104296f7a1e62eeb1dc42bcf..6f7c2d11c7294b976d5514847a0d50415f718f51 100644 (file)
@@ -1,25 +1,26 @@
 Name: lilypond
-Version: 0.1.61
+Version: 0.1.62
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-0.1.61.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-0.1.62.tar.gz
 Summary: A program for typesetting music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
 Icon: lelie_icon.gif
 Buildroot: /tmp/lilypond-install
+Prereq: tetex
 
 %description 
-LilyPond is the GNU Project music typesetter.  The program
-generates visual or auditive output from a music 
-definition file: it can typeset formatted sheet music 
-to a TeX file and play (mechanical) performances to a 
+LilyPond is the GNU Project music typesetter.  This program can print
+beautiful sheet music from a  music 
+definition file.  It can also play a play (mechanical) performances to a 
 MIDI file.  Features include multiple staffs, meters, 
 clefs, keys, lyrics, versatile input-language, 
 cadenzas, beams, slurs, triplets.
 It includes a nice font of musical symbols.
 
+
 %prep
 %setup
 %build
@@ -53,8 +54,8 @@ make prefix="$RPM_BUILD_ROOT/usr" install
 /usr/share/lilypond/
 %post
 
-ln -s 
+
+ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
 texhash                # takes some time...
 rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
 
-ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
index bbbfa3a02179038482e643a27445ad8a39c95a24..8f78c89183e523b500196a05107e538c8fe8a906 100644 (file)
--- a/mf/README
+++ b/mf/README
@@ -1,43 +1,5 @@
 
-This is a font of music symbols.  All MF sources are original.  The
-symbols are modelled after various editions of music, notably
-
-       - Baerenreiter
-       - Hofmeister
-       - Breitkopf
-       - Durand & C'ie
-
-The best references on Music engraving are [Wanske] and [Ross], some
-of their insights have also been used.  Although a matter of taste,
-I'd say that Baerenreiter has the finest typography of all.
-
-Traditional engraving uses a set of 9 standardised sizes for Staffs
-(running from 0 to 8).  
-
-I tried measuring those (helped by a magnifying glass), and I get the
-staffsizes in the following table.  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.
-
-Staffsize      Numbers         Name
-
-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
-
-
-This table is partially taken from [Ross].  Most music is set in No.3,
-but the papersizes usually are bigger than standard printer paper
-(such as A4).  If you plot these, you'll notice that the sizes (With
-exception of 26) almost (but not quite) form a arithmetic progression.
-
-[Ross] states that the dies (the stamps to make the symbols) come in
-12 different sizes.
-
+This is a font of music symbols.  All MF sources are original.  Most
+of the doco is in comments in the MF code, and in
+Documentation/tex/fonts.doc
 
index 2a869d647c7f143fc0e867f99f46864e1ddc3ffa..5fa339cb6669f8be6950a1bec2f95d7e0dad7db2 100644 (file)
@@ -91,7 +91,7 @@ Mudela_stream::header()
   *os_p_ << filename_str_g;
   *os_p_ << "\n\n";
   // ugh
-  *os_p_ << "\\version \"0.1.10\";\n";
+  *os_p_ << "\\version \"0.1.11\";\n";
 }
 
 void
index 48e53aa779b72f2b3a8a4e9312e2c8a671da709d..27444a94258aa04353c8e218bbb5608a4a3e20f4 100644 (file)
 
 ; FIXME
 ;          ( ?%  .  ". 124b" )
-:          ( ?{  .  ". 23" )
+;          ( ?{  .  ". 23" )
            ))
 
   )    
index 6c99e7ed703be2ef8512202d2c727d1333d1a713..53ff1a74cdfdb94876e4c69656d5793a6546c6d8 100644 (file)
@@ -11,9 +11,8 @@ copyright =    "public domain";
 
 \include "global.ly"
 \include "clarinetti.ly"
-
+\include "part-paper.ly"
 \score{
-%      \property Score.part = 1
        \$clarinetti_staff
        \paper{}
 }
index e7cccf9b0c73899577397887dc66ee138f80c85f..0e11954b5e06bcd1d6ec9f89cbb315282ecfab0e 100644 (file)
@@ -13,11 +13,11 @@ copyright =  "public domain";
 
 clarinetto1 = \melodic{
        \octave c';     
-       r1*2 | c'4-.\ff r r2 | r1*3 |
-       d'4-. r r2 | r1*3 |
+       R1 *2 | c'4-.\ff r r2 | R1 *3 |
+       d'4-. r r2 | R1 *3 |
        es'4-. r r2 | r1 |
        es'4-. r r2 | d'4-. r r2 |
-       r1*4 |
+       R1 *4 |
        as2\p_"\ \ \ cresc." ( g | )fis2. g4-.\f |
 }
 
index 0ad1fa5f6faf529a947395ae5d159c4d8b1f3d6c..cc12989f5b2e40d41fa1a01c56717d0c916a98df 100644 (file)
@@ -20,11 +20,11 @@ clarinetto2 = \melodic{
 % huh?
 
 %      r1 | r1 | as4-.\ff r r2 | r1 |
-       r1*2 | as4-. r r2 | r1*3 |
-       b4-. r r2 | r1*3 |
+       R1 *2 | as4-. r r2 | R1 *3 |
+       b4-. r r2 | R1 *3 |
        c'4-. r r2 | r1 |
        c'4-. r r2 | b4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 'b4-. |
 }
 
index 83334d2b1e81173e11f0fe54cb50b086b85572b5..d012bb23b6f873eaca1d78363666ab08a0dc2b70 100644 (file)
@@ -61,6 +61,7 @@ strijkers = \type Staff_group = strijkers_group <
 \score{
        <
                \textstyle "italic";
+
                \$legno
                \$koper
                \$timpani_g
index eb12f83988d6b04b32e094011ef12d189a9ad824..8b468982bdc8461fc0dc445200d934a01c040ec1 100644 (file)
@@ -13,9 +13,8 @@ copyright =    "public domain";
 
 \include "global.ly"
 \include "corni.ly"
-
+\include "part-paper.ly"
 \score{
-%      \property Score.part = 1
        \$corni_staff
        \paper{}
 }
index 3b05a152085f3af0a6d327b62f8fbba8e2c598db..53e2a68f4d485bc1788c68e1c86cb27265290779 100644 (file)
@@ -13,11 +13,11 @@ copyright =  "public domain";
 
 corno1 = \melodic{
        \octave c';     
-       r1*2 | as'4-.\ff r r2 | r1*3 |
-       as'4-. r r2 | r1*3 |
+       R1 *2 | as'4-.\ff r r2 | R1 *3 |
+       as'4-. r r2 | R1 *3 |
        es'4-. r r2 | r1 |
        g'4-. r r2 | g'4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 g'4-.\f |
 }
 
index 73f7340206ea08a93bfdaa550e83f8b68a35e821..cebe2e3d1ae26bab4cb2f7cd98c1a47420f5155a 100644 (file)
@@ -15,11 +15,11 @@ corno2 = \melodic{
        \octave c';     
 % koor: corno-part.ly
 %      r1 | r1 | f'4-.\ff r r2 | r1 |
-       r1*2 | f'4-. r r2 | r1*3 |
-       f'4-. r r2 | r1*3 |
+       R1 *2 | f'4-. r r2 | R1 *3 |
+       f'4-. r r2 | R1 *3 |
        es'4-. r r2 | r1 |
        g4-. r r2 | g4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 g4-. |
 }
 
index 8e51cf63734cdb398fb5a248e75939b44493a9c8..1b47dc6cf2908d33e81b744a53d7fc79ecd6232e 100644 (file)
@@ -13,9 +13,8 @@ copyright =    "public domain";
 
 \include "global.ly"
 \include "fagotti.ly"
-
+\include "part-paper.ly"
 \score{
-%      \property Score.part = 1
        \$fagotti_staff
        \paper{}
 }
index f238406f2899bf16e3f6e2eb704c0b57c8286a5a..9340102b2753e5920406a2d3d6db8486ff821b28 100644 (file)
@@ -13,11 +13,11 @@ copyright =  "public domain";
 
 fagotto1 = \melodic{
        \octave c;      
-       r1*2 | as4-.\ff r r2 | r1*3 |
-       as4-. r r2 | r1*3 |
+       R1 *2 | as4-.\ff r r2 | R1 *3 |
+       as4-. r r2 | R1 *3 |
        a4-. r r2 | r1 |
        c'4-. r r2 | b4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 g4-.\f |
 }
 
index 1a1f0bbeda678bc5656bf0739f2fbb2fe2775373..852af207f3de5f4962c8dfae1cb41e1fbd6c99a1 100644 (file)
@@ -15,11 +15,11 @@ fagotto2 = \melodic{
        \octave c;      
 % koor
 %      r1 | r1 | f4-.\ff r r2 | r1 |
-       r1*2 | f4-. r r2 | r1*3 |
-       f4-. r r2 | r1*3 |
+       R1 *2 | f4-. r r2 | R1 *3 |
+       f4-. r r2 | R1 *3 |
        fis4-. r r2 | r1 |
        g4-. r r2 | g4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 'g4-. |
 }
 
index aa6e8d582010dd143e7ebac095ad19955f2b484d..59750180df01a252f030da532e890abe1a23109f 100644 (file)
@@ -13,9 +13,9 @@ copyright =    "public domain";
 
 \include "global.ly"
 \include "flauti.ly"
+\include "part-paper.ly"
 
 \score{
-%      \property Score.part = 1
        \$flauti_staff
        \paper{}
 }
index 58ed585f9ee94dd9f3c3f5313f9830a0a04c1261..71412f636cff46592182e3690958a1a5b364fac9 100644 (file)
@@ -13,11 +13,11 @@ copyright =  "public domain";
 
 flauto1 = \melodic{
        \octave c'';    
-       r1*2 | c'4-.\ff r r2 | r1*3 |
-       d'4-. r r2 | r1*3 |
+       R1 *2 | c'4-.\ff r r2 | R1 *3 |
+       d'4-. r r2 | R1 *3 |
        es'4-. r r2 | r1 |
        g'4-. r r2 | b4-. r r2 |
-       r1*4 |
+       R1 *4 |
        r2 es'\p_"\ \ \ cresc." ( | )dis'2. es'4-.\f |
 }
 
index 7a3f7707aabadd1067601a01a7537325c7e5a5f2..3d983054f51bba232ad0742ec9ca32a4c7a46d31 100644 (file)
@@ -15,11 +15,11 @@ flauto2 = \melodic{
        \octave c'';    
 % koor
 %      r1 | r1 | as4-.\ff r r2 | r1 |
-       r1*2 | as4-. r r2 | r1*3 |
-       b4-. r r2 | r1*3 | 
+       R1 *2 | as4-. r r2 | R1 *3 |
+       b4-. r r2 | R1 *3 | 
        c'4-. r r2 | r1 |
        es'4-. r r2 | d4-. r r2 |
-       r1*4 |
+       R1 *4 |
        r2 r2 | r2 r4 b4-. |
 }
 
index a9b7601c5af9902ffd357ef1cebf08f6e0fa804c..2be8732ec381c68fdeedf49d3cc04961f85835e7 100644 (file)
@@ -13,11 +13,11 @@ copyright =  "public domain";
 
 oboe1 = \melodic{
        \octave c'';    
-       r1*2 | as4-.\ff r r2 | r1*3 |
-       as4-. r r2 | r1*3 |
+       R1 *2 | as4-.\ff r r2 | R1 *3 |
+       as4-. r r2 | R1 *3 |
        a4-. r r2 | r1 |
        g4-. r r2 | g4-. r r2 |
-       r1*4 |
+       R1 *4 |
        as2\p_"\ \ \ cresc." ( g | )fis2. g4-.\f |
 }
 
index 1090871206b297625779b3d5b288ea80ee1d1b42..827629ad2d5e39d23abb8b8c4033b22e29a03687 100644 (file)
@@ -15,11 +15,11 @@ oboe2 = \melodic{
        \octave c'';    
 % koor
 %      r1 | r1 | f4-.\ff r r2 | r1 |
-       r1*2| f4-. r r2 | r1*3 |
-       f4-. r r2 | r1*3 |
+       R1 *2| f4-. r r2 | R1 *3 |
+       f4-. r r2 | R1 *3 |
        es4-. r r2 | r1 |
        es4-. r r2 | 'b4-. r r2 |
-       r1*5 | 
+       R1 *5 | 
        r2 r4 'b4-. |
 }
 
index 99a94e7c988835a5972c9f4c23aef4199af32f59..f3d8ed7c8a88c936cf5a18d6e8f92fa9df6e5c37 100644 (file)
@@ -13,10 +13,10 @@ copyright =  "public domain";
 
 \include "global.ly"
 \include "oboi.ly"
+\include "part-paper.ly"
 
 \score{
-%      \property Score.part = 1
-       \$oboi_staff
+       \$oboi_staff 
        \paper{}
 }
 
diff --git a/mutopia/Coriolan/part-paper.ly b/mutopia/Coriolan/part-paper.ly
new file mode 100644 (file)
index 0000000..2c312d8
--- /dev/null
@@ -0,0 +1,32 @@
+% paper20.ly
+
+\include "table20.ly"
+\include "paper20.ly"
+default_paper = \paper {
+       \paper_twenty
+       Score = \translator {
+       \type Score_engraver;
+
+       \consists "Timing_engraver";
+       % uncomment to bar numbers on a whole system.
+%{
+       \consists "Bar_column_engraver";
+       \consists "Bar_number_engraver";
+%}
+       \consists "Span_score_bar_engraver";
+       \consists "Score_priority_engraver";
+       \consists "Priority_horizontal_align_engraver";
+       \consists "Vertical_align_engraver";
+
+
+       \accepts "Staff_group";
+       \accepts "Staff";
+       \accepts "Rhythmic_staff";      
+       \accepts "Lyrics";
+       \accepts "Grand_staff";
+       SkipBars = "1";
+}
+
+
+}
+
index 8936643c76d54243744b85689ab103207f40cdb7..e08b14e2d13b367f92ace3f15a167b17b8ab0f3c 100644 (file)
@@ -13,11 +13,11 @@ copyright =  "public domain";
 
 timpani = \melodic{
        \octave c;      
-       r1*2 | c4-.\ff r r2 | r1*3 |
-       c4-. r r2 | r1*3 |
+       R1 *2 | c4-.\ff r r2 | R1 *3 |
+       c4-. r r2 | R1 *3 |
        c4-. r r2 | r1 |
        'g4-. r r2 | 'g4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 'g4-. |
 }
 
index 802a494d0dfac6f2ea54c9b1b4370c82b425851d..47911886ab80786514b38b43b3f44b83f5aab45a 100644 (file)
@@ -13,10 +13,9 @@ copyright =   "public domain";
 
 \include "global.ly"
 \include "trombe.ly"
-
+\include "part-paper.ly"
 \score{
-%      \property Score.part = 1
-       \$trombe_staff
+       \$trombe_staff 
        \paper{}
 }
 
index 6b3bef51ab6aafb823122e597ee31a7e830843ef..d8d489027ffe03fd344af45036d5ea7c7737061a 100644 (file)
@@ -13,11 +13,11 @@ copyright =  "public domain";
 
 trombo1 = \melodic{
        \octave c';     
-       r1*2 | c'4-.\ff r r2 | r1*3 |
-       c'4-. r r2 | r1*3 |
+       R1 *2 | c'4-.\ff r r2 | R1 *3 |
+       c'4-. r r2 | R1 *3 |
        c'4-. r r2 | r1 |
        g4-. r r2 | g4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 g4-.\f |
 }
 
index f123b9a32c9447475ec28c8c1d569eb5a8cb2b6f..f47ef9acbb9130199a2a21ce88c39dee3a77b112 100644 (file)
@@ -15,11 +15,11 @@ trombo2 = \melodic{
        \octave c';     
 % koor
 %      r1 | r1 | c4-.\ff r r2 | r1 |
-       r1*2 | c4-. r r2 | r1*3 |
-       c4-. r r2 | r1*3 |
+       R1 *2 | c4-. r r2 | R1 *3 |
+       c4-. r r2 | R1 *3 |
        c4-. r r2 | r1 |
        'g4-. r r2 | 'g4-. r r2 |
-       r1*5 |
+       R1 *5 |
        r2 r4 'g4-. |
 }
 
index 2726b10874a114f6a8bedb249c91f0f841c8dad9..1d8447b86f47d8e871cf058b8a155294f85045f2 100644 (file)
@@ -17,7 +17,7 @@ violino2 = \melodic{
        c1 ~ | c | <as'4-. b-. d-.> r r2 | r1 |
        c1 ~ | c | <c''4-. es'-. fis-.> r r2 | r1 |
        <c'4-. es-. 'g-.> r r2 | <b4-. d-. 'g-.> r r2 |
-       r1*3 |
+       R1 *3 |
        r2 ['b8-.\p f-.] [f()es] |
        [es8-. as-.] as4.-"cresc." g8-. g4 ~ |
        [g8 fis-.] fis4 ~ fis g-.\f |
index 46c474af9586b9484ca17b4ddb6f95b87027966f..6141969190e54241442a80edee674279c1cee4d9 100644 (file)
@@ -5,6 +5,7 @@
 depth = ../..
 #
 
+EXTRA_DISTFILES=preludes.tex
 # descent order into subdirectories:
 #
 SUBDIRS = 
index e75e39eb832bdab3e801713dfdd722522c97041c..96a0ab180e35c22a49a93c4f6c54a8da4557562f 100644 (file)
@@ -12,8 +12,6 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\include "paper20.ly"
-
 one = \melodic{
        \octave c'';
        \textstyle "italic";
@@ -114,8 +112,7 @@ grand_staff = \type Grand_staff <
 >
 
 a4 = \paper{
-       \paper_twenty
-       linewidth= 195.\mm;
+       linewidth= 193.\mm;
 }
 
 \score{
index 7ccc808db829389c47910d43c56c180391ab9a3d..9bd557f3f2e61caab2be859d59cc7f84f484b71c 100644 (file)
@@ -12,8 +12,6 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\include "paper20.ly"
-
 one = \melodic{
        \octave c'';
        \textstyle "italic";
@@ -120,8 +118,7 @@ grand_staff = \type Grand_staff <
 >
 
 a4 = \paper{
-       \paper_twenty
-       linewidth= 195.\mm;
+       linewidth= 193.\mm;
 }
 
 \score{
index 0643095b979d51b19af1dbaace61eabf2d8715c8..fa170f74a8c7832b10888793fbfece48e91def55 100644 (file)
@@ -12,8 +12,6 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\include "paper20.ly"
-
 define(comma, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
 define(s, `comma(translit($*,` ', `,'))')
 define(t, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
@@ -167,8 +165,7 @@ grand_staff = \type Grand_staff <
 >
 
 a4 = \paper{
-       \paper_twenty
-       linewidth= 195.\mm;
+       linewidth= 193.\mm;
 }
 
 \score{
index 64008af3e4deb79541fa9a5ca2bf79bb741155c7..474d012d9d61c04b8031cbe0fbff070943aac6c7 100644 (file)
@@ -11,8 +11,6 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\include "paper20.ly"
-
 one = \melodic{
        \octave c'';
        \textstyle "italic";
@@ -194,8 +192,7 @@ grand_staff = \type Grand_staff <
 >
 
 widea4 = \paper{
-       \paper_twenty
-       linewidth= 195.\mm;
+       linewidth= 193.\mm;
 %      arithmetic_basicspace = 2.;
 %      arithmetic_multiplier = 6.\pt;
        arithmetic_basicspace = 3.;
index 35efe1587cec93a8126a181e13ee1edc20cce12c..1572329e3ad87530be10bff3f62bf8feb98181c2 100644 (file)
@@ -10,8 +10,6 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\include "paper20.ly"
-
 one = \melodic{
        \octave c';
        \textstyle "italic";
@@ -203,7 +201,7 @@ widea4 = \paper {
 %      arithmetic_multiplier = 6.\pt;
        arithmetic_basicspace = 2.;
        arithmetic_multiplier = 8.\pt;
-       linewidth= 195.\mm;
+       linewidth= 193.\mm;
 }
 
 \score{
index e76cbcd1aff2cabbce31a67a06740a0de0ee13bd..0eb6d492fe7ce8f8a0fb8e29f9248c4508822dda 100644 (file)
@@ -11,8 +11,6 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\include "paper20.ly"
-
 one = \melodic{
        \octave c';
        \skip 4*4; |
@@ -115,8 +113,7 @@ grand_staff = \type Grand_staff <
 >
 
 a4 = \paper{
-       \paper_twenty
-       linewidth = 195.\mm;
+       linewidth = 193.\mm;
 }
 
 \score{
index a8b41cc70c541f87dbe14e93e4a5eab1615c9deb..aaf38d3c21b81f7399b73a80a8571de25f19353e 100644 (file)
@@ -12,7 +12,8 @@ copyright =    "public domain";
 }
 
 %{
- Tested Features:breaking algorithm, chords, multivoice, accents
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
 %}
 
 \version "0.1.10";
@@ -27,131 +28,62 @@ copyright =         "public domain";
 % \slope{30}           % Fool MusiXTeX into 30 / 10 steeper beam
 %              % because piece is set very tightly
 
+%{
+  This file has a long heritage.
+  It should probably be rewritten as two separate voices.
+%}
+
+
 IImenuetto = \melodic{
-%      \property Voice.beamslopedamping = \infinity
        \clef"alto";
        \property Staff.instrument = cello
        \meter 3/4;
        \key bes;
        \octave c';
 
-       \duration 8;
-               < a2 f2 d2 \f > bes4-.  |
-%%2
-       \textstyle "finger";            % ugh.
-       
-       \multi 2 < 
-               { \stemup; [ bes8^"1"( )a8 bes8-. g8-. ] a4-.^"4" }
-               
-               { \stemdown; < e8_"2" c8_"4" > }
-       > |
-       \stemboth;
-%%3
-%      \property Voice.beamslopedamping = \normal
-       < d4 'bes4-. > g4-. [ f8-. e8-. ] |
-%      \property Voice.beamslopedamping = \infinity
-%%4
-       \multi 2 < 
-               { \stemup; [ f8( e8 )d8 cis8-. 'b8-. 'a8-. ] }
-               { \stemdown; 'a }
-       > |
-       \stemboth;
-%%5
-       < a2 f2 d2 > bes!4-. |
-%%6
-       \multi 2 < 
-               { \stemup; [ bes8 a8 bes8-. g8-. ] }
-               { \stemdown; e8 }
-       >
-       \stemboth;
-       c'!4-. |
-%%7
-       < a4-. f4>
-       < d'4-.-\upbow f4 'bes4 >
-       < e'4-.-\downbow g4 'g4 > |
-%%8
-       < cis'2.-\upbow e2. 'a2. > 
-       \bar ":|:";
-%%9
+       <a2 f d \f> bes4-.  |
+       <{\voiceone; [bes8^1 a bes-. g-.] a4-.^4 } {\voicetwo; <e8_2 c_4> }> |
+       \onevoice;
+       <d4 'bes-.> g-. [f8-. e-.] |
+       <{\voiceone; [f8( e )d cis-. 'b-. 'a-.] } {\voicetwo; 'a8 }> |
+       \onevoice;
+       <a2 f d> bes!4-. |
+       <{\voiceone; [bes8 a bes-. g-.] } {\voicetwo; e8 }>
+       \onevoice;
+       c'!4-. | <a-. f> <d'-.-\upbow f 'bes>
+       <e'-.-\downbow g 'g> | <cis'2.-\upbow e 'a> \bar ":|:";
        \clef "violin";
-       < e'2 a2 \f >
-%      \property Voice.beamslopedamping = \normal
-       [ d'8( e'16 )f'16 ] |
-%      \property Voice.beamslopedamping = \infinity
-%%10
-       \multi 2 < 
-               { \stemup; [ e'8( d' cis'_"2" )e' a( )g8 ] }
-               { \stemdown; g8 }
-       > |
-       \stemboth;
-%%11
-       \multi 2 <
-               { \stemup; a4( )d'4 cis'4-. }
-               { \stemdown; f2 e4 } 
-       > |
-       \stemboth;
-%%12
-       \multi 2 < 
-               { \stemup; [ g'8^"4"( f' e' )f' d'^"3"( ) c' ] } 
-               { \stemdown; d8 }
-       > |
-       \stemboth;
-%%13
+       <e'2 a\f>
+       [d'8( e'16 )f'] |
+       \slurdotted;
+       <{\voiceone; [e'8( d' cis'_2 )e' a( )g] } {\voicetwo; g8 }> |
+       \onevoice;
+       <{\voiceone; a4 ~ d' cis'-. } {\voicetwo; f2 e4 }> |
+       \onevoice;
+       <{\voiceone; [g'8^4( f' e' )f' d'^3( ) c'] } {\voicetwo; d8 }> |
+       \onevoice;
        \clef "alto";
-       \multi 2 <
-               
-               { \stemup; bes2 c'4 }
-               { \stemdown; g4( )f4 e4 }% ugh
-       > |
-       \stemboth;
-%%14
-       \multi 2 < 
-               { \stemup; [ a8 g8 a8 f8 ] } 
-               { \stemdown; f8 }
-       >
-       \stemboth;
-       < d'4-\upbow e4 'bes4 > |
-%%15
-       < c'4-\downbow f4 'a4 > [ bes8( )a8 g8 a8 ] |
-%%16
-       [ f( e8 )f a8-. g8-. bes8-. ] |
-%%17
-       < a2^"0"^\trill fis2_"3" > bes4 |
-%%18
-       \multi 2 < 
-               { \stemup; [ c'8( )bes8 c' a8 ] } 
-               { \stemdown; es8 }
-       >
-       \stemboth;
+       <{\voiceone; bes2 c'4 } {\voicetwo; g4 ~ f e }> |
+       \onevoice;
+       <{\voiceone; [a8 g a f] } {\voicetwo; f8 }>
+       \onevoice;
+       <d'4-\upbow e 'bes> |
+       <c'-\downbow f 'a> [bes8 a g a] |
+       [f8( e )f a-. g-. bes-.] |
+       <a2^"0"^\trill fis_3> bes4 |
+       <{\voiceone; [c'8 bes c' a] } {\voicetwo; es8 }>
+       \onevoice;
        fis4^\trill |
-%%19
-       < d'4-\downbow g4 'bes4 > < c'4-\upbow g4 c4 > < [ bes8 d8 > a8 ] |
-%%20
-       \multi 2 < 
-               { \stemup; [ c'8( bes8 a8 )bes g( )bes8 ] }
-               { \stemdown; < d8  g8  > }
-       > |
-       \stemboth;
-%%21
-       \multi 2 <  
-               { \stemup; d'4( )cis'4 d'4 }  
-               { \stemdown; g2 f4 }
-       > |
-       \stemboth;
-%%22
-       \multi 2 < 
-               { \stemup; [ g8( )f8 g8 e8 ] f4 }
-               { \stemdown; cis8 d4 }
-       > |
-       \stemboth;
-%%23
-%      \property Voice.beamslopedamping = \normal
-       [ 'g8 g8 ] < e4.^\trill 'a4. > d8-\upbow |
-%      \property Voice.beamslopedamping = \infinity
-%%24
-       \textstyle "roman";             % ugh
-       < d2.^"fine" 'a2. 'd2._"3 mins."> 
-       \bar ":|";
+       <d'4-\downbow g 'bes> <c'-\upbow g c> <[bes8( d> )a] |
+       <{\voiceone; [c'8( bes a )bes g( )bes] } {\voicetwo; <d8 g> }> |
+       \onevoice;
+       <{\voiceone; d'4 ~ cis' d' }  {\voicetwo; g2 f4 }> |
+       \onevoice;
+       <{\voiceone; [g8 f g e] f4 } {\voicetwo; cis8 d4 }> |
+       \onevoice;
+       ['g8 g] <'a4. { e^\trill ~ d8-\upbow }> |
+       \textstyle "italic";            % ugh
+       <d2._"fine" 'a 'd> \bar ":|";
 }
 
 \score{
@@ -159,16 +91,9 @@ IImenuetto = \melodic{
                \IImenuetto 
        }
        \paper{
-               linewidth= 150.0\mm;
-               % how does this work?
-               % why does space not have dim?
-               arithmetic_basicspace = 3.2;
-               % how can multiplier have dim?
-               arithmetic_mulitplier = 9.\pt;
-               %\output "scsii-menuetto.out";
+               linewidth= 185.0\mm;
        }
        \midi{ 
                \tempo 4 = 120;
-               %\output "scsii-menuetto.midi";
        }
 }
index 7cb045ba17be65271256b956ee5bc023ab4a26da..7af1d7746f1cda589e4b4dd50f205e862f0552c6 100644 (file)
@@ -165,7 +165,7 @@ bassdux = \melodic {
 
         
 \score {
-  \melodic {
     \type Grand_staff < 
       \type Staff = treble < 
         \global 
@@ -177,7 +177,6 @@ bassdux = \melodic {
         \bassdux
       >
     >
-  }
 
   \paper {
     gourlay_maxmeasures = 5.;
index dc989a75a20f89129b7ca8d086dd2380c3bfe87c..acb5a44fc0739f3df6f54429fbe23bf0d3200e51 100644 (file)
@@ -10,7 +10,7 @@ depth = ..
 SUBDIRS = J.S.Bach Coriolan
 EXTRA_DISTFILES +=  TODO
 
-examples=standje gallina
+examples=standchen gallina
 
 
 #
diff --git a/mutopia/los-toros-oboe-16.tex b/mutopia/los-toros-oboe-16.tex
deleted file mode 100644 (file)
index a1424d8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-\documentclass{article}         %UGH
-
-\usepackage{a4}
-
-% UGH UGH
-% ugh, centre
-\advance\oddsidemargin-30mm
-\evensidemargin\oddsidemargin
-\advance\textwidth60mm
-\advance\topmargin-20mm
-\addtolength{\textheight}{40mm}
-\footskip5mm
-
-\usepackage{fancyheadings}
-\lhead{}
-\rhead{}
-\chead{}
-\lfoot{}
-\cfoot{\ifnum\thepage=1{\hfill\LilyIdString}\fi}
-\rfoot{\ifnum\thepage>1{\hfill\thepage\hfill}\fi}
-
-\headrulewidth0mm
-\pagestyle{fancy}
-\thispagestyle{fancy}
-
-
-\begin{document}
-% \input lilyponddefs
-\input titledefs
-\def\interscoreline{\vskip3mm}
-\title{La Feria\normalsize\\[2ex]Los Toros}
-\composer{Paul Lac\^ome d'Estalenx (1838-1920)}
-%\instrument{} % heu
-%#%\tempo{M\"a\ss ig}
-\makelilytitle
-\input{los-toros-oboe-1.tex}
-\end{document}
-
diff --git a/mutopia/los-toros-oboe-20.tex b/mutopia/los-toros-oboe-20.tex
deleted file mode 100644 (file)
index 555a046..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-\documentclass{article}         %UGH
-
-\usepackage{a4}
-
-% UGH UGH
-\advance\oddsidemargin-25mm
-\evensidemargin\oddsidemargin
-% ugh, centre
-\advance\textwidth40mm
-\advance\topmargin-20mm
-\addtolength{\textheight}{40mm}
-\footskip5mm
-
-\usepackage{fancyheadings}
-\lhead{}
-\rhead{}
-\chead{}
-\lfoot{}
-\cfoot{\ifnum\thepage=1{\hfill\LilyIdString}\fi}
-\rfoot{\ifnum\thepage>1{\hfill\thepage\hfill}\fi}
-
-\headrulewidth0mm
-\pagestyle{fancy}
-\thispagestyle{fancy}
-
-
-\begin{document}
-\input lilyponddefs
-\input titledefs
-\def\interscoreline{\vskip3mm}
-\title{La Feria\normalsize\\[2ex]Los Toros}
-\composer{Paul Lac\^ome d'Estalenx (1838-1920)}
-%\instrument{} % heu
-%#%\tempo{M\"a\ss ig}
-\makelilytitle
-\input{los-toros-oboe.tex}
-% \input{los-toros-oboe-1.tex}
-\end{document}
-
index 6032b7c74ac1124f8b17326c47dd5185c4cc91eb..2fc2ea26a76c083873eb5ca1acff36afd609d71f 100644 (file)
@@ -1,19 +1,20 @@
 \header{
 filename =      "los-toros-oboe.ly";
-title =                 "La Feria"
+title =                 "La Feria";
 subtitle = "Los Toros";
 opus =          "";
 composer =      "Paul Lac\\^ome d'Estalenx (1838-1920)";
 enteredby =     "jcn";
 copyright =     "public domain";
+latexheaders=    "headers";
 } 
 
+\include "paper16.ly"
+
 %{
 Silly latex file dropped; use ly2dvi
 %}
 
-\include "paper20.ly"
-
 hoboonestart = \melodic{
 % ugh: can't copy: allegro/primo tempo
        \octave c';
@@ -101,14 +102,14 @@ hoboonemid = \melodic{
 %      d'4(\^"Un peu plus lent et \\'el\\'egant"<
        \textstyle "italic"; 
        d'4(\<
-       [e'8 \!f'8] |
+       [e'8 \!fis'8] |
 %      [)b'-. a'-.] [g16( fis' e' )d'] |
        \textstyle "bold";
        [)b'-.^"Un peu plus lent et \\'el\\'egant" a'-.] [g16( fis' e' )d'] |
        \textstyle "italic"; 
-       [d'( c' b\< c'] [)\!f'8-. e'-.] |
+       [d'( c' b\< c'] [)\!fis'8-. e'-.] |
        d4-> ~ [d16 e( fis g] |
-       [a b\< d' fis] [)\!a'8-. g'-.] |
+       [a b\< d' fis'] [)\!a'8-. g'-.] |
        [fis'16( e' a )c'] e'4 ~ |
        [e'16 d'( e c'] [)b8-. a-.] |
        g2 ~ |
@@ -122,8 +123,8 @@ hoboonemid = \melodic{
        fis'2-> ~ |
        [fis'16 g'-.\< a'-. b'-.] [\!c''8-. c'-.] |
        [es'8.->(-"espress.") d'16] d'4 ~ |
-       [d'16 e'( fis a'] [)g'8 b-.] |
-       [b8.->( )c'16] c4 ~ |
+       [d'16 e'( fis' a'] [)g'8 b-.] |
+       [b8.->( )c'16] c'4 ~ |
        [c'16\< cis'( d' \!dis'] [)e'8-.-"dim." fis-.] |
        [fis8.->( g16] )g4 ~ |
 
@@ -167,7 +168,7 @@ hoboonelast = \melodic{
        [fis'16-.\p  fis'-. fis'-. fis'-.] [fis'8-. g'-.] |
        % same measure
        [fis'16-.\p  fis'-. fis'-. fis'-.] [fis'8-. g'-.] |
-       [fis'8-. g-. fis-. g-.] |
+       [fis'8-. g'-. fis'-. g'-.] |
        [a'-. bes'-. a'-. bes'-. ] |
        [a'-.\f bes'-. a'-. bes'-. ] |
        [c''-.-"cresc." f'-. g'-. a'-.] |
@@ -187,8 +188,11 @@ hoboonelast = \melodic{
 %      r2^"Un peu plus lent et \\'el\\'egant"
 %      r2^"\\fetanummer8"
        r2*8
-       r4 r8\p bes |
-       g2->^"Un peu plus lent et \\'el\\'egant" ~ |
+%      r4 r8\p bes |
+       r4^"Un peu plus lent et \\'el\\'egant"
+       r8\p bes |
+%      g2->^"Un peu plus lent et \\'el\\'egant" ~ |
+       g2-> ~ |
        \textstyle "italic";
        g8 r r c' |
        c'2-> ~ |
@@ -198,7 +202,7 @@ hoboonelast = \melodic{
        d'2-> ~ |
        [d'16-"dim."( es' f' g'] [)as'8 as-.] |
        [ces'8.->\p( )bes16-.] bes4 ~ |
-       [bes16( c' d' f] [)es'8 g-.] |
+       [bes16( c'! d' f'] [)es'8 g-.] |
        [g8.->( )as16] as4 ~ |
        [as16( a bes b] [)c'8-. d-.] |
        % a deux
@@ -211,39 +215,39 @@ hoboonelast = \melodic{
        [bes'8.-> g'16-.] [es'16-. bes-. g-. as-.] |
        [bes-. c'-. d'-. es'-.] [f'-. g'-. as'-. bes'-.] |
        d''8-. r c''4-> ~ |
-       [c''16 f-. g'-. a-.] [bes'-. c'-. d'-. es'-.] |
+       [c''16 f'-. g'-. a'-.] [bes'-. c'-. d'-. es'-.] |
        g'8-. r f'4-> ~ |
-       [f'16 bes-. c'-. d-.] [es'-. f'-. g-. as-.] |
+       [f'16 bes-. c'-. d'-.] [es'-. f'-. g'-. as'-.] |
        c''8 r bes'4 ~ |
        [bes'8 as'-. g'8.-. e'16-.] |
-       g'8-. r f4-> ~ |
+       g'8-. r f'4-> ~ |
        [f'8 es'-. ces'8.-. as16-.] |
        % `a deux
        \textstyle "large";
        [ces'8.->^"Plus vite" bes16-.(] [a bes es' d'] |
        \textstyle "italic";
-       [)c!8.-> bes16] [a( bes es' )d'] |
+       [)c'!8.-> bes16] [a( bes es' )d'] |
        [c'->( bes es' )d'] [c'->( bes es' )d'] |
        % same measure
        [c'->( bes es' )d'] [c'->( bes es' )d'] |
-       [c'( bes a bes] [c' d es' e] |
+       [c'( bes a bes] [c' d' es' e'] |
        [g' )f' d'( es'] [f' g' as' a'] |
        [c'' )bes' bes( c'] [d' es' f' g'] |
        [as' g' f' g'] [as' bes' c'' d''] |
        \textstyle "large";
-       [)es''-.^"Tempo 1$^o$" g'-. g'-. g-.] [g'8-. g'-.] |
+       [)es''-.^"Tempo 1$^o$" g'-. g'-. g'-.] [g'8-. g'-.] |
        \textstyle "italic";
        bes'4.-> g'8-. |
        gis'2->( |
        )as'! |
-       [g'16-. g'-. g'-. g-.] [g'8-. g'-.] |
+       [g'16-. g'-. g'-. g'-.] [g'8-. g'-.] |
        bes'4.-> g'8-. |
        gis'2->( |
 %      )as'! |
        )as' |
-       [bes'16-. bes'-. bes'-. bes-.] [bes'8-. bes'-.] |
+       [bes'16-. bes'-. bes'-. bes'-.] [bes'8-. bes'-.] |
        bes'4.-> g'8-. |
-       [g'16-._"h\\^atez" g'-. g'-. g-.] [g'8-. g'-.] |
+       [g'16-._"h\\^atez" g'-. g'-. g'-.] [g'8-. g'-.] |
        g'4.-> g'8-. |
        es'4.-> es'8-. |
        bes4.-> bes8-. |
@@ -251,7 +255,7 @@ hoboonelast = \melodic{
        g'4.->^"Presto" g'8-. |
        \textstyle "italic";
        es'4.-> es'8-. |
-       [bes-. bes-. es'-. g-.] |
+       [bes-. bes-. es'-. g'-.] |
        [bes'-. bes-. es'-. g'-.] |
        bes'-. r r4 |
        g'8-. r r4 |
@@ -288,7 +292,7 @@ $staff_hoboone = \type Staff = hoboonestaff <
 >
 
 a4 = \paper{
-       \paper_twenty
+%      \paper_twenty
        linewidth= 185.\mm;
        gourlay_maxmeasures = 10.0;
        Staff = \translator {
@@ -313,6 +317,7 @@ a4 = \paper{
 }
 
 a4sixteen = \paper{
+       \paper_sixteen
        linewidth= 193.\mm;
        Staff = \translator {
                \type "Engraver_group_engraver";
diff --git a/mutopia/ltor.ly b/mutopia/ltor.ly
new file mode 100644 (file)
index 0000000..afc524c
--- /dev/null
@@ -0,0 +1,361 @@
+\header{
+filename =      "los-toros-oboe.ly";
+title =                 "La Feria";
+subtitle = "Los Toros";
+opus =          "";
+composer =      "Paul Lac\\^ome dEstalenx (1838-1920)";
+enteredby =     "jcn";
+copyright =     "public domain";
+latexheaders=    "headers";
+} 
+
+%{
+Silly latex file dropped; use ly2dvi
+
+Converted to relative octave from los-toros-oboe.ly:
+    :s/[^\\]'/'x/g
+    :s/'x//g
+    (511 substitutions on 155 lines)
+
+    lilypond -f los-toros-oboe 2> bla
+    wc -l bla
+    138
+    138 / 3 =  46 octave quotes of 511 remain!
+
+%}
+
+\include "paper16.ly"
+
+hoboonestart = \melodic{
+% ugh: cant copy: allegro/primo tempo
+       \octave relative;
+       \textstyle "large";
+       [es''16-.^"Allegro" es-. es-. es-.] [es8-. d-.] |
+       \textstyle "italic";
+}
+
+hobooneintro = \melodic{
+       \octave relative;
+%      \textstyle "roman";
+%      [es''16-.-"Allegro" es-. es-. es-.] [es8-. d-.] |
+%      \textstyle "italic";
+       [f''8.-> es16(] [)d8 c-.] |
+       [bes16( c d es] [)d8 c-.] |
+       [bes-. as->~] [as16( g f g] |
+       [as bes c d] [)es8 c-.] |
+       [d8-. c16( bes] )as4 ~ |
+       [as16 g( f g] [as c bes as] |
+%      [)g8 as16 g(] [)f8 g16( f] |
+       [)g8 as16 g(] [)f8 g16( f] |
+       [)es8 f16-. g-.] [as-. bes-. c-. d-.] |
+       [es-. es-. es-. es-.] [es8-. d-.] |
+       [f8.-> es16(] [)d8 c-.] |
+       [bes16( c d es] [)d8 c-.] |
+       [bes8 a->~] [a16 g( fis g] |
+       [a bes c d] [)es8 d16()c] |
+       [bes-. g-. bes-. d-.] g4-> ~ |
+       [g16 f( es d] [c es  d c] |
+       [)bes8 c16( bes] [)a8 bes16( a] |
+       [)g8  r d'] r |
+}
+
+hoboonemid = \melodic{
+       \octave relative;
+       [g'16-. g-. g-. g-.] [g8-. f-.] |
+       as2-> |
+       [as16-. as-. as-. as-.] [as8-. g-.] |
+       bes2-> |
+       [bes16-. bes-. bes-. bes-.] [bes8-. c] |
+
+       r-"cresc." [d8-. r c-.] |
+       r\f [d-. es-. f-.] |
+       [g8.-> es16] [bes8 g] |
+
+       % four measures copied from 8 measures back...
+       [g16-.\p g-. g-. g-.] [g8-. f-.] |
+       as2-> |
+       [as16-. as-. as-. as-.] [as8-. g-.] |
+       bes2-> |
+       [b16-. b-. b-. b-.] [b8-. c-.] |
+
+       % same measure
+       [b16-. b-. b-. b-.] [b8-. c-.] |
+
+       [b8-.-"cresc." c-. b-. c-.] |
+       [d-. es-. d-. es-.] |
+       [f\f-. g-. f-. g-.] |
+       [as-.\< g-. as-. bes-.] |
+       [\!g16\ff-. g-. g-. g-.] [g8-. g-.] |
+       [g8.-> g16] [g8 g] |
+       [g8.-> g16] [g8 g] |
+       [f8.-> f16] [f8 f] |
+       [f8.-> f16] [f8 f] |
+       [bes8-. as16( g] )f4 ~ |
+       [f16 es( d es] [f as g )f] |
+       [es( g f es] [d f es d] |
+       [c es d c] [b d c b] |
+       [a c bes a] [g bes a g] |
+       [fis a g fis] [e g fis )e] |
+       % `a deux
+       [d8 d'] [es8.-> c16] |
+       [a8 bes g es] |
+       [c' d es8. bes16] |
+       [g8 es bes' 'c] |
+       [d16-. d-. d-. d-.] [d8.-. es16->] |
+       [d'16-.-"cresc." d-. d-. d-.] [d8.-. es16->] |
+       [d16-. d-. d-. d-.] [d8.-. es16->] |
+       [d16 d d d] [d8 es16-.] r16-\fermata^"court"^"tr\\`es" |
+       % Un peu plus lent.
+       \textstyle "bold";
+
+% ugh
+%      d4(\<^"Un peu plus lent" \textstyle "italic; _"tr\\`es \\'el\\'egant"
+%      d4(\^"Un peu plus lent et \\'el\\'egant"<
+       \textstyle "italic"; 
+       d4(\<
+       [e8 \!fis8] |
+%      [)b-. a-.] [g16( fis e )d] |
+       \textstyle "bold";
+       [)b-.^"Un peu plus lent et \\'el\\'egant" a-.] [''g16( fis' e )d] |
+       \textstyle "italic"; 
+       [d( c b\< c] [)\!fis8-. e-.] |
+       ''d4-> ~ [d16 e( fis g] |
+       [a b\< d fis] [)\!a8-. g-.] |
+       [fis16( e 'a )c] e4 ~ |
+       [e16 d( 'e c'] [)b8-. a-.] |
+       g2 ~ |
+       [g8 \[/3 d16( e fis ]1/1 [)g8 d'-.] |
+       b2-> ~ |
+       [b8 \[/3 'd16( e fis ]1/1 [)g8-"cresc. poco" e'-.] |
+       e2-> ~ |
+       [e8 \[/3 ''d16( e fis ]1/1 [)g8\f d'-.] |
+       [d8.-> b'16-.] [g16-. d-. b-. c-.] |
+       [d-. e-. fis-. a-.] [g8-. e-.] |
+       fis2-> ~ |
+       [fis16 g-.\< a-. b-.] [\!c8-. 'c-.] |
+       [es8.->(-"espress.") d16] d4 ~ |
+       [d16 e( fis a] [)g8 'b-.] |
+       [b8.->( )c16] c4 ~ |
+       [c16\< cis( d \!dis] [)e8-.-"dim." 'fis-.] |
+       [fis8.->( g16] )g4 ~ |
+
+       % (only notes! of) five measures copied from 14 measures above
+       [g8 \[/3 d16( e fis ]1/1 [)g8 d'-.] |
+       b2->-"cresc." ~ |
+       [b8 \[/3 'd16( e fis ]1/1 [)g8 e'-.] |
+       e2-> ~ |
+       [e8 \[/3 ''d16(_"h\\^atez" e fis ]1/1 [)g8\f d'-.] |
+       [d8.-> b16-.] [g16-.-"cresc." d'-. b-. c-.] |
+       [d16\f\< e-. fis-. g-.] [a-. 'b-. c-. \!d-.] 
+}
+
+
+hoboonesecondstart = \melodic{
+       \octave relative;
+% ugh: cant copy: allegro/primo tempo
+       \textstyle "large";
+       [es''16-.\ff^"Tempo 1$^o$" es-. es-. es-.] [es8-. d-.] |
+       \textstyle "italic";
+       
+}
+       
+hoboonelast = \melodic{
+       \octave relative;
+       % could transpose/copy from measure 19...
+       [d''16-.\p  d-. d-. d-.] [d8-. c-.] |
+       es2-> |
+       [es16-. es-. es-. es-.] [es8-. d-.] |
+       f2-> |
+       [f16-. f-. f-. f-.] [f8-. g-.] |
+       r8 [a-.-"cresc." r g-.] |
+       r [a-.\f bes-.\< \!c-.] |
+       [d8.->\> \!bes16] [f8 d] |
+
+       % four measures copied from 8 measures back...
+       [d16-.\p  d-. d-. d-.] [d8-. c-.] |
+       es2-> |
+       [es16-. es-. es-. es-.] [es8-. d-.-"cresc."] |
+       f2-> |
+       [fis16-.\p  fis-. fis-. fis-.] [fis8-. g-.] |
+       % same measure
+       [fis16-.\p  fis-. fis-. fis-.] [fis8-. g-.] |
+       [fis8-. g-. fis-. g-.] |
+       [a-. bes-. a-. bes-. ] |
+       [a-.\f bes-. a-. bes-. ] |
+       [c-.-"cresc." 'f-. g-. a-.] |
+       [bes-. bes-. ces8.-> as16] |
+       [f8-. ges-. es-. ces-.] |
+       % `a deux
+       [as-. bes-. ces8.-> ges16] |
+       [es8-. ces'-. ges-. as-.] |
+       bes\p r r4 |
+       [bes16-.-"cresc." bes-. bes-. bes-.] [bes8-. ces->] |
+       % same measure
+       [bes16-. bes-. bes-. bes-.] [bes8-. ces->] |
+       [bes'16-.\ff bes-. bes-. bes-.] [bes8-. ces16->] r16^"court"-\fermata |
+       % ugh: eight measures rest (ugh: r1 -> four beats...)
+       % eiht measures rest..
+       \textstyle "bold";
+%      r2^"Un peu plus lent et \\'el\\'egant"
+       R2*8
+%      r4 r8\p bes |
+       r4^"Un peu plus lent et \\'el\\'egant"
+       r8\p ''bes |
+%      g2->^"Un peu plus lent et \\'el\\'egant" ~ |
+       g2-> ~ |
+       \textstyle "italic";
+       g8 r r c |
+       c2-> ~ |
+       c8 r r bes'\f |
+       [bes8.->\f g16-.] [es16-. bes-. g-. as-.] |
+       [bes-.-"dim." c-. d-. f-.] [es8-. c-.] |
+       d2-> ~ |
+       [d16-"dim."( es f g] [)'as8 as-.] |
+       [ces8.->\p( )bes16-.] bes4 ~ |
+       [bes16( c! d f] [)es8 'g-.] |
+       [g8.->( )as16] as4 ~ |
+       [as16( a bes b] [)c8-. 'd-.] |
+       % a deux
+       [d8.->( ) es16] es4 ~ |
+       es4 r8 bes'-. |
+       g2-> ~ |
+       g8 r r c |
+       c2 ~ |
+       c8  r r bes' |
+       [bes8.-> g16-.] [es16-. bes-. g-. as-.] |
+       [bes-. c-. d-. es-.] [f-. g-. as-. bes-.] |
+       d8-. r c4-> ~ |
+       [c16 'f-. g-. a-.] [bes-. 'c-. d-. es-.] |
+       g8-. r f4-> ~ |
+       [f16 'bes-. c-. d-.] [es-. f-. g-. as-.] |
+       c8 r bes4 ~ |
+       [bes8 as-. g8.-. e16-.] |
+       g8-. r f4-> ~ |
+       [f8 es-. ces8.-. as16-.] |
+       % `a deux
+       \textstyle "large";
+       [ces8.->^"Plus vite" bes16-.(] [a bes es d] |
+       \textstyle "italic";
+       [)c!8.-> bes16] [a( bes es )d] |
+       [c->( bes es )d] [c->( bes es )d] |
+       % same measure
+       [c->( bes es )d] [c->( bes es )d] |
+       [c( bes a bes] [c d es e] |
+       [g )f d( es] [f g as a] |
+       [c )bes 'bes( c] [d es f g] |
+       [as g f g] [as bes c d] |
+       \textstyle "large";
+       [)es-.^"Tempo 1$^o$" 'g-. g-. g-.] [g8-. g-.] |
+       \textstyle "italic";
+       bes4.-> g8-. |
+       gis2->( |
+       )as! |
+       [g16-. g-. g-. g-.] [g8-. g-.] |
+       bes4.-> g8-. |
+       gis2->( |
+%      )as! |
+       )as |
+       [bes16-. bes-. bes-. bes-.] [bes8-. bes-.] |
+       bes4.-> g8-. |
+       [g16-._"h\\^atez" g-. g-. g-.] [g8-. g-.] |
+       g4.-> g8-. |
+       es4.-> es8-. |
+       bes4.-> bes8-. |
+       \textstyle "large";
+       g'4.->^"Presto" g8-. |
+       \textstyle "italic";
+       es4.-> es8-. |
+       [bes-. bes-. es-. g-.] |
+       [bes-. 'bes-. es-. g-.] |
+       bes-. r r4 |
+       g8-. r r4 |
+       g8-. r r4 |
+}
+
+hoboone = \melodic {
+       \hoboonestart
+       \hobooneintro
+       \hoboonemid
+       \hoboonesecondstart
+       \hobooneintro
+       \hoboonelast
+}
+
+global = \melodic{
+       \key bes es as;
+       \meter 2/4;
+       \skip 4*110;
+       \key fis; |
+       \bar "||";
+       \skip 4*58;
+       \key bes es as; |
+       \bar "||";
+       \skip 4*220;
+       \bar "|.";
+}
+
+
+$staff_hoboone = \type Staff = hoboonestaff <
+       \global
+       \property Staff.instrument = "oboe"
+       \hoboone
+>
+
+a4 = \paper{
+%      \paper_twenty
+       linewidth= 185.\mm;
+       gourlay_maxmeasures = 10.0;
+       Staff = \translator {
+               \type "Engraver_group_engraver";
+               defaultclef = violin;
+
+               \consists "Bar_engraver";
+               \consists "Clef_engraver";
+               \consists "Key_engraver";
+               \consists "Meter_engraver";
+               \consists "Local_key_engraver";
+               \consists "Staff_sym_engraver";
+               \consists "Collision_engraver";
+               \consists "Rest_collision_engraver";
+               \consists "Bar_column_engraver";
+               \consists "Bar_number_engraver";
+               \consists "Separating_line_group_engraver";
+               \consists "Line_group_engraver";
+                 
+               \accepts "Voice";
+       }
+}
+
+a4sixteen = \paper{
+       \paper_sixteen
+       linewidth= 193.\mm;
+       Staff = \translator {
+               \type "Engraver_group_engraver";
+               defaultclef = violin;
+
+               \consists "Bar_engraver";
+               \consists "Clef_engraver";
+               \consists "Key_engraver";
+               \consists "Meter_engraver";
+               \consists "Local_key_engraver";
+               \consists "Staff_sym_engraver";
+               \consists "Collision_engraver";
+               \consists "Rest_collision_engraver";
+               \consists "Bar_column_engraver";
+               \consists "Bar_number_engraver";
+               \consists "Separating_line_group_engraver";
+               \consists "Line_group_engraver";
+                 
+               \accepts "Voice";
+       }
+}
+
+\score{
+       \$staff_hoboone
+       \paper{ \a4 }
+       \midi{
+               \tempo 4 = 80;
+       }
+%      \paper{ \a4sixteen }
+}
+
diff --git a/mutopia/standchen-16.tex b/mutopia/standchen-16.tex
deleted file mode 100644 (file)
index 21ef2cf..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-\documentclass{article}         %UGH
-\usepackage{a4}
-
-\advance\oddsidemargin-15mm
-\evensidemargin\oddsidemargin
-\advance\textwidth30mm
-\footskip5mm
-
-\usepackage{fancyheadings}
-\lhead{}
-\rhead{}
-\chead{}
-\lfoot{}
-\cfoot{\ifnum\thepage=1{\hfill\LilyIdString}\fi}
-\rfoot{\ifnum\thepage>1{\hfill\thepage\hfill}\fi}
-
-\headrulewidth0mm
-\pagestyle{fancy}
-\thispagestyle{fancy}
-
-\input titledefs
-%\pagestyle{empty}
-\begin{document}
-\def\interscoreline{\vskip3mm}
-\title{St\"andchen\normalsize\\[2ex](Serenade)}
-\composer{Franz Schubert (1797-1828)}
-\instrument{M\"a\ss ig} % heu
-%#%\tempo{M\"a\ss ig}
-\makelilytitle
-\input{standchen-16.out}
-\end{document}
-
index f3e87845907d562315273c417b8541ca52bdeacc..443ef0b9e5f4bdd0232ac6ed2edd6ef70e4c7f10 100644 (file)
@@ -8,6 +8,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 description = "A schubert song in 20 pt";
 } 
+
 \version "0.1.10";
 
 % fool make-website
diff --git a/mutopia/standchen-20.tex b/mutopia/standchen-20.tex
deleted file mode 100644 (file)
index 4ee0201..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-\documentclass{article}         %UGH
-\usepackage{a4}
-
-% UGH UGH
-\advance\oddsidemargin-30mm
-\evensidemargin\oddsidemargin
-% ugh, centre
-\advance\textwidth60mm
-\advance\topmargin-20mm
-\addtolength{\textheight}{40mm}
-\footskip5mm
-
-\usepackage{fancyheadings}
-\lhead{}
-\rhead{}
-\chead{}
-\lfoot{}
-\cfoot{\ifnum\thepage=1{\hfill\LilyIdString}\fi}
-\rfoot{\ifnum\thepage>1{\hfill\thepage\hfill}\fi}
-
-\headrulewidth0mm
-\pagestyle{fancy}
-\thispagestyle{fancy}
-
-
-\begin{document}
-\input lilyponddefs
-\input titledefs
-\def\interscoreline{\vskip3mm}
-\title{St\"andchen\normalsize\\[2ex](Serenade)}
-\composer{Franz Schubert (1797-1828)}
-\instrument{M\"a\ss ig} % heu
-%#%\tempo{M\"a\ss ig}
-\makelilytitle
-\input{standchen-20.out}
-\end{document}
-
diff --git a/mutopia/standchen-easy.ly b/mutopia/standchen-easy.ly
new file mode 100644 (file)
index 0000000..39d5168
--- /dev/null
@@ -0,0 +1,522 @@
+\header{
+filename = "standchen-easy.ly";
+title    = "St\"andchen";
+subtitle = "(Serenade)\\\``Leise flehen meine Lieder''";
+opus     = "D. 957 No. 4";
+composer = "Franz Schubert (1797-1828)\\\ \hfill Text by Ludwig Rellstab (1799-1860)";
+enteredby = "JCN";
+copyright = "public domain";
+% transcribed version
+% simplified and transposed to d minor
+} 
+
+%{
+ Tested Features: multivoice, accents, lyrics, chords, piano music,
+multiple \paper{}s in one \score 
+%}
+
+\include "paper16.ly"
+\version "0.1.10";
+
+commands = \melodic{
+       \skip 2.*4;
+       \bar "|:";
+       \skip 2.*24;
+%      volta1
+       \skip 2.*8;
+%      volta2
+       \bar ":|";
+       \skip 2.*22;
+       \bar "|."; 
+       }
+
+melodie = \melodic{ 
+       \meter 3/4;
+       \clef "violin";
+       \key bes;
+       \octave c';
+       \duration 8;
+       r \pp < [ d 'a-| > f-| < d 'a-| > f-| < d 'a-| ] > |
+%%2
+       r < [ d 'bes-| > f-| < d 'bes-| > f-| < d 'bes-| ] > |
+%%3
+       \textstyle "italic";
+       r_"simile" < [ d 'bes > e < d 'bes > e < d 'bes ] >|
+       \textstyle "roman";
+       
+%%4
+       r < [ 'a cis > e < 'a cis > e < 'a cis ] > |
+%%5
+       [2/3 a() bes a ]1/1 d'4. a |
+%%6
+       [2/3 g() a g ]1/1 d'4 g r |
+
+%%7
+       a4.^> g [2/3 g() f e ]1/1 |
+%%8
+       f2 r4 |
+%%9
+       < { a'4.()  g' [2/3 g'( f' )e' ]1/1 }
+       { cis'4. e'_"dolce" \[2/3 e' \] } > |
+%%10
+       < f'2. d'2. > |
+%%11
+       [2/3 a ()  bes a ]1/1 f'4. a |
+%%12
+       [2/3 g()   a g ]1/1 e'4. d' |
+%%13
+       c'4. bes [2/3 bes()   a g ]1/1 |
+%%14
+       a2 r 
+       < { d'()  c'4. g [2/3 bes a g ]1/1 }
+       { f \p ()  e4._"dolce" bes \[2/3 g \] } > |
+%%16
+       < a2. f2. > |
+%%17
+       \textstyle "italic";
+       [ a8._"cresc." cis'16 ] f'4. e'
+       \textstyle "roman";|
+%%18
+       [ d'8. a16 ] f4. d |
+%%19
+%#%    c'\grace\stemup
+       [2/3 bes ()   a bes ]1/1 d'4. bes |
+%%20
+       a2. |
+%%21
+%#%    a\grace
+       [2/3 g()  fis g ]1/1 bes4.^> g |
+%%22
+       f!2. |
+%%23
+       [ a8. \mf cis'16 ] f'4. e' |
+%%24
+       [ d'8. a16 ] fis4. d |
+%%25
+       [2/3 b \mf()   ais b ]1/1 d'4. b |
+%%26
+       < a2. fis2. > |
+%%27
+       [2/3 e' \f()  dis' e' ]1/1 g'4. cis' |
+%%28
+       < d'2. fis2. > |
+%#%\volta1
+%%29
+       < { bes2( [ d'8.() )bes16 ] }
+       { g2 \mf [ bes8. g16 ] } > |
+%%30
+       < { a4. [ a-. a-. a-. ] }
+       { fis4. [ fis-.( fis-. )fis-. ] } > |
+%%31 
+       < { a4. [ a-. a-. a-. ] }
+       { g4. [ cis-.( e-. )g-. ] } > |
+%%32
+       < a2 fis2 \pp > < a4 fis4 > |
+%%33
+       < { b2( [ d'8.() )b16 ] }
+       { g2 [ b8. g16 ] } > |
+%%34
+       < { a4. [ a-. a-. a-. ] }
+       { fis4. [ fis-.( fis-. )fis-. ] } > |
+%%35
+       < { a4. [ a-. a-. a-. ] }
+       { g4. [ cis-.( e-. )g-. ] } > |
+%%36
+       < a2. fis2. > |
+%#%\volta2
+%%37
+       [ a8. a16 ] [ cis'8. cis'16 ] [ e'8. e'16 ] |
+%%38
+       d'4()  cis'4 r4 |
+%%39
+%#%    > a4. [ cis' e'8. >! d'16 ] |
+       a4. \> [ cis' e'8. \! d'16 ] |
+%%40
+       cis'2 r4 |
+%%41
+       < fis'4. \> cis'4. \f > e' [2/3 e'()  d' \! cis' ]1/1 |
+%%42
+       [ b8. cis'16 ] d'4^> b r |
+%%43
+
+       [ b8. \f cis'16 ] d'4^> b r |
+%%44
+       [ b8. \> cis'16 ] d'4^> b \! r |
+%%45
+       [2/3 b \p ()  ais b ]1/1 d'4. b |
+%%46
+       <a!2. fis2. > |
+%%47
+       [2/3 e' \f()  dis' e' ]1/1 g'4.^> cis' |
+%%48
+       \textstyle "italic";
+       < 
+       { fis2.(
+       %\group "+1"; 
+               \stemdown )f2. }
+       { d'2. ( \stemup
+               ) d'4 r4_"decresc." d'4 } 
+       >
+       \textstyle "roman"; |
+%%50
+       < bes2. e2. > |
+%%51
+       < a2. cis2. > |
+%%52
+       < fis2 d2 > < a4 fis4 \pp > |
+%%53
+
+       < bes2 g2 > < [ d'8.^> bes8. > < bes16 g16 ] > |
+%%54
+       < { a4. [ a-. a-. a-. ] }
+       { fis4. [ fis-.( fis-. )fis-.] } > |
+%%55
+       < { a4. [ a-. a-. a-. ] }
+       { g4. [ cis-.( e-. )g-. ] } > |
+%%56
+       \textstyle "italic";
+       < a2. fis2._"dim." >
+       \textstyle "roman"; |
+%%57
+       < a2. fis2. > |
+%%58
+       < a2.^\fermata fis2. > |
+%#%\tighten
+}
+
+begeleiding = \melodic{ 
+       \meter 3/4;
+       \clef"bass";
+       \key bes;
+       \octave c';
+       \duration 2;
+       'd r4 |
+%%2
+       ''bes r4 |
+
+%%3
+       ''g r4 |
+
+%%4
+       ''a r4 |
+%%5
+\duration 8;
+       \multi 2 < { \stemup    
+               [ 'f 'a d 'a d 'a ] 
+               [ 'd 'e 'g 'e 'g 'e ] 
+               [ 'cis 'e 'g 'e 'g 'e ]
+               [ 'd 'a d 'a d 'a ]
+               }
+       { \stemdown 
+               'd2 r4 
+                ''bes2 r4 
+                ''a2 r4
+               'd2 r4
+       } >
+%%9
+       \stemboth
+       [ 'a e g e g e ] |
+%%10
+       [ 'd 'a d 'a d 'a ] |
+%%11
+       \multi 2 <      
+       { \stemup
+               [ 'f 'a d 'a d 'a ]
+               [ 'd 'e 'g 'e 'g 'e ] 
+               [ 'e 'g 'bes 'g 'bes 'g ] 
+               [ 'a c f c f c ]
+       } { \stemdown 
+               'd2 r4 
+                ''bes2 r4
+                'c2 r4 
+                'f2 r4 } 
+       >
+%%15
+       \stemboth
+       [ 'c 'g 'bes 'g 'bes 'g ] |
+%%16
+       [ ''f 'c 'f 'c 'f 'c ] |
+       \multi 2 <
+       { \stemup 
+               [ ''a 'e 'g 'e 'g 'e ][ 'd 'a d 'a d 'a ]
+               [ ''bes 'f 'bes 'f 'bes 'f ][ ''f 'c 'f 'c 'f 'c ] }
+       { \stemdown 
+               ''a2 r4
+               'd2 r4 
+               ''bes2 r4 
+               ''f2 r4 
+       } > 
+%%21
+       \stemboth
+       < [ 'e 'c > 'g c 'g c 'g ] |
+%%22
+       [ 'f 'a c 'a 'f 'c ] |
+       \multi 2 < {
+               \stemup
+               [ ''a 'e 'g 'e 'g 'e ] 
+               [ 'd 'fis 'a 'fis 'a 'fis ] 
+               [ ''g 'd 'b 'd 'b 'd ] 
+               [ 'd 'a d 'a d 'a ] 
+       }
+       {\stemdown
+               ''a2 r4 
+               'd2 r4 
+               ''g2 r4 
+               'd2 r4 
+       }
+       >
+       \stemboth
+       < [ 'cis ''a > 'e 'a 'e 'a 'e ] |
+%%28
+       [ 'd 'a d 'a d 'a ] |
+%%29
+       [ 'd 'g 'bes 'g 'bes 'g ] |
+%#%\volta1
+%%30 
+       [ 'd 'fis 'a 'fis 'a 'fis ] |
+%%31
+       [ ''a 'e 'a 'e 'a 'e ] |
+%%32
+       [ 'd 'fis 'a 'fis 'a 'fis ] |
+%%33
+       [ 'd 'g 'b 'g 'b 'g ] |
+%%34
+       [ 'd 'fis 'a 'fis 'a 'fis ] |
+%%35
+       [ ''a 'e 'a 'e 'a 'e ] |
+%%36
+       [ 'd 'fis 'a 'fis 'a 'fis ] |
+%#%\volta2
+%%37
+       [ ''a 'e 'g 'e ''bes^> 'e ] |
+%%38
+       [ ''a < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a ] > |
+%%39
+       [ ''a 'e 'g 'e ''bes^> 'e ] |
+%%40
+       [ ''a < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a ] > |
+%%41
+       [ ''ais 'e 'fis 'e 'fis 'e ] |
+%%42
+       < [ 'd ''b > 'fis 'b 'fis 'b 'fis ] |
+%%43
+       < [ 'e ''b > 'g 'b 'g 'b 'g ] |
+%%44
+       < [ 'd ''b > 'fis 'b 'fis 'b 'fis ] |
+%%45
+       \multi 2 < { \stemup 
+               [ ''g 'd 'b 'd 'b 'd ] 
+               [ 'd 'a d 'a d 'a ] 
+       } {
+               \stemdown
+               ''g2 r4
+               'd2 r4 
+       } >
+
+%%47
+       \stemboth
+       < [ 'cis ''a > 'e 'a 'e 'a 'e ] |
+%%48
+       [ 'd 'fis 'a 'fis 'a 'fis ] |
+%%49
+       [ 'd 'a d 'a d 'a ] |
+%%50
+       [ ''g 'e 'g 'e 'g 'e ] |
+%%51
+       [ ''a 'e 'g 'e 'g 'e ] |
+%%52
+       [ ''d 'd 'fis 'd 'fis 'd ] |
+%%53
+       [ 'd 'g 'bes 'g 'bes 'g ] |
+%%54
+       [ 'd 'fis 'a 'fis 'a 'fis ] |
+%%55
+       [ ''a 'e 'g 'e 'g 'e ] |
+%%56
+       [ ''d ''a 'd ''a 'd ''a ] |
+%%57
+       [ ''d ''a 'd ''a 'd ''a ]
+%%58
+       < 'd2.^\fermata ''d2. > |
+ }
+
+
+tekstI = \lyric{
+       \meter 3/4;
+       \duration 4;
+       _ _ _
+       _ _ _
+       _ _ _
+       _ _ _
+% 5
+       \[2/3 Lei- se8 \] fleh-4. en8 
+       \[2/3 mei- ne8 \] Lie- der8 _8
+       Durch4. die8 \[2/3 Nacht zu8 \] 
+       dir;2 _    
+       _ _ _ 
+       _ _ _
+% 11
+       \[2/3 In den8 \] stil-4. len8 
+       \[2/3 Hain her-8 \] nie-4. der,8
+       Lieb4. chen,8 \[2/3 komm zu8 \] 
+       mir!2 _
+       _ _ _ 
+       _ _ _
+
+% 17
+       Fl\"us-8. ternd16 schlan-4. ke8 
+       Wip-8. fel16 rau-4. schen8
+       \[2/3 In des8 \] Mon-4. des8 
+       Licht;2.
+       _ _ _ 
+       _ _ _
+
+% 23
+       Des8. Ver-16 r\"a-4. ters8 
+       feind-8. lich16 Lau-4. schen8
+       \[2/3 F\"urch- te,8 \] Hol-4. de,8 
+       nicht.2.
+       _ _ _ 
+       _ _ _
+
+% volta 1
+% 29
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+
+% volta 2
+% 37
+       La\ss8. auch16 dir8. die16 Brust8. be-16
+       we- gen, _
+       Lieb-4. chen,8 h\"o-8. re16 
+       mich!2 _
+       Be-8. bend16 harr' ich8 _8
+       dir8. ent-16 ge- gen!8 _8
+       \[2/3 Komm, be-8 \] gl\"u4. cke8 
+       mich!2.
+       _ _ _ _ _ _
+% 47
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+% 57
+       _ _ _ _ _ _ 
+       
+}
+
+tekstII = \lyric{
+    \meter 3/4;
+       \duration 4;
+       _ _ _
+       _ _ _
+       _ _ _
+       _ _ _
+% 5
+       \[2/3 H\"orst die8 \] Nach-4. ti-8 
+       \[2/3 gal- len8 \] schla- gen?8 _8
+       Ach!4. sie8 \[2/3 fleh- en8 \] 
+       dich,2 _
+       _ _ _ 
+       _ _ _
+
+% 11
+       \[2/3 Mit der8 \] T\"o-4. ne8
+       \[2/3 s\"u\ss- en8 \] Kla-4. gen8
+       Fleh-4. en8 \[2/3 sie f\"ur8 \]
+       mich.2 _
+       _ _ _ 
+       _ _ _
+
+% 17
+       Sie-8. ver-16 stehn4. des8
+       Bus-8. ens16 Seh-4. nen,8
+       \[2/3 Ken- nen8 \] Lieb-4. es-8 
+       schmerz,2.
+       _ _ _ 
+       _ _ _
+
+% 23
+       R\"uh-8. ren16 mit4. den8 
+       Sil-8. ber-16 t\"o-4. nen8
+       \[2/3 Jed- es8 \] wei-4. che8 
+       Herz.2.
+       _ _ _ 
+       _ _ _
+% volta 1
+% 29
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+
+% volta 2
+% 37
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _ 
+       _ _ _ _ _ _
+% 47
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+       _ _ _ _ _ _
+% 57
+       _ _ _ _ _ _ 
+       
+}
+
+$treble_staff = \type Staff = treble<
+       \commands
+       \melodie
+>
+
+$bass_staff = \type Staff = bass<
+       \commands
+       \begeleiding
+>
+$grand_staff = \type Grand_staff<
+       \$treble_staff
+       \$bass_staff
+>
+
+$lyric_staff = \type Lyrics = lyric<
+       \tekstI
+       \tekstII
+>
+
+themusic = <   
+       \$lyric_staff
+       \$grand_staff   
+>
+
+\score{
+       \themusic
+       \midi{
+               \tempo 4 = 54;
+       }
+       \paper{
+               % 20pt music uses whole pagewidth
+               % ja Vette Pech.  Koop maar een A3 printer
+               % huh? [jcn]
+               linewidth= 193.\mm;
+%              arithmetic_multiplier = 7.\pt;
+               
+               gourlay_maxmeasures = 9.;
+               \output "standchen-20.out";
+       }
+       \paper{
+               \paper_sixteen
+               % 16pt mustn't use whole page width
+               linewidth= 160.\mm;
+%              arithmetic_multiplier = 6.\pt;
+%              gourlay_maxmeasures = 9.;
+               \output "standchen-16.out";
+       }
+}
index 2a407932f02cba94b66815d0308d6620520eb7ae..03148d90a0ba71fadd61ecdfbb948008575c7124 100644 (file)
 \header{
-filename = "standchen.ly";
-title    = "St\"andchen (Serenade)\\\``Leise flehen meine Lieder''";
-opus     = "D. 957 No. 4";
-composer = "Franz Schubert (1797-1828)\\\ \hfill Text by Ludwig Rellstab (1799-1860)";
-enteredby = "JCN";
-copyright = "public domain";
+filename =      "standchen.ly";
+title    = "St\"andchen";
+subtitle = "(Serenade)\\\``Leise flehen meine Lieder''";
+opus =  "D. 957 No. 4";
+composer =      "Franz Schubert (1797-1828)"
+        "Text by Ludwig Rellstab (1799-1860)";
+enteredby =     "JCN";
+copyright =     "public domain";
 } 
 
 %{
- Tested Features: multivoice, accents, lyrics, chords, piano music,
+ Tested Features@ multivoice, accents, lyrics, chords, piano music,
 multiple \paper{}s in one \score 
 %}
 
-\include "paper20.ly"
 \version "0.1.10";
 
-commands = \melodic{
-       \skip 2.*4;
-       \bar "|:";
-       \skip 2.*24;
-%      volta1
-       \skip 2.*8;
-%      volta2
-       \bar ":|";
-       \skip 2.*22;
-       \bar "|."; 
-       }
-
-melodie = \melodic{ 
-       \meter 3/4;
-       \clef "violin";
-       \key bes;
+$vocal_verse1 = \melodic{
        \octave c';
-       \duration 8;
-       r \pp < [ d 'a-| > f-| < d 'a-| > f-| < d 'a-| ] > |
-%%2
-       r < [ d 'bes-| > f-| < d 'bes-| > f-| < d 'bes-| ] > |
-%%3
-       \textstyle "italic";
-       r_"simile" < [ d 'bes > e < d 'bes > e < d 'bes ] >|
-       \textstyle "roman";
        
-%%4
-       r < [ 'a cis > e < 'a cis > e < 'a cis ] > |
-%%5
-       [2/3 a() bes a ]1/1 d'4. a |
-%%6
-       [2/3 g() a g ]1/1 d'4 g r |
-
-%%7
-       a4.^> g [2/3 g() f e ]1/1 |
-%%8
-       f2 r4 |
-%%9
-       < { a'4.()  g' [2/3 g'( f' )e' ]1/1 }
-       { cis'4. e'_"dolce" \[2/3 e' \] } > |
-%%10
-       < f'2. d'2. > |
-%%11
-       [2/3 a ()  bes a ]1/1 f'4. a |
-%%12
-       [2/3 g()   a g ]1/1 e'4. d' |
-%%13
-       c'4. bes [2/3 bes()   a g ]1/1 |
-%%14
-       a2 r 
-       < { d'()  c'4. g [2/3 bes a g ]1/1 }
-       { f \p ()  e4._"dolce" bes \[2/3 g \] } > |
-%%16
-       < a2. f2. > |
-%%17
-       \textstyle "italic";
-       [ a8._"cresc." cis'16 ] f'4. e'
-       \textstyle "roman";|
-%%18
-       [ d'8. a16 ] f4. d |
-%%19
-%#%    c'\grace\stemup
-       [2/3 bes ()   a bes ]1/1 d'4. bes |
-%%20
-       a2. |
-%%21
-%#%    a\grace
-       [2/3 g()  fis g ]1/1 bes4.^> g |
-%%22
-       f!2. |
-%%23
-       [ a8. \mf cis'16 ] f'4. e' |
-%%24
-       [ d'8. a16 ] fis4. d |
-%%25
-       [2/3 b \mf()   ais b ]1/1 d'4. b |
-%%26
-       < a2. fis2. > |
-%%27
-       [2/3 e' \f()  dis' e' ]1/1 g'4. cis' |
-%%28
-       < d'2. fis2. > |
-%#%\volta1
-%%29
-       < { bes2( [ d'8.() )bes16 ] }
-       { g2 \mf [ bes8. g16 ] } > |
-%%30
-       < { a4. [ a-. a-. a-. ] }
-       { fis4. [ fis-.( fis-. )fis-. ] } > |
-%%31 
-       < { a4. [ a-. a-. a-. ] }
-       { g4. [ cis-.( e-. )g-. ] } > |
-%%32
-       < a2 fis2 \pp > < a4 fis4 > |
-%%33
-       < { b2( [ d'8.() )b16 ] }
-       { g2 [ b8. g16 ] } > |
-%%34
-       < { a4. [ a-. a-. a-. ] }
-       { fis4. [ fis-.( fis-. )fis-. ] } > |
-%%35
-       < { a4. [ a-. a-. a-. ] }
-       { g4. [ cis-.( e-. )g-. ] } > |
-%%36
-       < a2. fis2. > |
-%#%\volta2
-%%37
-       [ a8. a16 ] [ cis'8. cis'16 ] [ e'8. e'16 ] |
-%%38
-       d'4()  cis'4 r4 |
-%%39
-%#%    > a4. [ cis' e'8. >! d'16 ] |
-       a4. \> [ cis' e'8. \! d'16 ] |
-%%40
-       cis'2 r4 |
-%%41
-       < fis'4. \> cis'4. \f > e' [2/3 e'()  d' \! cis' ]1/1 |
-%%42
-       [ b8. cis'16 ] d'4^> b r |
-%%43
-
-       [ b8. \f cis'16 ] d'4^> b r |
-%%44
-       [ b8. \> cis'16 ] d'4^> b \! r |
-%%45
-       [2/3 b \p ()  ais b ]1/1 d'4. b |
-%%46
-       <a!2. fis2. > |
-%%47
-       [2/3 e' \f()  dis' e' ]1/1 g'4.^> cis' |
-%%48
-       \textstyle "italic";
-       < 
-       { fis2.(
-       %\group "+1"; 
-               \stemdown )f2. }
-       { d'2. ( \stemup
-               ) d'4 r4_"decresc." d'4 } 
-       >
-       \textstyle "roman"; |
-%%50
-       < bes2. e2. > |
-%%51
-       < a2. cis2. > |
-%%52
-       < fis2 d2 > < a4 fis4 \pp > |
-%%53
-
-       < bes2 g2 > < [ d'8.^> bes8. > < bes16 g16 ] > |
-%%54
-       < { a4. [ a-. a-. a-. ] }
-       { fis4. [ fis-.( fis-. )fis-.] } > |
-%%55
-       < { a4. [ a-. a-. a-. ] }
-       { g4. [ cis-.( e-. )g-. ] } > |
-%%56
-       \textstyle "italic";
-       < a2. fis2._"dim." >
-       \textstyle "roman"; |
-%%57
-       < a2. fis2. > |
-%%58
-       < a2.^\fermata fis2. > |
-%#%\tighten
+       % ugh: treble/bass
+%      \clef treble;
+%      \clef violin;
+       [/3 g8( )as] g \] c'4. g8 |
+       [/3 f8( )g] f \] c'4 f8 r |
+       g4.-> f8 [/3 f( )es] d \] |
+       es2 r4 |
+       % ugh: a whole should be a measure
+       %r1 |
+       r2. |
+       r2. |
+       [/3 g8( )as] g \] es'4. g8 |
+       [/3 f8( )g] f \] d'4. c'8 |
+       bes4. as8 [/3 as( )g] f \] |
+       g2 r4 |
+       r2. |
+       r2. |
+       g8. b16 es'4. d'8 |
+       c'8. g16 es4. c8 |
+       % [/3 as\grace( bes ] )
+       [/3 as8( )g] as \] c'4. as8 |
+       g2. |
+       %[/3 f\grace( g] )
+       [/3 f8( )e] f \] as4. f8 |
+       es!2. |
+       g8. b16 es'4. d'8 |
+       c'8. g16 e4. c8 |
+       % [/3 a\grace( b] )
+       [/3 a!8( ) gis] a \] c'4. a8 |
+       g!2. |
+       % [/3 a\grace( b] )
+       [/3 d'8\f cis'] d' \] f'4. b8 |
+       c'!2. |
 }
 
-begeleiding = \melodic{ 
-       \meter 3/4;
-       \clef"bass";
-       \key bes;
+$vocal_through = \melodic{
        \octave c';
-       \duration 2;
-       'd r4 |
-%%2
-       ''bes r4 |
-
-%%3
-       ''g r4 |
-
-%%4
-       ''a r4 |
-%%5
-\duration 8;
-       \multi 2 < { \stemup    
-               [ 'f 'a d 'a d 'a ] 
-               [ 'd 'e 'g 'e 'g 'e ] 
-               [ 'cis 'e 'g 'e 'g 'e ]
-               [ 'd 'a d 'a d 'a ]
-               }
-       { \stemdown 
-               'd2 r4 
-                ''bes2 r4 
-                ''a2 r4
-               'd2 r4
-       } >
-%%9
-       \stemboth
-       [ 'a e g e g e ] |
-%%10
-       [ 'd 'a d 'a d 'a ] |
-%%11
-       \multi 2 <      
-       { \stemup
-               [ 'f 'a d 'a d 'a ]
-               [ 'd 'e 'g 'e 'g 'e ] 
-               [ 'e 'g 'bes 'g 'bes 'g ] 
-               [ 'a c f c f c ]
-       } { \stemdown 
-               'd2 r4 
-                ''bes2 r4
-                'c2 r4 
-                'f2 r4 } 
-       >
-%%15
-       \stemboth
-       [ 'c 'g 'bes 'g 'bes 'g ] |
-%%16
-       [ ''f 'c 'f 'c 'f 'c ] |
-       \multi 2 <
-       { \stemup 
-               [ ''a 'e 'g 'e 'g 'e ][ 'd 'a d 'a d 'a ]
-               [ ''bes 'f 'bes 'f 'bes 'f ][ ''f 'c 'f 'c 'f 'c ] }
-       { \stemdown 
-               ''a2 r4
-               'd2 r4 
-               ''bes2 r4 
-               ''f2 r4 
-       } > 
-%%21
-       \stemboth
-       < [ 'e 'c > 'g c 'g c 'g ] |
-%%22
-       [ 'f 'a c 'a 'f 'c ] |
-       \multi 2 < {
-               \stemup
-               [ ''a 'e 'g 'e 'g 'e ] 
-               [ 'd 'fis 'a 'fis 'a 'fis ] 
-               [ ''g 'd 'b 'd 'b 'd ] 
-               [ 'd 'a d 'a d 'a ] 
-       }
-       {\stemdown
-               ''a2 r4 
-               'd2 r4 
-               ''g2 r4 
-               'd2 r4 
-       }
-       >
-       \stemboth
-       < [ 'cis ''a > 'e 'a 'e 'a 'e ] |
-%%28
-       [ 'd 'a d 'a d 'a ] |
-%%29
-       [ 'd 'g 'bes 'g 'bes 'g ] |
-%#%\volta1
-%%30 
-       [ 'd 'fis 'a 'fis 'a 'fis ] |
-%%31
-       [ ''a 'e 'a 'e 'a 'e ] |
-%%32
-       [ 'd 'fis 'a 'fis 'a 'fis ] |
-%%33
-       [ 'd 'g 'b 'g 'b 'g ] |
-%%34
-       [ 'd 'fis 'a 'fis 'a 'fis ] |
-%%35
-       [ ''a 'e 'a 'e 'a 'e ] |
-%%36
-       [ 'd 'fis 'a 'fis 'a 'fis ] |
-%#%\volta2
-%%37
-       [ ''a 'e 'g 'e ''bes^> 'e ] |
-%%38
-       [ ''a < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a ] > |
-%%39
-       [ ''a 'e 'g 'e ''bes^> 'e ] |
-%%40
-       [ ''a < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a > < e cis 'a ] > |
-%%41
-       [ ''ais 'e 'fis 'e 'fis 'e ] |
-%%42
-       < [ 'd ''b > 'fis 'b 'fis 'b 'fis ] |
-%%43
-       < [ 'e ''b > 'g 'b 'g 'b 'g ] |
-%%44
-       < [ 'd ''b > 'fis 'b 'fis 'b 'fis ] |
-%%45
-       \multi 2 < { \stemup 
-               [ ''g 'd 'b 'd 'b 'd ] 
-               [ 'd 'a d 'a d 'a ] 
-       } {
-               \stemdown
-               ''g2 r4
-               'd2 r4 
-       } >
-
-%%47
-       \stemboth
-       < [ 'cis ''a > 'e 'a 'e 'a 'e ] |
-%%48
-       [ 'd 'fis 'a 'fis 'a 'fis ] |
-%%49
-       [ 'd 'a d 'a d 'a ] |
-%%50
-       [ ''g 'e 'g 'e 'g 'e ] |
-%%51
-       [ ''a 'e 'g 'e 'g 'e ] |
-%%52
-       [ ''d 'd 'fis 'd 'fis 'd ] |
-%%53
-       [ 'd 'g 'bes 'g 'bes 'g ] |
-%%54
-       [ 'd 'fis 'a 'fis 'a 'fis ] |
-%%55
-       [ ''a 'e 'g 'e 'g 'e ] |
-%%56
-       [ ''d ''a 'd ''a 'd ''a ] |
-%%57
-       [ ''d ''a 'd ''a 'd ''a ]
-%%58
-       < 'd2.^\fermata ''d2. > |
- }
-
-
-tekstI = \lyric{
-       \meter 3/4;
-       \duration 4;
-       _ _ _
-       _ _ _
-       _ _ _
-       _ _ _
+       g8. g16 b8. b16 d'8. d16 |
+       c'4 b r |
+       g4. b8 d'8. c'16 |
+       b2 r4 |
+       e'4. d'8 [/3 d'( )c'] b \] |
+       a8. b16 c'4-> a8 r |
+       r2. |
+       r2. |
+       % 4 bars copied from end verse 1
+       % [/3 a\grace( b] )
+       [/3 a!8( ) gis] a \] c'4. a8 |
+       g!2. |
+       % [/3 a\grace( b] )
+       [/3 d'8\f cis'] d' \] f'4. b8 |
+       c'!2. ~ |
+       c'4 r c' |
+       as2. |
+       g |
+       es2 r4 |
+}
+
+$lyric_verse1 = \lyric{
 % 5
-       \[2/3 Lei- se8 \] fleh-4. en8 
-       \[2/3 mei- ne8 \] Lie- der8 _8
-       Durch4. die8 \[2/3 Nacht zu8 \] 
-       dir;2 _    
-       _ _ _ 
-       _ _ _
+       \[/3 Lei-4 se8 \] fleh-4. en8 |
+       \[/3 mei-4 ne8 \] Lie-4 der8 _8 |
+       Durch4. die8 \[/3 Nacht4 zu8 \] |
+       dir;2 _4 |
+       _4 _ _ |
+       _ _ _ |
 % 11
-       \[2/3 In den8 \] stil-4. len8 
-       \[2/3 Hain her-8 \] nie-4. der,8
-       Lieb4. chen,8 \[2/3 komm zu8 \] 
-       mir!2 _
-       _ _ _ 
-       _ _ _
-
+       \[/3 In4 den8 \] stil-4. len8 |
+       \[/3 Hainr4 her-8 \] nie-4. der,8 |
+       Lieb4. chen,8 \[/3 komm4 zu8 \] |
+       mir!2 _4 |
+       _4 _ _ |
+       _ _ _ |
 % 17
-       Fl\"us-8. ternd16 schlan-4. ke8 
-       Wip-8. fel16 rau-4. schen8
-       \[2/3 In des8 \] Mon-4. des8 
-       Licht;2.
-       _ _ _ 
-       _ _ _
-
-% 23
-       Des8. Ver-16 r\"a-4. ters8 
-       feind-8. lich16 Lau-4. schen8
-       \[2/3 F\"urch- te,8 \] Hol-4. de,8 
-       nicht.2.
-       _ _ _ 
-       _ _ _
-
-% volta 1
-% 29
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-
-% volta 2
-% 37
-       La\ss8. auch16 dir8. die16 Brust8. be-16
-       we- gen, _
-       Lieb-4. chen,8 h\"o-8. re16 
-       mich!2 _
-       Be-8. bend16 harr' ich8 _8
-       dir8. ent-16 ge- gen!8 _8
-       \[2/3 Komm, be-8 \] gl\"u4. cke8 
-       mich!2.
-       _ _ _ _ _ _
-% 47
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-% 57
-       _ _ _ _ _ _ 
-       
+       Fl\"us-8. ternd16 schlan-4. ke8 |
+       Wip-8. fel16 rau-4. schen8 |
+       \[/3 In4 des8 \] Mon-4. des8 |
+       Licht;2. |
+       _4 _ _ |
+       _4 _ _ |
+% 23 
+       Des8. Ver-16 r\"a-4. ters8 |
+       feind-8. lich16 Lau-4. schen8 |
+       \[/3 F\"urch-4 te,8 \] Hol-4. de,8 |
+       nicht,2. |
+       \[/3 f\"urch-4 te,8 \] Hol-4. de,8 |
+       nicht.2. |
 }
-
-tekstII = \lyric{
-    \meter 3/4;
-       \duration 4;
-       _ _ _
-       _ _ _
-       _ _ _
-       _ _ _
+       
+$lyric_verse2 = \lyric{
 % 5
-       \[2/3 H\"orst die8 \] Nach-4. ti-8 
-       \[2/3 gal- len8 \] schla- gen?8 _8
-       Ach!4. sie8 \[2/3 fleh- en8 \] 
-       dich,2 _
-       _ _ _ 
-       _ _ _
+       \[/3 H\"orst4 die8 \] Nach-4. ti-8 
+       \[/3 gal-4 len8 \] schla-4 gen?8 _8
+       Ach!4. sie8 \[/3 fleh-4 en8 \] 
+       dich,2 _4
+       _4 _ _ 
+       _4_ _
 
 % 11
-       \[2/3 Mit der8 \] T\"o-4. ne8
-       \[2/3 s\"u\ss- en8 \] Kla-4. gen8
-       Fleh-4. en8 \[2/3 sie f\"ur8 \]
-       mich.2 _
-       _ _ _ 
-       _ _ _
+       \[/3 Mit4 der8 \] T\"o-4. ne8
+       \[/3 s\"u\ss-4 en8 \] Kla-4. gen8
+       Fleh-4. en8 \[/3 sie4 f\"ur8 \]
+       mich.2 _4
+       _4_ _ 
+       _4_ _
 
 % 17
        Sie-8. ver-16 stehn4. des8
        Bus-8. ens16 Seh-4. nen,8
-       \[2/3 Ken- nen8 \] Lieb-4. es-8 
+       \[/3 Ken-4 nen8 \] Lieb-4. es-8 
+       schmerz,2.
+       \[/3 Ken-4 nen8 \] Lieb-4. es-8 
        schmerz,2.
-       _ _ _ 
-       _ _ _
 
 % 23
        R\"uh-8. ren16 mit4. den8 
        Sil-8. ber-16 t\"o-4. nen8
-       \[2/3 Jed- es8 \] wei-4. che8 
+       \[/3 Jed-4 es8 \] wei-4. che8 
        Herz.2.
-       _ _ _ 
-       _ _ _
-% volta 1
-% 29
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-
-% volta 2
+       \[/3 Jed-4 es8 \] wei-4. che8 
+       Herz.2.
+}
+
+$lyric_through = \lyric{
 % 37
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _ 
-       _ _ _ _ _ _
-% 47
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-       _ _ _ _ _ _
-% 57
-       _ _ _ _ _ _ 
+       La\ss8. auch16 dir8. die16 Brust8. be-16 |
+       we-4 gen, _ |
+       Lieb-4. chen,8 h\"o-8. re16 |
+       mich!2 _4 |
+       Be-8. bend16 harr'4 ich8 _8 |
+       dir8. ent-16 ge-4 gen!8 _8 |
+       \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
+       mich!2. |
+       \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
+       mich!2. |
+       _2 be-4 |
+       gl\"u-2. |
+       cke2. |
+       mich!2 _4 |
+}
+
+$treble_intro = \melodic{
+       \octave c';
+       \clef violin;
+       % ugh: i'd like to type this!
+       %r8\pp [<'g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.>] |
+       r8\pp <['g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.]> |
+       r8 <['as-. c-.> <c-. es-.> <'as-. c-.> <c-. es-.> <'as-. c-.]> |
+       r8 <['as-. c-.> <c-. d-.> <'as-. c-.> <c-. d-.> <'as-. c-.]> |
+       r8 <['g-. 'b-.> <'b-. d-.> <'g-. 'b-.> <'b-. d-.> <'g-. 'b-.]> |
+       \break;
        
 }
 
-$treble_staff = \type Staff = treble<
-       \commands
-       \melodie
+$treble_verse1 = \melodic{
+       \octave c';
+%      \clef violin;
+       r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+       r8 <['f c> <c d> <'f c> <c d> <'f c]> |
+       r8 <['f 'g 'b> <'g 'b d> <'f 'g 'b> <'g 'b d> <'f 'g 'b]> |
+       r8 <['es 'g c> <'g c es> <'es 'g c> <'g c es> <'es 'g c]> |
+       <g'4.( b> <)f'8 d'> <[/3 f' d'> <es' c'> <d' b]1/1> |
+       <c'2. es'> |
+       r8 <['g c> <c es> <'g c> <c es> <'g c]> |
+       r8 <['f c> <c d> <'f c> <c d> <'f c]> |
+       r8 <['f 'as 'bes> <'as 'bes d> <'f 'g 'bes> <'g 'bes d> <'f 'g 'bes]> |
+       r8 <['es 'g 'bes> <'g 'bes es> <'es 'g 'bes> <'g 'bes es]> 
+       <{ es'( | )bes4. as8}{ c'( | )d4.( )f8 } > 
+       < [/3 f as> <es g> <d f]1/1> |
+       <es2. g> |
+       r8 <['f 'g> <'g 'b> <'f 'g> <'g 'b> <'f 'g]> |
+       r8 <['es 'g> <'g c> <'es 'g> <'g c> <'es 'g]> |
+       r8\pp <['es 'as c> <'as c es> <'es 'as c> <'as c es> <'es 'as c]> |
+       r8 <['es 'g 'bes> <'g 'bes 'es> <'es 'g 'bes> <'g 'bes 'es> <'es 'g 'bes]> |
+       % [/3 as\grace( bes )
+       [/3 as8(( g )as]1/1 c'4.-> ) as8 |
+       g2. |
+       r8 <['f 'g> <'g 'b> <'f 'g> <'g 'b> <'f 'g]> |
+       r8 <['e 'g> <'g c> <'e 'g> <'g c> <'e 'g]> |
+       r8 <['f 'a c> <'a c f> <'f 'a c> <'a c f> <'f 'a c]> |
+       r8 <['e 'g c> <'g c e> <'e 'g c> <'g c e> <'e 'g c]> |
+       <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
+       <e2 e'> r4 |
+}
+
+$treble_eentje = \melodic{
+       \octave c';
+       <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
+       <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
+       <f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
+       <e2 g\pp> <e4 g> |
+       <f2\mf a(> <[a8.( c'> <)f16 )a]> |
+       <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
+       <f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
+       <e2. g> |
+}
+
+$treble_through = \melodic{
+       \octave c';
+       r2. |
+       % lily: 221: warning: Junking request: Span_dynamic_req: the \>
+       <['g8.\< g> <'g16 g> <'b8. b> <\!'b16\> b16> <d8. d'> <d16 d']> |
+       % lily: 222: warning: Can't find cresc to end.
+       < { c4( )'b } { c'4( )b } > \!r |
+% ugh
+%      <'g4. g> <'b8 b> <[d8.-> d'->> c'16] |
+       <'g4. g> <'b8 b> [d'8.-> c'16] |
+% ugh, ugh: connecting chords
+       < { d2.\f( )a2} { e2. ~ e2 } { b2. c2 }> r4 |
+       < 
+               {
+                       \voiceone 
+                       [a8. b16] c'4->( )a8 r |
+                       [a8. b16] c'4->( )a8 r |
+               }
+               { 
+                       \voicetwo 
+                       <d4\f f> <d2 f> |
+                       <c!4\f es> <c2 es> |
+               }
+       >
+       % 4 bars copied from end verse1
+       r8 <['f\p 'a c> <'a c f> <'f 'a c> <'a c f> <'f 'a c]> |
+       r8 <['e 'g c> <'g c e> <'e 'g c> <'g c e> <'e 'g c]> |
+       <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
+       <e2 e'> r4 |
+       <es2 es'> r4 |
+       <d2 d'> r4 |
+       <'b2 b> r4 |
+       <c2 c'> <e4\pp g> |
+
+       % four copied from begin eentje
+       <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
+       <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
+       <f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
+       \textstyle "italic";
+       <e2._"dim." g> |
+       <'g2. e g> |
+       <'g2.-\fermata e g> |
+}
+
+$bass_intro = \melodic{
+       \octave c;
+       \clef bass;
+       <'c2 c> r4 |
+       <''as2 'as> r4 |
+       <''f2 'f> r4 |
+       <''g2 'g> r4 |
+}
+
+$bass_verse1 = \melodic{
+       \octave c;
+%      \clef bass;
+       <'c2 c> r4 |
+       <''as2 'as> r4 |
+       <''g2 'g> r4 |
+       <'c2 c> r4 |
+       <''g8 'g> <[g d'> <d' f'> <g d'> <d' f'> <g d']> |
+       <'c8 c> <[g c'> <c' es'> <g c'> <c' es'> <g c']> |
+       <'c2 c> r4 |
+       <''as2 'as> r4 |
+       <''bes2 'bes> r4 |
+       <''es2 'es> r4 |
+       ''bes8 <['bes f> <f bes> <'bes f> <f bes> <'bes f]> |
+       ''es8 <['bes es> <es g> <'bes es> <es g> <'bes es]> |
+       <''g2 'g> r4 |
+       <'c2 c> r4 |
+       <''as2 'as> r4 |
+       <''es2 'es> r4 |
+       <''bes8 'bes> <[f bes> <bes d'> <f bes> <bes d'> <f bes]> |
+       <''es8 'es> <[es g bes> <g bes es'> <es g bes> <g bes es'> <es g bes]> |
+       <''g2 'g> r4 |
+       <'c2 c> r4 |
+       <''f2 'f> r4 |
+       <'c2 c> r4 |
+       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
+       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+}
+
+$bass_eentje = \melodic{
+       \octave c;
+       <'c8 c> <[c f as!> <f as c'> <c f as> <f as c'> <c f as]> |
+       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
+       'c8 <[e g> <g c'> <e g> <g c'> <e g]> |
+       <'c8 c> <[c f a> <f a c'> <c f a> <f a c'> <c f a]> |
+       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
+       'c8 <[e g> <g c'> <e g> <g c'> <e g]> |
+}
+
+$bass_through = \melodic{
+       \octave c;
+       <''g8 'g> <['g 'b d> <'b d f> <'g 'b d> <'as!-> b-> d->> <'b d f]> |
+       <''g8 'g> <['g d> <d f> <'g d> <'as-> b-> d->> <'b d f]> |
+       % copied
+       <''g8 'g> <['g d> <d f> <'g d> <'as-> b-> d->> <'b d f]> |
+       <''g8 'g> <['g d e> <d f> <'g d> <'gis-> 'b-> d->> <'b d f]> |
+       <''gis8 'gis> <[d e> <e b> <d e> <e b> <d e]> |
+       <''a8 'a> <[c e> <e a> <c e> <e a> <c e]> |
+       <''a8 'a> <['a d f> <d f a> <'a d f> <d f a> <'a d f]> |
+       <''a8 'a> <['a c e> <c e a> <'a c e> <c e a> <'a c e]> |
+       % 4 bars copied from end verse1
+       <''f2 'f> r4 |
+       <'c2 c> r4 |
+       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
+       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+
+       <'c8 c> <[c es! g> <es g c'> <c es! g> <es g c'> <c es! g]> |
+       <''f8 'f> <[d f> <f as!> <d f> <f as!> <d f]> |
+       <''g8 'g> <[d f> <f g> <d f> <f g> <d f]> |
+       'c8 <[c e> <e g> <c e> <e g> <c e]> |
+       'c8 <[c f> <f as> <c f> <f as> <c f]> |
+       'c8 <[c e> <e g> <c e> <e g> <c e]> |
+       ''g8 <['g d> <d f> <'g d> <d f> <'g d]> |
+       % copied from two bars back
+       'c8 <[c e> <e g> <c e> <e g> <c e]> |
+       'c8 <[c e> <e g> <c e> <e g> <c e]> |
+       <'c2._\fermata 'g c> |
+}
+               
+global = \melodic{
+       \meter 3/4; 
+       \key bes es as;
+       \skip 4 * 12;
+       \break;
+       \skip 4 * 234;
+       \bar "|.";
+}
+
+
+$lyric_four = \lyric{ 
+       _4 _ _
+       _ _ _
+       _ _ _
+       _ _ _
+}
+
+lyrics = \melodic{
+       \meter 3/4; 
+%      \skip 4 * 12; 
+       \$lyric_four
+       \$lyric_verse1
+%      \skip 4 * 24; 
+       \$lyric_four
+       \$lyric_four
+       \$lyric_verse2
+       \$lyric_through
+}
+
+$lyric_staff = \type Lyrics = lyric<
+       \$lyrics
 >
+               
+vocals = \melodic{
+       \skip 4 * 12; 
+       \$vocal_verse1 
+       \skip 4 * 24; 
+       \$vocal_verse1
+       \$vocal_through
+}
+
+$vocal_staff = \type Staff = vocal<
+       \property Staff.instrument = "alto sax"
+       \global
+       \$vocals
+>
+
+% treble = \melodic{
+treble = {
+       \$treble_intro 
+       \$treble_verse1 
+       \$treble_eentje
+       \$treble_verse1 
+       \$treble_through
+}
+
+$treble_staff = \type Staff = treble< 
+       \global
+       \treble
+>
+
+bass = \melodic{
+       \$bass_intro 
+       \$bass_verse1 
+       \$bass_eentje
+       \$bass_verse1 
+       \$bass_through
+}
 
 $bass_staff = \type Staff = bass<
-       \commands
-       \begeleiding
+       \global
+       \bass
 >
+
 $grand_staff = \type Grand_staff<
        \$treble_staff
        \$bass_staff
 >
 
-$lyric_staff = \type Lyrics = lyric<
-       \tekstI
-       \tekstII
->
+a4 = \paper{
+       gourlay_maxmeasures = 7.;
+       linewidth= 193.\mm;
+Score = \translator {
+       \type Score_engraver;
 
-themusic = <   
-       \$lyric_staff
-       \$grand_staff   
->
+       \consists "Timing_engraver";
+       \consists "Bar_column_engraver";
+       \consists "Bar_number_engraver";
+       \consists "Span_score_bar_engraver";
+       \consists "Score_priority_engraver";
+       \consists "Priority_horizontal_align_engraver";
+       \consists "Vertical_align_engraver";
+
+
+       \accepts "Staff_group";
+       \accepts "Staff";
+       \accepts "Rhythmic_staff";      
+       \accepts "Lyrics";
+       \accepts "Grand_staff";
+}
+}
 
 \score{
-       \themusic
+       <
+               \$vocal_staff
+               \$lyric_staff
+               \$grand_staff
+       >
+       \paper{ \a4 }
        \midi{
                \tempo 4 = 54;
        }
-       \paper{
-               \paper_twenty
-               % 20pt music uses whole pagewidth
-               % ja Vette Pech.  Koop maar een A3 printer
-               % huh? [jcn]
-               linewidth= 193.\mm;
-%              arithmetic_multiplier = 7.\pt;
-               
-               gourlay_maxmeasures = 9.;
-               \output "standchen-20.out";
-       }
-       \paper{
-               % 16pt mustn't use whole page width
-               linewidth= 160.\mm;
-%              arithmetic_multiplier = 6.\pt;
-%              gourlay_maxmeasures = 9.;
-               \output "standchen-16.out";
-       }
 }
+
+
+
diff --git a/mutopia/standje.ly b/mutopia/standje.ly
deleted file mode 100644 (file)
index 9193c65..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-\header{
-filename =      "standje.ly";
-title =         "St\\\"andchen (Serenade) ``Leise flehen meine Lieder''";
-opus =  "D. 957 No. 4";
-composer =      "Franz Schubert (1797-1828)"
-        "Text by Ludwig Rellstab (1799-1860)";
-enteredby =     "JCN";
-copyright =     "public domain";
-} 
-
-%{
- Tested Features@ multivoice, accents, lyrics, chords, piano music,
-multiple \paper{}s in one \score 
-%}
-
-\version "0.1.10";
-
-$vocal_verse1 = \melodic{
-       \octave c';
-       
-       % ugh: treble/bass
-%      \clef treble;
-%      \clef violin;
-       [/3 g8( )as] g \] c'4. g8 |
-       [/3 f8( )g] f \] c'4 f8 r |
-       g4.-> f8 [/3 f( )es] d \] |
-       es2 r4 |
-       % ugh: a whole should be a measure
-       %r1 |
-       r2. |
-       r2. |
-       [/3 g8( )as] g \] es'4. g8 |
-       [/3 f8( )g] f \] d'4. c'8 |
-       bes4. as8 [/3 as( )g] f \] |
-       g2 r4 |
-       r2. |
-       r2. |
-       g8. b16 es'4. d'8 |
-       c'8. g16 es4. c8 |
-       % [/3 as\grace( bes ] )
-       [/3 as8( )g] as \] c'4. as8 |
-       g2. |
-       %[/3 f\grace( g] )
-       [/3 f8( )e] f \] as4. f8 |
-       es!2. |
-       g8. b16 es'4. d'8 |
-       c'8. g16 e4. c8 |
-       % [/3 a\grace( b] )
-       [/3 a!8( ) gis] a \] c'4. a8 |
-       g!2. |
-       % [/3 a\grace( b] )
-       [/3 d'8\f cis'] d' \] f'4. b8 |
-       c'!2. |
-}
-
-$vocal_through = \melodic{
-       \octave c';
-       g8. g16 b8. b16 d'8. d16 |
-       c'4 b r |
-       g4. b8 d'8. c'16 |
-       b2 r4 |
-       e'4. d'8 [/3 d'( )c'] b \] |
-       a8. b16 c'4-> a8 r |
-       r2. |
-       r2. |
-       % 4 bars copied from end verse 1
-       % [/3 a\grace( b] )
-       [/3 a!8( ) gis] a \] c'4. a8 |
-       g!2. |
-       % [/3 a\grace( b] )
-       [/3 d'8\f cis'] d' \] f'4. b8 |
-       c'!2. ~ |
-       c'4 r c' |
-       as2. |
-       g |
-       es2 r4 |
-}
-
-$lyric_verse1 = \lyric{
-% 5
-       \[/3 Lei-4 se8 \] fleh-4. en8 |
-       \[/3 mei-4 ne8 \] Lie-4 der8 _8 |
-       Durch4. die8 \[/3 Nacht4 zu8 \] |
-       dir;2 _4 |
-       _4 _ _ |
-       _ _ _ |
-% 11
-       \[/3 In4 den8 \] stil-4. len8 |
-       \[/3 Hainr4 her-8 \] nie-4. der,8 |
-       Lieb4. chen,8 \[/3 komm4 zu8 \] |
-       mir!2 _4 |
-       _4 _ _ |
-       _ _ _ |
-% 17
-       Fl\"us-8. ternd16 schlan-4. ke8 |
-       Wip-8. fel16 rau-4. schen8 |
-       \[/3 In4 des8 \] Mon-4. des8 |
-       Licht;2. |
-       _4 _ _ |
-       _4 _ _ |
-% 23 
-       Des8. Ver-16 r\"a-4. ters8 |
-       feind-8. lich16 Lau-4. schen8 |
-       \[/3 F\"urch-4 te,8 \] Hol-4. de,8 |
-       nicht,2. |
-       \[/3 f\"urch-4 te,8 \] Hol-4. de,8 |
-       nicht.2. |
-}
-       
-$lyric_verse2 = \lyric{
-% 5
-       \[/3 H\"orst4 die8 \] Nach-4. ti-8 
-       \[/3 gal-4 len8 \] schla-4 gen?8 _8
-       Ach!4. sie8 \[/3 fleh-4 en8 \] 
-       dich,2 _4
-       _4 _ _ 
-       _4_ _
-
-% 11
-       \[/3 Mit4 der8 \] T\"o-4. ne8
-       \[/3 s\"u\ss-4 en8 \] Kla-4. gen8
-       Fleh-4. en8 \[/3 sie4 f\"ur8 \]
-       mich.2 _4
-       _4_ _ 
-       _4_ _
-
-% 17
-       Sie-8. ver-16 stehn4. des8
-       Bus-8. ens16 Seh-4. nen,8
-       \[/3 Ken-4 nen8 \] Lieb-4. es-8 
-       schmerz,2.
-       \[/3 Ken-4 nen8 \] Lieb-4. es-8 
-       schmerz,2.
-
-% 23
-       R\"uh-8. ren16 mit4. den8 
-       Sil-8. ber-16 t\"o-4. nen8
-       \[/3 Jed-4 es8 \] wei-4. che8 
-       Herz.2.
-       \[/3 Jed-4 es8 \] wei-4. che8 
-       Herz.2.
-}
-
-$lyric_through = \lyric{
-% 37
-       La\ss8. auch16 dir8. die16 Brust8. be-16 |
-       we-4 gen, _ |
-       Lieb-4. chen,8 h\"o-8. re16 |
-       mich!2 _4 |
-       Be-8. bend16 harr'4 ich8 _8 |
-       dir8. ent-16 ge-4 gen!8 _8 |
-       \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
-       mich!2. |
-       \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
-       mich!2. |
-       _2 be-4 |
-       gl\"u-2. |
-       cke2. |
-       mich!2 _4 |
-}
-
-$treble_intro = \melodic{
-       \octave c';
-       \clef violin;
-       % ugh: i'd like to type this!
-       %r8\pp [<'g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.>] |
-       r8\pp <['g-. c-.> <c-. es-.> <'g-. c-.> <c-. es-.> <'g-. c-.]> |
-       r8 <['as-. c-.> <c-. es-.> <'as-. c-.> <c-. es-.> <'as-. c-.]> |
-       r8 <['as-. c-.> <c-. d-.> <'as-. c-.> <c-. d-.> <'as-. c-.]> |
-       r8 <['g-. 'b-.> <'b-. d-.> <'g-. 'b-.> <'b-. d-.> <'g-. 'b-.]> |
-       \break;
-       
-}
-
-$treble_verse1 = \melodic{
-       \octave c';
-%      \clef violin;
-       r8 <['g c> <c es> <'g c> <c es> <'g c]> |
-       r8 <['f c> <c d> <'f c> <c d> <'f c]> |
-       r8 <['f 'g 'b> <'g 'b d> <'f 'g 'b> <'g 'b d> <'f 'g 'b]> |
-       r8 <['es 'g c> <'g c es> <'es 'g c> <'g c es> <'es 'g c]> |
-       <g'4.( b> <)f'8 d'> <[/3 f' d'> <es' c'> <d' b]1/1> |
-       <c'2. es'> |
-       r8 <['g c> <c es> <'g c> <c es> <'g c]> |
-       r8 <['f c> <c d> <'f c> <c d> <'f c]> |
-       r8 <['f 'as 'bes> <'as 'bes d> <'f 'g 'bes> <'g 'bes d> <'f 'g 'bes]> |
-       r8 <['es 'g 'bes> <'g 'bes es> <'es 'g 'bes> <'g 'bes es]> 
-       <{ es'( | )bes4. as8}{ c'( | )d4.( )f8 } > 
-       < [/3 f as> <es g> <d f]1/1> |
-       <es2. g> |
-       r8 <['f 'g> <'g 'b> <'f 'g> <'g 'b> <'f 'g]> |
-       r8 <['es 'g> <'g c> <'es 'g> <'g c> <'es 'g]> |
-       r8\pp <['es 'as c> <'as c es> <'es 'as c> <'as c es> <'es 'as c]> |
-       r8 <['es 'g 'bes> <'g 'bes 'es> <'es 'g 'bes> <'g 'bes 'es> <'es 'g 'bes]> |
-       % [/3 as\grace( bes )
-       [/3 as8(( g )as]1/1 c'4.-> ) as8 |
-       g2. |
-       r8 <['f 'g> <'g 'b> <'f 'g> <'g 'b> <'f 'g]> |
-       r8 <['e 'g> <'g c> <'e 'g> <'g c> <'e 'g]> |
-       r8 <['f 'a c> <'a c f> <'f 'a c> <'a c f> <'f 'a c]> |
-       r8 <['e 'g c> <'g c e> <'e 'g c> <'g c e> <'e 'g c]> |
-       <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
-       <e2 e'> r4 |
-}
-
-$treble_eentje = \melodic{
-       \octave c';
-       <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
-       <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
-       <f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
-       <e2 g\pp> <e4 g> |
-       <f2\mf a(> <[a8.( c'> <)f16 )a]> |
-       <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
-       <f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
-       <e2. g> |
-}
-
-$treble_through = \melodic{
-       \octave c';
-       r2. |
-       % lily: 221: warning: Junking request: Span_dynamic_req: the \>
-       <['g8.\< g> <'g16 g> <'b8. b> <\!'b16\> b16> <d8. d'> <d16 d']> |
-       % lily: 222: warning: Can't find cresc to end.
-       < { c4( )'b } { c'4( )b } > \!r |
-% ugh
-%      <'g4. g> <'b8 b> <[d8.-> d'->> c'16] |
-       <'g4. g> <'b8 b> [d'8.-> c'16] |
-% ugh, ugh: connecting chords
-       < { d2.\f( )a2} { e2. ~ e2 } { b2. c2 }> r4 |
-       < 
-               {
-                       \voiceone 
-                       [a8. b16] c'4->( )a8 r |
-                       [a8. b16] c'4->( )a8 r |
-               }
-               { 
-                       \voicetwo 
-                       <d4\f f> <d2 f> |
-                       <c!4\f es> <c2 es> |
-               }
-       >
-       % 4 bars copied from end verse1
-       r8 <['f\p 'a c> <'a c f> <'f 'a c> <'a c f> <'f 'a c]> |
-       r8 <['e 'g c> <'g c e> <'e 'g c> <'g c e> <'e 'g c]> |
-       <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
-       <e2 e'> r4 |
-       <es2 es'> r4 |
-       <d2 d'> r4 |
-       <'b2 b> r4 |
-       <c2 c'> <e4\pp g> |
-
-       % four copied from begin eentje
-       <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
-       <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
-       <f4. g> <['b8-. g-.(> <d-. g-.> <f-. )g-.]> |
-       \textstyle "italic";
-       <e2._"dim." g> |
-       <'g2. e g> |
-       <'g2.-\fermata e g> |
-}
-
-$bass_intro = \melodic{
-       \octave c;
-       \clef bass;
-       <'c2 c> r4 |
-       <''as2 'as> r4 |
-       <''f2 'f> r4 |
-       <''g2 'g> r4 |
-}
-
-$bass_verse1 = \melodic{
-       \octave c;
-%      \clef bass;
-       <'c2 c> r4 |
-       <''as2 'as> r4 |
-       <''g2 'g> r4 |
-       <'c2 c> r4 |
-       <''g8 'g> <[g d'> <d' f'> <g d'> <d' f'> <g d']> |
-       <'c8 c> <[g c'> <c' es'> <g c'> <c' es'> <g c']> |
-       <'c2 c> r4 |
-       <''as2 'as> r4 |
-       <''bes2 'bes> r4 |
-       <''es2 'es> r4 |
-       ''bes8 <['bes f> <f bes> <'bes f> <f bes> <'bes f]> |
-       ''es8 <['bes es> <es g> <'bes es> <es g> <'bes es]> |
-       <''g2 'g> r4 |
-       <'c2 c> r4 |
-       <''as2 'as> r4 |
-       <''es2 'es> r4 |
-       <''bes8 'bes> <[f bes> <bes d'> <f bes> <bes d'> <f bes]> |
-       <''es8 'es> <[es g bes> <g bes es'> <es g bes> <g bes es'> <es g bes]> |
-       <''g2 'g> r4 |
-       <'c2 c> r4 |
-       <''f2 'f> r4 |
-       <'c2 c> r4 |
-       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
-       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-}
-
-$bass_eentje = \melodic{
-       \octave c;
-       <'c8 c> <[c f as!> <f as c'> <c f as> <f as c'> <c f as]> |
-       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
-       'c8 <[e g> <g c'> <e g> <g c'> <e g]> |
-       <'c8 c> <[c f a> <f a c'> <c f a> <f a c'> <c f a]> |
-       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
-       'c8 <[e g> <g c'> <e g> <g c'> <e g]> |
-}
-
-$bass_through = \melodic{
-       \octave c;
-       <''g8 'g> <['g 'b d> <'b d f> <'g 'b d> <'as!-> b-> d->> <'b d f]> |
-       <''g8 'g> <['g d> <d f> <'g d> <'as-> b-> d->> <'b d f]> |
-       % copied
-       <''g8 'g> <['g d> <d f> <'g d> <'as-> b-> d->> <'b d f]> |
-       <''g8 'g> <['g d e> <d f> <'g d> <'gis-> 'b-> d->> <'b d f]> |
-       <''gis8 'gis> <[d e> <e b> <d e> <e b> <d e]> |
-       <''a8 'a> <[c e> <e a> <c e> <e a> <c e]> |
-       <''a8 'a> <['a d f> <d f a> <'a d f> <d f a> <'a d f]> |
-       <''a8 'a> <['a c e> <c e a> <'a c e> <c e a> <'a c e]> |
-       % 4 bars copied from end verse1
-       <''f2 'f> r4 |
-       <'c2 c> r4 |
-       <''g8 'g> <[d g> <g b> <d g> <g b> <d g]> |
-       'c8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-
-       <'c8 c> <[c es! g> <es g c'> <c es! g> <es g c'> <c es! g]> |
-       <''f8 'f> <[d f> <f as!> <d f> <f as!> <d f]> |
-       <''g8 'g> <[d f> <f g> <d f> <f g> <d f]> |
-       'c8 <[c e> <e g> <c e> <e g> <c e]> |
-       'c8 <[c f> <f as> <c f> <f as> <c f]> |
-       'c8 <[c e> <e g> <c e> <e g> <c e]> |
-       ''g8 <['g d> <d f> <'g d> <d f> <'g d]> |
-       % copied from two bars back
-       'c8 <[c e> <e g> <c e> <e g> <c e]> |
-       'c8 <[c e> <e g> <c e> <e g> <c e]> |
-       <'c2._\fermata 'g c> |
-}
-               
-global = \melodic{
-       \meter 3/4; 
-       \key bes es as;
-       \skip 4 * 12;
-       \break;
-       \skip 4 * 234;
-       \bar "|.";
-}
-
-
-$lyric_four = \lyric{ 
-       _4 _ _
-       _ _ _
-       _ _ _
-       _ _ _
-}
-
-lyrics = \melodic{
-       \meter 3/4; 
-%      \skip 4 * 12; 
-       \$lyric_four
-       \$lyric_verse1
-%      \skip 4 * 24; 
-       \$lyric_four
-       \$lyric_four
-       \$lyric_verse2
-       \$lyric_through
-}
-
-$lyric_staff = \type Lyrics = lyric<
-       \$lyrics
->
-               
-vocals = \melodic{
-       \skip 4 * 12; 
-       \$vocal_verse1 
-       \skip 4 * 24; 
-       \$vocal_verse1
-       \$vocal_through
-}
-
-$vocal_staff = \type Staff = vocal<
-       \property Staff.instrument = "alto sax"
-       \global
-       \$vocals
->
-
-% treble = \melodic{
-treble = {
-       \$treble_intro 
-       \$treble_verse1 
-       \$treble_eentje
-       \$treble_verse1 
-       \$treble_through
-}
-
-$treble_staff = \type Staff = treble< 
-       \global
-       \treble
->
-
-bass = \melodic{
-       \$bass_intro 
-       \$bass_verse1 
-       \$bass_eentje
-       \$bass_verse1 
-       \$bass_through
-}
-
-$bass_staff = \type Staff = bass<
-       \global
-       \bass
->
-
-$grand_staff = \type Grand_staff<
-       \$treble_staff
-       \$bass_staff
->
-
-a4 = \paper{
-       gourlay_maxmeasures = 7.;
-%      linewidth= 193.\mm;
-       linewidth= 175.\mm;
-       Staff = \translator {
-               \type "Engraver_group_engraver";
-               defaultclef = violin;
-
-               \consists "Bar_engraver";
-               \consists "Clef_engraver";
-               \consists "Key_engraver";
-               \consists "Meter_engraver";
-               \consists "Local_key_engraver";
-               \consists "Staff_sym_engraver";
-               \consists "Collision_engraver";
-               \consists "Rest_collision_engraver";
-               \consists "Bar_column_engraver";
-               \consists "Bar_number_engraver";
-               \consists "Separating_line_group_engraver";
-               \consists "Line_group_engraver";
-                 
-               \accepts "Voice";
-       }
-}
-
-\score{
-       <
-               \$vocal_staff
-               \$lyric_staff
-               \$grand_staff
-       >
-       \paper{ \a4 }
-       \midi{
-               \tempo 4 = 54;
-       }
-}
-
index dc077b4f29966276e9085c4897f18f51aaeaf8ca..418538880e97674b8058e65e6b6063d4c2623f8d 100644 (file)
@@ -15,6 +15,7 @@
 typedef void *Paper_def;
 
 bool experimental_features_global_b = true;
+//bool experimental_features_global_b = false;
 
 #include "bezier.hh"
 
@@ -139,9 +140,12 @@ main ()
   bow ((Point[6]){ 0,0, 20,-20, 40,-40, 60,-60, 80,-20, 100,-100 }, 6, 1);
   bow ((Point[6]){ 0,0, 20,-20, 40,-40, 60,-60, 80,-140, 100,-100 }, 6, -1);
   bow ((Point[7]){ 0,0, 20,40, 100,0, 150,0, 200,0, 280,40, 300,0 }, 7, 1);
-  bow ((Point[7]){ 0,0, 20,40, 100,0, 150,0, 200,0, 280,40, 300,0 }, 7, 1);
+  bow ((Point[7]){ 0,0, 20,-40, 100,0, 150,0, 200,0, 280,-40, 300,0 }, 7, -1);
   bow ((Point[7]){ 0,20, 20,40, 100,0, 150,0, 200,0, 280,40, 300,20 }, 7, 1);
   bow ((Point[3]){ 0,0, 10,10, 20,-20 }, 3, 1);
+
+  bow ((Point[4]){ 0,0, 33,100, 75,0, 100,100 }, 4, -1);
+  bow ((Point[4]){ 0,0, 33,-100, 75,0, 100,-100 }, 4, 1);
 #endif
 
 #if 1
@@ -154,7 +158,6 @@ main ()
   bow ((Point[6]){ 0,0, 20,20, 40,40, 60,60, 80,140, 100,100 }, 6, 1);
 #endif
 
-
   cout << "\\end" << endl;
 
   return 0;
index 915d3c1388c915b8ad4ef67d3e8c347c160ba86a..81dd884c8cdc58228e1e1c815ec781dce8fbb4f3 100644 (file)
@@ -1,5 +1,9 @@
 
 
+\advance\topmargin-20mm
+\addtolength{\textheight}{40mm}
+\footskip5mm
+
 \usepackage{fancyheadings}
 \lhead{}
 \rhead{}
@@ -10,3 +14,4 @@
 \headrulewidth0mm
 \pagestyle{fancy}
 \thispagestyle{fancy}
+
index 59e4d4e857e788e75f62999ea25a2a78e4964096..074eb7d1ce7466155f937066a7694e6e8268fe0d 100644 (file)
@@ -120,7 +120,7 @@ staffrulethickness 1.2 mul /plet_t exch def
        plet_dx plet_dy lineto
        stroke
 } bind def
-staffheight 2 div /slurhtlimit exch def
+%
 /draw_slur
 {
        staffrulethickness setlinewidth
@@ -132,7 +132,18 @@ staffheight 2 div /slurhtlimit exch def
        fill
        grestore
        stroke
-       } bind def
+} bind def
+%
+/draw_dashed_slur
+{
+       1 setlinecap
+       1 setlinejoin
+       setdash
+       setlinewidth
+       moveto
+       curveto
+       stroke
+} bind def
 %
 staffheight 4 div /interline exch def
 %
index aa31034329fcfbb2ab437c5a99bbf8eefea8610c..8a345d603c0b32229a76c89ce29f9241a62906ea 100644 (file)
         \musixcalc
 }
 \def\musixelevendefs{
-        \elevendefs
+        \elevenfonts
         \musixcalc
 }