]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.89 release/1.3.89
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 22 Sep 2000 23:42:29 +0000 (01:42 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 22 Sep 2000 23:42:29 +0000 (01:42 +0200)
======

* Some fixes to Coriolan.

* Fixed some stupid core dumps processing Coriolan.

* Fixed several problems with part-combiner's part-switching.

* Fixes for ASCII output.

* Added feature to part combiner that should allow part-switching only
  for entire measures.  Currently, it is controlled by a new
  property changeMoments (A . B):
    - only switch when !(A mod now),
    - decide whether to switch based on music during time period B.

* Made bugfix: Sequential_iterator::get_music (M): mustn't return music
  later than M.

* Added skip (M) to some iterators.

* maintain minimum-length by shifting for hyphens at start of
line. (patch courtesy Christophe Rhodes)

* mudela-book fixes (courtesy Tom Cato Amundsen): documentation
update, LaTeX example, landscape support.

1.3.88.h

69 files changed:
CHANGES
Documentation/topdocs/index.tely
Documentation/user/GNUmakefile
Documentation/user/latex-mudela-example.latex [new file with mode: 0644]
Documentation/user/mudela-book.tely
Documentation/user/refman.itely
VERSION
input/test/beam-cross-staff.ly
input/test/part-combine-score.ly
input/test/vertical-extent.ly
lily/align-interface.cc
lily/align-note-column-engraver.cc
lily/bar-number-engraver.cc
lily/bar.cc
lily/beam.cc
lily/break-align-item.cc
lily/crescendo.cc
lily/cross-staff.cc
lily/dynamic-engraver.cc
lily/grace-align-item.cc
lily/hyphen-spanner.cc
lily/include/align-interface.hh
lily/include/beam.hh
lily/include/hyphen-spanner.hh
lily/include/music-iterator.hh
lily/include/part-combine-music-iterator.hh
lily/include/sequential-music-iterator.hh
lily/include/simple-music-iterator.hh
lily/include/slur-bezier-bow.hh
lily/include/slur.hh
lily/line-of-score.cc
lily/mark-engraver.cc
lily/music-iterator.cc
lily/music-wrapper-iterator.cc
lily/part-combine-music-iterator.cc
lily/rest-collision.cc
lily/script.cc
lily/sequential-music-iterator.cc
lily/simple-music-iterator.cc
lily/slur-bezier-bow.cc
lily/slur.cc
lily/spanner.cc
lily/staff-symbol-referencer.cc
lily/system-start-delimiter-engraver.cc
lily/tie.cc
lily/tuplet-spanner.cc
lily/vertical-align-engraver.cc
lily/volta-spanner.cc
lilypond-mode.el
ly/declarations.ly
ly/engraver.ly
ly/paper-as9.ly
ly/params.ly
make/out/lilypond.lsm
make/out/lilypond.spec
mutopia/Coriolan/bassi-part.ly
mutopia/Coriolan/bassi.ly [new file with mode: 0644]
mutopia/Coriolan/contrabasso.ly
mutopia/Coriolan/coriolan.ly
mutopia/Coriolan/viola-1.ly
mutopia/Coriolan/viola-2.ly
mutopia/Coriolan/violi-part.ly
mutopia/Coriolan/violi.ly [new file with mode: 0644]
mutopia/Coriolan/violoncello.ly
scm/basic-properties.scm
scm/generic-property.scm
scripts/as2text.scm
scripts/mudela-book.py
tex/lilyponddefs.tex

diff --git a/CHANGES b/CHANGES
index 7b324464f72b1773a691f4c927c8ee25c9a74668..95feb900290ee8f343e21593ad3029f8d5325c36 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,25 +1,13 @@
---- ../lilypond-1.3.88/CHANGES Wed Sep 20 00:59:45 2000
-++ b/CHANGES   Sat Sep 23 19:39:02 2000
-@@ -1,3 +1,11 @@
-1.3.88.mb1
-==========
+1.3.89
+======
 
-* Changed handling of the interscoreline paper variable. 
-  The value should be a string with a TeX length.
-  It's now possible to to get even bottom of the pages using 
-  interscoreline="16pt plus 1fill"
+* Some fixes to Coriolan.
 
- 1.3.87.hwn1
- ===========
- 1.3.88.hwn1.jcn2
-===========
+* Fixed some stupid core dumps processing Coriolan.
 
-* Made small fixes for ascii output.
+* Fixed several problems with part-combiner's part-switching.
 
-* Made fix for soli in part-comibiner.
-
-1.3.88.jcn1
-===========
+* Fixes for ASCII output.
 
 * Added feature to part combiner that should allow part-switching only
   for entire measures.  Currently, it is controlled by a new 
 
 * Added skip (M) to some iterators.
 
-1.3.88
-======
+* maintain minimum-length by shifting for hyphens at start of
+line. (patch courtesy Christophe Rhodes)
+
+* mudela-book fixes (courtesy Tom Cato Amundsen): documentation
+update, LaTeX example, landscape support.
 
-1.3.87.hwn1
+1.3.88.hwn2
 ===========
 
+* Added elt properties for Tie:
+  - details
+  - x-gap
+  - staffline-clearance
+
+* Added elt properties for Slur
+  - y-free
+  - details
+
+* Removed C++ support for barNumberScriptPadding, now in
+generic-property.scm (but they're deprecated anyway)
+
+* Changed threshold in Align_interface to be in staffspace 
+
+* changed minVerticalAlign and maxVerticalAlign to be in staffspace.
+A better way: do \push #'threshold = #(cons A B ).  (WARNING:
+INCOMPATIBLE CHANGE)
+
+* moved translator definitions out of \paper { }, only instantiate in
+\paper.
+
+1.3.88
+======
+
 * Sequential_iterator::get_music (), part combiner now works.
 
 * Changed paper variables into elt properties:
@@ -47,7 +62,7 @@
   - beam-flag-width-function to Beam.
 
   Grace_align_item:
-  -  horizontal-space: spacing of is configurable
+  -  horizontal-space: spacing of grace notes is configurable
 
   Volta_spanner: 
   - height
@@ -71,6 +86,8 @@
 
 * added input/test/bagpipe.ly
 
+
+
 1.3.87
 ======
 
index c67e55cf873025fe26d3e5da4897b3712871683e..548e23c16fbeb0f7b04c4e49f8677d546ee4eba8 100644 (file)
@@ -160,11 +160,6 @@ they tend to be very big and don't help with describing the problem.
     For discussions concerning LilyPond.
 @end itemize
 
-If you want to unsubscribe use the same procedure as subscribing, but
-substitute @code{unsubscribe} where you would put @code{subscribe}.
-
-@unnumberedsubsec Webmaster's Disclaimer
-
 These pages were entirely created from a @strong{development snapshot}
 of the LilyPond package.  The version of this webpage is printed at the
 bottom.
index 14857cc768111cc096d1bcca23197cdd71844ca3..a045e99d94fd7561b58886dda0e4951203e1b822 100644 (file)
@@ -2,18 +2,18 @@
 
 depth=../..
 
-DATA_FILES = $(wildcard *.data)
-datafiles = $(addprefix $(outdir)/,$(DATA_FILES:.data=.html))
 
-DOC_FILES = $(wildcard *.doc)
 
-DVI_FILES = $(addprefix $(outdir)/,$(DOC_FILES:.doc=.dvi)  $(TELY_FILES:.tely=.dvi))
+LATEX_FILES =$(wildcard *.latex)
+
+DVI_FILES = $(addprefix $(outdir)/,$(LATEX_FILES:.latex=.dvi)   $(TELY_FILES:.tely=.dvi))
+
+EXTRA_DIST_FILES= $(LATEX_FILES)    $(wildcard *.itexi *.itely)
 
-EXTRA_DIST_FILES= $(DOC_FILES) $(DATA_FILES)  $(wildcard *.itexi *.itely) 
 HTML_FILES = $(addprefix $(outdir)/, $(TELY_FILES:.tely=.html))
 
 PS_FILES = $(DVI_FILES:.dvi=.ps)  $(OUTDOC_FILES:.doc=.ps) $(OUTTEX_FILES:.tex=.ps)
+
 PS_GZ_FILES= $(addsuffix .gz, $(PS_FILES))
 
 STEPMAKE_TEMPLATES=tex texinfo documentation
diff --git a/Documentation/user/latex-mudela-example.latex b/Documentation/user/latex-mudela-example.latex
new file mode 100644 (file)
index 0000000..5b6c08e
--- /dev/null
@@ -0,0 +1,161 @@
+\documentclass[a4paper, 12pt]{article}
+%\def\pre MudelaExample{This if before}
+%\def\pre MudelaExample{This is after}
+%\usepackage{landscape}
+\begin{document}
+%uncomment this to try twocolumn mode
+%\twocolumn
+
+
+\section{Mudelabook + LaTeX}
+
+This is an examplefile for mixing Lilypond and Latex. It is also
+used to test mudela-book. View the source to see how it is done.
+
+A simple scale:
+
+\begin{mudela}
+\score{
+ \notes\relative c'{c d e f g a b c}
+}
+\end{mudela}
+
+Mudela-book search for the \verb|\score| command when it decides
+if the code is only a fragment. Thus, in the following code, you have
+to use \verb|fragment| option, because the comment confuses mudela-book.
+
+\begin[fragment]{mudela}
+c d e % \score
+\end{mudela}
+
+There is also a shorthand version \verb|\mudela{c' e' g'}|:
+
+\mudela{c' e' g'}
+
+that is the same as writing
+\begin{verbatim}
+\begin[eps]{mudela}
+c' e' g'
+\end{mudela}
+\end{verbatim}
+
+This C major
+\begin[eps, 11pt]{mudela}
+c' e' g'
+\end{mudela}
+and C minor \mudela[11pt]{c' es' g'}  chords are floating inside the text.
+
+\subsection{verb and verbatim}
+
+As you see, the begin/end verbatim command inside 
+does not confuse mudela-book:
+
+\verb|\begin{mudela}c d e\end{mudela}|
+
+Neither does a verbatim inside verb:
+
+\verb|\begin{verbatim}\begin{mudela}c d e\end{mudela}\end{verbatim}|
+
+or verb inside verbatim:
+
+\begin{verbatim}
+\verb|\begin{mudela}c d e\end{mudela}|
+\end{verbatim}
+
+But this is just to stress \verb|mudela-book|. What you need is:
+
+\verb|\mudela{c' d' e'}|
+
+and
+
+\begin{verbatim}
+\begin{mudela}
+c d e
+\end{mudela}
+\end{verbatim}
+
+\subsection{The 'verbatim' and 'intertext' option}
+This shows the verbatim option:
+\begin[verbatim, intertext="gives this music:"]{mudela}
+c' d' e'
+\end{mudela}
+
+\subsection{LaTeX comments}
+This is a line with mudela code after the comment char % \mudela{<c' e' g'>}
+% \mudela{<c' e' g'>}
+
+If you do not see any music from the heading 'LaTeX comments' and until
+this line, then mudela-book is handling latex comments pretty well :-)
+
+\subsection{To float or not to float}
+This music
+\begin[eps]{mudela}
+c' e' 
+\end{mudela}
+should be floating inside the text by using the \verb|eps| options.
+
+This music
+
+\begin[eps]{mudela}
+c' e'
+\end{mudela}
+
+has also the \verb|eps| options, but is not floating because there
+are an emptry line before and after the mudela block. That is
+correct behaviour because it follows La\TeX{} convention that an
+empty line signals a new paragraph. Note that the \verb|eps| option
+is not necessary when you want the music in a paragraph on its own.
+
+\subsection{More examples}
+
+Itemize environment:
+\begin{itemize}
+\item \mudela[11pt]{ c'} do
+\item \mudela[11pt]{d'} re
+\item \mudela[11pt]{e'} mi
+\item \mudela[11pt]{f'} fa
+\item \mudela[11pt]{g'} sol
+\end{itemize}
+
+Tables\footnote{ and footnote: \mudela[eps,11pt]{c' e' g'} }:
+\marginpar{ Yes, even as marginpar
+\mudela[eps,11pt]{c' d' e'} }
+
+\begin{tabular}{|l|l|r|}
+\hline
+\em Notes & \em Name \\
+\hline
+\mudela[11pt, filename="cdur"]{<c' e' g'>} & major \\
+\mudela[11pt]{<c' es' g'>} & minor \\
+\mudela[11pt]{<c' es' ges'>} & diminished \\
+\mudela[11pt]{<c' e' gis'>} & augmented \\
+\hline
+\end{tabular}
+
+\pagebreak
+
+Testing of spacing. The next music is surrounded by an empty line.
+text text text text text text text text text text text text 
+text text text text text text text text text text text text 
+
+\begin{mudela}
+\score{ \notes\relative c'{ c d e f g a b c} }
+\end{mudela}
+
+text text text text text text text text text text text text 
+text text text text text text text text text text text text 
+text text text text text text text text text text text text 
+
+Next has no empty lines.
+text text text text text text text text text text text text 
+text text text text text text text text text text text text 
+text text text text text text text text text text text text 
+\begin{mudela}
+\score{ \notes\relative c'{ c d e f g a b c} }
+\end{mudela}
+text text text text text text text text text text text text 
+text text text text text text text text text text text text 
+
+
+
+\end{document}
index 7df11604a1f7426c88b098b3cbdaae749c788aa2..cc16d7740373f3b15201896ec261e992ac2d9bde 100644 (file)
@@ -79,22 +79,335 @@ translation approved by the Free Software Foundation.
 
 @section Introduction
 
+[ The tutorial part is at the moment commented out and moved to 
+the end of this document ]
+
+
 [TODO: THIS MANUAL IS NOT FINISHED YET. FIXME.]
 
-@ignore
-Mudela-book is a script that process your La@TeX{} file and with great
-help from GNU LilyPond it translates blocks of mudela code it finds
-inside @code{mudela} environments to tex or eps graphics. It then
-creates a new file that can be sent through La@TeX{} to create a
-@file{.dvi} file with lines of music integrated with text.
+@command{mudela-book} is a script that helps integrating mudela with
+La@TeX{} or TeXinfo. @command{mudela-book} runs Lilypond on fragments
+of mudela in your source file, and includes the results into a
+document that can be processed with La@TeX{}, @command{makeinfo}
+or @command{texi2dvi}.
+The result is a text document with formatted music integrated.
 
-Mudela-book will do its best to try to align the music to the left and
-right margins. Currently the most used papersizes and one- and
-twocolumn mode is supported, but if you use the geometry-package from
-La@TeX{} or change the margins things will break.
+@command{mudela-book} will do its best to try to align the music to
+the left and right margins. Currently the most used papersizes and
+one- and twocolumn mode is supported. But if you use some more
+advances features, like the geometry-package or change the margins in
+La@TeX{} or use @code{@@pagesize} in texinfo, will break.
 
 This document assumes you have basic knowledge of GNU LilyPond and
-La@TeX{}.
+La@TeX{} or texinfo.
+
+@section TeXinfo reference
+
+Your markup the mudela code like this:
+@example
+@@mudela[options, go, here]
+ YOUR MUDELA CODE
+@@end mudela
+@end example
+
+or
+
+@example
+@@mudela[option, go, here]@{ YOUR MUDELA CODE @}
+@end example
+
+@command{mudela-book} knows the default margins, and a few papersizes.
+These commands should be in the beginning of the document:
+@itemize @bullet
+@item @code{@@afourpaper}
+@item @code{@@afourwide}
+@item @code{@@smallbook}
+@end itemize
+@code{@@pagesizes} are not supported.
+
+@subsection{Examples}
+
+Two simple examples. First a complete block:
+
+@example
+@@mudela[26pt]
+c' d' e' f' g'2 g'
+@@end mudela
+@end example
+
+produces this music:
+@mudela
+c' d' e' f' g'2 g'
+@end mudela
+
+Then the short version:
+@example
+@@mudela[11pt]@{<c' e' g'>@}
+@end example
+
+and its music:
+
+@mudela[11pt]{<c' e' g'>}
+
+
+@subsection{@@example and @@code}
+
+I'm not sure if this will go into the final documentation, this is
+here mostly to remember me on why things are the way they are.
+
+@command{mudela-book} will do nothing with special with @code{@@code} and
+@code{@@example} environments. The 'code' and 'example' commands
+should work just as normal. People looking at document that should be
+processed by @command{mudela-book}, should notice nothing special, except from
+some block like this:
+@example
+@@mudela
+BLABLA
+@@end mudela
+@end example
+
+or this:
+
+@code{@@mudela@{ BLABLA @}}
+
+Anything other is a bug in @command{mudela-book}.
+
+So to get this in the printed manual:
+
+@example
+@@mudela[26pt]
+\relative c'@{c d e f g2 g@}
+@@end mudela
+@end example
+
+you have to write this:
+
+@example
+@@example
+@@@@mudela[26pt]
+\relative c'@@@{c d e f g2 g@@@}
+@@@@end mudela
+@@end example
+@end example
+
+Simply explained, every '@{', '@}' and '@@' has to be written as '@@@{',
+'@@@}' and '@@@@'. This is how it works in plain texinfo too.
+
+@section La@TeX{} reference
+
+Your markup the mudela code like this:
+@example
+\begin[option, go, here]@{mudela@}
+ YOUR MUDELA CODE
+\end@{mudela@}
+@end example
+
+or 
+
+@example
+\mudela@{ YOUR MUDELA CODE @}
+@end example
+
+The 'geometry' package is is not supported. The most popular
+papersizes should work.
+
+Mudela-book know about the @code{\onecolumn} and 
+@code{\twocolumn} commands.
+
+The music will be surrounded by @code{\preMudelaExample} and
+@code{\postMudelaExample}. The variables are 
+defined to nothing by default, and the user can redefine them
+to whatever he wants.
+@strong{[UGH: THIS DOES NOT HAPPEN WHEN
+YOU USE THE SHORT FORM, \MUDELA@{ ... @}, CHECK OUT WHY]}
+
+@subsection{@code{landscape} package}
+There is some simple support for landscape paper format, and this
+can be combined with the @code{\twocolumn} command. Only a4 and
+letter paper is supported, more to come...
+
+A more complete
+support, maybe also supporting the geometry package is planned, but
+there are more work that has to be done on @command{mudela-book}
+first.
+
+This should work:
+@example
+\documentclass@{article@}
+\usepackage@{landscape@}
+\begin@{document@}
+\twocolumn
+BLA BLA BLA
+\end@{document@}
+@end example
+
+@subsection{Examples}
+
+@example
+\begin[26pt]@{mudela@}
+c' d' e' f' g'2 g'2
+\end@{mudela@}
+@end example
+
+produces this music:
+
+@mudela[26pt]
+c' d' e' f' g'2 g'2
+@end mudela
+
+Then the short version:
+@example
+\mudela[11pt]@{<c' e' g'>@}
+@end example
+
+and its music:
+
+@mudela[11pt]{<c' e' g'>}
+
+
+@subsection{\begin@{verbatim@} and \verb|\verb|}
+
+There work just as expected. Look at @file{mb-latex.tex} for details.
+
+@section Options
+
+@table @samp
+@item eps
+    the music is created as eps graphics that can be inserted in 
+    the middle of a text line, not only as a separate paragraph.
+    (La@TeX{} only)
+@item verbatim
+    CONTENTS is copied into the source enclosed in a verbatim block,
+    followed by any text given with the @code{intertext} option, then
+    the actual music is displayed. This option does not work with
+    the short version of the mudela blocks:
+
+    @code{ @@mudela@{ CONTENTS @} } and @code{ \mudela@{ CONTENTS @} }
+    
+@item intertext="text inside apostrophs"
+    Used in conjunction with @code{verbatim} option.
+@item filename=FILENAME
+    Save the mudela code to FILENAME instead of using a hash value
+    of CONTENTS.
+@item 11pt, 13pt, 16pt, 20pt, 26pt
+    set the fontsize to use for the music
+@item singleline
+  linewidth = -1.
+@item multiline
+  linewidth = textwidth
+@item fragment
+@item nonfragment
+    Override @command{mudela-book} autodetection of what type of code is in the
+    mudela block, voice contents or complete code.
+@end table
+
+@section Invocation
+
+When you run @command{mudela-book} it will generate lots of small
+files that Lilypond will process. So to avoid all the garbage in
+your source directory, you should either change to a temporary
+directory, or use the @code{--outdir} commandline options:
+
+@code{cd out && mudela-book ../yourfile.tex}
+
+@code{mudela-book --outdir=out yourfile.tex}
+
+
+For latex input, the file to give to latex has ext @file{.latex}.
+TeXinfo input will be written to a file with ext @file{.texi}. So be
+careful, don't give the source file that ext, or the file will be
+overwritten.
+
+@strong{[UGH: IS THIS THE BEST WAY TO DO IT. MAYBE ADD A COMMENT LINE TO THE
+GENERATED FILE, SO MUDELA-BOOK CAN TEST IF THE FILE IT IS TO OVERWRITE
+IS GENERATED.]}
+
+@strong{About the input}
+
+If the file contains the ``block''
+
+@example 
+
+        \begin@{mudela@}
+        CONTENTS
+        \end@{mudela@}
+@end example 
+
+then LilyPond is run on CONTENTS.  @command{mudela-book} puts the result back,
+surrounded by @code{\preMudelaExample} and @code{\postMudelaExample}
+commands. @code{\preMudelaExample} and @code{posMudelaExample} is
+defined to nothing by default, and the user can redefine them
+to whatever he wants.
+
+
+@subsection Command line options
+
+@table @samp
+
+@item @option{-f}, @option{--format=}
+    Specify the document type to process, @code{latex} or @code{texi}.
+    @command{mudela-book} usually figure out this automatically.
+@item --default-music-fontsize=??pt
+    Set the fontsize to use for mudela if no fontsize is given
+    as option.
+@item --force-music-fontsize=??pt
+    Force all mudela to use this fontsize, overriding options
+    given to \begin@{mudela@}
+@item -I DIR, --include=DIR
+    include path
+@item -M, --dependencies
+        Write dependencies to out-www/filename.dep
+@item --dep-prefix=PREF
+       prepend PREF before each -M dependency
+@item -n, --no-lily
+       don't run lilypond
+@item --no-pictures
+       don't generate pictures
+@item --read-lys
+       don't write ly files. This way you can do
+       @example
+       mudela-book file.tely
+       convert-mudela
+       mudela-book --read-lys
+       @end example
+@item --outname=FILE
+    The name of La@TeX{} file to output. If this option  is not given,
+    the output name derived from the input name.
+@item --outdir=
+       where to place generated files
+@item --version
+       print version information
+@item --help
+       Print a short help message
+@end table
+
+
+
+@command{mudela-book} is written in python 1.5, so you have to install
+@uref{http://www.python.org,python}.
+
+
+
+@section Bugs
+  
+The La@TeX{} \includeonly@{...@} command is ignored.
+
+Ignores almost all La@TeX{} commands that changes margins and linewidths.
+
+La@TeX{} comments can confuse command{mudela-book}:
+@example
+% this music will be displayed: \mudela@{c d e@}
+@end example
+
+@section Authors
+
+@email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}, @uref{http://www.cs.uu.nl/people/hanwen}
+
+@email{tca@@gnu.org, Tom Cato Amundsen}
+
+@bye
+@ignore
 
 So what does this look like? Well, here is an example:
 @mudela[veryverbatim, intertext="produces this music:"]
@@ -149,7 +462,7 @@ Very often, if you mix music and text, the music is often only a
 few notes or at most a few bars. This music should be as short as
 possible and not stretched to be aligned to the right margin.
 
-If you only write voice-contents in the mudela block, mudela-book 
+If you only write voice-contents in the mudela block, @command{mudela-book}
 will set the @code{linewidth} variable to -1, so Lilypond
 will make the music as short as possible but without breaking the
 line. Here is a well know harmonic progression:
@@ -198,7 +511,7 @@ You can also use @code{mudelafile} (on a separate line, FIXME), to
 include another file.
 
 @section Fontsize options You can use all lilypond fontsizes in
-mudela-book.  The default 16pt fontsize is probably to big to be
+@command{mudela-book}.  The default 16pt fontsize is probably to big to be
 included in the middle of the text, 11pt or 13pt is probably better.
 
 The code can look like this:
@@ -258,8 +571,8 @@ lines.
 
 @section Just in case...
 The options @code{fragment} and @code{nonfragment} will override
-mudela-book when it scans the mudela code to see if it is voice
-contents or complete code. This might be useful if mudela-book choose
+@command{mudela-book} when it scans the mudela code to see if it is voice
+contents or complete code. This might be useful if @command{mudela-book} choose
 wrong. 
 
 Since there is no finder's fee which doubles every year, there is no
@@ -322,108 +635,4 @@ Verbatim environments will also ignore the page margins. That is
 a feature of La@TeX{}. (But you usually put things inside a verbatim
 environment when you don't want La@TeX{} to do any linebreaking)
 
-
-@section Texinfo behavior
-
-[TODO]
-
-@section Invocation
-
-@file{mudela-book} is a script that helps integrating mudela and
-La@TeX{}.  mudela-book runs LilyPond on fragments of mudela in your
-source file, and includes the results into document that can be
-processed with La@TeX{}.  The result is a text document with formatted
-music integrated.
-
-Lilypond will by default create all output files in directory @file{out}.
-The file to give to latex has ext @file{.latex}.
-
-@strong{About the input}
-
-If the file contains the ``block''
-
-@example 
-
-        \begin@{mudela@}
-        CONTENTS
-        \end@{mudela@}
-@end example 
-
-then LilyPond is run on CONTENTS.  mudela-book puts the result back,
-surrounded by @code{\preMudelaExample} and @code{\postMudelaExample}
-commands. @code{\preMudelaExample} and @code{posMudelaExample} is
-defined to nothing by default, and the user can redefine them
-to whatever he wants.
-
-@code{\begin} takes the following options:
 @end ignore
-
-
-@subsection Command line options
-
-@table @samp
-
-@item -f, --format=
-    Specify the document type to process, @code{latex} or @code{texi}.
-    @file{mudela-book} usually figure out this automatically.
-@item --default-music-fontsize=??pt
-    Set the fontsize to use for mudela if no fontsize is given
-    as option.
-@item --force-music-fontsize=??pt
-    Force all mudela to use this fontsize, overriding options
-    given to \begin@{mudela@}
-@item -I DIR, --include=DIR
-    include path
-@item -M, --dependencies
-        Write dependencies to out-www/filename.dep
-@item --dep-prefix=PREF
-       prepend PREF before each -M dependency
-@item -n, --no-lily
-       don't run lilypond
-@item --no-pictures
-       don't generate pictures
-@item --read-lys
-       don't write ly files. This way you can do
-       @example
-       mudela-book file.tely
-       convert-mudela
-       mudela-book --read-lys
-       @end example
-@item --outname=FILE
-    The name of La@TeX{} file to output. If this option  is not given,
-    the output name derived from the input name.
-@item --outdir=
-       where to place generated files
-@item --version
-       print version information
-@item --help
-       Print a short help message
-@end table
-
-
-
-@file{mudela-book} is written in python 1.5, so you have to install
-@uref{http://www.python.org,python}.
-
-
-
-@section Bugs
-  
-The La@TeX{} \includeonly@{...@} command is ignored.
-
-Ignores almost all La@TeX{} commands that changes margins and linewidths.
-
-La@TeX{} comments can confuse mudela-book:
-@example
-% this music will be displayed: \mudela@{c d e@}
-@end example
-
-@section Authors
-
-@email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}, @uref{http://www.cs.uu.nl/people/hanwen}
-
-@email{tca@@gnu.org, Tom Cato Amundsen}
-
-@bye
-
index c5ce7effcadc8775353c2d4fbe75e493ea9733ed..cd3031405803f42b54634b432664f1dce6994376 100644 (file)
@@ -2485,9 +2485,7 @@ Nevertheless, here are some variables you may want to use or change:
     ly2dvi.
 
   @item @code{interscoreline}@indexcode{interscoreline}  
-    Sets the spacing between the score lines. The value should be
-    a string with a length specified in TeX syntax. 
-    Defaults to  @code{"16 pt"}.
+    Sets the spacing between the score lines. Defaults to 16 pt.
 
   @item @code{output}@indexcode{output}  
     Specifies an alternate name for the the output @file{s}.
@@ -2681,9 +2679,7 @@ The engravers for paper output are:
 
   @item @code{Bar_number_engraver}@indexcode{Bar_number_engraver}  
     Engrave bar numbers.  These numbers appear at the start of each
-    line.  Not normally in any translator.  Can be added to
-    @code{Score} for score-wide numbering or to @code{Staff} for
-    numbering on each staff.
+    line.  Part of @code{Score} context.
 
   @item @code{Beam_engraver}@indexcode{Beam_engraver}  
     Handles beam requests by engraving beams.  Normally appears in
diff --git a/VERSION b/VERSION
index e699856eddbf68f002fdc38e5af076b9b908ce50..23eb5f64a874dce5c43724cce33d363bd386d793 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=88
-MY_PATCH_LEVEL=mb1
+PATCH_LEVEL=89
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index fd96d8c81cbaabce582d51193069ce17db463f45..08e442157f5152f0738b8fc264c9795771478f1b 100644 (file)
                s1
        }
        >
-       \paper{
-               \translator{
-                       \PianoStaffContext
-                       minVerticalAlign = 3.0*\staffheight;
-                       maxVerticalAlign = 3.0*\staffheight;
-               }
-%              linewidth=-1.;
-       }
 }
 
 \version "1.3.59"; 
index 17244b7d77dc208cee0076b571847dd2f872f200..59f4bf94eba9f192a1201c590c472bdf966e257e 100644 (file)
                                        a2 \property VoiceCombineThread.soloADue = ##f a
                                }
                >
-       \context PianoStaff <
-               \context StaffCombineStaff=one \skip 1*9;
-               \context StaffCombineStaff=two \skip 1*9;
-               \context StaffCombineStaff=one \partcombine StaffCombineStaff
-                       \context StaffCombineVoice=one \notes\relative c''
-                       %\context StaffCombineThread=one \notes\relative c''
+       \context PianoStaff = violi <
+               \context StaffCombineStaff=oneVioli { \clef alto; \skip 1*9;}
+               \context StaffCombineStaff=twoVioli { \clef alto; \skip 1*9;}
+               \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff
+                       \context StaffCombineVoice=one \notes\relative c'
                                {
                                        c4 d e f
                                        c d e f
                                        c d e f
                                        c d e f
                                        c4 d e f
-                                       a8 a a a
-                                       b b b b
+                                       a8 a a a b b b b
                                        d1
                                }
-                       \context StaffCombineVoice=two \notes\relative c''
-                       %\context StaffCombineThread=two \notes\relative c''
+                       \context StaffCombineVoice=two \notes\relative c'
                                {
                                        c4 d e f
                                        c d e f
                                        c4 d e f
                                        c2 e2
                                        c,4 d e f
-                                       a8 a a a
-                                       b b b b
+                                       a8 a a a b b b b
                                        b1
                                }
                >
+       \context PianoStaff = lower <
+               \context StaffCombineStaff=oneBassi { \clef bass; \skip 1*9;}
+               \context StaffCombineStaff=twoBassi { \clef bass; \skip 1*9;}
+               \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff
+                       \context StaffCombineVoice=oneB \notes\relative c
+                               {
+                                       \clef bass;
+                                       c1
+                                       d
+                                       e
+                                       f
+                                       c
+                                       d
+                                       e
+                                       f
+                                       c
+                               }
+                       \context StaffCombineVoice=twoB \notes\relative c
+                               {
+                                       \clef bass;
+                                       c1
+                                       d4 e d e
+                                       e1
+                                       f4 g f g
+                                       c1
+                                       d4 e d e
+                                       e
+                                       f4 g f g
+                                       c1
+                               }
+               >
        >
        \paper {
 
index f35fd36ef2becb10cf4453b379e04511ee377305..b8cf58ed87a6683ee81a231440612bae267035b3 100644 (file)
     }
   >
   \paper{
-    interscoreline = "3.0mm";
-
-%    % Alternative to fill the pages with evenly distributed score lines:
-%    interscoreline = "3.0mm plus 1fill";
-
+    interscoreline = 3.0\mm;
     \translator{\ScoreContext \remove "Bar_number_engraver";}
     \translator{\StaffContext StaffMinimumVerticalExtent = #'(-2.0 . 2.0)}
   }
index 4527bbf41b56cdfc80e43db89942ab1b776b87ba..621c691203bad975ea5f660e673f2fb8d13a620c 100644 (file)
@@ -12,6 +12,7 @@
 #include "score-element.hh"
 #include "group-interface.hh"
 #include "axis-group-interface.hh"
+#include "paper-def.hh"
 
 /*
   This callback is set in the children of the align element. It does
@@ -98,8 +99,9 @@ Align_interface::do_side_processing (Score_element * me, Axis a)
   SCM thr = me->get_elt_property ("threshold");
   if (gh_pair_p (thr))
     {
-      threshold[SMALLER] = gh_scm2double (gh_car (thr));
-      threshold[BIGGER] = gh_scm2double (gh_cdr (thr));      
+      Real ss = me->paper_l ()-> get_var ("staffspace");
+      threshold[SMALLER] = ss *gh_scm2double (gh_car (thr));
+      threshold[BIGGER] = ss * gh_scm2double (gh_cdr (thr));      
     }
 
   Real where_f=0;
index 162d74441ce85b9beb9116d0fd82ffce18df6ab0..f8adafad7da48b639c0233159fab38a424155aee 100644 (file)
@@ -15,6 +15,7 @@
 #include "directional-element-interface.hh"
 #include "side-position-interface.hh"
 #include "local-key-item.hh"
+#include "paper-def.hh"
 
 /**
    Catch notes, and put them in a row. Used for aligning grace notes.
@@ -96,14 +97,15 @@ Align_note_column_engraver::process_acknowledged ()
         UGH UGH: separate note-spacing into  separate class,  and
         use that to space grace notes.  
       */
-      SCM grsp = get_property ("graceAccidentalSpace");
+      SCM grsp = get_property ("graceAccidentalSpace") ;
       if (gh_number_p(grsp))
        {
          /*
            ugh.
          */
          Real extra_space = gh_scm2double(grsp);
-         SCM e = gh_cons (gh_double2scm (-extra_space), gh_double2scm (0.0));
+         SCM e = gh_cons (gh_double2scm (-extra_space * paper_l ()->get_var ("staffspace")),
+                          gh_double2scm (0.0));
          now_column_l_->set_elt_property ("extra-space", e);
        }
     }
index 4fe7d7172f13a6684cf52acfc673978cd75b733c..8c698b6e12d39318f60c3615c20ac12d49559642 100644 (file)
@@ -115,26 +115,6 @@ Bar_number_engraver::create_items ()
   text_p_ = new Item (b);
   Side_position::set_axis(text_p_,Y_AXIS);
 
-  SCM prop = get_property ("barNumberDirection");
-  if (!isdir_b (prop))
-    {
-      prop = gh_int2scm (UP);
-    }
-  text_p_->set_elt_property ("direction", prop);
-
-  SCM padding = get_property ("barNumberScriptPadding");
-  if (gh_number_p(padding))
-    {
-      text_p_->set_elt_property ("padding", padding);
-    }
-  else
-    {
-      text_p_
-       ->set_elt_property ("padding",
-                           gh_double2scm(paper_l ()->get_var ("interline")));
-    }
-
-
   announce_element (text_p_, 0);
 }
 
index 5419f3fa4b37f22d27390d30ff29c8f54b8847b6..721c807da494a5c251e0f4ce218a717d79843f0e 100644 (file)
@@ -68,10 +68,6 @@ Bar::compound_barline (Score_element*me, String str, Real h)
     {
       return me->lookup_l ()->blank (Box (Interval(0, 0), Interval (-h/2, h/2)));
     }
-  if (str == "scorepostbreak")
-    {
-      return simple_barline (me, me->paper_l ()->get_var ("barthick_score"), h);
-    }
   else if (str == "|")
     {
       return thin;
index f619e04b9c4fdd4cbc3db45384f3934b3c8d097f..124dc7f9c06f70fa03f4f8d58492e2e480def09b 100644 (file)
@@ -403,10 +403,11 @@ Beam::suspect_slope_b (Score_element*me, Real y, Real dy)
   /*
     steep slope running against lengthened stem is suspect
   */
+  Real ss = me->paper_l ()->get_var ("staffspace");
   Real first_ideal = Stem::calc_stem_info (first_visible_stem (me)).idealy_f_;
   Real last_ideal = Stem::calc_stem_info (last_visible_stem (me)).idealy_f_;
-  Real lengthened = me->paper_l ()->get_var ("beam_lengthened");
-  Real steep = me->paper_l ()->get_var ("beam_steep_slope");
+  Real lengthened = gh_scm2double (me->get_elt_property ("outer-stem-length-limit")) * ss;
+  Real steep = gh_scm2double (me->get_elt_property ("slope-limit"));
 
   // ugh -> use commonx
   Real dx = last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS);
index c325aa1aa3d134891df5f2d9b8234b9e8bd997e0..91ea3fea3eb6eeba8048081075f92e5f1df5acf7 100644 (file)
@@ -66,7 +66,7 @@ Break_align_item::do_alignment (Score_element *me)
       me->add_offset_callback (Align_interface::center_on_element, X_AXIS);
     }
 
-  Real interline= me->paper_l ()->get_var ("interline");       
+  Real interline= me->paper_l ()->get_var ("staffspace");      
   Link_array<Score_element> elems;
   Link_array<Score_element> all_elems
     = Pointer_group_interface__extract_elements (me, (Score_element*)0,
index c21897facaee943190f1950b9304f38845ce23fc..35177fac012d30b5f2e18e69b43e625a7fcc61d6 100644 (file)
@@ -24,12 +24,31 @@ Crescendo::set_interface (Score_element*s)
 
 
 MAKE_SCHEME_CALLBACK(Crescendo,brew_molecule);
+
+/*
+
+  TODO:
+
+  * should span the crescendo on any dynamic-text items, and
+  calculate their dimensions to determine shortening; junk shortening
+  code and related elt props.
+
+  * separate the dashed-line version and the hairpin version into two
+  brew_molecule functions.
+
+  * generalise dashed-line into generic text spanner, for ottava, accelerando, etc.
+
+  
+*/
 SCM
 Crescendo::brew_molecule (SCM smob) 
 {
   Score_element *me= unsmob_element (smob);
   Spanner * sp = dynamic_cast<Spanner*>(me);
-  Real absdyn_dim = me->paper_l ()-> get_var ("crescendo_shorten");
+  Real ss = me->paper_l ()->get_var ("staffspace");
+  Real sl = me->paper_l ()->get_var ("stafflinethickness");  
+  
+  Real absdyn_dim = gh_scm2double (me->get_elt_property ("shorten-for-letter"));
   Real extra_left =  sp->get_broken_left_end_align ();
 
   SCM dir = me->get_elt_property("grow-direction");
@@ -87,7 +106,7 @@ Crescendo::brew_molecule (SCM smob)
                                                  me->paper_l ()));
       m.add_molecule (start_text);
 
-      pad = me->paper_l ()->get_var ("interline") / 2;
+      pad = me->paper_l ()->get_var ("staffspace") / 2;        //  ugh.
 
       width -= start_text.extent (X_AXIS).length ();
       width -= pad;
@@ -97,10 +116,12 @@ Crescendo::brew_molecule (SCM smob)
   SCM at;
   s =me->get_elt_property ("spanner");
   Real height;
+
   if (gh_string_p (s) && ly_scm2string (s) == "dashed-line")
     {
-      Real thick = me->paper_l ()->get_var ("crescendo_dash_thickness");
-      Real dash = me->paper_l ()->get_var ("crescendo_dash");
+      Real thick = gh_scm2double (me->get_elt_property ("dash-thickness")) * sl ;
+      Real dash = gh_scm2double (me->get_elt_property  ("dash-length")) * ss;
+      
       height = thick;
       at = gh_list (ly_symbol2scm (ly_scm2string (s).ch_C ()),
                    gh_double2scm (thick),
@@ -111,8 +132,8 @@ Crescendo::brew_molecule (SCM smob)
   else
     {
       bool continued = broken[Direction (-gd)];
-      height = me->paper_l()->get_var ("crescendo_height");
-      Real thick = me->paper_l ()->get_var ("crescendo_thickness");
+      height = ss * gh_scm2double (me->get_elt_property ("height"));
+      Real thick = sl * gh_scm2double (me->get_elt_property ("thickness"));
       
       const char* hairpin = (gd < 0)? "decrescendo" :  "crescendo";
 
index 68a18a9de41b6f07acc5bc414a584a97eaa98244..ccd424ce8eded44f9f4019e0b294b8d6ca7b7237 100644 (file)
@@ -3,7 +3,7 @@
 #include "align-interface.hh"
 #include "spanner.hh"
 #include "warn.hh"
-
+#include "paper-def.hh"
 /*
   JUNKME
  */
@@ -21,9 +21,11 @@ calc_interstaff_dist (Item  *item, Spanner  *span)
          || !scm_equal_p (gh_car (threshold), gh_cdr (threshold)))
        warning (_ ("minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken"));
 
-      interstaff = 0.0;
+
+      
+      interstaff = item->paper_l ()->get_var ("staffspace");
       if (gh_pair_p (threshold))
-       interstaff =  gh_scm2double (gh_car (threshold));
+       interstaff =  gh_scm2double (gh_car (threshold)) * interstaff;
 
       Score_element  * span_refpoint = span;
       while (span_refpoint->parent_l  (Y_AXIS) != common)
index a2da4e1b2b32db16712b4286b72c20f3e1cd8544..8b2df51acdaf0c6e508b598738c504acb5fd1a0a 100644 (file)
@@ -268,7 +268,10 @@ Dynamic_engraver::do_process_music ()
            {
              index_set_cell (cresc_p_->get_elt_property ("dynamic-drul"),
                              LEFT, text_p_->self_scm ());
-             if (finished_cresc_p_)
+
+             if (finished_cresc_p_
+             // I don't see why, but we need this check
+                 && gh_pair_p (finished_cresc_p_->get_elt_property ("dynamic-drul")))
                index_set_cell (finished_cresc_p_->get_elt_property ("dynamic-drul"),
                                RIGHT, text_p_->self_scm ());
            }
@@ -302,6 +305,7 @@ Dynamic_engraver::do_removal_processing ()
     {
       current_cresc_req_->origin ()->warning (_ ("unterminated (de)crescendo"));
       cresc_p_->suicide ();
+      cresc_p_ = 0;
     }
 }
 
index d58bd8e7b3c4192dddd7b733438b616b45ef83c9..fb11733906bee7d4e16a7727f67f3c55c4a4319a 100644 (file)
@@ -20,11 +20,9 @@ Grace_align_item::before_line_breaking (SCM smob)
   Score_element*me = unsmob_element (smob);
 
   SCM space = me->get_elt_property ("horizontal-space");
-  Real ss = me->paper_l ()->get_var ("staffspace");
-  
   me->set_elt_property ("threshold",
-                   gh_cons (gh_double2scm (ss  *gh_scm2double (space)),
-                            gh_double2scm (infinity_f)));
+                       gh_cons (space,
+                                gh_double2scm (infinity_f)));
   dynamic_cast<Item*>(me)->column_l ()->set_elt_property ("contains-grace", SCM_BOOL_T);
 
   return SCM_UNSPECIFIED;
index 50259cc3148668497c203fadc108581608788d78..a798afe422412590d597bd3c11d4c270a8ed8ef4 100644 (file)
@@ -15,6 +15,7 @@
 #include "molecule.hh"
 #include "paper-def.hh"
 #include "hyphen-spanner.hh"
+#include "paper-column.hh"
 #include "spanner.hh"
 #include "item.hh"
 
@@ -60,7 +61,28 @@ Hyphen_spanner::brew_molecule (SCM smob)
   */
   if(l < w)
     l = sqrt(l*w);
-
+  else
+    {
+      /* OK, we have a problem. Usually this means that we're on the
+         first column, and we have a long lyric which extends to near
+         the offset for stuff */
+      /* This test for being on the first column has been shamelessly
+         ripped from spanner.cc */
+      Paper_column *sc = dynamic_cast<Paper_column*> (sp->get_bound(LEFT)->column_l());
+      if (sc != NULL &&
+         sc->break_status_dir () == RIGHT)
+       {
+         /* We are on the first column, so it's probably harmless to
+             get the minimum length back by extending leftwards into
+             the space under the clef/key sig/time sig */
+         bounds[LEFT] = bounds[RIGHT] - l;
+       }
+      else 
+       {
+         /* We can't get the length desired. Maybe we should warn. */
+         l = w;
+       }
+    }
   Box b  (Interval (-l/2,l/2), Interval (h,h+th));
   Molecule mol (sp->lookup_l ()->filledbox (b));
   mol.translate_axis (bounds.center ()
@@ -80,3 +102,4 @@ Hyphen_spanner::Hyphen_spanner (Spanner*s)
 {
   elt_l_ = s;
 }
+
index d17392f3b35bd8138b15840b606156327d46fbd3..f570a60509603c28bf7a2e2f42ff61ba34089fdb 100644 (file)
 #include "lily-proto.hh"
 
 /*
-  TODO: rewrite this comment.
-  
+  Order elements top to bottom/left to right/right to left etc.
+
+
+  *******
   
-  Order elements top to bottom/left to right/right to left etc..
+  element properties
+
+  stacking-dir -- stack contents of elements in which direction ?
 
-  TODO: implement padding.
+  align-dir -- Which side to align? -1: left side, 0: centered (around
+    center_l_ if not nil, or around center of width), 1: right side
 
-  document usage of this.
+  threshold -- (cons MIN MAX), where MIN and MAX are dimensions in
+    staffspace
 
+  alignment-done -- boolean to administrate whether we've done the alignment already (to ensure that the process is done only once)
 
+  group-center-element -- element which will be at the center of the group
+    after aligning (when using Align_interface::center_on_element)
 
+  elements -- to be aligned elements 
+
+  axes -- list of axis numbers. Should contain only one number.
+  
   *******
   
-  element properties
+  Reads the following from its elements
+  
+  
+  minimum-space --  (cons LEFT RIGHT)
 
-  stacking-dir
-  Which side to align? -1: left side, 0: centered (around
-  center_l_ if not nil, or around center of width), 1: right side
+  extra-space -- (cons LEFT RIGHT)
+  
 */
 struct Align_interface {
   static Real alignment_callback (Score_element *,Axis);
index 2310752807e88100c5da759bbe9b3a356dabf963..cd917f8d60c4d0f2add069551df003347a41a0df 100644 (file)
 
    damping -- damping factor (real).
 
-   
+   outer-stem-length-limit -- catch suspect beam slopes, set slope to zero if
+     outer stem is lengthened more than this (in staffspace)
+
+   slope-limit -- set slope to zero if slope is running away steeper than this.
+
 */
 class Beam
 {
index e8947a42091f5b1b73b26a827efc0f75f0dbcef8..fb114a914a4e223fc151e829212df6a8af4e9d37 100644 (file)
 
   The length of the hyphen line should stretch based on the
   size of the gap between syllables.
+
+properties:
+
+  thickness -- thickness of line (in stafflinethickness)
+
+  height -- vertical offset  (in staffspace)
+
+  minimum-length -- try to make the hyphens at least this long. Also works
+    as a scaling parameter for the length
+
+  word-space -- elongate left by this much (FIXME: cumbersome semantics)
+  
   */
-struct Hyphen_spanner // interface
+struct Hyphen_spanner 
 {
 public:
   Spanner* elt_l_;
index 25d099ecccd105416885da1ceb89a8d829aebad8..1709a5d8e81bec1c212171f594cd8b45438904fd 100644 (file)
     thus changing the state of the interpretation context.
 
   get_music (M) -- return all events starting at M (pre: no events
-    before M).
+    before M). No side-effects
 
-  skip (M) -- remove all events at M from the pending queue.
+  skip (M) -- remove all events starting before M (leave the ones that
+    start M).  no side-effects on interpretation context
 
+
+  TODO:
+
+  merge pending_moment and process.
+  
 */
 class Music_iterator
 {
+protected:
+  Moment music_length_;
+
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
 
+  Moment music_length_mom () const;
+
+  
   Music_iterator ();
   Music_iterator (Music_iterator const&);
   virtual ~Music_iterator ();
@@ -54,7 +66,7 @@ public:
      then its children. Returns the iterator that succeeded
   */
   Music_iterator *  try_music (Music  *) const;
-
+  
   /**
     The translation unit that we this iterator is reporting  to now.
    */
index 12ffb1aa124cf7f2151d2a3dbbd9bd0cf82a0726..32a6bc951c5f9da369573d112043801d9543d545 100644 (file)
@@ -39,6 +39,7 @@ private:
   Moment first_until_;
   Moment second_until_;
   int state_;
+  String suffix_;
 };
 
 #endif /* PART_COMBINE_MUSIC_ITERATOR_HH */
index 92f0ecea5ce08bca812d3f9242e1c26fda1e7417..d4f83c4585bd32a8125ec2b3416b3e8faaeb6d41 100644 (file)
@@ -26,8 +26,8 @@ public:
   virtual void construct_children ();
   virtual Moment pending_moment () const;
   virtual bool ok () const;
-  virtual SCM get_music (Moment)const;
   virtual void skip (Moment);
+  virtual SCM get_music (Moment)const;
 
 protected:
   virtual void process (Moment);
@@ -39,12 +39,7 @@ private:
   SCM cursor_;
   Music_iterator * iter_p_;
 
-  /*
-    perhaps these can be virtual and protected iso. private?  
-   */
-  void start_next_element();
-  void leave_element();
-  void set_sequential_music_translator();
+  void descend_to_child ();
 };
 
 #endif // SEQUENTIAL_MUSIC_ITERATOR_HH
index c9b861dce39c6b58a081acd47dce24d31d0e66b0..963eb0c616e5cbaddbc26b32f624d29e5872aef5 100644 (file)
@@ -14,7 +14,7 @@
 class Simple_music_iterator : public Music_iterator
 {
 protected:
-  Moment length_mom_;
+
   Moment last_processed_mom_;
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
@@ -22,9 +22,8 @@ public:
   Simple_music_iterator (Simple_music_iterator const &);
   virtual void process (Moment);
   virtual bool ok ()const;
-  virtual void skip (Moment);
   virtual Moment pending_moment ()const;
-  virtual void construct_children ();
+  virtual void skip (Moment);
 };
 
 #endif /* SIMPLE_MUSIC_ITERATOR_HH */
index 96b6cd0420999a84be31304b58b4e4a29bd408d3..a899dc46f664ddb7d2259d3c006caa90684ddc89 100644 (file)
@@ -34,7 +34,7 @@ public:
                   Real hinf, Real r0);
   Bezier get_bezier () const;
 
-  void minimise_enclosed_area (Paper_def* paper_l);
+  void minimise_enclosed_area (Paper_def* paper_l, Real beauty);
   Real fit_factor () const;
   void blow_fit ();
   Real enclosed_area_f () const;
index 001c8fa19f1d2b4fef5b8c8a426cb458079bd307..349b549dad355254ec9b8562d7c84f6ed6cf58f2 100644 (file)
      valid areas for the middle control points. Used in de_uglyfy.
      They are a bit empirical.
 
-     
+   details -- alist containing contaning a few magic constants.
+
+   note-columns -- list of elt pointers to note columns.
+
+   attachment -- cons of symbols, '(LEFT-TYPE . RIGHT-TYPE), where
+     both types may be alongside-stem, stem, head or loose-end
+   
+   direction -- up or down?
+
+   y-free -- ? 
+   
  */
 class Slur
 {
index 9af28cc404ac0d90858fc6ff97992a3d8e16fc22..bc70174dbce6fb8c07add3353799a4b9dfcf605f 100644 (file)
@@ -322,7 +322,7 @@ Line_of_score::post_processing (bool last_line)
                          gh_double2scm (height),
                          SCM_UNDEFINED));
   
-  Real il = paper_l ()->get_var ("interline");
+  Real il = paper_l ()->get_var ("staffspace");
 
   /*
     all elements.
index 9ada64765fad07f3d154e6c986bc7e5f4e5d92bc..d58823470f1acc59adf3bb5948a3a553b42e8302 100644 (file)
@@ -127,7 +127,7 @@ Mark_engraver::create_items (Request *rq)
     {
       text_p_
        ->set_elt_property ("padding",
-                           gh_double2scm(paper_l ()->get_var ("interline")));
+                           gh_double2scm(paper_l ()->get_var ("staffspace")));
     }
 
   
index 3806c4e7f7e69a30d47ad029a184428b9dca5a46..8c3c2fe3a68822abbf0aa33f859717a69d9f24c2 100644 (file)
@@ -51,6 +51,7 @@ Music_iterator::Music_iterator (Music_iterator const& src)
   //  clone_i_ = src.clone_i_ + 1;
   handle_ = *src.handle_.clone ();
   music_l_ = src.music_l_;
+  music_length_ = src.music_length_;
 }
 
 Music_iterator::~Music_iterator ()
@@ -85,12 +86,6 @@ Music_iterator::pending_moment () const
 }
 
 
-void
-Music_iterator::skip (Moment)
-{
-  assert (0);
-}
-
 void
 Music_iterator::process (Moment)
 {
@@ -102,6 +97,11 @@ Music_iterator::ok () const
   return false;
 }
 
+void
+Music_iterator::skip (Moment )
+{
+}
+
 SCM
 Music_iterator::get_music (Moment)const
 {
@@ -156,9 +156,18 @@ Music_iterator::static_get_iterator_p (Music *m)
     }
 
   p->music_l_ = m;
+  p->music_length_ = m->length_mom ();
+  
   return p;
 }
 
+
+Moment
+Music_iterator::music_length_mom() const
+{
+  return music_length_;
+}
+
 void
 Music_iterator::init_translator (Music *m, Translator_group *report_l)
 {
index c052d14ff511dfc0d095dc375d58835c05653b8a..132ba004d4be482a1dc50f8f55eb85161e82c736 100644 (file)
@@ -18,7 +18,10 @@ Music_wrapper_iterator::Music_wrapper_iterator ()
 Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper_iterator const &src)
   : Music_iterator (src)
 {
-  child_iter_p_ = src.child_iter_p_->clone ();
+  if (src.child_iter_p_)
+    child_iter_p_ = src.child_iter_p_->clone ();
+  else
+    child_iter_p_ = 0;
 }
 
 Music_wrapper_iterator::~Music_wrapper_iterator ()
@@ -39,10 +42,18 @@ Music_wrapper_iterator::ok () const
 {
   return child_iter_p_ && child_iter_p_->ok ();
 }
-
 void
 Music_wrapper_iterator::skip (Moment m)
 {
+  /*
+    FIXME: should make sure that the initial try_music () is skipped as
+    well, if you would do
+
+    iter = get_iterator (Side_effect_music); // eg. property setting
+    iter->skip (1/2)
+    iter->process ()
+
+  */
   child_iter_p_->skip (m);
 }
 
index 5673b9fa77597ca7014b006d0a99419855e47da5..754b1023bbf74d8e7affd0ec0a61bf64284f55af 100644 (file)
@@ -128,9 +128,12 @@ Part_combine_music_iterator::get_state (Moment)
 {
   int state = UNKNOWN;
   Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
-  Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one");
+  Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_);
 
   SCM s = first_translator->get_property (ly_symbol2scm ("changeMoment"));
+  if (!gh_pair_p (s))
+    return state;
+
   Moment change_mom = *unsmob_moment (gh_car (s));
   Moment diff_mom = *unsmob_moment (gh_cdr (s));
   
@@ -139,30 +142,42 @@ Part_combine_music_iterator::get_state (Moment)
   if (!now.mod_rat (change_mom))
     {
       SCM interval = SCM_BOOL_F;
-      Moment first_mom = first_until_ - now;
-      Moment second_mom = second_until_ - now;
+      if (first_until_ < now)
+       first_until_ = now;
+      if (second_until_ < now)
+       second_until_ = now;
+
+      Moment first_mom = first_until_;
+      Moment second_mom = second_until_;
+      Moment diff_until = diff_mom + now;
 
       bool first = true;
       Music_iterator *first_iter = first_iter_p_->clone ();
       Music_iterator *second_iter = second_iter_p_->clone ();
-      while ((first_mom <? second_mom) < diff_mom
-            && (first_iter->ok () || second_iter->ok ()))
+
+      Moment last_pending (-1);
+      Moment pending = now;
+      while (now < diff_until
+             && (first_iter->ok () || second_iter->ok ())
+
+            // urg, this is a hack, haven't caught this case yet
+            && (pending != last_pending))
        {
-         Moment m;
          if (!second_iter->ok ())
-           m = first_iter->pending_moment ();
+           pending = first_iter->pending_moment ();
          else if (!first_iter->ok ())
-           m = second_iter->pending_moment ();
+           pending = second_iter->pending_moment ();
          else
-           m = first_iter->pending_moment () <? second_iter->pending_moment ();
+           pending = first_iter->pending_moment () <? second_iter->pending_moment ();
+         last_pending = pending;
 
          Array<Musical_pitch> first_pitches;
          Array<Duration> first_durations;
-         get_music_info (m, first_iter, &first_pitches, &first_durations);
+         get_music_info (pending, first_iter, &first_pitches, &first_durations);
       
          Array<Musical_pitch> second_pitches;
          Array<Duration> second_durations;
-         get_music_info (m, second_iter, &second_pitches, &second_durations);
+         get_music_info (pending, second_iter, &second_pitches, &second_durations);
 
          if (first_pitches.size () && second_pitches.size ())
            {
@@ -175,36 +190,16 @@ Part_combine_music_iterator::get_state (Moment)
            {
              first_durations.sort (Duration::compare);
              first_mom += first_durations.top ().length_mom ();
-             if (first && !first_pitches.empty ())
-               first_until_ = first_mom + now;
            }
 
          if (second_durations.size ())
            {
              second_durations.sort (Duration::compare);
              second_mom += second_durations.top ().length_mom ();
-             if (first && !second_pitches.empty ())
-               second_until_ = second_mom + now;
            }
-         first = false;
-
-#if 0 /* DEBUG */
-         printf ("now: %s\n", now.str ().ch_C ());
-         printf ("first: ");
-         for (int i = 0; i < first_pitches.size (); i++)
-           {
-             printf ("%s, ", first_pitches[i].str ().ch_C ());
-           }
-         printf ("\nsecond: ");
-         for (int i = 0; i < second_pitches.size (); i++)
-           {
-             printf ("%s, ", second_pitches[i].str ().ch_C ());
-           }
-         printf ("\n");
-#endif
 
          if (!first_pitches.empty () && second_pitches.empty ()
-             && !(second_until_ > now))
+              && !(second_until_ > now))
            {
              state |= UNRELATED;
              state &= ~UNISILENCE;
@@ -249,6 +244,8 @@ Part_combine_music_iterator::get_state (Moment)
              if (!(state & ~(UNIRHYTHM | UNISILENCE)))
                state |= UNISILENCE;
            }
+         else if (!state)
+           state |= UNRELATED;
          else
            state &= ~(UNISILENCE);
 
@@ -269,18 +266,17 @@ Part_combine_music_iterator::get_state (Moment)
                state &= ~(SPLIT_INTERVAL);
            }
 
-#if 0
-         Moment next = (first_mom <? second_mom) + now;
-         if (first_iter->ok ())
-           first_iter->skip (next);
-         if (second_iter->ok ())
-           second_iter->skip (next);
-#else
+         if (first && !first_pitches.empty ())
+           first_until_ = first_mom;
+         if (first && !second_pitches.empty ())
+           second_until_ = second_mom;
+         first = false;
+
          if (first_iter->ok ())
-           first_iter->skip (first_mom + now);
+           first_iter->skip (pending);
          if (second_iter->ok ())
-           second_iter->skip (second_mom + now);
-#endif
+           second_iter->skip (pending);
+         now = pending;
        }
       delete first_iter;
       delete second_iter;
@@ -297,8 +293,17 @@ Part_combine_music_iterator::process (Moment m)
     - Use three named contexts (be it Thread or Voice): one, two, solo.
       Let user pre-set (pushproperty) stem direction, remove
       dynamic-engraver, and such.
+
+      **** Tried this, but won't work:
+
+      Consider thread switching: threads "one", "two" and "both".
+      User can't pre-set the (most important) stem direction at
+      thread level!
    */
  
+  if (suffix_.empty_b ())
+    suffix_ = first_iter_p_->report_to_l ()->daddy_trans_l_->id_str_.cut_str (3, INT_MAX);
+
   int state = get_state (m);
   if (state)
     state_ = state;
@@ -307,25 +312,25 @@ Part_combine_music_iterator::process (Moment m)
   
   Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
 
-  bool combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_
+
+  bool previously_combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_
     == second_iter_p_->report_to_l ()->daddy_trans_l_;
 
-  String to_id =  combined_b ? "one" : "two";
-  if ((!(state & UNIRHYTHM) && combined_b)
-      || ((state & SPLIT_INTERVAL) && combined_b)
-      || ((state & (SOLO1 | SOLO2)) && combined_b)
-      || (((state & (UNIRHYTHM | UNISILENCE))
-          && !combined_b && !(state & SPLIT_INTERVAL)
-          && !(state & (SOLO1 | SOLO2)))))
-    {
-      combined_b = !combined_b;
-      to_id =  combined_b ? "one" : "two";
-      change_to (second_iter_p_, p->what_str_, to_id);
-    }
+  bool combine_b = previously_combined_b;
+
+  if (!(state & UNIRHYTHM)
+      || (state & SPLIT_INTERVAL)
+      || (state & (SOLO1 | SOLO2)))
+    combine_b = false;
+  else if (state & (UNIRHYTHM | UNISILENCE))
+    combine_b = true;
 
+  if (combine_b != previously_combined_b)
+    change_to (second_iter_p_, p->what_str_, (combine_b ? "one" : "two")
+              + suffix_);
 
-  Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one");
-  Translator_group *second_translator = second_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "two");
+  Translator_group *first_translator = first_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "one" + suffix_);
+  Translator_group *second_translator = second_iter_p_->report_to_l ()->find_create_translator_l (p->what_str_, "two" + suffix_);
 
   /*
     hmm
index f5605bc6677ba0d4d119dc3447f99a8ca1b852ac..952bded8fa92f265fb3cb262ab8cbac411bfdfc7 100644 (file)
@@ -172,7 +172,7 @@ Rest_collision::do_shift (Score_element *me, SCM elts)
        return SCM_UNSPECIFIED;
       
       // staff ref'd?
-      Real staff_space = me->paper_l()->get_var ("interline");
+      Real staff_space = me->paper_l()->get_var ("staffspace");
 
        /* FIXME
          staff_space =  rcol->rests[0]->staff_space ();
index c4c875f5639a6fd5e4b1fedb7fdcac1e35df7da9..333593a2d8e12cf6db475e343b7f04ac04c15ae1 100644 (file)
@@ -28,7 +28,7 @@ Script::get_molecule(Score_element * me, Direction d)
     }
   else if (key == ly_symbol2scm ("accordion"))
     {
-      return me->lookup_l ()->accordion (gh_cdr (s), me->paper_l()->get_var("interline"));
+      return me->lookup_l ()->accordion (gh_cdr (s), me->paper_l()->get_var("staffspace"));
     }
   else
     assert (false);
index 8e78b281e96fe8926507282e90ad7ac25fc8a290..bfeb3cd9254c92f01d42cf0d7fbb5971907a2e86 100644 (file)
@@ -24,22 +24,24 @@ Sequential_music_iterator::Sequential_music_iterator (Sequential_music_iterator
 {
   cursor_ = src.cursor_;
   here_mom_ = src.here_mom_;
-  iter_p_ = src.iter_p_->clone ();
+  if (src.iter_p_)
+    iter_p_ = src.iter_p_->clone ();
+  else
+    iter_p_ = 0;
 }
 
 Sequential_music_iterator::~Sequential_music_iterator()
 {
   if (iter_p_)
     {
-      /*      if (iter_p_->ok () )
+#if 0
+      if (iter_p_->ok () )
        music_l_->origin ()->warning (_ ("Must stop before this music ends"));
-      */
+#endif
       delete iter_p_;
-      iter_p_ = 0;
     }
 }
 
-
 void
 Sequential_music_iterator::construct_children()
 {
@@ -47,39 +49,28 @@ Sequential_music_iterator::construct_children()
   
   while (gh_pair_p (cursor_ ))
     {
-      start_next_element();
-      if (!iter_p_->ok()) 
-       {
-         leave_element();
-       }
-      else 
+      iter_p_ =  get_iterator_p (unsmob_music (gh_car (cursor_)));
+      
+      if (iter_p_->ok()) 
        {
-         set_sequential_music_translator();
-         break;
+         descend_to_child ();
+         return;
        }
-    }
-}
-
-void 
-Sequential_music_iterator::leave_element()
-{
-  delete iter_p_;
-  iter_p_ =0;
-  Moment elt_time = unsmob_music (gh_car (cursor_))->length_mom ();
-  here_mom_ += elt_time;
-  cursor_ =gh_cdr (cursor_);
-}
 
-void
-Sequential_music_iterator::start_next_element()
-{
-  assert (!iter_p_);
-  iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_)));
+      delete iter_p_ ;
+      iter_p_ =0;
+      cursor_ = gh_cdr (cursor_);
+    }
 }
+ /*
+  move to context of child iterator if it is deeper down in the
+  hierarchy.
+  */
 
 void
-Sequential_music_iterator::set_sequential_music_translator()
+Sequential_music_iterator::descend_to_child ()
 {
+       
   Translator_group  * child_report = child_report = iter_p_->report_to_l ();
   if (dynamic_cast<Grace_iterator*> (iter_p_))
     child_report = child_report->daddy_trans_l_;
@@ -88,34 +79,9 @@ Sequential_music_iterator::set_sequential_music_translator()
     set_translator (child_report);
 }
 
-void
-Sequential_music_iterator::skip (Moment until)
-{
-  while (1)
-    {
-      SCM nm = iter_p_->get_music (until - here_mom_);
-      
-      Moment m = 0;
-      for (SCM i = nm; gh_pair_p(i); i = gh_cdr (i))
-       m = m >? unsmob_music (gh_car (i))->length_mom ();
-
-      delete iter_p_;
-
-      cursor_ = gh_cdr (cursor_);
-
-      iter_p_ = 0;
-      if (gh_pair_p (cursor_))
-       iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_)));
-      else
-       return;
-
-      if (m > Moment (0))
-       return;
-    }
-}
 
 /*
-  [todo: translate]
+  
   
   Hier staat in feite: haal alle muziek op (startend op tijd HERE) tot
   je iets met lengte L > 0 tegenkomt.  Aangezien de preconditie is dat
@@ -136,13 +102,13 @@ Sequential_music_iterator::skip (Moment until)
   redenering helderder is.
 */
 
-#if 1
 SCM
 Sequential_music_iterator::get_music (Moment until)const
 {
-  if (until < pending_moment ())
-    return SCM_EOL;
   SCM s = SCM_EOL;
+  if (until <  pending_moment ())
+    return s;
+
   SCM curs = cursor_;
   Music_iterator * iter = iter_p_->clone ();
   while (1)
@@ -167,71 +133,71 @@ Sequential_music_iterator::get_music (Moment until)const
     }
   return s;
 }
-#else
-SCM
-Sequential_music_iterator::get_music (Moment until) const
+/*
+  Skip events till UNTIL. We don't do any other side effects (such as
+  moving descending to child iterator contexts, because they might
+  depend on \context specs and \translator changes being executed
+    
+ */
+void
+Sequential_music_iterator::skip (Moment until)
 {
-  Sequential_music_iterator* i = dynamic_cast<Sequential_music_iterator *> (this->clone ());
-  SCM s = SCM_EOL;
-  while (1) 
-      {
-       Moment local_until = until - i->here_mom_;
-       while (i->iter_p_->ok ()) 
-         {
-           Moment here = i->iter_p_->pending_moment ();
-           if (here != local_until)
-             goto finalise;
-           
-           s = gh_append2 (i->iter_p_->get_music (local_until), s);
-           i->iter_p_->skip (local_until);
-         }
-         
-         if (!i->iter_p_->ok ()) 
-           {
-             i->leave_element ();
-             
-             if (gh_pair_p (i->cursor_))
-               i->start_next_element ();
-             else
-               goto finalise;
-           }
-       }
- finalise:
-  delete i;
-  return s;
+  SCM curs = cursor_;
+  while (1)
+    {
+      Moment l =iter_p_->music_length_mom ();
+      if (l >= until - here_mom_)
+       iter_p_->skip (until - here_mom_);
+
+      if (iter_p_->ok ())
+       return ; 
+      
+      here_mom_ = here_mom_ + l;
+      delete iter_p_;
+      iter_p_ =0;
+
+      curs = gh_cdr (curs);
+
+      if (!gh_pair_p (curs))
+       return ;
+      else
+       iter_p_ = get_iterator_p (unsmob_music (gh_car (curs)));
+    }
 }
-#endif
 
 void
 Sequential_music_iterator::process (Moment until)
 {
-  if (ok ())
+  while (1)
     {
-      while (1) 
-       {
-         Moment local_until = until - here_mom_;
-         while (iter_p_->ok ()) 
-           {
-             Moment here = iter_p_->pending_moment ();
-             if (here != local_until)
-               return ;
-             
-             iter_p_->process (local_until);
-           }
+      iter_p_->process (until - here_mom_);
+
+      /*
+       if the iter is still OK, there must be events left that have
+       
+         TIME > LEFT
          
-         if (!iter_p_->ok ()) 
-           {
-             set_sequential_music_translator ();
-             leave_element ();
-             
-             if (gh_pair_p (cursor_))
-               start_next_element ();
-             else 
-               return ;
-           }
-       }
+      */
+      if (iter_p_->ok ())
+       return ;
+
+      here_mom_ += iter_p_->music_length_mom ();
+
+      descend_to_child ();
+      delete iter_p_;
+      iter_p_ =0;
+
+      cursor_ = gh_cdr (cursor_);
+
+      if (!gh_pair_p (cursor_))
+       return ;
+      else
+       {
+         delete iter_p_;
+         iter_p_ = get_iterator_p (unsmob_music (gh_car (cursor_)));
+       }      
     }
+
 }
 
 Moment
index b185f8ac24b6c97cb0532ba0a49aa138b9947222..c4a78e9583a8f9048b2ba200a233ad4d1a7959f4 100644 (file)
@@ -21,19 +21,12 @@ Simple_music_iterator::Simple_music_iterator (Simple_music_iterator const &src)
   : Music_iterator (src)
 {
   last_processed_mom_ = src.last_processed_mom_;
-  length_mom_ = src.length_mom_;
-}
-
-void
-Simple_music_iterator::construct_children ()
-{
-  length_mom_ = music_l_->length_mom ();
 }
 
 bool
 Simple_music_iterator::ok ()const
 {
-  return last_processed_mom_ < length_mom_;
+  return last_processed_mom_ < music_length_mom ();
 }
 
 Moment
@@ -42,7 +35,7 @@ Simple_music_iterator::pending_moment ()const
   if (music_l_)
     return Moment (0);
   else
-    return length_mom_;
+    return music_length_mom ();
 }
 
 void
index e23f528a24a387f466b8d6978e61f527fbae529e..0240e99f87a2dbc45c1aa0c560e481788f45ce34 100644 (file)
@@ -144,12 +144,10 @@ Slur_bezier_bow::area_x_gradients_array (Real area)
   algorithm, instead of this homebrew.
 */
 void
-Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l)
+Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l, Real beauty)
 {
   Real length = curve_.control_[3][X_AXIS]; 
-
-  Real sb = paper_l->get_var ("slur_beautiful");
-  Real beautiful = sb * length * slur_height (length, h_inf_, r_0_);
+  Real beautiful = beauty * length * slur_height (length, h_inf_, r_0_);
 
   DEBUG_OUT << to_str ("Beautiful: %f\n", beautiful);
   DEBUG_OUT << to_str ("Length: %f\n", length);
index ca200b2b243ca80fd342b74e70794c9e1cf9d0d1..0ef9b482993d750a14c5e65bae3655798b41d10a 100644 (file)
@@ -135,6 +135,8 @@ Slur::set_extremities (Score_element*me)
        {
          
          // for (SCM s = get_elt_property ("slur-extremity-rules"); s != SCM_EOL; s = gh_cdr (s))
+
+         // FIXME: global GUILE scope used!
          for (SCM s = scm_eval2 (ly_symbol2scm ("slur-extremity-rules"),
                                  SCM_EOL);
               s != SCM_EOL; s = gh_cdr (s))
@@ -190,9 +192,9 @@ Slur::broken_trend_offset (Score_element *me, Direction dir)
   Offset o;
   if (Spanner *mother =  dynamic_cast<Spanner*> (me->original_l_))
     {
-      for (int i = dir == LEFT ? 0 : mother->broken_into_l_arr_.size ();
-          dir == LEFT ? i < mother->broken_into_l_arr_.size () : i;
-          dir == LEFT ? i++ : --i)
+      for (int i = dir == LEFT ? 0 : mother->broken_into_l_arr_.size () - 1;
+          dir == LEFT ? i < mother->broken_into_l_arr_.size () : i > 0;
+          dir == LEFT ? i++ : i--)
        {
          if (mother->broken_into_l_arr_[i - dir] == me)
            {
@@ -286,7 +288,9 @@ Slur::get_attachment (Score_element*me,Direction dir,
        }
        
     }
-         
+
+
+  // FIXME
   SCM l = scm_assoc
     (scm_listify (a,
                  gh_int2scm (stem ? Stem::get_direction (stem) : 1 * dir),
@@ -353,7 +357,8 @@ Slur::encompass_offset (Score_element*me,
   /*
    leave a gap: slur mustn't touch head/stem
    */
-  o[Y_AXIS] += dir * me->paper_l ()->get_var ("slur_y_free");
+  o[Y_AXIS] += dir * gh_scm2double (me->get_elt_property ("y-free")) *
+    me->paper_l ()->get_var ("staffspace");
   return o;
 }
 
@@ -478,10 +483,14 @@ Slur::brew_molecule (SCM smob)
 void
 Slur::set_control_points (Score_element*me)
 {
-  Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me);  
-  Real h_inf = me->paper_l ()->get_var ("slur_height_limit_factor") *
-    staff_space;
-  Real r_0 = me->paper_l ()->get_var ("slur_ratio");
+  Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me);
+
+  SCM details = me->get_elt_property ("details");
+  SCM h_inf_scm = scm_assq (ly_symbol2scm ("height-limit"), details);
+  SCM r_0_scm = scm_assq (ly_symbol2scm ("ratio"), details);
+
+  Real r_0 = gh_scm2double (gh_cdr (r_0_scm));
+  Real h_inf = staff_space * gh_scm2double (gh_cdr (h_inf_scm));
   
   Slur_bezier_bow bb (get_encompass_offset_arr (me),
                      Directional_element_interface::get (me),
@@ -491,14 +500,21 @@ Slur::set_control_points (Score_element*me)
     {
       Real length = bb.curve_.control_[3][X_AXIS]; 
       Real default_height = slur_height (length, h_inf, r_0);
-      bb.minimise_enclosed_area (me->paper_l());
-      
-      Real bff = me->paper_l ()->get_var ("slur_force_blowfit");
+
+      SCM ssb = scm_assq (ly_symbol2scm ("beautiful"), details);
+      Real sb =gh_scm2double (gh_cdr (ssb));
+
+      bb.minimise_enclosed_area (me->paper_l(), sb);
+      SCM sbf = scm_assq (ly_symbol2scm ("force-blowfit"), details);
+      Real bff = 1.0;
+      if (gh_pair_p (sbf) && gh_number_p (gh_cdr (sbf)))
+         bff = gh_scm2double (gh_cdr (sbf));
+
       bb.curve_.control_[1][Y_AXIS] *= bff;
       bb.curve_.control_[2][Y_AXIS] *= bff;
       bb.blow_fit ();
 
-      Real sb = me->paper_l ()->get_var ("slur_beautiful");
+      
       Real beautiful = length * default_height * sb;
       Real area = bb.enclosed_area_f ();
       
index 7272c2d91e76f3c2ae03250394f9ef6ebcfae55c..184c253b9ca6dd38e6ec480c727098297491c452 100644 (file)
@@ -104,10 +104,12 @@ Spanner::do_break_processing ()
          span_p->set_bound(LEFT,bounds[LEFT]);
          span_p->set_bound(RIGHT,bounds[RIGHT]);
 
-         if (bounds[LEFT]->line_l ()
-             && bounds[LEFT]->line_l () != bounds[RIGHT]->line_l ())
+         if (!bounds[LEFT]->line_l () 
+           
+             || !bounds[RIGHT]->line_l ()
+             || bounds[LEFT]->line_l () != bounds[RIGHT]->line_l ())
            {
-             programming_error ("bounds[LEFT]->line_l () != bounds[RIGHT]->line_l ()");
+             programming_error ("bounds of spanner are invalid");
 #if 0
              /*
                lily crashes upon displaying this ...
@@ -122,20 +124,6 @@ Spanner::do_break_processing ()
 #endif
              span_p->suicide ();
            }
-         else if (!bounds[LEFT]->line_l ())
-           {
-             // bounds[LEFT]->line_l ()->typeset_element (span_p);
-             // broken_into_l_arr_.push (span_p);
-             programming_error ("bounds[LEFT]->line_l () == 0");
-             span_p->suicide ();
-           }
-         else if (!bounds[RIGHT]->line_l ())
-           {
-             // bounds[RIGHT]->line_l ()->typeset_element (span_p);
-             // broken_into_l_arr_.push (span_p);
-             programming_error ("bounds[RIGHT]->line_l () == 0");
-             span_p->suicide ();
-           }
          else
            {
              bounds[LEFT]->line_l ()->typeset_element (span_p);
index 85b52f5aabc69a605ee96a33f28e9dea22aad621..b4a2351ea3348aa9a3e69596f87f607b468bf1ec 100644 (file)
@@ -53,7 +53,7 @@ Staff_symbol_referencer::staff_space (Score_element*me)
   if (st)
     return Staff_symbol::staff_space (st);
   else if (me->pscore_l_ && me->paper_l ())
-    return me->paper_l ()->get_var ("interline");
+    return me->paper_l ()->get_var ("staffspace");
  
   return 0.0;
 }
index 35189db93972b515fcd2d84ec64a4dd2c8fd7cec..493be5a6672df6b47510cba885d325844bfa2b80 100644 (file)
@@ -52,7 +52,7 @@ System_start_delimiter_engraver::acknowledge_element (Score_element_info inf)
        */
       if (gh_symbol_p (gl) && gl  == ly_symbol2scm ("brace")
          && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
-       inf.elem_l_->translate_axis ( -paper_l ()->get_var ("interline"), X_AXIS); // ugh
+       inf.elem_l_->translate_axis ( -paper_l ()->get_var ("staffspace"), X_AXIS); // ugh
     }
 
 }
index d40b0c33694dfcbb9a23f4dc6429820759a113aa..645f04b9b2aa802b0c8c9e974b95ca94e60909a7 100644 (file)
@@ -127,7 +127,7 @@ Tie::get_control_points (SCM smob)
   
   Real staff_space = Staff_symbol_referencer::staff_space (me);
 
-  Real x_gap_f = me->paper_l ()->get_var ("tie_x_gap");
+  Real x_gap_f = gh_scm2double (me->get_elt_property ("x-gap"));
 
   Score_element* commonx = me->common_refpoint (me->get_bound (LEFT), X_AXIS);
   commonx = me->common_refpoint (me->get_bound (RIGHT), X_AXIS);
@@ -167,10 +167,14 @@ Tie::get_control_points (SCM smob)
     }
   
   Direction dir = Directional_element_interface::get(me);
-  
-  Real h_inf = me->paper_l ()->get_var ("tie_height_limit_factor") * staff_space;
-  Real r_0 = me->paper_l ()->get_var ("tie_ratio");
 
+  SCM details = me->get_elt_property ("details");
+
+  SCM lim // groetjes aan de chirurgendochter.
+    = scm_assq (ly_symbol2scm ("height-limit"),details);
+  
+  Real h_inf = gh_scm2double (gh_cdr (lim)) *  staff_space;
+  Real r_0 = gh_scm2double (gh_cdr (scm_assq (ly_symbol2scm ("ratio"),details)));
 
   Bezier b  = slur_shape (width, h_inf, r_0);
   
@@ -224,8 +228,11 @@ Tie::get_control_points (SCM smob)
       Real ry = rint (y/staff_space) * staff_space;
       Real diff = ry - y;
       Real newy = y;
-      if (fabs (y) <= Staff_symbol_referencer::staff_radius (me)
-         && fabs (diff) < me->paper_l ()->get_var ("tie_staffline_clearance"))
+
+      Real clear = staff_space * gh_scm2double (me->get_elt_property ("staffline-clearance"));
+
+       if (fabs (y) <= Staff_symbol_referencer::staff_radius (me)
+         && fabs (diff) < clear)
        {
          newy = ry - 0.5 * staff_space * sign (diff) ;
        }
index f154c010e54e613903877c2fcf7792940a3cd871..34ed2efd0a2caa4c0cd06c08f57fa41133877e95 100644 (file)
@@ -69,7 +69,7 @@ Tuplet_spanner::brew_molecule (SCM smob)
       Real ncw = column_arr.top ()->extent(X_AXIS).length ();
       Real w = dynamic_cast<Spanner*>(me)->spanner_length () + ncw;
 
-      Real staff_space = me->paper_l ()->get_var ("interline");
+      Real staff_space = me->paper_l ()->get_var ("staffspace");
       Direction dir = Directional_element_interface::get (me);
       Real dy = gh_scm2double (me->get_elt_property ("delta-y"));
       SCM number = me->get_elt_property ("text");
index 40eba8acf785a277a13433b993c4c390690c259f..fa4d80f0a8c1df18a4fe9b65bb0f1783a51c2bf4 100644 (file)
@@ -34,7 +34,7 @@ Vertical_align_engraver::Vertical_align_engraver()
 void
 Vertical_align_engraver::do_creation_processing()
 {
-  valign_p_ =new Spanner (SCM_EOL); // todo -> basic props
+  valign_p_ =new Spanner (get_property ("basicVerticalAlignmentProperties"));
   Align_interface::set_interface (valign_p_);
   Align_interface::set_axis (valign_p_,Y_AXIS);
   valign_p_->set_elt_property ("stacking-dir",
@@ -58,6 +58,7 @@ Vertical_align_engraver::do_removal_processing()
       valign_p_->set_elt_property ("threshold",
                                   gh_cons (min,max));
     }
+  
   valign_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn")));
   typeset_element (valign_p_);
   valign_p_ =0;
index e244e6ad7ca7f9259b99715e37591d32760f4588..1ce8128d9deac1de3198314a34e33befddb22e49 100644 (file)
@@ -63,7 +63,7 @@ Volta_spanner::brew_molecule (SCM smob)
     no_vertical_end = false;
 #endif
 
-  Real staff_space = me->paper_l ()->get_var ("interline");
+  Real staff_space = me->paper_l ()->get_var ("staffspace");
   Real staff_thick = me->paper_l ()->get_var ("stafflinethickness");  
   Real half_space = staff_space / 2;
   Real left = dynamic_cast<Spanner*>(me)->get_broken_left_end_align ();
index 237f0a347db869defadb1e73ae5ccc8cbecfe07f..65e7b340b0bb3ff49fbd6034e3183bf761cac695 100644 (file)
@@ -79,8 +79,8 @@
   (mapcar (function
           (lambda (x) (modify-syntax-entry
                        (car x) (cdr x) lily-mode-syntax-table)))
-         '(( ?\( . "." ) ( ?\) . "." )
-           ( ?\[ . "." ) ( ?\] . "." )
+         '(( ?\( . "()" ) ( ?\) . ")(" )   ; need matching parens for inline lisp
+           ( ?\[ . "." ) ( ?\] . "." )
            ( ?\{ . "(}" ) ( ?\} . "){" )
            ( ?\< . "(>" )( ?\> . ")>") 
            ( ?\$ . "." ) ( ?\% . "." ) ( ?\& . "." )
index a5af61a2c011d6c753159d77ee635f9f29bd4e9b..452bc2b2ca8eb28e160b1254df5ab53b8b34d4c3 100644 (file)
@@ -37,7 +37,7 @@ melismaEnd = \property Staff.melismaBusy = ##f
 
 
 papersize = "a4"
-
+\include "engraver.ly"
 \include "generic-paper.ly"
 \include "paper20.ly"
 
index 03e7cd96890497b4446ff4c8ea3f90c65d281a86..f41e94da6f6025d34973bff6ff57ad58fb289462 100644 (file)
@@ -43,10 +43,9 @@ StaffContext=\translator {
 
          
        \accepts "Voice";
-};
+}
 
-\translator{\StaffContext }
-\translator {
+ChoirStaffContext = \translator {
        \type "Engraver_group_engraver";
        \name ChoirStaff;
        alignmentReference = \center;
@@ -69,13 +68,11 @@ RhythmicStaffContext=\translator{
        \consists "Output_property_engraver";   
 
        Generic_property_list = #generic-staff-properties
-       
-       barSize =   4.0 * \staffspace ; % JUNKME
 
        \consists "Pitch_squash_engraver";
        \consists "Separating_line_group_engraver";     
        \name RhythmicStaff;
-
+       basicBarProperties \push #'bar-size = #4
        basicVoltaSpannerProperties \push #'minimum-space =  #15  % urg, in \pt
        basicVoltaSpannerProperties \push #'padding =  #5  % urg, in \pt
        basicStaffSymbolProperties \push #'line-count = #1      
@@ -86,8 +83,8 @@ RhythmicStaffContext=\translator{
        \consists "Staff_symbol_engraver";
        \consistsend "Axis_group_engraver";
        \accepts "Voice";
-};
-\translator{\RhythmicStaffContext}
+}
+
 
 VoiceContext = \translator {
        \type "Engraver_group_engraver";
@@ -133,7 +130,7 @@ VoiceContext = \translator {
        \consists "Skip_req_swallow_translator";
        \accepts Thread; % bug if you leave out this!
        \accepts Grace;
-};
+}
 
 GraceContext=\translator {
        \type "Grace_engraver_group";
@@ -174,11 +171,8 @@ GraceContext=\translator {
        basicBeamProperties \push #'beam-space-function = #(lambda (x) 0.5)
        
        weAreGraceContext = ##t   
-       graceAccidentalSpace= 1.5 * \staffspace; % JUNKME
-};
-
-\translator{\GraceContext}
-\translator {\VoiceContext}
+       graceAccidentalSpace= 1.5 ; % in staff space
+}
 
 ThreadContext = \translator{
        \type Engraver_group_engraver;
@@ -188,9 +182,8 @@ ThreadContext = \translator{
        Generic_property_list = #generic-thread-properties
        \consists "Property_engraver";
        \name Thread;
-};
+}
 
-\translator{\ThreadContext}
 GrandStaffContext=\translator{
        \type "Engraver_group_engraver";
        \name GrandStaff;
@@ -201,23 +194,19 @@ GrandStaffContext=\translator{
        \consists "Property_engraver";  
        Generic_property_list = #generic-grand-staff-properties
        \accepts "Staff";
-};
-\translator{\GrandStaffContext}
+}
 
 PianoStaffContext = \translator{\GrandStaffContext
        alignmentReference = \center;
 
        \consists "Vertical_align_engraver";
 
-       % JUNKME
-       minVerticalAlign = 3.0*\staffheight;
-       maxVerticalAlign = 3.0*\staffheight;
+       basicVerticalAlignmentProperties \push #'threshold = #'(12 . 12) 
 
 %      \consistsend "Axis_group_engraver";
        \name "PianoStaff";
-       
-};
-\translator{\PianoStaffContext}
+}
+
 StaffGroupContext= \translator {
        \type "Engraver_group_engraver";
        \consists "Span_bar_engraver";
@@ -237,9 +226,8 @@ StaffGroupContext= \translator {
        
        \accepts "Lyrics";
        \accepts "ChordNames";
-};
+}
 
-\translator { \StaffGroupContext }
 
 % UGH! JUNKME
 LyricsVoiceContext= \translator{
@@ -255,8 +243,14 @@ LyricsVoiceContext= \translator{
        \consists "Stanza_number_engraver";
        phrasingPunctuation = #".,;:!?\""
        
-};
-\translator{ \LyricsVoiceContext }
+}
+NoteNamesContext = \translator {
+       \type "Engraver_group_engraver";
+       \name NoteNames;
+       \consistsend "Axis_group_engraver";
+       \consists "Note_name_engraver";
+       \consists "Separating_line_group_engraver";
+}
 
 LyricsContext = \translator {
        \type "Engraver_group_engraver";
@@ -267,8 +261,7 @@ LyricsContext = \translator {
        \consistsend "Axis_group_engraver";
        
        \accepts "LyricVoice";
-};
-\translator { \LyricsContext }
+}
 
 ChordNameVoiceContext = \translator {
        \type "Engraver_group_engraver";
@@ -278,9 +271,7 @@ ChordNameVoiceContext = \translator {
        \consistsend "Axis_group_engraver";
        \consists "Separating_line_group_engraver";
        \consists "Chord_name_engraver";
-};
-\translator {\ChordNameVoiceContext}
-
+}
 ChordNameContext = \translator {
        \type "Engraver_group_engraver";
        \name ChordNames;
@@ -290,8 +281,7 @@ ChordNameContext = \translator {
        \consists "Output_property_engraver";   
        \accepts "ChordNameVoice";
        \consistsend "Axis_group_engraver";
-       };
-\translator { \ChordNameContext }
+       }
 
 
 ScoreWithNumbers = \translator {
@@ -299,20 +289,20 @@ ScoreWithNumbers = \translator {
 
        % uncomment to bar numbers on a whole system.
        \consists "Bar_number_engraver";
-};
+}
 
 StupidScore = \translator {
        \type "Score_engraver";
        \name Score;
        \consists "Note_heads_engraver";
-};
+}
 
 
 
 BarNumberingStaffContext = \translator {
        \StaffContext
        \consists "Mark_engraver";
-};
+}
 
 HaraKiriStaffContext = \translator {
        \StaffContext
@@ -320,7 +310,7 @@ HaraKiriStaffContext = \translator {
        \consistsend "Hara_kiri_engraver";        
        \consists "Instrument_name_engraver";
        \accepts "Voice";
-};
+}
 %{
   The HaraKiriStaffContexts doesn't override \name,
   so it is still named `Staff'.
@@ -331,7 +321,7 @@ HaraKiriStaffContext = \translator {
 OrchestralPartStaffContext = \translator {
        \StaffContext
        \consists "Mark_engraver";
-};
+}
 
 ScoreContext = \translator {
        \type Score_engraver;
@@ -457,6 +447,8 @@ ScoreContext = \translator {
                (breakable . #t)
                (visibility-lambda . ,begin-of-line-visible)
                (name . "barnumber")
+               (padding . 1.0)
+               (direction . 1)
        )
 
        basicBeamProperties = #basic-beam-properties
@@ -504,6 +496,11 @@ ScoreContext = \translator {
        basicCrescendoProperties = #`(
                (molecule-callback . ,Crescendo::brew_molecule)
                (interfaces . (crescendo-interface dynamic-interface))
+               (thickness . 1.0)
+               (shorten-for-letter  .  4.0)
+               (height . 0.6666)
+               (dash-thickness . 1.2)
+               (dash-length . 4.0)
                (name . "crescendo")
        )
        basicDotColumnProperties = #`(
@@ -679,6 +676,8 @@ ScoreContext = \translator {
                (after-line-breaking-callback . ,Slur::after_line_breaking)
 
                (de-uglify-parameters . ( 1.5  0.8  -2.0))
+               (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5) (beautiful . 0.5)))
+               (y-free . 0.75)
                (name . "slur")
        )
        basicSpacingSpannerProperties =#`(
@@ -746,7 +745,10 @@ ScoreContext = \translator {
                (interfaces . (tie-interface))
                (molecule-callback . ,Tie::brew_molecule)
                (spacing-procedure . ,Tie::set_spacing_rods)
+               (staffline-clearance . 0.24)
+               (details . ((ratio . 0.333) (height-limit . 1.0)))
                (thickness . 1.2)
+               (x-gap . 0.2)
                (minimum-length  . 2.5)
                (name . "tie")
        )
@@ -830,24 +832,19 @@ ScoreContext = \translator {
                (minimum-space . 25)
                (name . "volta brace")
        )       
+       basicVerticalAlignmentProperties = #`(
+               (axes 1)
+               (interfaces . (align-interface axis-group-interface))
+               (name . "vertical alignment")
+       )
        basicVerticalAxisGroupProperties = #`(
                (axes 1)
                (interfaces . (axis-group-interface))
                (name . "Y-axis group")
        )
-};
-
-\translator { \ScoreContext }
+}
 
 OrchestralScoreContext= \translator {
        \ScoreContext
-
-};
-
-\translator {
-       \type "Engraver_group_engraver";
-       \name NoteNames;
-       \consistsend "Axis_group_engraver";
-       \consists "Note_name_engraver";
-       \consists "Separating_line_group_engraver";
 }
+
index ba07ca88323b739483d97d8d7852d093729a85fb..2c1fdb044ee24589647bfc79f5ae594f17e993cc 100644 (file)
@@ -5,8 +5,11 @@
 paper_as_nine = \paper {
        staffheight = 9.\char;
 
-       font_large = 4.;
-       font_Large = 4.;        
+%      font_large = 4.;
+%      font_Large = 4.;        
+%      font_normal = 4.;
+       font_large = 1.;
+       font_Large = 1.;        
        font_normal = 4.;
        font_script = 1.;
 
index 85661e39d6938e61f1f0e31edb7ceff7cb42f088..640a60346463ea9ed703ae84e87ff5a3755e5a49 100644 (file)
@@ -7,9 +7,8 @@ TODO:
 
 * cleanup
 * use elt properties, iso. paper variables.
-%}
-
 
+%}
 
 paperfile = \papersize + ".ly";
 % paperfile = "a4.ly";
@@ -19,9 +18,6 @@ paperfile = \papersize + ".ly";
 staffspace = \staffheight / 4.0;
 stafflinethickness = \staffspace / 10.0;
 
-% deprecated
-interline = \staffspace;
-
 %{
 The space taken by a note is determined by the formula 
 
@@ -69,43 +65,6 @@ arithmetic_multiplier = 0.9 * 1.32 * \staffspace ;
 arithmetic_basicspace = 2.0;
 
 
-% 
-% UGH; junk these!
-%
-
-% catch suspect beam slopes, set slope to zero if
-% outer stem is lengthened more than
-beam_lengthened = 0.2 * \staffspace;
-% and slope is running away steeper than
-beam_steep_slope = 0.2 / 1.0;
-
-
-
-%{
-  Slur parameters.
-  
-  See Documentation/programmer/fonts.doc
-
-  TODO: -> elt-properties.
-%}
-% Height-limit (h_inf) = factor * staff_space
-slur_height_limit_factor = 2.0;
-slur_ratio = 1.0 / 3.0;
-
-slur_thickness = 1.2 * \stafflinethickness;
-
-slur_force_blowfit = 0.5;
-slur_beautiful = 0.5;
-
-
-%{
-Horizontal space between centre of notehead and slur.
-%}
-% OSU: suggested gap = ss / 5;
-slur_x_gap = \staffspace / 5.0;
-slur_y_gap = 0.25 * \staffspace;
-slur_y_free = 0.75 * \staffspace;
-slur_x_minimum = 1.5 * \staffspace;
 
 % URG: the magic constants for area asymmetry
 bezier_pct_c0 = -0.2;
@@ -115,27 +74,9 @@ bezier_pct_in_max = 1.2;
 bezier_area_steps = 1.0;
 
 
-%{
-  Tie parameters
-%}
-
-tie_height_limit_factor = 1.0 ; 
-tie_ratio = \slur_ratio;
-
-% OSU: tie gap == slur gap
-tie_x_gap = 0.2 * \staffspace;
-tie_staffline_clearance = 2.0 *\slur_thickness;
-
 % vertical space between lines of text.
 line_kern = \staffspace;
 
-% chop off this much when next to pp / ff sign.
-crescendo_shorten = 4.0 * \staffspace;
-crescendo_thickness   = \stafflinethickness;
-crescendo_height = 0.666 * \staffspace;
-crescendo_dash_thickness = 1.2*\stafflinethickness;
-crescendo_dash = 4.0*\staffspace;
-
 
 % optical correction amount.
 stemSpacingCorrection = 0.5*\staffspace;
@@ -175,10 +116,23 @@ will cause scores to be set looser
 
 compression_energy_factor = 0.6;
 
+\translator { \NoteNamesContext }
+\translator { \ScoreContext }
+\translator { \ChoirStaffContext}
+\translator { \GraceContext}
+\translator { \RhythmicStaffContext}
+\translator { \StaffContext }
+\translator { \VoiceContext}
+\translator { \StaffGroupContext }
+\translator { \ChordNameContext }
+\translator { \ChordNameVoiceContext}
+\translator { \GrandStaffContext}
+\translator { \LyricsContext }
+\translator { \ThreadContext}
+\translator { \PianoStaffContext}
+\translator { \LyricsVoiceContext }
 
 
-\include "engraver.ly";
-
 
 
 
index bf81c2fc7d9c9ad86e9a76a2d023cf8bd0417883..546aa7ca7f0106e3a30daa974300acddab488576 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.88
-Entered-date: 20SEP00
+Version: 1.3.89
+Entered-date: 23SEP00
 Description: 
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.3.88.tar.gz 
+       1000k lilypond-1.3.89.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.88.tar.gz 
+       1000k lilypond-1.3.89.tar.gz 
 Copying-policy: GPL
 End
index 479bbe52b21c1a14855d63fc1992391ab51276f3..47166fb29e3c13f3ef350f080378f69c9e971e22 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.88
+Version: 1.3.89
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.88.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.89.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # Icon: lilypond-icon.gif
index ab28f5de689dd7caf56b7eae550fee4d0798cfa3..00184d02d0d949c47352aa0757b393a68244987b 100644 (file)
@@ -9,29 +9,7 @@ copyright =     "public domain";
 
 \version "1.3.59";
 
-\include "global.ly"
-\include "violoncello.ly"
-\include "contrabasso.ly"
-
-bassiGroup = \context PianoStaff = bassi_group \notes <
-        %\global
-       \context StaffCombineStaff=one {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violoncello
-               \context StaffCombineVoice=two \contrabasso
->
+\include "bassi.ly"
 
 \score{
        \bassiGroup
diff --git a/mutopia/Coriolan/bassi.ly b/mutopia/Coriolan/bassi.ly
new file mode 100644 (file)
index 0000000..785c840
--- /dev/null
@@ -0,0 +1,41 @@
+\header{
+filename =      "bassi.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.3.59";
+
+\include "global.ly"
+\include "violoncello.ly"
+\include "contrabasso.ly"
+
+bassiGroup = \context PianoStaff = bassi_group \notes <
+        %\global
+       \context StaffCombineStaff=oneBassi {
+               \property StaffCombineStaff.midiInstrument = #"cello"
+               \property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso"
+               \property StaffCombineStaff.instr = #"Vc."
+               \clef "bass"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+       \context StaffCombineStaff=twoBassi {
+               \property StaffCombineStaff.midiInstrument = #"contrabass"
+               \property StaffCombineStaff.instrument = #"Contrabasso"
+               \property StaffCombineStaff.instr = #"Cb."
+%              \property StaffCombineStaff.transposing = #-12
+               \clef "bass"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+
+       \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff
+               \context StaffCombineVoice=one \violoncello
+               \context StaffCombineVoice=two \contrabasso
+>
index 1e8f4c1a2493f7deadce7694c0d22472d8a4f603..77544490e52407db1dafe7534cfa8f87087483e1 100644 (file)
@@ -18,7 +18,6 @@ contrabasso = \notes \relative c {
        c'1\ff ~ |
        c |
        f,4-. r r2 |
-       \property Staff.instr = #"Vc.\nCb."
        r1 |
        c'1\ff ~ |
        c |
@@ -30,8 +29,8 @@ contrabasso = \notes \relative c {
        c4 r4 r2 |
        c4 r4 r2 |
        r1 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4.\< c8 bes4. bes8 |
 
        %20
@@ -46,8 +45,8 @@ contrabasso = \notes \relative c {
 
        % copied 14 from cello
 
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        bes'4.\< bes8 as4. as8 |
        g4 \!g4-.\f r2 |
        R1
@@ -82,8 +81,8 @@ contrabasso = \notes \relative c {
        )as,4 r r r8 as(|
        )g4 r r r8 g(|
        )d'4 r r r8 d(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )es4\< r r r8 es(|
        )as,4 r r r8 as(|
        )g4 r r r8 g(|
@@ -98,15 +97,15 @@ contrabasso = \notes \relative c {
        )bes4 r r r8 bes(|
        )as4 r r r8 as(|
        )e4 r r r8 e(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )f4\< r r r8 f(|
        )bes4 r r r8 bes(|
        %70
        \!)as2\ff g |
        fis d' |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g,4\p\< r r r8 g(|
        )c4 r r r8 c(|
        % )<b1\sf\> { s2 s4 \!s8}> |
@@ -119,8 +118,8 @@ contrabasso = \notes \relative c {
        d4\pp r d r |
        d r d r |
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        d r d\< r |
        d r d r |
        d r d r |
@@ -196,6 +195,7 @@ contrabasso = \notes \relative c {
        f |
        b,2\sf r |
        b2\sf r |
+       %160
        R1*3 |
        bes2\ff r |
        bes2\sf r |
@@ -216,8 +216,8 @@ contrabasso = \notes \relative c {
        %180
        )e4 r r r8 e(|
        )b'4 r r r8 b(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4\< r r r8 c(|
        )f,4 r r r8 f(|
        )e4 r r r8 e'(|
@@ -232,8 +232,8 @@ contrabasso = \notes \relative c {
        )g,4 r r r8 g(|
        )f4 r r r8 f(|
        )cis'4 r r r8 cis(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )d4\< r r r8 d(|
 
        %195
@@ -242,40 +242,40 @@ contrabasso = \notes \relative c {
        dis b |
        es4\p r r r8 es(|
        )a,4 r r r8 a(|
+       )g1 |
 
        %200
-       )g1 |
        f |
        % copied 18 from cello
-       [f8(g f g][f g f)g] |
-       es!4\fp r e r |
+       es'!4\fp r e r |
        f r g r |
-       
-       %205
        as r g r |
        f r fis r |
+
+       %205
        g r g r |
        g r g r |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g r g\< r |
+       g r g r |
        
        %210
        g r g r |
        g r g r |
-       g r g r |
        \!f2.\ff()es4 |
        d( c d )c |
+       f2.\ff()es4 |
 
        %215
-       f2.\ff()es4 |
        d( c d )c |
        bes2.\ff()as4 |
        g( f g )f |
        bes2.\ff()as4 |
+       g( f g )f |
 
        %220
-       f'4 r r2 |
+       f4 r r2 |
        f'4 r r2 |
        f4 r r2 |
        f4 r r2 |
@@ -288,7 +288,7 @@ contrabasso = \notes \relative c {
 
        %230
        f4 r8 f g4 r8 g |
-       c,4\p r r2 |
+       c4\p r r2 |
        r2 r4 r8 b\f |
        c4 r r2 |
        r2 r4 r8 b\f |
@@ -297,7 +297,7 @@ contrabasso = \notes \relative c {
        R1*3 |
 
        %copied 59 from cello
-       [c,8\f e g as][bes, d fis g]|
+       [c8\f e g as][bes, d fis g]|
 
        %240
        [as, c e f!][g, bes d es]|
@@ -315,8 +315,8 @@ contrabasso = \notes \relative c {
        %250
        )es4 r r r8 es(|
        )b4 r r r8 b(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4\< r r r8 c(|
        )f4 r r r8 f,(|
        )es1 |
@@ -329,8 +329,8 @@ contrabasso = \notes \relative c {
        bes\f |
 
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        as4.\p\< as'8 g4. g8 |
        f4. f8 es4. es8 |
        as4. as8 g4. g8 |
@@ -373,8 +373,8 @@ contrabasso = \notes \relative c {
        f,4-. g-. r2 |
 
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r b r |
        R1 |
        \!c4\p r r2|
@@ -387,30 +387,23 @@ contrabasso = \notes \relative c {
        r2 r4 f, |
        c' r r2 |
        r2 r4 f, |
+
+       %300
        c' r r2 |
        R1 |
        f,4 r r2 |
        R1 |
        c'4 r r2 |
+
+       %305
        R1 |
        f,4 r r2 |
        R1*3 |
+
+       %310
        c'4\pp r r2 |
        R1 |
        c4 r r2 |
        c4 r r2 |
        c4 r r2 |
 }
-
-%%%contrabassoStaff = \context Staff = contrabasso <
-%%%    \property Staff.midiInstrument = #"contrabass"
-%%%    \property Staff.instrument = #"Contrabasso"
-%%%    \property Staff.instr = #"Cb."
-%%%    \property Staff.transposing = #-12
-%%%    \clef "bass";
-%%%    \notes \context Voice=one< 
-%%%            \global
-%%%            \contrabasso
-%%%    >
-%%%>
-
index ea8f927ad3aefe468d6b9b473eb49b7d8ac5af9b..0c9a454a814d4a5c374ebdfa23bb08102302fef8 100644 (file)
@@ -13,7 +13,7 @@ copyright =    "public domain";
 \include "global.ly"
 \include "paper16.ly"
 
-\include "contrabasso.ly"
+\include "bassi.ly"
 \include "clarinetti.ly"
 \include "corni.ly"
 \include "fagotti.ly"
@@ -21,11 +21,9 @@ copyright =   "public domain";
 \include "oboi.ly"
 \include "timpani.ly"
 \include "trombe.ly"
-\include "viola-1.ly"
-\include "viola-2.ly"
+\include "violi.ly"
 \include "violino-1.ly"
 \include "violino-2.ly"
-\include "violoncello.ly"
 
 
 legniGroup = \context StaffGroup = legni_group <
@@ -51,45 +49,6 @@ violiniGroup = \context GrandStaff = violini_group <
        \violinoIIStaff
 >
 
-violiGroup = \context PianoStaff = violi_group \notes <
-       \context StaffCombineStaff=one {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violaI
-               \context StaffCombineVoice=two \violaII
->
-
-bassiGroup = \context PianoStaff = bassi_group \notes <
-       \context StaffCombineStaff=one {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "bass"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violoncello
-               \context StaffCombineVoice=two \contrabasso
->
-
-
 archiGroup = \context StaffGroup = archi_group <
        \violiniGroup
        \violiGroup
index 3649bdd732b9aed3f8fe7579a25f53d97f4e8560..03ffeb7e1bb07b57e1cf076d973c4bb7eb802604 100644 (file)
@@ -32,8 +32,8 @@ violaI = \notes \relative c {
        [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
        [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
        [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        es4.\< es8 d4. d8 |
        %20
        c4. c8 \!b4\f r4 |
@@ -43,15 +43,15 @@ violaI = \notes \relative c {
        r4 [des8\p()c][c-. ges'-.][ges()f] |
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        des4.\< des8 c4. c8 |
        bes4 \!bes4-.\f r2 |
        R1
        % same rhythm as violins...
        r8 c-.\p c4. c8-. c4~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [c8\< c-.]c2.~ |
        %30
        [c8 c-.]c2.~ |
@@ -84,8 +84,8 @@ violaI = \notes \relative c {
        )g4 r r r8 g(|
        %55
        )d4 r r r8 d(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )es4 r\< r  r8 es(|
        )as4 r r r8 as(|
        )g4 r r r8 g(|
@@ -100,15 +100,15 @@ violaI = \notes \relative c {
        )bes4 r r r8 bes(|
        )as4 r r r8 as(|
        )e4 r r r8 e(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )f4\< r r r8 f(|
        )bes4 r r r8 bes |
        %70
        \!c2:\ff bes: |
        a: fis: |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g4\p\< r r r8 g(|
        )c,4 r r r8 c |
        [\!f8\sf(\>as f as][f g d)\!g] |
@@ -119,8 +119,8 @@ violaI = \notes \relative c {
        [d,-.\pp d'-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [d8\< d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
@@ -187,8 +187,8 @@ violaI = \notes \relative c {
        [e g b c][des c g e]|
        [f as c des][c des as f]|
        [g bes d es][d es bes g]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as\< c d es][f es c as]|
        %131
        [g bes d es][f es bes g]|
@@ -211,8 +211,8 @@ violaI = \notes \relative c {
        [g,: bes: c: des:][f,: bes: c: des:]|
        [e,: g: bes: des:][c,: e: g: c:]|
        %shared with cello from here on
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [f,8\p\< as c des][es, g b c]|
        [des, f a bes][c, es g as]|
        % uhuh, still 'same as cello';
@@ -268,8 +268,8 @@ violaI = \notes \relative c {
        %180
        )e4 r r r8 e8(|
        )b'4 r r r8 b8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4 r\< r r8 c,8(|
        % copied
        )f4 r r r8 f8(|
@@ -284,8 +284,8 @@ violaI = \notes \relative c {
        d,4\p r r r8 d8(|
        )g4 r r r8 g8(|
        )f4 r r r8 f8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )cis4\< r r r8 cis8(|
        )d4 r r r8 d8(|
        %195
@@ -306,8 +306,8 @@ violaI = \notes \relative c {
        r[c\p(as)c]r[c(a)c] |
        [b-. g'-.] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g8 g-.\<] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
        %210
@@ -350,8 +350,8 @@ violaI = \notes \relative c {
        %240
        f,4 r r2 |
        R1*11 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4\p\< r r r8 c8(|
        )f4 r r r8 f,8(|
        )es1 |
@@ -364,8 +364,8 @@ violaI = \notes \relative c {
        e'2:16\f e: |
        
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as,8\p\< f']f4. es8 es4 ~ |
        [es8 as]as4. g8 g4 ~ |
        [g8 f]f4. es8 es4 ~ |
@@ -400,8 +400,8 @@ violaI = \notes \relative c {
        es4-. e-. r2 |
        f4-. g-. r2 |
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r g r |
        R1 |
        \!c4\p r r2 |
@@ -414,18 +414,3 @@ violaI = \notes \relative c {
        c4 r r2 |
        c4 r r2 |
 }
-
-%%% urg
-%%%\include "viola-2.ly";
-%%%
-%%%violaIStaff = \context Staff = violai <
-%%%    \property Staff.midiInstrument = #"viola"
-%%%    \property Staff.instrument = #"Viola"
-%%%    \property Staff.instr = #"Vla."
-%%%    \clef "alto";
-%%%    \notes \context Voice=one < 
-%%%            \global
-%%%            \violaI
-%%%    >
-%%%>
-
index 05b75c0f8ea47a39b4d5d32cf9a68653015195b1..b7f3effbd6fb05109b0ee0160cc89ba0a10bd178 100644 (file)
@@ -32,8 +32,8 @@ violaII = \notes \relative c {
        [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
        [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
        [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        es4.\< es8 d4. d8 |
        %20
        c4. c8 \!b4\f r4 |
@@ -43,15 +43,15 @@ violaII = \notes \relative c {
        r4 [des8\p()c][c-. ges'-.][ges()f] |
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        des4.\< des8 c4. c8 |
        bes4 \!bes4-.\f r2 |
        R1
        % same rhythm as violins...
        r8 c,-.\p c4. c8-. c4~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [c8\< c-.]c2.~ |
        %30
        [c8 c-.]c2.~ |
@@ -84,8 +84,8 @@ violaII = \notes \relative c {
        )g4 r r r8 g(|
        %55
        )d4 r r r8 d(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )es4 r\< r  r8 es(|
        )as4 r r r8 as(|
        )g4 r r r8 g(|
@@ -100,15 +100,15 @@ violaII = \notes \relative c {
        )bes4 r r r8 bes(|
        )as4 r r r8 as(|
        )e4 r r r8 e(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )f4\< r r r8 f(|
        )bes4 r r r8 bes |
        %70
        \!as2:\ff g: |
        fis: d: |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g4\p\< r r r8 g(|
        )c,4 r r r8 c |
        [\!f8\sf(\>as f as][f g d)\!g] |
@@ -119,8 +119,8 @@ violaII = \notes \relative c {
        [d-.\pp d'-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [d8\< d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
        [d8 d-.] es4. es8-. d4 ~ |
@@ -187,8 +187,8 @@ violaII = \notes \relative c {
        [e g b c][des c g e]|
        [f as c des][c des as f]|
        [g bes d es][d es bes g]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as\< c d es][f es c as]|
        %131
        [g bes d es][f es bes g]|
@@ -211,8 +211,8 @@ violaII = \notes \relative c {
        [g,: bes: c: des:][f,: bes: c: des:]|
        [e,: g: bes: des:][c,: e: g: c:]|
        %shared with cello from here on
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [f,8\p\< as c des][es, g b c]|
        [des, f a bes][c, es g as]|
        % uhuh, still 'same as cello';
@@ -268,8 +268,8 @@ violaII = \notes \relative c {
        %180
        )e4 r r r8 e8(|
        )b'4 r r r8 b8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4 r\< r r8 c,8(|
        % copied
        )f4 r r r8 f8(|
@@ -284,8 +284,8 @@ violaII = \notes \relative c {
        d,4\p r r r8 d8(|
        )g4 r r r8 g8(|
        )f4 r r r8 f8(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )cis4\< r r r8 cis8(|
        )d4 r r r8 d8(|
        %195
@@ -306,8 +306,8 @@ violaII = \notes \relative c {
        r[as\p(d,)as']r[a(es)a] |
        [g-. g'-.] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g8 g-.\<] as4. as8-. g4 ~ |
        [g8 g-.] as4. as8-. g4 ~ |
        %210
@@ -350,8 +350,8 @@ violaII = \notes \relative c {
        %240
        f,4 r r2 |
        R1*11 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4\p\< r r r8 c8(|
        )f4 r r r8 f,8(|
        )es1|
@@ -364,8 +364,8 @@ violaII = \notes \relative c {
        bes2:16\f bes: |
        
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as8\p\< f']f4. es8 es4 ~ |
        [es8 as]as4. g8 g4 ~ |
        [g8 f]f4. es8 es4 ~ |
@@ -400,8 +400,8 @@ violaII = \notes \relative c {
        es4-. e-. r2 |
        f4-. g-. r2 |
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r g r |
        R1 |
        \!c4\p r r2 |
index ffb79d3d959d9db9e1e4ef093f6387389e3ee11d..0116a65afbfb4109d9d6b178e50c32c99a1c6dd0 100644 (file)
@@ -9,28 +9,7 @@ copyright =     "public domain";
 
 \version "1.3.59";
 
-\include "global.ly"
-\include "viola-1.ly"
-\include "viola-2.ly"
-
-violiGroup = \context PianoStaff = violi_group \notes <
-       \context StaffCombineStaff=one {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-       \context StaffCombineStaff=two {
-               \clef "alto"; 
-               \key es \major;
-               \skip 1*314; 
-               \bar "|."; 
-       }
-
-       \context StaffCombineStaff=one \partcombine StaffCombineStaff
-               \context StaffCombineVoice=one \violaI
-               \context StaffCombineVoice=two \violaII
->
+\include "violi.ly"
 
 \score{
        \violiGroup
diff --git a/mutopia/Coriolan/violi.ly b/mutopia/Coriolan/violi.ly
new file mode 100644 (file)
index 0000000..ac753a8
--- /dev/null
@@ -0,0 +1,39 @@
+\header{
+filename =      "violi.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.3.59";
+
+\include "global.ly"
+\include "viola-1.ly"
+\include "viola-2.ly"
+
+violiGroup = \context PianoStaff = violi_group \notes <
+       \context StaffCombineStaff=oneVioli {
+               \property StaffCombineStaff.midiInstrument = #"viola"
+               \property StaffCombineStaff.instrument = #"Viola"
+               \property StaffCombineStaff.instr = #"Vla."
+               \clef "alto"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+       \context StaffCombineStaff=twoVioli {
+               \property StaffCombineStaff.midiInstrument = #"viola"
+               \property StaffCombineStaff.instrument = #"Viola II"
+               \property StaffCombineStaff.instr = #"Vla. II"
+               \clef "alto"; 
+               \key es \major;
+               \skip 1*314; 
+               \bar "|."; 
+       }
+
+       \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff
+               \context StaffCombineVoice=one \violaI
+               \context StaffCombineVoice=two \violaII
+>
index 1a07ac60e402c03b8a9d1167c50d90d12e4f5c55..7877ef4c1f9f11d10be737d24e233271f8ecb2ac 100644 (file)
@@ -17,7 +17,7 @@ violoncello = \notes \relative c {
        c'1\ff ~ |
        c |
        f,4-. r r2 |
-       \property Staff.instr = #"Vc.\nCb."
+       \property StaffCombineStaff.instr = #"Vc.\nCb."
        r1 |
        c'1\ff ~ |
        c |
@@ -29,8 +29,8 @@ violoncello = \notes \relative c {
        c4 r4 r2 |
        c4 r4 r2 |
        r1 |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        c'4.\< c8 bes4. bes8 |
 
        %20
@@ -43,8 +43,8 @@ violoncello = \notes \relative c {
 
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        bes4.\< bes8 as4. as8 |
        g4 \!g4-.\f r2 |
        R1
@@ -85,8 +85,8 @@ violoncello = \notes \relative c {
 
        %55
        [bes(as'f as][bes as f)bes,~] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [bes\<(g'es g][bes g es)bes~] |
        [bes(f'd f][bes f d)bes~] |
        [bes(g'es g][bes g es)bes~] |
@@ -107,8 +107,8 @@ violoncello = \notes \relative c {
        %70
        as2\ff g |
        fis d |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g8\p\<(bes' g bes][d bes g)d~] |
        [d8(a' fis a][d a fis)d] |
        [\!f!8\sf\>(as f as][f g d)g] |
@@ -121,8 +121,8 @@ violoncello = \notes \relative c {
        r4 r8 d d4. d8 |
 
        %80
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        r4 r8 d d4.\< d8 |
        r4 r8 d d4. d8 |
        r4 r8 d d4. d8 |
@@ -198,8 +198,8 @@ violoncello = \notes \relative c {
        [e g b c][des c g e]|
        [f as c des][c des as f]|
        [g bes d es][d es bes g]|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [as\< c d es][f es c as]|
 
        %131
@@ -223,8 +223,8 @@ violoncello = \notes \relative c {
        [g,: bes: c: des:][f,: bes: c: des:]|
        [e,: g: bes: des:][c: e: g: c:]|
        %shared with cello from here on
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [f,8\p\< as c des][es, g b c]|
        [des, f a bes][c, es g as]|
        % uhuh, still 'same as cello';
@@ -284,8 +284,8 @@ violoncello = \notes \relative c {
        %180
        [g(e' c d][g e c )g~] |
        [g(f' d f][g f d )g,~] |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [g\<(e' c d][g e c )g~] |
        [g(d' b d][g d b )g~] |
 
@@ -304,8 +304,8 @@ violoncello = \notes \relative c {
        [a( g' e g][a g e )a,!~] |
 
        %195
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        [a8\<( f' d f][a f d )a!~] |
        [a( e' cis e][a e c )g] |
        \!f2\ff e |
@@ -324,8 +324,8 @@ violoncello = \notes \relative c {
        f r fis r |
        g r g r |
        g r g r |
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        g r g\< r |
        
        %210
@@ -386,8 +386,8 @@ violoncello = \notes \relative c {
        %250
        )es4 r r r8 es(|
        )b4 r r r8 b(|
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        )c4\< r r r8 c(|
        )f4 r r r8 f,(|
        )es1 |
@@ -400,8 +400,8 @@ violoncello = \notes \relative c {
        bes\f |
 
        %260
-       \property Voice.crescendoText = "cresc."
-       \property Voice.crescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.crescendoText = "cresc."
+       \property StaffCombineVoice.crescendoSpanner = "dashed-line"
        as4.\p\< as'8 g4. g8 |
        f4. f8 es4. es8 |
        as4. as8 g4. g8 |
@@ -444,8 +444,8 @@ violoncello = \notes \relative c {
        f,4-. g-. r2 |
 
        %290
-       \property Voice.decrescendoText = "dim."
-       \property Voice.decrescendoSpanner = "dashed-line"
+       \property StaffCombineVoice.decrescendoText = "dim."
+       \property StaffCombineVoice.decrescendoSpanner = "dashed-line"
        as4\> r b r |
        R1 |
        \!c4\p r r2|
@@ -457,8 +457,8 @@ violoncello = \notes \relative c {
        c4 r r2 |
        [c8-.-"arco" es-.][es()d][d-. as'-.][as()g] |
        R1
-       \property Voice.decrescendoText = "sempre pi\\`u piano"
-       \property Voice.decrescendoSpanner = ""
+       \property StaffCombineVoice.decrescendoText = "sempre pi\\`u piano"
+       \property StaffCombineVoice.decrescendoSpanner = ""
        \times 2/3 {  c,4\> ( es c ~ } \times 2/3 {  c as' )g } |
 
        %300
@@ -482,15 +482,3 @@ violoncello = \notes \relative c {
        c4 r r2 |
        c4 r r2 |
 }
-
-%%%violoncelloStaff = \context Staff = violoncello <
-%%%    \property Staff.midiInstrument = #"cello"
-%%%    \property Staff.instrument = #"Violoncello\ne\nContrabasso"
-%%%    \property Staff.instr = #"Vc."
-%%%    \clef "bass";
-%%%    \notes \context Voice=one< 
-%%%            \global
-%%%            \violoncello
-%%%    >
-%%%>
-
index 28c1bec72b506d4fc33e2fbb1320d9f835e08ebd..469cc1e3fea762aa7a3c828f15bc9f389731fd58 100644 (file)
@@ -42,7 +42,8 @@
     (before-line-breaking-callback . ,Beam::before_line_breaking)
     (after-line-breaking-callback . ,Beam::after_line_breaking)
     (default-neutral-direction . 1)
-    
+    (outer-stem-length-limit . 0.2)
+    (slope-limit . 0.2)
     (beam-flag-width-function . ,default-beam-flag-width-function)
     (beam-space-function . ,default-beam-space-function)
     (damping . 1)
index befcda71bce6c7355f507973609a3fe5f7d884c8..6de64074616b6fdc052417bc852406fdf6f46b1b 100644 (file)
        )
   )    
 
+(define generic-bar-number-properties
+  (cons 'bar-number-interface
+       (list
+        (list 'barNumberScriptPadding number? 'padding)
+        (list 'barNumberDirection dir? 'direction)      
+        )
+       
+       )
+  )
+
+  
 ; don't do this yet. Depends on whennn the staff is really announced
 (define generic-staff-symbol-properties
   (cons 'staff-symbol-interface
index a8cb01b82def508aa5cd1795993efd5b6b0b268c..e4e80e262d50d7be0c2dda1d1ee6723fea100735 100644 (file)
@@ -237,7 +237,7 @@ Options:
 
 (define (get-font name)
   ;; urg
-  (if (equal? name "as-dummy")
+  (if (equal? (substring name 0 (min (string-length name) 8)) "as-dummy")
       (get-font "default")
       (let ((entry (assoc name fonts)))
           (if entry
@@ -334,7 +334,7 @@ Options:
 
 (define (load-font name mag)
   ;; urg: don't load dummy font
-  (if (not (equal? name "as-dummy"))
+  (if (not (equal? (substring name 0 (min (string-length name) 8)) "as-dummy"))
       (let ((text (af-gulp-file (string-append name ".af"))))
           (if (< 0 (string-length text))
               (let* ((char-list (cdr 
@@ -376,7 +376,7 @@ Options:
        (set! fonts (cons (cons "default" (generate-default-font)) fonts))
        (display "\n" (current-error-port))
        (if (and (defined? 'mudelapaperlinewidth)
-               (> mudelapaperlinewidth 0))
+               (> (string->number mudelapaperlinewidth) 0))
           (set! canvas-width 
                 (inexact->exact (string->number mudelapaperlinewidth))))))
   (set! canvas-height height)
index c60924d43498712dafdab9014699494091f3aae1..85a055d175c360e0ba5a78821ab9eaa2303d529b 100644 (file)
@@ -1,7 +1,13 @@
 #!@PYTHON@
 # vim: set noexpandtab:
-# TODO: Figure out clean set of options.
-# add support for .lilyrc
+# TODO:
+# * Figure out clean set of options.
+# * add support for .lilyrc
+# * %\def\preMudelaExample should be ignored by mudela-book because
+#   it is commented out
+# * if you run mudela-book once with --no-pictures, and then again
+#   without the option, then the pngs will not be created. You have
+#   to delete the generated .ly files and  rerun mudela-book.
 
 import os
 import stat
@@ -15,7 +21,7 @@ import __main__
 
 program_version = '@TOPLEVEL_VERSION@'
 if program_version == '@' + 'TOPLEVEL_VERSION' + '@':
-       program_version = '1.3.69-very-unstable'        
+       program_version = '1.3.85'      
 
 include_path = [os.getcwd()]
 
@@ -36,18 +42,22 @@ default_text_fontsize = 12
 # indices are no. of columns, papersize,  fontsize
 # Why can't this be calculated?
 latex_linewidths = {
- 1: {'a4':{10: 345, 11: 360, 12: 390},
-        'a5':{10: 276, 11: 276, 12: 276},
-        'b5':{10: 345, 11: 356, 12: 356},
-        'letter':{10: 345, 11: 360, 12: 390},
-        'legal': {10: 345, 11: 360, 12: 390},
-        'executive':{10: 345, 11: 360, 12: 379}},
- 2: {'a4':{10: 167, 11: 175, 12: 190},
-        'a5':{10: 133, 11: 133, 12: 133},
-        'b5':{10: 167, 11: 173, 12: 173},
-        'letter':{10: 167, 11: 175, 12: 190},
-        'legal':{10: 167, 11: 175, 12: 190},
-        'executive':{10: 167, 11: 175, 12: 184}}}
+ 1: {  'a4':{10: 345, 11: 360, 12: 390},
+       'a4-landscape': {10: 598, 11: 596, 12:592},
+       'a5':{10: 276, 11: 276, 12: 276},
+       'b5':{10: 345, 11: 356, 12: 356},
+       'letter':{10: 345, 11: 360, 12: 390},
+       'letter-landscape':{10: 598, 11: 596, 12:596},
+       'legal': {10: 345, 11: 360, 12: 390},
+       'executive':{10: 345, 11: 360, 12: 379}},
+ 2: {  'a4':{10: 167, 11: 175, 12: 190},
+       'a4-landscape': {10: 291, 11: 291, 12: 291},
+       'a5':{10: 133, 11: 133, 12: 133},
+       'b5':{10: 167, 11: 173, 12: 173},
+       'letter':{10: 167, 11: 175, 12: 190},
+       'letter-landscape':{10: 270, 11: 267, 12: 269},
+       'legal':{10: 167, 11: 175, 12: 190},
+       'executive':{10: 167, 11: 175, 12: 184}}}
 
 texi_linewidths = {
        'a4': {12: 455},
@@ -152,23 +162,27 @@ re_dict = {
                 
                  'option-sep' : ', *',
                  'header': r"""\\documentclass(\[.*?\])?""",
+                 #              ^(?m)[^%]* is here so we can comment it out
+                 'landscape': r"^(?m)[^%]*\\usepackage{landscape}",
                  'preamble-end': '\\\\begin{document}',
                  'verbatim': r"""(?s)(?P<code>\\begin{verbatim}.*?\\end{verbatim})""",
                  'verb': r"""(?P<code>\\verb(?P<del>.).*?(?P=del))""",
                  'mudela-file': r'\\mudelafile(\[(?P<options>.*?)\])?\{(?P<filename>.+)}',
-                 'mudela' : '(?m)\\\\mudela(\[(?P<options>.*?)\])?{(?P<code>.*?)}',
+                 'mudela' : '(?m)^[^%]*?\\\\mudela(\[(?P<options>.*?)\])?{(?P<code>.*?)}',
                  #'mudela-block': r"""(?m)^[^%]*?\\begin(\[(?P<options>.*?)\])?{mudela}(?P<code>.*?)\\end{mudela}""",
                  'mudela-block': r"""(?s)\\begin(\[(?P<options>.*?)\])?{mudela}(?P<code>.*?)\\end{mudela}""",
                  'def-post-re': r"""\\def\\postMudelaExample""",
                  'def-pre-re': r"""\\def\\preMudelaExample""",           
                  'intertext': r',?\s*intertext=\".*?\"',
-                 'ignore': r"(?m)(?P<code>%.*?^)",
+                 #'ignore': r"(?m)(?P<code>%.*?^)",
+                 'ignore': r"(?m)(?P<code>^%.*)$",
                  'numcols': r"(?P<code>\\(?P<num>one|two)column)",
                  },
        
        'texi': {
                 'include':  '@mbinclude[ \n\t]+(?P<filename>[^\t \n]*)',
                 'input': no_match,
+                'landscape': no_match,
                 'header': no_match,
                 'preamble-end': no_match,
                 'verbatim': r"""(?s)(?P<code>@example\s.*?@end example\s)""",
@@ -235,12 +249,16 @@ def compose_full_body (body, opts):
        else:
                paper = 'letter' # yes, latex use letter as default, at least
                                 # my tetex distro
+               if 'landscape' in opts:
+                   paper = paper + '-' + 'landscape'
        music_size = default_music_fontsize
        latex_size = default_text_fontsize
        for o in opts:
                m = re.search ('^(.*)paper$', o)
                if m:
                        paper = m.group (1)
+                       if 'landscape' in opts:
+                               paper = paper + '-' + 'landscape'
                
                if g_force_mudela_fontsize:
                        music_size = g_force_mudela_fontsize
@@ -300,6 +318,9 @@ def scan_preamble (str):
                        options = ['a4widepaper']
                elif string.find(str[:x], "@smallbook") != -1:
                        options = ['smallbookpaper']
+       m = get_re ('landscape').search(str)
+       if m:
+           options.append('landscape')
        m = get_re ('header').search( str)
        # should extract paper & fontsz.
        if m and m.group (1):
@@ -473,6 +494,7 @@ def schedule_mudela_block (chunk, extra_opts):
        TODO has format [basename, extension, extension, ... ]
        
        """
+       #print "-schedule_mudela_block", extra_opts
        if len(chunk) == 3:
                (type, body, opts) = chunk
                complete_body = None
@@ -571,7 +593,9 @@ def compile_all_files (chunks):
                        if e == 'eps':
                                eps.append (base)
                        elif e == 'tex':
-                               tex.append (base + '.ly')
+                               #ugh
+                               if base + '.ly' not in tex:
+                                       tex.append (base + '.ly')
                        elif e == 'png' and g_do_pictures:
                                png.append (base)
        d = os.getcwd()
@@ -719,8 +743,8 @@ def do_file(input_filename):
        chunks = chop_chunks(chunks, 'mudela', make_mudela)
        chunks = chop_chunks(chunks, 'mudela-file', make_mudela_file)
        chunks = chop_chunks(chunks, 'mudela-block', make_mudela_block)
-       #for c in chunks: print c, "\n"
        chunks = chop_chunks(chunks, 'ignore', do_ignore)
+       #for c in chunks: print "c:", c
        chunks = chop_chunks(chunks, 'numcols', do_columns)
        global_options = scan_preamble(chunks[0][1])
        chunks = process_mudela_blocks(my_outname, chunks, global_options)
index 40a8c7955aed9b2011210fbe804c41bf34e21b2a..f6bca234e4b9dc038fe6ce0f5bf344da892f6847 100644 (file)
@@ -37,7 +37,7 @@
 \ifundefined{mudelapaperinterscoreline}
         \def\interscoreline{\vskip 16pt\myfilbreak}
 \else
-        \def\interscoreline{\vskip\mudelapaperinterscoreline\myfilbreak}
+        \def\interscoreline{\vskip\mudelapaperinterscoreline pt\myfilbreak}
 \fi
 \def\placebox#1#2#3{%
         \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}}%