summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS.txt4
-rw-r--r--Documentation/INSTALL.pod22
-rw-r--r--Documentation/Makefile21
-rw-r--r--Documentation/gnu-music-history57
-rw-r--r--Documentation/gnu-music.pod57
-rw-r--r--Documentation/index.pod57
-rw-r--r--Documentation/links.pod5
-rw-r--r--Documentation/man/lilypond.pod10
-rw-r--r--Documentation/relative-octaves.pod88
-rw-r--r--Documentation/tex/fonts.doc30
-rw-r--r--Documentation/tex/mudela.doc9
-rw-r--r--Documentation/topweb.pod72
-rw-r--r--INSTALL.txt122
-rw-r--r--NEWS56
-rw-r--r--PATCHES.txt6
-rw-r--r--README3
-rw-r--r--TODO57
-rw-r--r--VERSION2
-rw-r--r--aclocal.m426
-rw-r--r--bin/add-html-footer.py74
-rwxr-xr-xbin/conflily.sh64
-rwxr-xr-xbin/make-patch.py21
-rwxr-xr-xbin/make-website.py227
-rw-r--r--bin/mutopia-index.py2
-rwxr-xr-xbin/ps-to-gifs.sh2
-rw-r--r--flower/NEWS3
-rw-r--r--flower/include/string-convert.hh1
-rw-r--r--flower/string-convert.cc18
-rw-r--r--init/book-fragment.ly2
-rw-r--r--init/declarations.ly3
-rw-r--r--init/lily-init.ly4
-rw-r--r--init/paper-params16.ly0
-rw-r--r--init/paper-params20.ly0
-rw-r--r--init/paper11.ly38
-rw-r--r--init/paper13.ly38
-rw-r--r--init/paper16.ly40
-rw-r--r--init/paper20.ly35
-rw-r--r--init/paper26.ly43
-rw-r--r--init/params.ly49
-rw-r--r--init/property.ly12
-rw-r--r--input/Makefile2
-rw-r--r--input/pedal.ly6
-rw-r--r--input/scales.ly2
-rw-r--r--input/test/Makefile4
-rw-r--r--input/test/abbrev.ly14
-rw-r--r--input/test/beam-pos.ly4
-rw-r--r--input/test/clefs.ly2
-rw-r--r--input/test/dotted-slur.ly20
-rw-r--r--input/test/multi-rest.ly30
-rw-r--r--input/test/slurs.ly1
-rw-r--r--lily/abbrev.cc3
-rw-r--r--lily/abbreviation-beam-engraver.cc1
-rw-r--r--lily/bar-grav.cc23
-rw-r--r--lily/beam.cc68
-rw-r--r--lily/bezier.cc64
-rw-r--r--lily/bow.cc13
-rw-r--r--lily/break.cc15
-rw-r--r--lily/clef-grav.cc14
-rw-r--r--lily/clef-item.cc13
-rw-r--r--lily/command-request.cc19
-rw-r--r--lily/include/bar-grav.hh1
-rw-r--r--lily/include/bezier.hh2
-rw-r--r--lily/include/bow.hh2
-rw-r--r--lily/include/clef-grav.hh2
-rw-r--r--lily/include/clef-item.hh8
-rw-r--r--lily/include/command-request.hh17
-rw-r--r--lily/include/lily-proto.hh5
-rw-r--r--lily/include/lookup.hh1
-rw-r--r--lily/include/main.hh1
-rw-r--r--lily/include/multi-measure-rest-engraver.hh12
-rw-r--r--lily/include/musical-request.hh1
-rw-r--r--lily/include/my-lily-parser.hh6
-rw-r--r--lily/include/paper-def.hh19
-rw-r--r--lily/include/score-column.hh5
-rw-r--r--lily/include/score-grav.hh2
-rw-r--r--lily/include/spring-spacer.hh4
-rw-r--r--lily/include/time-description.hh67
-rw-r--r--lily/include/timing-grav.hh1
-rw-r--r--lily/include/timing-translator.hh1
-rw-r--r--lily/lexer.ll10
-rw-r--r--lily/lookup.cc35
-rw-r--r--lily/main.cc17
-rw-r--r--lily/multi-measure-rest-engraver.cc74
-rw-r--r--lily/multi-measure-rest.cc2
-rw-r--r--lily/musical-request.cc3
-rw-r--r--lily/my-lily-lexer.cc2
-rw-r--r--lily/my-lily-parser.cc101
-rw-r--r--lily/paper-def.cc77
-rw-r--r--lily/parser.hh119
-rw-r--r--lily/parser.yy157
-rw-r--r--lily/rod.cc4
-rw-r--r--lily/score-column.cc5
-rw-r--r--lily/score-grav.cc22
-rw-r--r--lily/scores.cc4
-rw-r--r--lily/separating-group-spanner.cc13
-rw-r--r--lily/slur-grav.cc3
-rw-r--r--lily/slur.cc58
-rw-r--r--lily/span-score-bar.cc4
-rw-r--r--lily/spring-spacer.cc7
-rw-r--r--lily/stem-info.cc35
-rw-r--r--lily/stem.cc2
-rw-r--r--lily/tie-grav.cc3
-rw-r--r--lily/tie.cc15
-rw-r--r--lily/timing-grav.cc8
-rw-r--r--lily/timing-translator.cc6
-rw-r--r--make/Docrules.make3
-rw-r--r--make/Mutopia.make3
-rw-r--r--make/Toplevel.make.in15
-rw-r--r--make/WWW.make1
-rw-r--r--make/lilypond.spec.in13
-rw-r--r--make/out/lelievijver.lsm8
-rw-r--r--make/out/lilypond.lsm8
-rw-r--r--make/out/lilypond.spec17
-rw-r--r--mf/README44
-rw-r--r--mi2mu/mudela-stream.cc2
-rw-r--r--mudela-mode.el2
-rw-r--r--mutopia/Coriolan/clarinetti-part.ly3
-rw-r--r--mutopia/Coriolan/clarinetto-1.ly6
-rw-r--r--mutopia/Coriolan/clarinetto-2.ly6
-rw-r--r--mutopia/Coriolan/coriolan.ly1
-rw-r--r--mutopia/Coriolan/corni-part.ly3
-rw-r--r--mutopia/Coriolan/corno-1.ly6
-rw-r--r--mutopia/Coriolan/corno-2.ly6
-rw-r--r--mutopia/Coriolan/fagotti-part.ly3
-rw-r--r--mutopia/Coriolan/fagotto-1.ly6
-rw-r--r--mutopia/Coriolan/fagotto-2.ly6
-rw-r--r--mutopia/Coriolan/flauti-part.ly2
-rw-r--r--mutopia/Coriolan/flauto-1.ly6
-rw-r--r--mutopia/Coriolan/flauto-2.ly6
-rw-r--r--mutopia/Coriolan/oboe-1.ly6
-rw-r--r--mutopia/Coriolan/oboe-2.ly6
-rw-r--r--mutopia/Coriolan/oboi-part.ly4
-rw-r--r--mutopia/Coriolan/part-paper.ly32
-rw-r--r--mutopia/Coriolan/timpani.ly6
-rw-r--r--mutopia/Coriolan/trombe-part.ly5
-rw-r--r--mutopia/Coriolan/trombo-1.ly6
-rw-r--r--mutopia/Coriolan/trombo-2.ly6
-rw-r--r--mutopia/Coriolan/violino-2.ly2
-rw-r--r--mutopia/J.S.Bach/Makefile1
-rw-r--r--mutopia/J.S.Bach/preludes-1.ly5
-rw-r--r--mutopia/J.S.Bach/preludes-2.ly5
-rw-r--r--mutopia/J.S.Bach/preludes-3.ly.m45
-rw-r--r--mutopia/J.S.Bach/preludes-4.ly5
-rw-r--r--mutopia/J.S.Bach/preludes-5.ly4
-rw-r--r--mutopia/J.S.Bach/preludes-6.ly5
-rw-r--r--mutopia/J.S.Bach/scsii-menuetto.ly173
-rw-r--r--mutopia/J.S.Bach/wtk1-fugue2.ly3
-rw-r--r--mutopia/Makefile2
-rw-r--r--mutopia/los-toros-oboe-16.tex38
-rw-r--r--mutopia/los-toros-oboe-20.tex39
-rw-r--r--mutopia/los-toros-oboe.ly51
-rw-r--r--mutopia/ltor.ly361
-rw-r--r--mutopia/standchen-16.tex32
-rw-r--r--mutopia/standchen-20.ly1
-rw-r--r--mutopia/standchen-20.tex37
-rw-r--r--mutopia/standchen-easy.ly522
-rw-r--r--mutopia/standchen.ly875
-rw-r--r--mutopia/standje.ly457
-rw-r--r--test/bow.cc7
-rw-r--r--tex/headers.tex5
-rw-r--r--tex/lily-ps-defs.tex15
-rw-r--r--tex/lilyponddefs.tex2
162 files changed, 3021 insertions, 2519 deletions
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 11fde65e97..ae928060c5 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -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
diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod
index a52cccadc7..093db58f92 100644
--- a/Documentation/INSTALL.pod
+++ b/Documentation/INSTALL.pod
@@ -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
diff --git a/Documentation/Makefile b/Documentation/Makefile
index c152287412..fc2341ae54 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -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
index 0000000000..4ed2814108
--- /dev/null
+++ b/Documentation/gnu-music-history
@@ -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.
diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod
index 2d52c81195..97656daf6e 100644
--- a/Documentation/gnu-music.pod
+++ b/Documentation/gnu-music.pod
@@ -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.
diff --git a/Documentation/index.pod b/Documentation/index.pod
index 573226533c..8b6ddc24d7 100644
--- a/Documentation/index.pod
+++ b/Documentation/index.pod
@@ -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
diff --git a/Documentation/links.pod b/Documentation/links.pod
index 965650c1ad..ebc316f933 100644
--- a/Documentation/links.pod
+++ b/Documentation/links.pod
@@ -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
diff --git a/Documentation/man/lilypond.pod b/Documentation/man/lilypond.pod
index 9338fd8f79..9ba489dc1c 100644
--- a/Documentation/man/lilypond.pod
+++ b/Documentation/man/lilypond.pod
@@ -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
index 0000000000..b6b31507af
--- /dev/null
+++ b/Documentation/relative-octaves.pod
@@ -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>.
diff --git a/Documentation/tex/fonts.doc b/Documentation/tex/fonts.doc
index a8c78d20ca..200e4bcdd6 100644
--- a/Documentation/tex/fonts.doc
+++ b/Documentation/tex/fonts.doc
@@ -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}
diff --git a/Documentation/tex/mudela.doc b/Documentation/tex/mudela.doc
index 0e0cb6cf02..9ffc13a0ba 100644
--- a/Documentation/tex/mudela.doc
+++ b/Documentation/tex/mudela.doc
@@ -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
index 0000000000..e917dc6780
--- /dev/null
+++ b/Documentation/topweb.pod
@@ -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
diff --git a/INSTALL.txt b/INSTALL.txt
index d1baab3015..70ee6927dd 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -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 51026e6884..cd3c31277c 100644
--- 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.
diff --git a/PATCHES.txt b/PATCHES.txt
index 70d234cbd7..47ec147291 100644
--- a/PATCHES.txt
+++ b/PATCHES.txt
@@ -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 9b9075c73f..4eece482a0 100644
--- 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 e57940c896..076258f3c5 100644
--- 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 5f824472e8..71356ecbb7 100644
--- 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:
diff --git a/aclocal.m4 b/aclocal.m4
index a459924cb2..d1ec16c75e 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -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
index 0000000000..590042719f
--- /dev/null
+++ b/bin/add-html-footer.py
@@ -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)
diff --git a/bin/conflily.sh b/bin/conflily.sh
index e42d608713..0ca024ad8f 100755
--- a/bin/conflily.sh
+++ b/bin/conflily.sh
@@ -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
diff --git a/bin/make-patch.py b/bin/make-patch.py
index bf3eb0ce1f..d72c672e0a 100755
--- a/bin/make-patch.py
+++ b/bin/make-patch.py
@@ -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
index ac6d865af6..0000000000
--- a/bin/make-website.py
+++ /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()
-
-
diff --git a/bin/mutopia-index.py b/bin/mutopia-index.py
index ba178fdb72..485578f0dc 100644
--- a/bin/mutopia-index.py
+++ b/bin/mutopia-index.py
@@ -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>')
diff --git a/bin/ps-to-gifs.sh b/bin/ps-to-gifs.sh
index 57021850f5..c276406a2b 100755
--- a/bin/ps-to-gifs.sh
+++ b/bin/ps-to-gifs.sh
@@ -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
diff --git a/flower/NEWS b/flower/NEWS
index e0736d4cf0..e9a2005613 100644
--- a/flower/NEWS
+++ b/flower/NEWS
@@ -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:
diff --git a/flower/include/string-convert.hh b/flower/include/string-convert.hh
index 72149f78ec..4842eac2d7 100644
--- a/flower/include/string-convert.hh
+++ b/flower/include/string-convert.hh
@@ -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);
};
diff --git a/flower/string-convert.cc b/flower/string-convert.cc
index 79fbe1829e..dd89038d09 100644
--- a/flower/string-convert.cc
+++ b/flower/string-convert.cc
@@ -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;
+}
+
diff --git a/init/book-fragment.ly b/init/book-fragment.ly
index f6789cf262..01762e927e 100644
--- a/init/book-fragment.ly
+++ b/init/book-fragment.ly
@@ -1,6 +1,6 @@
% Toplevel initialisation file.
-\version "0.1.9";
+\version "0.1.10";
\include "declarations.ly"
diff --git a/init/declarations.ly b/init/declarations.ly
index 76933ee128..e54f56738d 100644
--- a/init/declarations.ly
+++ b/init/declarations.ly
@@ -28,4 +28,7 @@ down = -1
% zillie spellink?
center=0
+break = { \penalty = 10000; }
+nobreak = { \penalty = -10000; }
+
\include "property.ly"
diff --git a/init/lily-init.ly b/init/lily-init.ly
index 22b5bffa6d..81fec7443f 100644
--- a/init/lily-init.ly
+++ b/init/lily-init.ly
@@ -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
index 0000000000..e69de29bb2
--- /dev/null
+++ b/init/paper-params16.ly
diff --git a/init/paper-params20.ly b/init/paper-params20.ly
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/init/paper-params20.ly
diff --git a/init/paper11.ly b/init/paper11.ly
index ce5bc83169..4ad47c88ac 100644
--- a/init/paper11.ly
+++ b/init/paper11.ly
@@ -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";
}
diff --git a/init/paper13.ly b/init/paper13.ly
index 0ed8c70eea..6642832691 100644
--- a/init/paper13.ly
+++ b/init/paper13.ly
@@ -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";
}
diff --git a/init/paper16.ly b/init/paper16.ly
index 35b411d5d9..b9b777403d 100644
--- a/init/paper16.ly
+++ b/init/paper16.ly
@@ -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";
}
diff --git a/init/paper20.ly b/init/paper20.ly
index eca46a73a4..0375e79def 100644
--- a/init/paper20.ly
+++ b/init/paper20.ly
@@ -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";
}
diff --git a/init/paper26.ly b/init/paper26.ly
index f7ba97952f..1e38b8bec8 100644
--- a/init/paper26.ly
+++ b/init/paper26.ly
@@ -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
index 0000000000..f6313c648b
--- /dev/null
+++ b/init/params.ly
@@ -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";
+
diff --git a/init/property.ly b/init/property.ly
index 587db1d47f..9520dbb86f 100644
--- a/init/property.ly
+++ b/init/property.ly
@@ -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
+}
+
diff --git a/input/Makefile b/input/Makefile
index 4167e225f9..b74c0c32a3 100644
--- a/input/Makefile
+++ b/input/Makefile
@@ -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
diff --git a/input/pedal.ly b/input/pedal.ly
index 41affb55f2..bdf20beb9d 100644
--- a/input/pedal.ly
+++ b/input/pedal.ly
@@ -39,10 +39,10 @@
< '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{}
}
diff --git a/input/scales.ly b/input/scales.ly
index 3e3ad7de7f..3736895648 100644
--- a/input/scales.ly
+++ b/input/scales.ly
@@ -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-^]
diff --git a/input/test/Makefile b/input/test/Makefile
index b03bae72a4..9fa614ef2e 100644
--- a/input/test/Makefile
+++ b/input/test/Makefile
@@ -6,4 +6,8 @@ depth = ../..
#
+examples = font20
+
include $(depth)/make/Mutopia.make
+
+include $(depth)/make/WWW.make
diff --git a/input/test/abbrev.ly b/input/test/abbrev.ly
index c2522e60a1..c57aeabdae 100644
--- a/input/test/abbrev.ly
+++ b/input/test/abbrev.ly
@@ -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]
diff --git a/input/test/beam-pos.ly b/input/test/beam-pos.ly
index 74367dc474..76030ec43e 100644
--- a/input/test/beam-pos.ly
+++ b/input/test/beam-pos.ly
@@ -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;
diff --git a/input/test/clefs.ly b/input/test/clefs.ly
index 7722d99d1b..3c14564347 100644
--- a/input/test/clefs.ly
+++ b/input/test/clefs.ly
@@ -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
index 0000000000..067f019be2
--- /dev/null
+++ b/input/test/dotted-slur.ly
@@ -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
index 0000000000..691427bd49
--- /dev/null
+++ b/input/test/multi-rest.ly
@@ -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
+ >
+
+ }
+
diff --git a/input/test/slurs.ly b/input/test/slurs.ly
index 6663ffdffa..14dedf18fe 100644
--- a/input/test/slurs.ly
+++ b/input/test/slurs.ly
@@ -3,7 +3,6 @@
\score{
\melodic{\octave c';
- \duration "last";
'c4 ~ 'c c'' ~ c'' ~ g ~ c ~
d ~ e ~ f ~ g ~
diff --git a/lily/abbrev.cc b/lily/abbrev.cc
index 54088537b6..977c1307c6 100644
--- a/lily/abbrev.cc
+++ b/lily/abbrev.cc
@@ -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;
diff --git a/lily/abbreviation-beam-engraver.cc b/lily/abbreviation-beam-engraver.cc
index ca62b92d24..f2a69f5504 100644
--- a/lily/abbreviation-beam-engraver.cc
+++ b/lily/abbreviation-beam-engraver.cc
@@ -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);
diff --git a/lily/bar-grav.cc b/lily/bar-grav.cc
index b711bf4a07..33e62ad6a9 100644
--- a/lily/bar-grav.cc
+++ b/lily/bar-grav.cc
@@ -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);
}
}
diff --git a/lily/beam.cc b/lily/beam.cc
index fef050e58b..e792aeddbd 100644
--- a/lily/beam.cc
+++ b/lily/beam.cc
@@ -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++)
{
diff --git a/lily/bezier.cc b/lily/bezier.cc
index 2267e2d42c..2242c4ffa5 100644
--- a/lily/bezier.cc
+++ b/lily/bezier.cc
@@ -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);
diff --git a/lily/bow.cc b/lily/bow.cc
index 770fd8a973..b986debd30 100644
--- a/lily/bow.cc
+++ b/lily/bow.cc
@@ -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;
diff --git a/lily/break.cc b/lily/break.cc
index f25ac5e32f..42db7970f5 100644
--- a/lily/break.cc
+++ b/lily/break.cc
@@ -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;
diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc
index d7ce0c4df0..bc981272a4 100644
--- a/lily/clef-grav.cc
+++ b/lily/clef-grav.cc
@@ -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;
}
diff --git a/lily/clef-item.cc b/lily/clef-item.cc
index eda65592b9..234b85fbb4 100644
--- a/lily/clef-item.cc
+++ b/lily/clef-item.cc
@@ -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;
}
diff --git a/lily/command-request.cc b/lily/command-request.cc
index 6742e6bee7..b4f142a7ed 100644
--- a/lily/command-request.cc
+++ b/lily/command-request.cc
@@ -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)
diff --git a/lily/include/bar-grav.hh b/lily/include/bar-grav.hh
index 7677f5279d..b513e3e517 100644
--- a/lily/include/bar-grav.hh
+++ b/lily/include/bar-grav.hh
@@ -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);
diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh
index df6b3362cb..ea8c1ed00d 100644
--- a/lily/include/bezier.hh
+++ b/lily/include/bezier.hh
@@ -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_;
diff --git a/lily/include/bow.hh b/lily/include/bow.hh
index 4dbf2ead70..e7e3e912cc 100644
--- a/lily/include/bow.hh
+++ b/lily/include/bow.hh
@@ -25,6 +25,8 @@ public:
DECLARE_MY_RUNTIME_TYPEINFO;
+ int dash_i_;
+
protected:
virtual Molecule* brew_molecule_p () const;
virtual Interval do_width () const;
diff --git a/lily/include/clef-grav.hh b/lily/include/clef-grav.hh
index 61318648ed..ec4702cac8 100644
--- a/lily/include/clef-grav.hh
+++ b/lily/include/clef-grav.hh
@@ -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_;
/* ************** */
diff --git a/lily/include/clef-item.hh b/lily/include/clef-item.hh
index c6e00a992e..3b82f9d426 100644
--- a/lily/include/clef-item.hh
+++ b/lily/include/clef-item.hh
@@ -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);
diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh
index 9a12dc8e19..112fa2f6d8 100644
--- a/lily/include/command-request.hh
+++ b/lily/include/command-request.hh
@@ -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 {
diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh
index 670125e1c7..9f47f8834e 100644
--- a/lily/include/lily-proto.hh
+++ b/lily/include/lily-proto.hh
@@ -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;
diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh
index 9b291ee9ab..292363bb9c 100644
--- a/lily/include/lookup.hh
+++ b/lily/include/lookup.hh
@@ -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;
diff --git a/lily/include/main.hh b/lily/include/main.hh
index e5c3191723..b96b62df56 100644
--- a/lily/include/main.hh
+++ b/lily/include/main.hh
@@ -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;
diff --git a/lily/include/multi-measure-rest-engraver.hh b/lily/include/multi-measure-rest-engraver.hh
index 2809343982..067ff3eae1 100644
--- a/lily/include/multi-measure-rest-engraver.hh
+++ b/lily/include/multi-measure-rest-engraver.hh
@@ -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
diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh
index 329b1cd0d0..850ba3463f 100644
--- a/lily/include/musical-request.hh
+++ b/lily/include/musical-request.hh
@@ -163,6 +163,7 @@ public:
class Multi_measure_rest_req : public Rhythmic_req {
public:
REQUESTMETHODS(Multi_measure_rest_req, multi_measure);
+
};
/**
diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh
index 63b520ecab..8c751af072 100644
--- a/lily/include/my-lily-parser.hh
+++ b/lily/include/my-lily-parser.hh
@@ -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_;
diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh
index 671faf456e..d2728d42f3 100644
--- a/lily/include/paper-def.hh
+++ b/lily/include/paper-def.hh
@@ -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;
diff --git a/lily/include/score-column.hh b/lily/include/score-column.hh
index 961de68e2b..e82b51aa80 100644
--- a/lily/include/score-column.hh
+++ b/lily/include/score-column.hh
@@ -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
diff --git a/lily/include/score-grav.hh b/lily/include/score-grav.hh
index 4f11fd0f8f..bd89d2fd36 100644
--- a/lily/include/score-grav.hh
+++ b/lily/include/score-grav.hh
@@ -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_;
diff --git a/lily/include/spring-spacer.hh b/lily/include/spring-spacer.hh
index ea94a97c68..609fb666d6 100644
--- a/lily/include/spring-spacer.hh
+++ b/lily/include/spring-spacer.hh
@@ -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);
diff --git a/lily/include/time-description.hh b/lily/include/time-description.hh
index cafd9a0664..5a84817ed9 100644
--- a/lily/include/time-description.hh
+++ b/lily/include/time-description.hh
@@ -13,40 +13,41 @@
/// 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
diff --git a/lily/include/timing-grav.hh b/lily/include/timing-grav.hh
index 22c7274a34..01c36c1aca 100644
--- a/lily/include/timing-grav.hh
+++ b/lily/include/timing-grav.hh
@@ -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:
diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh
index 82aa0e19de..1b2fe054ea 100644
--- a/lily/include/timing-translator.hh
+++ b/lily/include/timing-translator.hh
@@ -33,6 +33,5 @@ protected:
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
- bool mmrest_b_;
};
#endif // TIMING_TRANSLATOR_HH
diff --git a/lily/lexer.ll b/lily/lexer.ll
index 6d38b2451e..7e09d03e58 100644
--- a/lily/lexer.ll
+++ b/lily/lexer.ll
@@ -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;
}
}
diff --git a/lily/lookup.cc b/lily/lookup.cc
index bbdfd3c111..2a446f01a7 100644
--- a/lily/lookup.cc
+++ b/lily/lookup.cc
@@ -147,6 +147,39 @@ Lookup::flag (int j, Direction d) const
}
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
{
assert (controls.size () == 8);
@@ -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) + " "
diff --git a/lily/main.cc b/lily/main.cc
index 2049462714..bd5c6276de 100644
--- a/lily/main.cc
+++ b/lily/main.cc
@@ -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;
diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc
index 2c93ec04c6..56a3b8d93c 100644
--- a/lily/multi-measure-rest-engraver.cc
+++ b/lily/multi-measure-rest-engraver.cc
@@ -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"
@@ -9,13 +10,15 @@
#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;
+ }
+}
diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc
index a018c53107..4e7e05ff4c 100644
--- a/lily/multi-measure-rest.cc
+++ b/lily/multi-measure-rest.cc
@@ -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_;
diff --git a/lily/musical-request.cc b/lily/musical-request.cc
index 3469aaff33..a74eed0700 100644
--- a/lily/musical-request.cc
+++ b/lily/musical-request.cc
@@ -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);
diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc
index 77f13bf18e..fc6cae778d 100644
--- a/lily/my-lily-lexer.cc
+++ b/lily/my-lily-lexer.cc
@@ -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},
diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc
index beb8d7df3c..cb1666207b 100644
--- a/lily/my-lily-parser.cc
+++ b/lily/my-lily-parser.cc
@@ -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()
@@ -105,6 +112,23 @@ My_lily_parser::set_duration_mode (String s)
}
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)
{
abbrev_beam_type_i_ = 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);
}
+
diff --git a/lily/paper-def.cc b/lily/paper-def.cc
index 20e412dde8..dbb99fd730 100644
--- a/lily/paper-def.cc
+++ b/lily/paper-def.cc
@@ -20,13 +20,13 @@
#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);
}
@@ -70,6 +70,12 @@ Paper_def::line_dimensions_int (int n) const
}
Real
+Paper_def::beam_thickness_f () const
+{
+ return get_var ("beam_thickness");
+}
+
+Real
Paper_def::linewidth_f () const
{
return get_var ("linewidth");
@@ -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
index 7e0baa9a6a..0000000000
--- a/lily/parser.hh
+++ /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
-
diff --git a/lily/parser.yy b/lily/parser.yy
index f4db759c99..871e5d97be 100644
--- a/lily/parser.yy
+++ b/lily/parser.yy
@@ -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"
@@ -40,6 +37,12 @@
#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;
+
}
;
diff --git a/lily/rod.cc b/lily/rod.cc
index 3e87138669..6bbcbd6dcc 100644
--- a/lily/rod.cc
+++ b/lily/rod.cc
@@ -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 ()
diff --git a/lily/score-column.cc b/lily/score-column.cc
index 9f40322a0a..abe35406c0 100644
--- a/lily/score-column.cc
+++ b/lily/score-column.cc
@@ -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: [";
diff --git a/lily/score-grav.cc b/lily/score-grav.cc
index cfce99e6b3..27b149a547 100644
--- a/lily/score-grav.cc
+++ b/lily/score-grav.cc
@@ -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;
}
}
diff --git a/lily/scores.cc b/lily/scores.cc
index 4a25a85a0f..b481921c3a 100644
--- a/lily/scores.cc
+++ b/lily/scores.cc
@@ -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 ;
}
diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc
index 3361dadc55..7ff3fca481 100644
--- a/lily/separating-group-spanner.cc
+++ b/lily/separating-group-spanner.cc
@@ -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);
}
}
diff --git a/lily/slur-grav.cc b/lily/slur-grav.cc
index 55133511a3..4076e2bb7c 100644
--- a/lily/slur-grav.cc
+++ b/lily/slur-grav.cc
@@ -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));
diff --git a/lily/slur.cc b/lily/slur.cc
index f091c426ca..0971bfd738 100644
--- a/lily/slur.cc
+++ b/lily/slur.cc
@@ -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);
diff --git a/lily/span-score-bar.cc b/lily/span-score-bar.cc
index 6e921573c9..0849f15c60 100644
--- a/lily/span-score-bar.cc
+++ b/lily/span-score-bar.cc
@@ -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
diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc
index ac4b00b623..3855777a58 100644
--- a/lily/spring-spacer.cc
+++ b/lily/spring-spacer.cc
@@ -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();
}
diff --git a/lily/stem-info.cc b/lily/stem-info.cc
index 11990ea3e7..d109e96e80 100644
--- a/lily/stem-info.cc
+++ b/lily/stem-info.cc
@@ -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_;
}
diff --git a/lily/stem.cc b/lily/stem.cc
index a2361b4fe8..d867f16bf3 100644
--- a/lily/stem.cc
+++ b/lily/stem.cc
@@ -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 ();
diff --git a/lily/tie-grav.cc b/lily/tie-grav.cc
index a690cb36a1..ae9f6d2961 100644
--- a/lily/tie-grav.cc
+++ b/lily/tie-grav.cc
@@ -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;
}
}
diff --git a/lily/tie.cc b/lily/tie.cc
index 0d17f409ce..9fe73f7d9e 100644
--- a/lily/tie.cc
+++ b/lily/tie.cc
@@ -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];
diff --git a/lily/timing-grav.cc b/lily/timing-grav.cc
index 17f110fda3..a994334fc2 100644
--- a/lily/timing-grav.cc
+++ b/lily/timing-grav.cc
@@ -11,14 +11,6 @@
#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)
diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc
index b244db903c..ce04be40a9 100644
--- a/lily/timing-translator.cc
+++ b/lily/timing-translator.cc
@@ -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);
diff --git a/make/Docrules.make b/make/Docrules.make
index e718c7779a..578dcea07e 100644
--- a/make/Docrules.make
+++ b/make/Docrules.make
@@ -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)
diff --git a/make/Mutopia.make b/make/Mutopia.make
index 65f407c8fb..bb489a95d4 100644
--- a/make/Mutopia.make
+++ b/make/Mutopia.make
@@ -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=%))
diff --git a/make/Toplevel.make.in b/make/Toplevel.make.in
index f10c3474c7..ef9c9ccd78 100644
--- a/make/Toplevel.make.in
+++ b/make/Toplevel.make.in
@@ -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
diff --git a/make/WWW.make b/make/WWW.make
index bb47c54f87..7f9c96fbea 100644
--- a/make/WWW.make
+++ b/make/WWW.make
@@ -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
diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in
index bf99632045..594fc77517 100644
--- a/make/lilypond.spec.in
+++ b/make/lilypond.spec.in
@@ -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
diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm
index d110ebc68e..b735fc4dda 100644
--- a/make/out/lelievijver.lsm
+++ b/make/out/lelievijver.lsm
@@ -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
diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm
index ab0be3a745..b8eb27fcb8 100644
--- a/make/out/lilypond.lsm
+++ b/make/out/lilypond.lsm
@@ -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
diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec
index 289561852b..6f7c2d11c7 100644
--- a/make/out/lilypond.spec
+++ b/make/out/lilypond.spec
@@ -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
diff --git a/mf/README b/mf/README
index bbbfa3a021..8f78c89183 100644
--- 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
diff --git a/mi2mu/mudela-stream.cc b/mi2mu/mudela-stream.cc
index 2a869d647c..5fa339cb66 100644
--- a/mi2mu/mudela-stream.cc
+++ b/mi2mu/mudela-stream.cc
@@ -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
diff --git a/mudela-mode.el b/mudela-mode.el
index 48e53aa779..27444a9425 100644
--- a/mudela-mode.el
+++ b/mudela-mode.el
@@ -112,7 +112,7 @@
; FIXME
; ( ?% . ". 124b" )
-: ( ?{ . ". 23" )
+; ( ?{ . ". 23" )
))
)
diff --git a/mutopia/Coriolan/clarinetti-part.ly b/mutopia/Coriolan/clarinetti-part.ly
index 6c99e7ed70..53ff1a74cd 100644
--- a/mutopia/Coriolan/clarinetti-part.ly
+++ b/mutopia/Coriolan/clarinetti-part.ly
@@ -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{}
}
diff --git a/mutopia/Coriolan/clarinetto-1.ly b/mutopia/Coriolan/clarinetto-1.ly
index e7cccf9b0c..0e11954b5e 100644
--- a/mutopia/Coriolan/clarinetto-1.ly
+++ b/mutopia/Coriolan/clarinetto-1.ly
@@ -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 |
}
diff --git a/mutopia/Coriolan/clarinetto-2.ly b/mutopia/Coriolan/clarinetto-2.ly
index 0ad1fa5f6f..cc12989f5b 100644
--- a/mutopia/Coriolan/clarinetto-2.ly
+++ b/mutopia/Coriolan/clarinetto-2.ly
@@ -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-. |
}
diff --git a/mutopia/Coriolan/coriolan.ly b/mutopia/Coriolan/coriolan.ly
index 83334d2b1e..d012bb23b6 100644
--- a/mutopia/Coriolan/coriolan.ly
+++ b/mutopia/Coriolan/coriolan.ly
@@ -61,6 +61,7 @@ strijkers = \type Staff_group = strijkers_group <
\score{
<
\textstyle "italic";
+
\$legno
\$koper
\$timpani_g
diff --git a/mutopia/Coriolan/corni-part.ly b/mutopia/Coriolan/corni-part.ly
index eb12f83988..8b468982bd 100644
--- a/mutopia/Coriolan/corni-part.ly
+++ b/mutopia/Coriolan/corni-part.ly
@@ -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{}
}
diff --git a/mutopia/Coriolan/corno-1.ly b/mutopia/Coriolan/corno-1.ly
index 3b05a15208..53e2a68f4d 100644
--- a/mutopia/Coriolan/corno-1.ly
+++ b/mutopia/Coriolan/corno-1.ly
@@ -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 |
}
diff --git a/mutopia/Coriolan/corno-2.ly b/mutopia/Coriolan/corno-2.ly
index 73f7340206..cebe2e3d1a 100644
--- a/mutopia/Coriolan/corno-2.ly
+++ b/mutopia/Coriolan/corno-2.ly
@@ -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-. |
}
diff --git a/mutopia/Coriolan/fagotti-part.ly b/mutopia/Coriolan/fagotti-part.ly
index 8e51cf6373..1b47dc6cf2 100644
--- a/mutopia/Coriolan/fagotti-part.ly
+++ b/mutopia/Coriolan/fagotti-part.ly
@@ -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{}
}
diff --git a/mutopia/Coriolan/fagotto-1.ly b/mutopia/Coriolan/fagotto-1.ly
index f238406f28..9340102b27 100644
--- a/mutopia/Coriolan/fagotto-1.ly
+++ b/mutopia/Coriolan/fagotto-1.ly
@@ -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 |
}
diff --git a/mutopia/Coriolan/fagotto-2.ly b/mutopia/Coriolan/fagotto-2.ly
index 1a1f0bbeda..852af207f3 100644
--- a/mutopia/Coriolan/fagotto-2.ly
+++ b/mutopia/Coriolan/fagotto-2.ly
@@ -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-. |
}
diff --git a/mutopia/Coriolan/flauti-part.ly b/mutopia/Coriolan/flauti-part.ly
index aa6e8d5820..59750180df 100644
--- a/mutopia/Coriolan/flauti-part.ly
+++ b/mutopia/Coriolan/flauti-part.ly
@@ -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{}
}
diff --git a/mutopia/Coriolan/flauto-1.ly b/mutopia/Coriolan/flauto-1.ly
index 58ed585f9e..71412f636c 100644
--- a/mutopia/Coriolan/flauto-1.ly
+++ b/mutopia/Coriolan/flauto-1.ly
@@ -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 |
}
diff --git a/mutopia/Coriolan/flauto-2.ly b/mutopia/Coriolan/flauto-2.ly
index 7a3f7707aa..3d983054f5 100644
--- a/mutopia/Coriolan/flauto-2.ly
+++ b/mutopia/Coriolan/flauto-2.ly
@@ -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-. |
}
diff --git a/mutopia/Coriolan/oboe-1.ly b/mutopia/Coriolan/oboe-1.ly
index a9b7601c5a..2be8732ec3 100644
--- a/mutopia/Coriolan/oboe-1.ly
+++ b/mutopia/Coriolan/oboe-1.ly
@@ -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 |
}
diff --git a/mutopia/Coriolan/oboe-2.ly b/mutopia/Coriolan/oboe-2.ly
index 1090871206..827629ad2d 100644
--- a/mutopia/Coriolan/oboe-2.ly
+++ b/mutopia/Coriolan/oboe-2.ly
@@ -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-. |
}
diff --git a/mutopia/Coriolan/oboi-part.ly b/mutopia/Coriolan/oboi-part.ly
index 99a94e7c98..f3d8ed7c8a 100644
--- a/mutopia/Coriolan/oboi-part.ly
+++ b/mutopia/Coriolan/oboi-part.ly
@@ -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
index 0000000000..2c312d834e
--- /dev/null
+++ b/mutopia/Coriolan/part-paper.ly
@@ -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";
+}
+
+
+}
+
diff --git a/mutopia/Coriolan/timpani.ly b/mutopia/Coriolan/timpani.ly
index 8936643c76..e08b14e2d1 100644
--- a/mutopia/Coriolan/timpani.ly
+++ b/mutopia/Coriolan/timpani.ly
@@ -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-. |
}
diff --git a/mutopia/Coriolan/trombe-part.ly b/mutopia/Coriolan/trombe-part.ly
index 802a494d0d..47911886ab 100644
--- a/mutopia/Coriolan/trombe-part.ly
+++ b/mutopia/Coriolan/trombe-part.ly
@@ -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{}
}
diff --git a/mutopia/Coriolan/trombo-1.ly b/mutopia/Coriolan/trombo-1.ly
index 6b3bef51ab..d8d489027f 100644
--- a/mutopia/Coriolan/trombo-1.ly
+++ b/mutopia/Coriolan/trombo-1.ly
@@ -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 |
}
diff --git a/mutopia/Coriolan/trombo-2.ly b/mutopia/Coriolan/trombo-2.ly
index f123b9a32c..f47ef9acbb 100644
--- a/mutopia/Coriolan/trombo-2.ly
+++ b/mutopia/Coriolan/trombo-2.ly
@@ -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-. |
}
diff --git a/mutopia/Coriolan/violino-2.ly b/mutopia/Coriolan/violino-2.ly
index 2726b10874..1d8447b86f 100644
--- a/mutopia/Coriolan/violino-2.ly
+++ b/mutopia/Coriolan/violino-2.ly
@@ -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 |
diff --git a/mutopia/J.S.Bach/Makefile b/mutopia/J.S.Bach/Makefile
index 46c474af95..6141969190 100644
--- a/mutopia/J.S.Bach/Makefile
+++ b/mutopia/J.S.Bach/Makefile
@@ -5,6 +5,7 @@
depth = ../..
#
+EXTRA_DISTFILES=preludes.tex
# descent order into subdirectories:
#
SUBDIRS =
diff --git a/mutopia/J.S.Bach/preludes-1.ly b/mutopia/J.S.Bach/preludes-1.ly
index e75e39eb83..96a0ab180e 100644
--- a/mutopia/J.S.Bach/preludes-1.ly
+++ b/mutopia/J.S.Bach/preludes-1.ly
@@ -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{
diff --git a/mutopia/J.S.Bach/preludes-2.ly b/mutopia/J.S.Bach/preludes-2.ly
index 7ccc808db8..9bd557f3f2 100644
--- a/mutopia/J.S.Bach/preludes-2.ly
+++ b/mutopia/J.S.Bach/preludes-2.ly
@@ -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{
diff --git a/mutopia/J.S.Bach/preludes-3.ly.m4 b/mutopia/J.S.Bach/preludes-3.ly.m4
index 0643095b97..fa170f74a8 100644
--- a/mutopia/J.S.Bach/preludes-3.ly.m4
+++ b/mutopia/J.S.Bach/preludes-3.ly.m4
@@ -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{
diff --git a/mutopia/J.S.Bach/preludes-4.ly b/mutopia/J.S.Bach/preludes-4.ly
index 64008af3e4..474d012d9d 100644
--- a/mutopia/J.S.Bach/preludes-4.ly
+++ b/mutopia/J.S.Bach/preludes-4.ly
@@ -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.;
diff --git a/mutopia/J.S.Bach/preludes-5.ly b/mutopia/J.S.Bach/preludes-5.ly
index 35efe1587c..1572329e3a 100644
--- a/mutopia/J.S.Bach/preludes-5.ly
+++ b/mutopia/J.S.Bach/preludes-5.ly
@@ -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{
diff --git a/mutopia/J.S.Bach/preludes-6.ly b/mutopia/J.S.Bach/preludes-6.ly
index e76cbcd1af..0eb6d492fe 100644
--- a/mutopia/J.S.Bach/preludes-6.ly
+++ b/mutopia/J.S.Bach/preludes-6.ly
@@ -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{
diff --git a/mutopia/J.S.Bach/scsii-menuetto.ly b/mutopia/J.S.Bach/scsii-menuetto.ly
index a8b41cc70c..aaf38d3c21 100644
--- a/mutopia/J.S.Bach/scsii-menuetto.ly
+++ b/mutopia/J.S.Bach/scsii-menuetto.ly
@@ -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";
}
}
diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly
index 7cb045ba17..7af1d7746f 100644
--- a/mutopia/J.S.Bach/wtk1-fugue2.ly
+++ b/mutopia/J.S.Bach/wtk1-fugue2.ly
@@ -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.;
diff --git a/mutopia/Makefile b/mutopia/Makefile
index dc989a75a2..acb5a44fc0 100644
--- a/mutopia/Makefile
+++ b/mutopia/Makefile
@@ -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
index a1424d8ee9..0000000000
--- a/mutopia/los-toros-oboe-16.tex
+++ /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
index 555a046d0d..0000000000
--- a/mutopia/los-toros-oboe-20.tex
+++ /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}
-
diff --git a/mutopia/los-toros-oboe.ly b/mutopia/los-toros-oboe.ly
index 6032b7c74a..2fc2ea26a7 100644
--- a/mutopia/los-toros-oboe.ly
+++ b/mutopia/los-toros-oboe.ly
@@ -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
index 0000000000..afc524c505
--- /dev/null
+++ b/mutopia/ltor.ly
@@ -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
index 21ef2cf758..0000000000
--- a/mutopia/standchen-16.tex
+++ /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}
-
diff --git a/mutopia/standchen-20.ly b/mutopia/standchen-20.ly
index f3e8784590..443ef0b9e5 100644
--- a/mutopia/standchen-20.ly
+++ b/mutopia/standchen-20.ly
@@ -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
index 4ee0201a27..0000000000
--- a/mutopia/standchen-20.tex
+++ /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
index 0000000000..39d5168ae1
--- /dev/null
+++ b/mutopia/standchen-easy.ly
@@ -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";
+ }
+}
diff --git a/mutopia/standchen.ly b/mutopia/standchen.ly
index 2a407932f0..03148d90a0 100644
--- a/mutopia/standchen.ly
+++ b/mutopia/standchen.ly
@@ -1,519 +1,458 @@
\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
index 9193c65f05..0000000000
--- a/mutopia/standje.ly
+++ /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;
- }
-}
-
diff --git a/test/bow.cc b/test/bow.cc
index dc077b4f29..418538880e 100644
--- a/test/bow.cc
+++ b/test/bow.cc
@@ -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;
diff --git a/tex/headers.tex b/tex/headers.tex
index 915d3c1388..81dd884c8c 100644
--- a/tex/headers.tex
+++ b/tex/headers.tex
@@ -1,5 +1,9 @@
+\advance\topmargin-20mm
+\addtolength{\textheight}{40mm}
+\footskip5mm
+
\usepackage{fancyheadings}
\lhead{}
\rhead{}
@@ -10,3 +14,4 @@
\headrulewidth0mm
\pagestyle{fancy}
\thispagestyle{fancy}
+
diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex
index 59e4d4e857..074eb7d1ce 100644
--- a/tex/lily-ps-defs.tex
+++ b/tex/lily-ps-defs.tex
@@ -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
%
diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex
index aa31034329..8a345d603c 100644
--- a/tex/lilyponddefs.tex
+++ b/tex/lilyponddefs.tex
@@ -149,7 +149,7 @@
\musixcalc
}
\def\musixelevendefs{
- \elevendefs
+ \elevenfonts
\musixcalc
}