]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.152 release/1.3.152
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 4 May 2001 09:28:07 +0000 (11:28 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 4 May 2001 09:28:07 +0000 (11:28 +0200)
============

* ly2dvi: changed headsep to 0pt, as old ly2dvi had.  Fixes mutopia
textheight setting.

* Fixed feta-braces: more symbols again, but all paper sizes use same
font.  Also fixed lookup.

* Maximum length for lyric-hyphen.

* Two forgotten note corrections to Standchen.

* Website compilation fix.

1.3.151.

55 files changed:
CHANGES
DEDICATION
Documentation/doc-roadmap.texi [deleted file]
Documentation/header.html.in
Documentation/index.texi
Documentation/topdocs/INSTALL.texi
Documentation/user/macros.itexi
Documentation/user/preface.itely
Documentation/user/refman.itely
Documentation/user/tutorial.itely
INSTALL.txt
NEWS
VERSION
input/test/bar-lines.ly
input/test/smart-transpose.ly
input/tutorial/solar.ly [new file with mode: 0644]
input/tutorial/test.ly
lily/afm.cc
lily/clef-engraver.cc
lily/include/separating-group-spanner.hh
lily/paper-def.cc
lily/paper-outputter.cc
lily/performance.cc
lily/piano-pedal-engraver.cc
lily/piano-pedal-performer.cc
lily/property-engraver.cc
lily/scores.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
lily/span-bar.cc
lily/translator-group.cc
ly/engraver.ly
make/out/lilypond.lsm
make/out/redhat.spec
make/out/suse.spec
mf/feta-braces11.mf [deleted file]
mf/feta-braces13.mf [deleted file]
mf/feta-braces16.mf [deleted file]
mf/feta-braces20.mf [deleted file]
mf/feta-braces23.mf [deleted file]
mf/feta-braces26.mf [deleted file]
po/de.po
po/fr.po
po/it.po
po/ja.po
po/lilypond.pot
po/nl.po
po/ru.po
scm/clef.scm
scm/grob-description.scm
scm/translator-description.scm
scm/translator-property-description.scm
scripts/abc2ly.py
scripts/convert-ly.py
scripts/ly2dvi.py

diff --git a/CHANGES b/CHANGES
index eeada32b0e40f0438c1739ef893bba4a93aaf95c..51f00eae8004f724f3903369ae35a941dad2b3f9 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,9 +4,6 @@
 * ly2dvi: changed headsep to 0pt, as old ly2dvi had.  Fixes mutopia
 textheight setting.
 
-1.3.151.jcn1
-============
-
 * Fixed feta-braces: more symbols again, but all paper sizes use same
 font.  Also fixed lookup.
 
@@ -16,9 +13,32 @@ font.  Also fixed lookup.
 
 * Website compilation fix.
 
-1.3.150.jcn3
+1.3.151.mb1
+===========
+
+* ly2dvi: add lilypond directories at end of tex paths
+
+* renewed smart-transpose example
+
+1.3.151.hwn1
 ============
 
+* Tutorial revision: add much simpler examples in front.
+
+* abc2ly fix for duration at end of line (Laura Conrad)
+
+* centralCPosition is set by \clef as well; this fixes the grace note +
+clef problem. Property clefPitches is deprecated.
+
+* Separating_group_spanner now searches items until it finds a
+non-empty one.  This fixes a problem with lyrics clashes on barlines
+when stanza numbers are on.
+
+* Uniformised progress messages. File names are always printed in quotes.
+
+1.3.151
+=======
+
 * ly2dvi: reverted footer change that broke mutopia endfooter.
 
 * Standchen revision (found four new bugs).
@@ -32,6 +52,14 @@ font.  Also fixed lookup.
 * Windows: possibly ly2dvi fix, tex install, minor doco fixes, fixed
 some urls.
 
+* centralCPosition is set by \clef as well; this fixes the grace note +
+clef problem. Property clefPitches is deprecated.
+
+* Separating_group_spanner now searches items until it finds a
+non-empty one.  This fixes a problem with lyrics clashes on barlines
+when stanza numbers are on.
+
+* Uniformised progress messages. File names are always printed in quotes.
 
 1.3.150.hwn1
 ============
@@ -833,7 +861,7 @@ pasta.
 
 * Bugfix: fixed point-and-click broken in jcn2.
 
-* convert-ly: Added and fixed various entries (our strings with optional "" re\ally suck).
+* convert-ly: Added and fixed various entries
 
 * Small ez play tweaks.  Guess I'm a sucker too.
 
@@ -873,7 +901,7 @@ interface-description.scm
 ============
 
 * Tied notes at a linebreak repeat their accidental.
-F
+
 * Removed some cruft from lily/include/.
 
 * Bugfix: tied notes in chords sometimes got stuck in MIDI output
@@ -1210,7 +1238,6 @@ node name for grob documentation.
 Scheme.  See input/test/molecule-hacking.ly ; allows for a kludged
 "parenthesize notehead" command.
 
-
 1.3.123.mb1
 ===========
 
@@ -1218,8 +1245,6 @@ Scheme.  See input/test/molecule-hacking.ly ; allows for a kludged
 
 * Bugfix: font style Large works regardless of font-shape.
 
-
-
 1.3.123
 =======
 
@@ -1298,7 +1323,6 @@ break --srcdir builds and texi2dvi.
 
 * Bugfix: changed beam thickness to .48 staff-space.
 
-
 1.3.120.uu1
 ===========
 
index 4cef3ae65dcc779c5a8775877f501906accd2f17..c38add48161d0d58e4c8c2e00b35441161e5da4f 100644 (file)
@@ -7,7 +7,7 @@
 
        Those deserving special mentioning (in no particular order): Esther,
 Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, Maartje, Suzanne,
-Ilse (gee, again?), Marieke, Irene, Martine, Idwine and last (but
+Ilse (gee, again?), Marieke, Irene, Martine, and last (but
 certainly not least) Janneke!
 
        HWN
diff --git a/Documentation/doc-roadmap.texi b/Documentation/doc-roadmap.texi
deleted file mode 100644 (file)
index 8b13789..0000000
+++ /dev/null
@@ -1 +0,0 @@
-
index 423327d58bfa9dd9f45a2051c8c632f82f931ee3..9804cff65e7a0f76e87c40eb557f47fad00e5d4f 100644 (file)
@@ -41,10 +41,10 @@ which substitutes some @AT_VARIABLES@ as well.
       </td></tr>
       <tr><td><font size=-1>
        <a href="@TOP@Documentation/out-www/index.html#everyone">General information</a><br>
-       <a href="@TOP@Documentation/out-www/index.html#new-users">New users</a><br>
-       <a href="@TOP@Documentation/out-www/index.html#other-users">Other users</a><br>
-       <a href="@TOP@Documentation/out-www/index.html#developers">Developers</a><br>
-       <a href="@TOP@Documentation/out-www/index.html#background">Background info</a><br>
+       <a href="@TOP@Documentation/out-www/index.html#new-users">For new users</a><br>
+       <a href="@TOP@Documentation/out-www/index.html#other-users">For users</a><br>
+       <a href="@TOP@Documentation/out-www/index.html#developers">For developers</a><br>
+       <a href="@TOP@Documentation/out-www/index.html#background">Background information</a><br>
       </td></tr>
       <tr><td bgcolor="#e8e8ff">
        <b>Download </b>
index fd9f0838df0bfe3a6614e3c0c8e55dfa30f354e2..ca143450ff358a46ccff1d02b670f524c998667f 100644 (file)
@@ -48,7 +48,7 @@ the mailing lists
 <a name="other-users">
 @end html
 
-@unnumberedsubsec Information for other users
+@unnumberedsubsec Information for users
 
 
 @itemize @bullet
@@ -56,13 +56,11 @@ the mailing lists
 
 @c download sites?
 
-@c NEWS
-
 @c archives?
 
 @item @uref{../user/out-www/lilypond-internals/lilypond-internals.html,lilypond-internals}
-Documentation of internals, generated from the sources.
-
+Documentation of internals, generated from the sources. If you want to
+fine-tune output, you need the information in this document.
 @item @uref{../user/out-www/lilypond/lilypond.html,lilypond}
   The user manual, (in @uref{../user/out-www/lilypond.ps.gz,PostScript})
 @item @uref{../user/out-www/glossary.html,glossary} A glossary of musical
@@ -108,22 +106,23 @@ textual domain
 @itemize @bullet
 @item @uref{../topdocs/out-www/AUTHORS.html, Authors} documents who did
 what on LilyPond.
-
-@item @uref{../misc/out-www/CHANGES-0.0.html, Change logs from 0.0 till 0.1 }
-@item @uref{../misc/out-www/CHANGES-0.1.html, Change logs from 0.1 till 1.0 }
-@item @uref{../misc/out-www/CHANGES-1.0.html, Change logs from 1.0 till 1.1 }
-@item @uref{../misc/out-www/CHANGES-1.1.html, Change logs from 1.1 till
-1.2 }
-@item @uref{../misc/out-www/CHANGES-1.2.html, Change logs from 1.2 till 1.3 }
-@item @uref{../misc/out-www/NEWS-1.2.html, summary of changes from 1.1 till 1.2 }
-@item @uref{../misc/out-www/ANNOUNCE-0.1.html, Announcement of 0.1 (includes summary of
-changes)}
-@item @uref{../misc/out-www/ANNOUNCE-1.0.html, Announcement of 1.0 (includes summary of
-changes)}
-@item @uref{../misc/out-www/ANNOUNCE-1.2.html, Announcement of 1.2 (includes summary of changes)}
-@item @uref{../misc/out-www/AIMS.html, Why LilyPond?}
-@item @uref{../misc/out-www/interview.html, Answers} to the Brave GNU world standard questions.
-@item @uref{../windows/out-www/lily-wins.html, Lily Wins}
+@item @uref{../out-www/NEWS.txt,NEWS} summary of changes for 1.4
+@item @uref{../misc/out-www/CHANGES-0.0.html, CHANGES-0.0} Change logs from 0.0 till 0.1
+@item @uref{../misc/out-www/CHANGES-0.1.html, CHANGES-0.1} Change logs from 0.1 till 1.0 
+@item @uref{../misc/out-www/CHANGES-1.0.html, CHANGES-1.0} Change logs from 1.0 till 1.1 
+@item @uref{../misc/out-www/CHANGES-1.1.html, CHANGES-1.1} Change logs from 1.1 till
+1.2 
+@item @uref{../misc/out-www/CHANGES-1.2.html, CHANGES-1.2} Change logs from 1.2 till 1.3 
+@item @uref{../misc/out-www/NEWS-1.2.html, NEWS-1.2} summary of changes from 1.1 till 1.2
+@item @uref{../misc/out-www/ANNOUNCE-0.1.html, ANNOUNCE-0.1} Announcement of 0.1 (includes summary of
+changes)
+@item @uref{../misc/out-www/ANNOUNCE-1.0.html, ANNOUNCE-1.0} Announcement of 1.0 (includes summary of
+changes)
+@item @uref{../misc/out-www/ANNOUNCE-1.2.html, ANNOUNCE-1.2} Announcement of 1.2 (includes summary of changes)
+@item @uref{../misc/out-www/AIMS.html, AIMS} Why LilyPond?
+@item @uref{../misc/out-www/interview.html, interview} Answers to the Brave GNU world standard questions.
+@item @uref{../windows/out-www/lily-wins.html, lily-wins} musings on the
+Windows installer
 @end itemize
 
 @unnumberedsubsec Literature
index b7007656908ae33cd55dd0b4f3bf7f5323ab5d50..55b9632acc602facf62d7a1097a0946294fd28cd 100644 (file)
@@ -340,6 +340,12 @@ You must have the following packages: guile tcsh tetex te_latex te_kpath
 te_mpost libpng python gpp libgpp gettext autoconf netpbm libnetpb
 gs_serv gs_lib gs_fonts guile
 
+@subsection Slackware
+
+Problems have been reported with Slackware 7.0; apparently, it ships
+with a faulty compiler. Do not compile LilyPond with -O2 on this
+platform.
+
 @subsection Mandrake
 
 [TODO]
index 77bcf27c3ac53d9c804fe9901150b0c8e1532bfb..7d8699e0b8ee640da1639526403a598be186e0bf 100644 (file)
@@ -18,7 +18,7 @@
 @macro separate
 
 @tex
-\\hbox to\\hsize{\\hfill$\\heartsuit$\\hfill}
+\\hbox to\\hsize{\\hfill\\vrule width1.4 cm height1.0pt\\hfill}
 @end tex
 
 @end macro
 
 @c \heartsf was supposed to be filled?
 
-@c center is broken?
-@ifnottex
-@macro braakseparate
-
-@center ***
-
-@end macro
-@end ifnottex
+@c center*** is broken?
 
 @ifinfo
 @macro separate
index 2ddcf76b3aaed46d34ce9357cbb50f2c2c9c7532..fc9f87b12be9d81dfbe939aeff536fcde916cd41 100644 (file)
@@ -23,8 +23,8 @@ in using LilyPond as we have when hacking it.
 This manual was written to help you learn LilyPond, but as you might
 imagine, we ourselves don't have much to learn about it.  We can't
 really judge whether the manual is helpful for users, but maybe you can!
-So should you find any part of the manual vague, unclear or outdated,
-please let us know.
+Don't hesitate to tell us if you find any part of the manual vague,
+unclear or outdated.
 
 Han-Wen and Jan
 
index 45bf0efd7b860a3abb6a31c43013c9d6290133bc..9315ae245ce6c7f08adbbadcc2d6b10eb33900f6 100644 (file)
@@ -1315,15 +1315,10 @@ syntactically valid, but makes no sense and may cause runtime errors.
 Ending a staff or score with grace notes may also generate a run-time
 error, since there will be no main note to attach the grace notes to.
 
-Combining grace notes and clef changes will prints note heads on
-erroneous vertical positions.
-
 The present implementation of grace notes is not robust and generally
 kludgey. We expect it to change after LilyPond 1.4. Syntax changes might
 also be implemented.
 
-
-
 @menu
 * Glissando ::                  
 * Dynamics::                    
@@ -1549,6 +1544,12 @@ Folded repeats offer little more over simultaneous music.  However, it
 is to be expected that more functionality -- especially for the MIDI
 backend -- will be implemented at some point in the future.
 
+Volta repeats are printed over all staffs in a score. You must turn them
+off explicitly, for example by doing
+@example
+  \property Staff.VoltaBracket = \turnOff
+@end example
+
 @node Manual repeat commands
 @subsection Manual repeat commands
 
index 482d1b0b356bb0a5befc43e9022c753584707b7d..11686f96c3078bb7e1b6cdc6f329d8918d73e46d 100644 (file)
@@ -2,27 +2,13 @@
 
 @c TODO: LilyPond Lilypond lilypond
 
+
 @node Tutorial
 @chapter Tutorial
   
-LilyPond prints music from a specification that you, the user, supply.
-You have to give that specification using a textual @emph{language}.  
-This chapter is a gentle introduction to that language.
-
-[rewrite]
-@c gentle?
-@c the first section is gentle
-@c the later sections get rather high-brow, deep, detailed, thorough
-
-
-This tutorial will demonstrate how to use Lilypond by presenting
-examples of input along with resulting output.  We will use English
-terms for notation.  In case you are not familiar with those, you may
-consult the glossary that is distributed with LilyPond.
-
 @menu
-* Music language of LilyPond::  
 * Running LilyPond::            Getting started
+* First steps::                 
 * The first tune::              The first tune
 * Lyrics and chords::           Lyrics and chords
 * More movements ::             
@@ -33,282 +19,334 @@ consult the glossary that is distributed with LilyPond.
 * end of tutorial::             The end
 @end menu
 
-@node Music language of LilyPond
-@section Music language of LilyPond
-
-
-simple notes
-@lilypond[verbatim, relative 1]
-a b c
-@end lilypond
-
-alterations
-@lilypond[verbatim, relative 0]
-fis as cisis beses
-@end lilypond
-
-durations
-@lilypond[verbatim, relative 1]
-a1 a2 a8 a4 a16 a8. a16
-@end lilypond
-
-octaves: high quote, low quote (comma)
-@lilypond[verbatim, relative 1]
-c c, c''
-@end lilypond
-
-@c normal use of LilyPond is \relative note entry
-@c so let's just show/explain that and make smart
-@c people look for non-\relative
-
-lilypond chooses nearest note
-@lilypond[verbatim, relative 1]
-c f c g c
-@end lilypond
-
-to go other way: add octaviation quote
-@lilypond[verbatim, relative 1]
-c f, c' g, c' 
-@end lilypond
-
-rests and skips
-@lilypond[verbatim, relative 1]
-r2 s4 r4
-@end lilypond
-
-
-meter
-@c \time -> \meter ?
-@lilypond[verbatim, relative 1]
-\time 3/4 c c c | R1 * 3/4
-@end lilypond
-
-key
-@lilypond[verbatim, relative 0]
-\key f \major es as bes
-@end lilypond
-
-slur, tie, phrasing slur
-@lilypond[verbatim, relative 1]
-c\( ( ) d  ~ d \) c
-@end lilypond
-
-simple chords
-@lilypond[verbatim, relative 1]
-<a c> <b d> <c e>
-@end lilypond
-
-suddenly lilypond gets really difficult:
-[explain about score -> \score and \notes]
-
-long chords; simultaneous music
-@lilypond[verbatim]
-% huh?
-% \singleLine
-% \paper { \singleLine }
-\paper { linewidth = -1.0 }
-\score {
-  \context Staff \notes \relative c'' <
-    { a b c }
-    { c d e }
-  >
-}
-@end lilypond
-
-@lilypond[verbatim]
-\paper { linewidth = -1.0 }
-\score {
-  \context GrandStaff \notes \relative c' <
-    { a' b c }
-    { \clef bass c d e }
-  >
-}
-@end lilypond
-
 
 @node Running LilyPond
 @section Running LilyPond
 
-Before we dive into describing the input language of LilyPond, we first
-show you through the procedure for getting notes on your screen and out
-of your printer.
-
-The first step is creating an input file.  Using your favorite
-text-editor, create @file{test.ly} containing
-
-@ignore
-
-NOTE: if you're reading this, ie, the Texinfo source itself, test.ly
-should of course contain:
-
-   \score{
-     \notes { c'4 e' g' }
-   }
-
-@end ignore
-
+You make music notation with LilyPond as follows: first you edit a text
+file containing a description of the notes. Then you run LilyPond on the
+file. This leaves you with an output file, which you can view or print.
+
+In this section we explain how to run LilyPond, and view or print the
+output.  If you want to test your setup of LilyPond, or try to run an
+example file yourself, then read this section. Otherwise, you can skip
+to the next section, which explains how to
+write LilyPond input.
+
+The instructions that follow are for Unix. Windows instructions are
+given at the end of this section. Start with opening a terminal window,
+and start up a text editor.  For example, start an xterm and execute
+@code{joe}.   Enter the following
+input, and save the file as @file{test.ly}.
 @example
 \score @{
   \notes @{ c'4 e' g' @}
 @} 
 @end example
+If this code looks intimidating you, then don't worry, we explain all
+about it in the next section.
 
-@unnumberedsubsec Unix
-@cindex Unix, Running lilypond on
 @cindex ly2dvi
 
-On unix, you invoke ly2dvi to compile your lilypond source file (you can
-omit the @code{.ly}):
+@c dit is dus raar, dat je ly2dvi draait om lelie te draaien
+@c (therefore name change proposal) 
 
+Invoke the program  @code{ly2dvi} to run lilypond on your source file:
 @example
 ly2dvi -P test
 @end example
 
 You will see the following on your screen:
-
 @example
-GNU LilyPond 1.3.145
+GNU LilyPond 1.4.0
 Now processing: `/home/fred/ly/test.ly'
 Parsing...
 Interpreting music...[1]
-Preprocessing elements... 
-Calculating column positions... [2]
-paper output to test.tex...
-
-Analyzing test.tex...
-Running LaTeX...
-Running dvips...
-PS output to test.ps...
-DVI output to test.dvi...
+ @emph{ ... more interesting stuff ... }
+PS output to `test.ps'...
+DVI output to `test.dvi'...
 @end example
 
-The results of the ly2dvi run are a ``DeVice Independent'' file
-(@file{test.dvi}) and a PostScript file (@file{test.ps}).
-
 @cindex DVI file
-
 @cindex Viewing music
 @cindex xdvi
-@cindex .dvi
-
-To view the @code{test.dvi} output, run Xdvi (you may omit the
-@code{.dvi}):
 
+The results of the ly2dvi run are two files, @file{test.dvi} and
+@file{test.ps}.  The PS file (@file{test.ps}) is the one you can
+print. You can view the PS file using the program ghostview.  If a
+version of ghostview is installed on your system, one of these commands
+will produce a window with some music notation on your screen.
 @example
-xdvi test
+kghostview test.ps
+ggv test.ps
+ghostview test.ps
+gv test.ps
 @end example
+When you're satisfied with the result, you can print the PS file by
+clicking File/Print inside ghostview.
 
-@c FIXME: should we say anything on xdvi-gs interaction?
+The DVI file (@file{test.dvi}) contains the same sheet music in a
+different format. DVI files are more easily processed by the computer,
+so viewing them usually is quicker. Execute @code{xdvi test}
+to view the DVI file.
 
-You should see the following in  a window next to some buttons.
-@lilypond
-\score {
-  \notes { c'4 e' g' }
-} 
-@end lilypond
+If your DVI viewer does not have a "Print" button, you can print the
+file by executing @code{lpr test.ps}.
 
-When you're satisfied with the result, you can print the
-PostScript file:
+@c volgende alinea schrappen?  
+
+If you can't get the examples to print, then you should look into
+installing and configuring ghostscript.  Refer to GhostScript's website
+at @uref{http://www.ghostscript.com}.
 
-@example
-lpr test.ps
-@end example
-If this does not make your printer produce a page of music, you should
-look into installing and configuring ghostscript.  Refer to
-GhostScript's website at @uref{http://www.ghostscript.com}.
 @cindex GhostScript
 @cindex @code{lpr}
 @cindex Printing output
-
 @cindex PostScript
-@cindex .ps
 
 
-@unnumberedsubsec Windows
+Windows users start the terminal by clicking on the lilypond icon.
+Notepad is sufficient for editing the lilypond file. Viewing the PS file
+can be done with @code{gsview32 test.ps}. Viewing DVI files can be done
+with @code{yap test}. The "print" button in Yap will print files.  You
+can also print from the command line by executing @code{gsview32 /s
+test.ps}
 
 
-On windows, you open a LilyPond shell, and then you invoke ly2dvi
-compile your lilypond source file, just like on Unix:
+@c titel?
 
-@example
-ly2dvi -P test
-@end example
+@node First steps
+@section First steps
 
-You will see the following on your screen:
+Let's try to explain this example:
 
-@c FIXME: leave this out, just refer to unix section?
-@c FIXME: commands run in dos shell: we can't redirect output
+The basics of any piece of music are notes.Notes are entered 
+with letters @code{a} to @code{g} followed by a
+number that represents the duration: a @code{2} is a half note, a
+@code{4} is a quarter note. A period is used for augmentation dots, so
+entering @code{2.} gives a dotted half note. 
 @example
-GNU LilyPond 1.3.150
-Now processing: `/home/tim/ly/test.ly'
-Parsing...
-Interpreting music...[1]
-Preprocessing elements... 
-Calculating column positions... [2]
-paper output to test.tex...
-
-This is TeX, Version 3.14159 (MiKTeX 2)
-LaTeX2e <2000/06/01>
-Babel <v3.6Z> and hyphenation patterns for english, french, german, ngerman, du
-mylang, nohyphenation, loaded.
-
-(test.latex (C:\cygwin\usr\windows\MiKTeX\tex\latex\base\article.cls
-Document Class: article 2000/05/19 v1.4b Standard LaTeX document class
-(C:\cygwin\usr\windows\MiKTeX\tex\latex\base\size10.clo))
-(C:\cygwin\usr\lilypond-1.3.150.jcn2\share\lilypond\tex\geometry.sty
-(C:\cygwin\usr\windows\MiKTeX\tex\latex\graphics\keyval.sty))
-(C:\cygwin\usr\windows\MiKTeX\tex\latex\base\inputenc.sty
-(C:\cygwin\usr\windows\MiKTeX\tex\latex\base\latin1.def))
-(C:\cygwin\usr\lilypond-1.3.150.jcn2\share\lilypond\tex\titledefs.tex)
-No file test.aux.
-(test.tex
-(C:\cygwin\usr\lilypond-1.3.150.jcn2\share\lilypond\tex\lilyponddefs.tex
-(C:\cygwin\usr\lilypond-1.3.150.jcn2\share\lilypond\tex\lilypond-latex.tex
-LaTeX definitions)
-(C:\cygwin\usr\lilypond-1.3.150.jcn2\share\lilypond\tex\feta20.tex)
-(C:\cygwin\usr\lilypond-1.3.150.jcn2\share\lilypond\tex\lily-ps-defs.tex)
-[footer empty]))
-Overfull \hbox (15.0pt too wide) in paragraph at lines 20--24
-[] $[]$ 
-
-Overfull \vbox (0.7539pt too high) has occurred while \output is active
-[1] (test.aux) )
-(see the transcript file for additional information)
-Output written on test.dvi (1 page, 4292 bytes).
-Transcript written on test.log.
-This is dvips(k) 5.86 Copyright 1999 Radical Eye Software (www.radicaleye.com)
-' TeX output 2001.04.25:0015' -> test.ps
-<texc.pro><special.pro>. [1] 
-Running LilyPond...
-Analyzing test.tex...
-PS output to test.ps...
-DVI output to test.dvi...
-@end example
-
-To view the @code{test.dvi} output, run Yap
+     c2 e4 g2.
+@end example
+@lilypond[fragment]
+\property Score.timing  = ##f
+\property Staff.TimeSignature  = \turnOff
+\property Staff.Clef  = \turnOff
+\clef bass c2 e4 g2.
+@end lilypond
+If you don't specify a duration, then the duration last entered is used:
+@c
+@example
+  f4 e d c2.
+@end example
+@lilypond[fragment]
+\property Score.timing  = ##f
+\property Staff.TimeSignature  = \turnOff
+\property Staff.Clef  = \turnOff
+\clef bass  f4 e d c2.
+@end lilypond
+The time signature can be set with a command of the form @code{\time},
+and the clef with @code{\clef} as follows:
+@example
+     \time 3/4
+     \clef bass
+@end example
+@lilypond[fragment]
+        \time 3/4
+        \clef bass
+        s2._" "
+@end lilypond
 
+The commands together with the notes are combined to form a snippet of
+music. They are combined by enclosing them with @code{\notes @{ @}}.
 @example
-yap test
+  \notes @{
+     \time 3/4
+     \clef bass
+     c2 e4 g2.
+     f4 e d c2.
+  @}
 @end example
 
-You should see the following in a window
-@lilypond
+This snippet is ready to be printed. This is done by combining the music
+with a printing command. The printing command is the so-called
+@code{\paper} block.  The music and paper block are combined by
+enclosing them in @code{\score}.
+
+@lilypond[verbatim]
 \score {
-  \notes { c'4 e' g' }
-} 
+  \notes {
+     \time 3/4
+     \clef bass
+     c2 e4  g2.
+     f4 e d c2.
+  }
+  \paper { }
+}
 @end lilypond
 
-@c FIXME: talk about newer Yap versions, proper gs installation?
-When you're satisfied with the result, you can print from within Yap
-(File/Print).  Note that Yap may not display embedded PostScript symbols
-such as beams and slurs.  Don't worry, they'll be printed anyway.
+@ignore
+The @code{\paper} block looks empty, which means that we get default. That is because we did not contains page layout settings, such as the linewidth and
+the staff size. For now, we'll use standard settings, hence the paper
+block is empty (its braces enclose a blank space).
+@end ignore
 
-You can also print the PostScript file directly from the
-command line using GSview:
+Rests are entered just like notes with the name @code{r}
+@lilypond[fragment,verbatim]
+r4 r8 r16
+@end lilypond
 
-@example
-gsview32 /s test.ps
-@end example
+Octaves are entered by adding apostrophes or commas to note names. For
+example, the central C is entered as @code{c'}.
+
+Pitches can be octaviated by adding  apostrophes or commas. The central C is
+@code{c'}. Going up octave by octave we get @code{c''},
+@code{c'''}. Going down from central C, we get @code{c} @code{c,}
+@code{c,,} etc.
+
+@lilypond[verbatim,fragment]
+c'4 c'' c''' c c,
+@end lilypond
+
+LilyPond uses Dutch note names: you can make a note sharp by appending
+@code{is} to the name, and flat by appending @code{es} to the name.
+@lilypond[verbatim,fragment]
+fis'4 bes'4 aeses'4
+@end lilypond
+
+Ties are created by entering a tilde (@code{~}) between the notes to be
+tied:
+@lilypond[fragment,verbatim]
+  g'4 ~ g' a'2 ~ a'4
+@end lilypond
+Ties look almost the same as slurs, but they are different. Ties can
+only indicate the extension of a note. Ties connect two note heads with
+the same pitch.  Slurs on the other hand, can be drawn across many
+notes, and indicate bound articulation.
+The key signature is set with the command @code{\key}:
+@lilypond[fragment,verbatim]
+  \key d \major
+  g'1
+  \key c \minor
+  g'
+@end lilypond
+
+The next example shows octave marks, ties, and rests in action. 
+@lilypond[verbatim]
+\score {
+  \notes {
+    \time 4/4
+    \clef treble
+    \key d \minor
+    r4 r8 d''8 cis''4 e''
+    d''8 a'4. ~ a'  b'8
+    cis''4 cis''8 cis'' bis'4 d''8 cis'' ~
+    cis''2 r2
+  }
+  \paper { }
+}
+@end lilypond
+There is one interesting point to note in this example: accidentals
+don't have to be marked explicitly. You just enter the pitch, and
+LilyPond determines wether or not to print an accidental.
+
+Managing larger pieces. 
+
+If you look at the last piece, it is already apparent that entering
+octaves using quotes is not very convenient. A score written in high
+register will be encoded using lots quotes. This makes the input file
+unreadable, and it also is a source of many errors.
+
+This problem is solved by relative octave mode. In this mode, the quotes
+are used to mark large jumps in the melody. Without any quotes or
+commas, the interval between a note and its predecessor is assumed to be
+a fourth or less. Quotes and commas add octaves in up and down
+direction.  Relative octaves are introduced by @code{\relative} followed
+by a starting pitch
+@lilypond[fragment,verbatim]
+\relative c'' { c4 d4 b4 e4 a,4 f'4 g,4 a'4 }
+@end lilypond
+
+Slurs (not to be confused with ties) are entered with parentheses. You
+mark the starting note and ending note with a @code{(} and a
+@code{)} respectively.
+
+@lilypond[fragment,relative 2, verbatim]
+c8( cis d ) e 
+@end lilypond
+
+If you need two slurs at the same time (one for articulation, one for
+phrasing), you can also make phrasing slurs with @code{\(} and
+@code{\)}.
+
+@c lousy example
+@lilypond[fragment,relative 1, verbatim]
+a8(\( ais b ) c cis2 b'2 a4 cis, \) c
+@end lilypond
+
+Beams are drawn automatically, but if you don't like the choices, you
+can enter beams by hand. Surround the notes to be grouped with @code{[}
+and @code{]}:
+@lilypond[fragment,relative 1, verbatim]
+[a8 ais] [d es r d]
+@end lilypond
+
+You can make more than one staff, by specifying @code{\context Staff} before 
+snippets of music, and combining those snippets in @code{<} and
+@code{>}, as is demonstrated here:
+
+@lilypond[fragment,verbatim]
+< \context Staff = staffA { \clef treble c'' }
+  \context Staff = staffB { \clef bass c }
+>
+@end lilypond
+Here, @code{staffA} and @code{staffB} are names that you give to the
+staff. For now, it doesn't matter what names you give, as long as they
+are different.
+
+We can typeset a melody with two staffs now:
+
+@lilypond[verbatim]
+\score {
+  \notes 
+  < \context Staff = staffA {
+      \time 3/4
+      \clef treble
+      \relative c'' { e2 ( d4 c2 b4 [a8 a] [b b] [g g] )a2. }  
+    }
+    \context Staff = staffB {
+       \clef bass
+       c2 e4  g2.
+       f4 e d c2.
+    }
+  >
+  \paper {} 
+}
+@end lilypond
+
+Notice that the time signature is specified in one melody staff only
+(the top staff), but is printed on both. LilyPond knows that the time
+signature should be the same for all staffs.
+
+[TODO add some more here
+
+
+* \header
+
+* dynamics , articulation
+
+* <chords>
+
+* identifiers?
+
+]
+
+This is the end of the simple tutorial. What follows is also a manual in
+tutorial-style, but it is much more in-depth, and alas more
+intimidating.  You should read it if you want to know about the more
+advanced features of lilypond, such as producing orchestral scores and
+parts, fine tuning output, writing polyphonic music, etc.
 
 
 
@@ -316,17 +354,14 @@ gsview32 /s test.ps
 @section The first tune
 
 
-@cindex examples, tutorial
+This tutorial will demonstrate how to use Lilypond by presenting
+examples of input along with resulting output.  We will use English
+terms for notation.  In case you are not familiar with those, you may
+consult the glossary that is distributed with LilyPond.
 
 The examples discussed are included in the distribution, in the
-subdirectory @file{input/tutorial/}@footnote{When we refer
-to filenames, they are relative to the top directory of the source
-package.  In binary installations you should look in your doc section,
-eg, @code{/usr/share/doc/lilypond1.3/examples/input/tutorial}
-@cindex file names
-}. We recommend that you experiment with writing Lilypond input
-yourself, to get a feel for how the program behaves.
-
+subdirectory @file{input/tutorial/}@footnote{When we refer to filenames,
+they are relative to the top directory of the source package. }
 
 
 To demonstrate what LilyPond input looks like, we start off with a
index 088db01f8dee85f5192233e98347ac948de2a088..7ed1f83464bd8a6ef038be58f774f913c2da5eb1 100644 (file)
@@ -21,6 +21,7 @@ INSTALL - compiling and installing GNU LilyPond
   Compiling for distributions
     Red Hat Linux
     SuSE
+    Slackware
     Mandrake
     Debian GNU/Linux
   Problems
@@ -198,7 +199,7 @@ issuing
 
        make web-doc
 
-   Building the website requires  some additional tools:
+   Building the website requires some additional tools:
 
    * xpmtoppm (from the netpbm package: the Portable Bitmap Utilities).
      The original is at the netpbm FTP site
@@ -218,6 +219,11 @@ issuing
      The website will build without bib converter utility, but you will
      not see our hypertextified bibliography.
 
+   * texinfo (a development release) The documentation will build with
+     texinfo-4.0, but if you want split html pages, you're best off
+     using the lates pretest version from texinfo-4.0b
+     (ftp://texinfo.org/texinfo/pretests/texinfo-4.0b.tar.gz) or
+     texinfo-4.0b (ftp://alpha.gnu.org/gnu/texinfo-4.0b.tar.gz)
 
 Building  LilyPond
 ==================
@@ -313,6 +319,13 @@ SuSE
 te_kpath te_mpost libpng python gpp libgpp gettext autoconf netpbm
 libnetpb gs_serv gs_lib gs_fonts guile
 
+Slackware
+---------
+
+   Problems have been reported with Slackware 7.0; apparently, it ships
+with a faulty compiler. Do not compile LilyPond with -O2 on this
+platform.
+
 Mandrake
 --------
 
@@ -326,6 +339,21 @@ using apt-get as root:
 
        apt-get install lilypond1.3
 
+   Debian's tex installation is a bit short on memory, you may want to
+increase it like this:
+     --- /etc/texmf/texmf.cnf.dpkg     Sun Jan 28 14:12:14 2001
+     +++ /etc/texmf/texmf.cnf  Fri Apr 27 11:09:35 2001
+     @ -384,8 +384,8 @
+      main_memory.context = 1500000
+      main_memory.mpost = 1000000
+      main_memory = 263000 % words of inimemory available; also applies to inimf&mp
+     -extra_mem_top = 0    % extra high memory for chars, tokens, etc.
+     -extra_mem_bot = 0    % extra low memory for boxes, glue, breakpoints, etc.
+     +extra_mem_top = 100000    % extra high memory for chars, tokens, etc.
+     +extra_mem_bot = 100000    % extra low memory for boxes, glue, breakpoints, etc.
+     
+      obj_tab_size.context = 256000
+
    Alternatively, visit
 
    * http://packages.debian.org/lilypond
diff --git a/NEWS b/NEWS
index aec5cbde5094e5e6c72ad2c13ebb2dfa171c8f4c..481c8bf7c08849445c33961e86b9e6d7b2c9bcd3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,20 +1,12 @@
 
 New features in 1.4
 
-* Finale (.etf), PMX, Musedata and Mup import tools.
-
-* Point and click functionality using emacs and Xdvi.
-
-* Comprehensive documentation, including tutorial.
-
-* Self-documenting: generated internal documentation.
 
-* Includes an extensive glossary of musical terms.
+DESIGN
 
-* Improved design and implementation: Complete rewrite of the
-internals: LilyPond is smaller, cleaner, more flexible, etc.
 
- - More pervasive GUILE integration resulting in:
+* More pervasive GUILE integration resulting in improved design and
+implementation.  LilyPond is smaller, cleaner, more flexible, etc.
 
  - Improved speed with comparable memory footprint
 
@@ -23,38 +15,64 @@ internals: LilyPond is smaller, cleaner, more flexible, etc.
 
  - Improved robustness: Lily almost never crashes.
 
+ - Access to internal music representation
+
 * New font selection scheme similar to Latex-NFSS.
 
-* Medieval notation features: clefs, custodes
+* Flexible formatting mechanism for musical texts.
+
+* Chordnames are now configurable in every respect
+
+* Part combining for orchestral scores and hymns: two voices are
+  combined into a staff automatically, including Solo/a2
+  indications as appropriate.
 
-* Piano pedal support, Arpeggios, Glissandi
 
-* MIDI: dynamics, tempo changes
+ERGONOMICS
 
-* Typography: More elegant slurs, aligned dynamics, text crescendos,
+* Point and click functionality using emacs and Xdvi.
+
+* Rewritten Emacs mode
+
+* Cleaned up syntax details 
+
+* Comprehensive documentation, including a rewritten tutorial.
+
+* All properties have doc strings, and internal documentation is
+generated automatically.
+
+* Windows point-and-click installer 
+
+
+NOTATION FEATURES
+
+* Piano pedals, Arpeggios, Glissandi, many more note head
+shapes, Medieval clefs, custodes.
 
 * Better lyrics placement: Automatical phrasing, melisma alignment,
   and stanza numbering.
 
-* Part combining for orchestral scores and hymns: two voices are
-  combined into a staff automatically, including Solo/a2
-  indications as appropriate.
+* Typography: More elegant slurs, aligned dynamics, text crescendos,
 
-* Chordnames are now configurable in every respect
+* Easy-play note heads
 
-* Easy-play notation
 
-* Finished ouverture Coriolan as full orchestral score example.
+MIDI
+
+* dynamics, tempo changes in the MIDI output
+
+
+MISC
+
+* Finale (.etf), PMX, Musedata and Mup import tools.
 
 * Mutopia ports collection: easy accessible music archive.
 
 * ASCIIScript: ASCII-art output 
 
-* Translations into Japanese, French and Russian
-
-* Many bugfixes.
+* Improved standalone postscript layout.
 
+* Translations into Japanese, French and Russian
 
-Removed features
+* Many many many bugfixes.
 
-* margin shape
diff --git a/VERSION b/VERSION
index bc3645f853f4bf7eae0027aadb44aa4afc323045..a9c088acdfb866bad7fe79953ec4407f3aa55601 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=151
-MY_PATCH_LEVEL=jcn3
+PATCH_LEVEL=152
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 94b3d267a9f8cc711bc25a10c761b60312cf59ee..013bd21e6877be8199c4f06ab02ccb211e17f366 100644 (file)
@@ -1,4 +1,6 @@
 \version "1.3.146"
+
+
 \score
 {
 \notes \relative c'' {
index 81e1945cefe223d7519e4823a580f6dc486a7f73..24d70d3cb1b1c64496189810a3d0c09b628868c1 100644 (file)
@@ -12,6 +12,9 @@ texidoc="
 @end quotation
 
 You mean like this. (Sorry 'bout the nuked indentation.)
+
+Modified to use the standard transpose mechanism. The question is
+how useful these enharmonic modifications are. Mats B.
 @end example
 "
 }
@@ -32,11 +35,11 @@ You mean like this. (Sorry 'bout the nuked indentation.)
      ((eq? a -2) (set! a 0) (set! n (- n 1))))
 
     (if (< n 0) (begin (set!  o (- o 1)) (set! n (+ n 7))))
-    (if (> n 7) (begin (set!  o (+ o 1)) (set! n (- n 7))))
+    (if (> n 6) (begin (set!  o (+ o 1)) (set! n (- n 7))))
 
     (make-pitch o n a)))
 
-#(define (smart-transpose music pitch)
+#(define (simplify music)
   (let* ((es (ly-get-mus-property music 'elements))
          (e (ly-get-mus-property music 'element))
          (p (ly-get-mus-property music 'pitch))
@@ -46,38 +49,36 @@ You mean like this. (Sorry 'bout the nuked indentation.)
     (if (pair? es)
         (ly-set-mus-property
          music 'elements
-         (map (lambda (x) (smart-transpose x pitch)) es)))
+         (map (lambda (x) (simplify x)) es)))
 
     (if (music? alts)
         (ly-set-mus-property
          music 'alternatives
-         (smart-transpose alts pitch)))
+         (simplify alts)))
 
     (if (music? body)
         (ly-set-mus-property
          music 'body
-         (smart-transpose body pitch)))
+         (simplify body)))
 
     (if (music? e)
         (ly-set-mus-property
          music 'element
-         (smart-transpose e pitch)))
+         (simplify e)))
 
     (if (pitch? p)
         (begin
-          (set! p (unhair-pitch (Pitch::transpose p pitch)))
+          (set! p (unhair-pitch p))
           (ly-set-mus-property music 'pitch p)))
 
     music))
 
-
 music = \notes \relative c' { c4 d  e f g a b  c }
 
 \score {
   \notes \context Staff {
     \transpose ais' \music
-    \apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1)))
-      \music
+    \apply #simplify \transpose ais' \music
   }
   \paper { linewidth = -1. }
 }
diff --git a/input/tutorial/solar.ly b/input/tutorial/solar.ly
new file mode 100644 (file)
index 0000000..edc1d82
--- /dev/null
@@ -0,0 +1,15 @@
+
+\score {
+  \notes {
+    \time 4/4
+    \clef treble
+    \key d \minor
+    r4 r8 d''8 cis''4 e''4
+    d''8 a'4. ~ a'4. b'8
+    cis''4 cis''8 cis''8 bis'4 d''8 cis'' ~
+    cis''2 r2
+
+  }
+  \paper { }
+}
+  
index a80f80cd0a1f7a0706079cda4eebae3c216abb43..c9acd9f7e3fb9ed4e771c468e02a85d5c696ebe1 100644 (file)
@@ -1,11 +1,3 @@
-
-
-\header {
- title = "Test"
-}
-
-
 \score {
   \notes { c'4 e'4 g'4 }
-  \paper { }
 } 
index 453dcbf057fb62d14a7c3a32b1b1606f04274492..6786afd72592ff34ac67c8070e9fce44040822a7 100644 (file)
@@ -115,7 +115,7 @@ read_afm_file (String nm)
 
   if (ok)
     {
-      error (_f ("Error parsing AFM file: %s", nm.ch_C ()));
+      error (_f ("Error parsing AFM file: `%s'", nm.ch_C ()));
       exit (2);
     }
   fclose (f);
index 013c5dac4b9a17e6da8230fa86cfb370f82b4bc7..fb12bd8d9d19ee8ca83fc4508eae527d5c29ecea 100644 (file)
@@ -43,7 +43,6 @@ private:
   SCM prev_cpos_;
   SCM prev_octavation_;
   void create_clef ();
-  void set_central_c (SCM, SCM, SCM);
   void set_glyph ();
   void inspect_clef_properties ();
 };
@@ -60,37 +59,6 @@ Clef_engraver::Clef_engraver ()
   prev_cpos_ = prev_glyph_ = SCM_BOOL_F;
 }
 
-void
-Clef_engraver::set_central_c (SCM glyph,SCM clefpos, SCM octavation)
-{
-  prev_cpos_ = clefpos;
-  prev_glyph_ = glyph;
-  prev_octavation_ = octavation;
-
-  SCM p = get_property ("clefPitches");
-  int c0_position =  0;
-  if (gh_list_p (p))
-    {
-      SCM found = scm_assoc (glyph, p);
-      if (found == SCM_BOOL_F)
-       {
-         c0_position =0;
-       }
-      else
-       {
-         c0_position =  gh_scm2int (gh_cdr (found));
-
-         if (gh_number_p (octavation))
-             c0_position -= gh_scm2int (octavation);
-      
-         if (gh_number_p (clefpos))
-           c0_position += gh_scm2int (clefpos);
-       }
-      
-    }
-  daddy_trans_l_->set_property ("centralCPosition", gh_int2scm (c0_position));
-}
-
 void
 Clef_engraver::set_glyph ()
 {
@@ -195,11 +163,14 @@ Clef_engraver::inspect_clef_properties ()
 )
     {
       set_glyph ();
-      set_central_c (glyph, clefpos, octavation);
-       
       create_clef ();
 
       clef_p_->set_grob_property ("non-default", SCM_BOOL_T);
+
+       prev_cpos_ = clefpos;
+       prev_glyph_ = glyph;
+       prev_octavation_ = octavation;
+
     }
 
   if (to_boolean (force_clef))
@@ -209,6 +180,7 @@ Clef_engraver::inspect_clef_properties ()
     }
 }
 
+
 void
 Clef_engraver::stop_translation_timestep ()
 {
index aacce5f99881ba44d164486f4c0f0d0236ced31e..1b8baf9ea931f1fa8b8faf03e08cb65e15ced9b0 100644 (file)
@@ -16,7 +16,9 @@ class Separating_group_spanner
 {
 public:
   static void add_spacing_unit (Grob*me, Item*);
+  static void find_rods (Item*, SCM);
   static void set_interface (Grob*);
+  static bool has_interface (Grob*);
   DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM ));
 };
 
index 5ad7799c11156af1103716be8e144cdd62e8c075..10e56f0883cdd261840c920e37bacb903294790b 100644 (file)
@@ -106,7 +106,7 @@ Paper_outputter*
 Paper_def::paper_outputter_p () 
 {
   String outname = outname_str (); 
-  progress_indication (_f ("paper output to %s...",
+  progress_indication (_f ("paper output to `%s'...",
                           outname == "-" ? String ("<stdout>") : outname));
 
   target_str_global_array.push (outname);
index bfe92de4b87c164803bf84f4f7d60d6d15053235..c146d194a3edbc5ecbbe3761e9808dc176184ebb 100644 (file)
@@ -229,7 +229,7 @@ Paper_outputter::write_header_field_to_file (String filename, String key, String
 {
   if (filename != "-")
     filename += String (".") + key;
-  progress_indication (_f ("writing header field %s to %s...",
+  progress_indication (_f ("writing header field `%s' to `%s'...",
                           key,
                           filename == "-" ? String ("<stdout>") : filename));
   
index be168b2de052d6ff57c7a35a3d5363a431c93f46..5aa7abaa53667e44daabbb0370a87c28df294329 100644 (file)
@@ -165,7 +165,7 @@ Performance::process ()
   out = p.str ();
   
   Midi_stream midi_stream (out);
-  progress_indication (_f ("MIDI output to %s...", out));
+  progress_indication (_f ("MIDI output to `%s'...", out));
   target_str_global_array.push (out);
 
   output (midi_stream);
index 7f25a21dd30c51874851d33cca1740a75ae6341c..0a57fa762c072744bec6deeb43c02c3fa4fcbbb2 100644 (file)
@@ -139,7 +139,7 @@ Piano_pedal_engraver::create_grobs ()
        {
          if (!p->start_req_l_)
            {
-             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: %s",  p->name_));
+             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'",  p->name_));
            }
          else
            {
@@ -151,7 +151,7 @@ Piano_pedal_engraver::create_grobs ()
        {
          if (!p->start_req_l_)
            {
-             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: %s", p->name_));
+             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", p->name_));
            }
          else
            {
index 36f91d131d412a888c938a87a28a7d43121f8ece..3783a353a6b25c8c20a608604b6cb9e97c3dfc29 100644 (file)
@@ -84,7 +84,7 @@ Piano_pedal_performer::create_audio_elements ()
        {
          if (!p->start_req_l_)
            {
-             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: %s", String (p->name_)));
+             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", String (p->name_)));
            }
          else
            {
index 6c1a81c3bb5449fc92d43a483f1f1452cd6b0465..57a6e04e9a0fae2f7106adc7ba4a18411b21b3ac 100644 (file)
@@ -118,7 +118,7 @@ Property_engraver::apply_properties (SCM p, Grob *e, Translator_group*origin)
 
          SCM meta = e->get_grob_property ("meta");
          SCM name = scm_assoc (ly_symbol2scm ("name"), meta);
-         warning (_f ("%s is deprecated.  Use\n \\property %s.%s \\override #'%s = #%s",
+         warning (_f ("`%s' is deprecated.  Use\n \\property %s.%s \\override #'%s = #%s",
                       ly_symbol2string (prop_sym).ch_C (),
                       origin->type_str_.ch_C (),
                       ly_scm2string (gh_cdr (name)).ch_C (),
index 2e4e6b8bb5260dfa301434b1b2bf318fbea89789..c711d24a2bf2f7ba1e110015c1e639477cf93063 100644 (file)
@@ -41,7 +41,7 @@ void write_dependency_file (String fn, Array<String> targets,
 {
   const int WRAPWIDTH = 65;
 
-  progress_indication (_f ("dependencies output to %s...", fn.ch_C ()));
+  progress_indication (_f ("dependencies output to `%s'...", fn.ch_C ()));
   progress_indication ("\n");
   ofstream f (fn.ch_C ());
   if (!f)
index dbef68ff5a95390d58829f5ee7165ede289577c7..bc5e030994bd1404c465ac22bd4b2ee433a40fc3 100644 (file)
 #include "dimensions.hh"
 #include "group-interface.hh"
 
-static void
-do_rod (Item *l, Item *r)
+void
+Separating_group_spanner::find_rods (Item * r, SCM next)
 {
-  Rod rod;
-
-  Interval li (Separation_item::my_width (l));
   Interval ri (Separation_item::my_width (r));
+  if (ri.empty_b ())
+    return;
+
+  /*
+    This is an inner loop, however, in most cases, the interesting L
+    will just be the first entry of NEXT, making it linear in most of
+    the cases.  */
+  for(; gh_pair_p (next); next = gh_cdr (next))
+    {
+      Item *l = dynamic_cast<Item*> (unsmob_grob (gh_car( next)));
+      Item *lb = l->find_prebroken_piece (RIGHT);
+
+      if (lb)
+       {
+         Interval li (Separation_item::my_width (lb));
 
-  rod.item_l_drul_[LEFT] =l;
-  rod.item_l_drul_[RIGHT]=r;
+         if (!li.empty_b ())
+           {
+             Rod rod;
 
-  if (li.empty_b () || ri.empty_b ())
-    rod.distance_f_ = 0;
-  else
-    rod.distance_f_ = li[RIGHT] - ri[LEFT];
+             rod.item_l_drul_[LEFT] = lb;
+             rod.item_l_drul_[RIGHT] = r;
 
-  rod.columnize ();
-  rod.add_to_cols ();
+             rod.distance_f_ = li[RIGHT] - ri[LEFT];
+       
+             rod.columnize ();
+             rod.add_to_cols ();
+           }
+       }
+
+      Interval li (Separation_item::my_width (l));
+      if (!li.empty_b ())
+       {
+         Rod rod;
+
+         rod.item_l_drul_[LEFT] =l;
+         rod.item_l_drul_[RIGHT]=r;
+
+         rod.distance_f_ = li[RIGHT] - ri[LEFT];
+       
+         rod.columnize ();
+         rod.add_to_cols ();
+
+         break;
+       }
+      else
+       /*
+         this grob doesn't cause a constraint. We look further until we
+         find one that does.  */
+       ;
+    }
 }
-  
+
 MAKE_SCHEME_CALLBACK (Separating_group_spanner,set_spacing_rods,1);
 SCM
 Separating_group_spanner::set_spacing_rods (SCM smob)
@@ -45,37 +82,18 @@ Separating_group_spanner::set_spacing_rods (SCM smob)
       /*
        Order of elements is reversed!
        */
-      SCM elt = gh_cadr (s);
-      SCM next_elt = gh_car (s);
+      SCM elt = gh_car (s);
+      Item *r = dynamic_cast<Item*> (unsmob_grob (elt));
 
-      Item *l = dynamic_cast<Item*> (unsmob_grob (elt));
-      Item *r = dynamic_cast<Item*> (unsmob_grob (next_elt));
-
-      if (!r || !l)
+      if (!r)
        continue;
-      
-      Item *lb
-       = dynamic_cast<Item*> (l->find_prebroken_piece (RIGHT));
 
       Item *rb
        = dynamic_cast<Item*> (r->find_prebroken_piece (LEFT));
       
-      do_rod (l,  r);
-      if (lb)
-       {
-         do_rod (lb, r);
-       }
-      
+      find_rods (r, gh_cdr (s));
       if (rb)
-       {
-         do_rod (l, rb);
-       }
-      
-      if (lb && rb)
-       {
-         do_rod (lb, rb);
-
-       }
+       find_rods (rb, gh_cdr (s));
     }
 
   /*
@@ -106,5 +124,10 @@ Separating_group_spanner::add_spacing_unit (Grob* me ,Item*i)
 void
 Separating_group_spanner::set_interface (Grob*)
 {
+}
 
+bool
+Separating_group_spanner::has_interface (Grob*)
+{//todo
+  assert (false);
 }
index 39cfa193c2131a3c1e655cf1711c5f0d187a22de..73e0f2e16070f2f85ccbc11a3b081552e2c9f3d6 100644 (file)
@@ -41,7 +41,7 @@ void
 Separating_line_group_engraver::initialize ()
 {
   sep_span_p_ = new Spanner (get_property ("SeparatingGroupSpanner"));
-  Separating_group_spanner::set_interface (sep_span_p_);
+
   announce_grob (sep_span_p_, 0);
   sep_span_p_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
 }
index d25fa7d5ba75b6e14877f7862cb392115e4b4fb6..fddeb470fe339f9d0f1cf980bfc3cf9273acd1e2 100644 (file)
@@ -25,131 +25,6 @@ Span_bar::add_bar (Grob*me, Grob*b)
   me->add_dependency (b);
 }
 
-MAKE_SCHEME_CALLBACK (Span_bar,brew_molecule,1);
-
-/**
- * Limitations/Bugs:
- *
- * (1) Elements from 'me->get_grob_property ("elements")' must be
- * ordered according to their y coordinates relative to their common
- * axis group parent.  Otherwise, the computation goes mad.  (TODO:
- * apply a sort algorithm that ensures this precondition.)  However,
- * until now, I have seen no case where lily has not fulfilled this
- * precondition.
- *
- * (2) This method depends on bar_engraver not being removed from
- * staff context.  If bar_engraver is removed, the size of the staff
- * lines is evaluated as 0, which results in a solid span bar line
- * with faulty y coordinate.
- *
- */
-SCM
-Span_bar::brew_molecule (SCM smobbed_me) 
-{
-  Grob *me = unsmob_grob (smobbed_me);
-  Span_bar::evaluate_glyph(me);
-  SCM glyph = me->get_grob_property (ly_symbol2scm ("glyph"));
-  String glyph_str = ly_scm2string (glyph);
-  SCM first_elt = me->get_grob_property ("elements");
-
-  // first walk: compute axis_group parent via common_refpoint () on all bars
-  Grob *refpoint = 0;
-  int staff_bar_count = 0;
-  for (SCM elts = first_elt;
-       elts != SCM_EOL;
-       elts = gh_cdr (elts))
-  {
-    SCM smobbed_staff_bar = gh_car (elts);
-    Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
-    refpoint = (staff_bar_count > 0) ?
-      staff_bar->common_refpoint (refpoint, Y_AXIS) :
-      staff_bar;
-    staff_bar_count++;
-  }
-  /* assert: refpoint is an axis-group object */
-  Grob *axis_group = refpoint;
-
-  // second walk: collect span bar components;
-  // compute extent of axis_group
-  Real last_staff_bar_length;
-  Real *interstaff_bar_length = new Real[staff_bar_count];
-  Real *interstaff_bar_yoffs = new Real[staff_bar_count];
-  Molecule *interstaff_bar_molecule = new Molecule[staff_bar_count];
-  Real axis_group_extent = 0.0;
-  staff_bar_count = 0;
-  for (SCM elts = first_elt;
-       elts != SCM_EOL;
-       elts = gh_cdr (elts))
-  {
-    SCM smobbed_staff_bar = gh_car (elts);
-    SCM smobbed_staff_bar_molecule =
-      Bar::brew_molecule (smobbed_staff_bar);
-    Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
-    interstaff_bar_yoffs[staff_bar_count] =
-      staff_bar->relative_coordinate (axis_group, (Axis)Y_AXIS);
-    if (smobbed_staff_bar_molecule != SCM_EOL)
-    {
-      Real staff_bar_length =
-       unsmob_molecule (smobbed_staff_bar_molecule)->
-       extent (Y_AXIS).length ();
-      if (staff_bar_count > 0)
-      {
-       // clone bar_molecule and fix y extent
-       interstaff_bar_length[staff_bar_count] =
-         interstaff_bar_yoffs[staff_bar_count] -
-         interstaff_bar_yoffs[staff_bar_count - 1] -
-         last_staff_bar_length;
-       SCM smobbed_interstaff_bar_molecule = 
-         Bar::compound_barline (staff_bar, glyph_str,
-                                interstaff_bar_length[staff_bar_count]).
-         smobbed_copy ();
-       interstaff_bar_molecule[staff_bar_count] =
-         *unsmob_molecule (smobbed_interstaff_bar_molecule);
-      }
-      else
-      {
-       interstaff_bar_molecule[staff_bar_count] = Molecule::Molecule ();
-      }
-      last_staff_bar_length = staff_bar_length;
-    }
-    else
-    {
-      last_staff_bar_length = 0;
-      interstaff_bar_length[staff_bar_count] = 0;
-      interstaff_bar_molecule[staff_bar_count] = Molecule::Molecule ();
-    }
-    axis_group_extent += last_staff_bar_length;
-    axis_group_extent += interstaff_bar_length[staff_bar_count];
-    staff_bar_count++;
-  }
-  // assert(abs(axis_group_extent -
-  //           axis_group->extent (axis_group, Y_AXIS).length ()) < EPSILON);
-
-  // third walk: correct y axis on all span bar components;
-  // put all components into a single span bar molecule
-  Molecule span_bar_molecule = Molecule::Molecule ();
-  staff_bar_count = 0;
-  for (SCM elts = first_elt;
-       elts != SCM_EOL;
-       elts = gh_cdr (elts))
-  {
-    interstaff_bar_yoffs[staff_bar_count] +=
-      (axis_group_extent - interstaff_bar_length[staff_bar_count]) / 2;
-    interstaff_bar_molecule[staff_bar_count].//DEBUG
-      translate_axis (-1.0 PT, X_AXIS);//DEBUG
-    interstaff_bar_molecule[staff_bar_count].
-      translate_axis (interstaff_bar_yoffs[staff_bar_count], Y_AXIS);
-    span_bar_molecule.add_molecule (interstaff_bar_molecule[staff_bar_count]);
-    staff_bar_count++;
-  }
-
-  // clean-up & exit
-  delete interstaff_bar_length;
-  delete interstaff_bar_yoffs;
-  delete interstaff_bar_molecule;
-  return span_bar_molecule.smobbed_copy ();
-}
-
 MAKE_SCHEME_CALLBACK (Span_bar,width_callback,2);
 SCM
 Span_bar::width_callback (SCM element_smob, SCM scm_axis)
index 6bda7b9030505e1e86c4b31c3a5853cdaaf3f4e3..33fa92d9cd1b93ea70fcc3829a99b16be220dffd 100644 (file)
@@ -411,7 +411,7 @@ type_check_assignment (SCM val, SCM sym,  SCM type_symbol)
 
   if (type_p != SCM_EOL && !gh_procedure_p (type_p))
       {
-       warning (_f ("Can't find property type-check for `%s'.  Perhaps you made a typing error?",
+       warning (_f ("Can't find property type-check for `%s'.  Perhaps you made a typing error? Doing assignment anyway.",
                     ly_symbol2string (sym).ch_C ()));
       }
   else
index bec4f635108ac4ed952e23bbd1c1f6c8b5bbf2d6..b8fa85214a13831a27951128df15a9471bae3b36 100644 (file)
@@ -408,26 +408,11 @@ ScoreContext = \translator {
        voltaVisibility = ##t
        %  name, glyph id, clef position 
        % where is c0 in this clef?
-       clefPitches = #'(("clefs-G" . -4)
-         ("clefs-C" . 0)
-         ("clefs-F" . 4)
-         ("clefs-vaticana_do" . 0)
-         ("clefs-vaticana_fa" . 4)
-         ("clefs-medicaea_do" . 0)
-         ("clefs-medicaea_fa" . 4)
-         ("clefs-hufnagel_do" . 0)
-         ("clefs-hufnagel_fa" . 4)
-         ("clefs-hufnagel_do_fa" . 0)
-         ("clefs-mensural1_c" . 0)
-         ("clefs-mensural2_c" . 0)
-         ("clefs-mensural3_c" . 0)
-         ("clefs-mensural1_f" . 4)
-         ("clefs-mensural2_f" . 4)
-         ("clefs-mensural_g" . -4))
 
        clefGlyph = #"clefs-G"
        clefPosition = #-2
-
+       centralCPosition = #-6
+       
         automaticPhrasing = ##t
        alignmentReference = #-1   % \down
        defaultBarType = #"|"
index 0bdf4c72a6323ed0fbdb9c7204bb73f3e3bbab7d..af4ee134e73a7746255e933378f7bf53c9294f9f 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.151
-Entered-date: 27APR01
+Version: 1.3.152
+Entered-date: 04MAY01
 Description: @BLURB@
 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.151.tar.gz 
+       1000k lilypond-1.3.152.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.151.tar.gz 
+       1000k lilypond-1.3.152.tar.gz 
 Copying-policy: GPL
 End
index 8a440ee5558c8baf89696795d8fce8ef59394efb..6d5329640b29d854465afe7b81afcc5f98132aee 100644 (file)
@@ -1,11 +1,11 @@
 %define info yes
 
 Name: lilypond
-Version: 1.3.151
+Version: 1.3.152
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.151.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.152.tar.gz
 Summary: Create and print music notation 
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 BuildRoot: /tmp/lilypond-install
index f2a37de68f24d34a3e27b899ae35f6dfdc79e933..4b8f84686af5b763a828287fc952a6cc29247463 100644 (file)
 
 Distribution: SuSE Linux 7.0 (i386)
 Name: lilypond
-Version: 1.3.151
+Version: 1.3.152
 Release: 2
 Copyright:    GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.151.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.152.tar.gz
 # music notation software for.. ?
 Summary: A program for printing sheet music.
 URL: http://www.lilypond.org/
diff --git a/mf/feta-braces11.mf b/mf/feta-braces11.mf
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/mf/feta-braces13.mf b/mf/feta-braces13.mf
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/mf/feta-braces16.mf b/mf/feta-braces16.mf
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/mf/feta-braces20.mf b/mf/feta-braces20.mf
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/mf/feta-braces23.mf b/mf/feta-braces23.mf
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/mf/feta-braces26.mf b/mf/feta-braces26.mf
deleted file mode 100644 (file)
index e69de29..0000000
index ba9075da208e81c48fe28c6fd9b59c2c4c0ab327..76916550258dd1052c9a1a0044dec6216bffa86d 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -158,12 +158,12 @@ msgstr "Uralt-Bitte: `%s'"
 
 #: ly2dvi.py:654 scores.cc:44
 #, fuzzy, c-format
-msgid "dependencies output to %s..."
+msgid "dependencies output to `%s'..."
 msgstr "Ausgabe auf Papier auf %s..."
 
 #: ly2dvi.py:665
 #, fuzzy, c-format
-msgid "%s output to %s..."
+msgid "%s output to `%s'..."
 msgstr "MIDI-Ausgabe nach %s..."
 
 #: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:667
@@ -209,7 +209,7 @@ msgstr "Verarbeite..."
 
 #: mup2ly.py:1203
 #, fuzzy, c-format
-msgid "Writing %s..."
+msgid "Writing `%s'..."
 msgstr "Linie ... "
 
 #: update-lily.py:46
@@ -803,7 +803,7 @@ msgstr "Uralt-Bitte: `%s'"
 
 #: paper-def.cc:109
 #, fuzzy, c-format
-msgid "paper output to %s..."
+msgid "paper output to `%s'..."
 msgstr "Ausgabe auf Papier auf %s..."
 
 #: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:99
@@ -812,7 +812,7 @@ msgstr ", bei "
 
 #: paper-outputter.cc:232
 #, fuzzy, c-format
-msgid "writing header field %s to %s..."
+msgid "writing header field `%s' to `%s'..."
 msgstr "Schreibe Datei mit Abhängigkeiten: `%s'..."
 
 #: paper-score.cc:80
@@ -875,7 +875,7 @@ msgstr "von der musiaklischen Definition: %s"
 
 #: performance.cc:168
 #, c-format
-msgid "MIDI output to %s..."
+msgid "MIDI output to `%s'..."
 msgstr "MIDI-Ausgabe nach %s..."
 
 #: phrasing-slur-engraver.cc:119
@@ -1238,7 +1238,7 @@ msgstr "#32 in Vierteln: %d"
 
 #: lilypond-score.cc:108
 #, c-format
-msgid "Lily output to %s..."
+msgid "Lily output to `%s'..."
 msgstr "Lily-Ausgabe nach %s..."
 
 #: lilypond-score.cc:119
index 921e1a200c1deef42cf09861e3f27ecbdbeece7b..ef88e5a85cf8bb9f86d753f8cd6e59bec8a08f4b 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -154,12 +154,12 @@ msgstr "Cr
 
 #: ly2dvi.py:654 scores.cc:44
 #, fuzzy, c-format
-msgid "dependencies output to %s..."
+msgid "dependencies output to `%s'..."
 msgstr "Sortie papier vers %s..."
 
 #: ly2dvi.py:665
 #, fuzzy, c-format
-msgid "%s output to %s..."
+msgid "%s output to `%s'..."
 msgstr "Sortie de Lily vers %s..."
 
 #: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:667
@@ -204,7 +204,7 @@ msgstr "Traitement..."
 
 #: mup2ly.py:1203
 #, fuzzy, c-format
-msgid "Writing %s..."
+msgid "Writing `%s'..."
 msgstr "Ligne ..."
 
 #: update-lily.py:46
@@ -778,7 +778,7 @@ msgstr ""
 
 #: paper-def.cc:109
 #, fuzzy, c-format
-msgid "paper output to %s..."
+msgid "paper output to `%s'..."
 msgstr "Sortie papier vers %s..."
 
 #: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:99
@@ -787,7 +787,7 @@ msgstr ", 
 
 #: paper-outputter.cc:232
 #, fuzzy, c-format
-msgid "writing header field %s to %s..."
+msgid "writing header field `%s' to `%s'..."
 msgstr "impossible d'ouvrir le fichier: `%s'"
 
 #: paper-score.cc:80
@@ -849,7 +849,7 @@ msgstr ""
 
 #: performance.cc:168
 #, c-format
-msgid "MIDI output to %s..."
+msgid "MIDI output to `%s'..."
 msgstr ""
 
 #: phrasing-slur-engraver.cc:119
@@ -1201,7 +1201,7 @@ msgstr ""
 
 #: lilypond-score.cc:108
 #, c-format
-msgid "Lily output to %s..."
+msgid "Lily output to `%s'..."
 msgstr "Sortie de Lily vers %s..."
 
 #: lilypond-score.cc:119
index 6b158b271d2e9c0d5c4ba7c78c4d032a1ec0546c..f7377dc280ed848b42ad9bb9597424785a44cde9 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -159,12 +159,12 @@ msgstr "Genero le voci..."
 
 #: ly2dvi.py:654 scores.cc:44
 #, fuzzy, c-format
-msgid "dependencies output to %s..."
+msgid "dependencies output to `%s'..."
 msgstr "L'output stampato è inviato a %s..."
 
 #: ly2dvi.py:665
 #, fuzzy, c-format
-msgid "%s output to %s..."
+msgid "%s output to `%s'..."
 msgstr "L'output MIDI è inviato a %s..."
 
 #: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:667
@@ -209,7 +209,7 @@ msgstr "Elaboro..."
 
 #: mup2ly.py:1203
 #, fuzzy, c-format
-msgid "Writing %s..."
+msgid "Writing `%s'..."
 msgstr "Genero le voci..."
 
 #: update-lily.py:46
@@ -795,7 +795,7 @@ msgstr "Cosa? Non 
 
 #: paper-def.cc:109
 #, fuzzy, c-format
-msgid "paper output to %s..."
+msgid "paper output to `%s'..."
 msgstr "L'output stampato è inviato a %s..."
 
 #: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:99
@@ -804,7 +804,7 @@ msgstr ", a "
 
 #: paper-outputter.cc:232
 #, fuzzy, c-format
-msgid "writing header field %s to %s..."
+msgid "writing header field `%s' to `%s'..."
 msgstr "scrivo il file delle dipendenze: `%s'..."
 
 #: paper-score.cc:80
@@ -867,7 +867,7 @@ msgstr "della definizione musicale: %s"
 
 #: performance.cc:168
 #, c-format
-msgid "MIDI output to %s..."
+msgid "MIDI output to `%s'..."
 msgstr "L'output MIDI è inviato a %s..."
 
 #: phrasing-slur-engraver.cc:119
@@ -1226,7 +1226,7 @@ msgstr "#32 in un quarto: %d"
 
 #: lilypond-score.cc:108
 #, c-format
-msgid "Lily output to %s..."
+msgid "Lily output to `%s'..."
 msgstr "Output di Lily in %s..."
 
 #: lilypond-score.cc:119
index 2ef4ff69a0480b4a3f981972aa799b5b3ac4eafc..d8003b29cccbb721e81130af7dfa4e46061ab986 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -157,12 +157,12 @@ msgstr "
 
 #: ly2dvi.py:654 scores.cc:44
 #, fuzzy, c-format
-msgid "dependencies output to %s..."
+msgid "dependencies output to `%s'..."
 msgstr "%s ¤Ø paper ½ÐÎÏ..."
 
 #: ly2dvi.py:665
 #, fuzzy, c-format
-msgid "%s output to %s..."
+msgid "%s output to `%s'..."
 msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
 
 #: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:667
@@ -208,7 +208,7 @@ msgstr "
 
 #: mup2ly.py:1203
 #, fuzzy, c-format
-msgid "Writing %s..."
+msgid "Writing `%s'..."
 msgstr "¹Ô ..."
 
 #: update-lily.py:46
@@ -815,7 +815,7 @@ msgstr "
 
 #: paper-def.cc:109
 #, c-format
-msgid "paper output to %s..."
+msgid "paper output to `%s'..."
 msgstr "%s ¤Ø paper ½ÐÎÏ..."
 
 #: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:99
@@ -824,7 +824,7 @@ msgstr ", at "
 
 #: paper-outputter.cc:232
 #, fuzzy, c-format
-msgid "writing header field %s to %s..."
+msgid "writing header field `%s' to `%s'..."
 msgstr "°Í¸´Ø·¸¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß: `%s'..."
 
 #: paper-score.cc:80
@@ -885,7 +885,7 @@ msgstr "
 
 #: performance.cc:168
 #, c-format
-msgid "MIDI output to %s..."
+msgid "MIDI output to `%s'..."
 msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ"
 
 #: phrasing-slur-engraver.cc:119
@@ -1234,7 +1234,7 @@ msgstr "
 
 #: lilypond-score.cc:108
 #, c-format
-msgid "Lily output to %s..."
+msgid "Lily output to `%s'..."
 msgstr "Lily ¤Ï %s ¤Ë½ÐÎϤ·¤Þ¤¹..."
 
 #: lilypond-score.cc:119
index 8fcf5408d52ffb0612788787dbd6c268021da247..29dff958815a1f4a07529a6b33f2d66c5adc80ee 100644 (file)
@@ -203,7 +203,7 @@ msgstr ""
 
 #: mup2ly.py:1203
 #, c-format
-msgid "Writing %s..."
+msgid "Wwriting `%s'..."
 msgstr ""
 
 #: update-lily.py:46
index d95267b6625699dab75485d782d808995515f184..a46eff289e9dbae9edf8813a66253429670fd616 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -165,12 +165,12 @@ msgstr "Uitvoeren %s..."
 
 #: ly2dvi.py:654 scores.cc:44
 #, c-format
-msgid "dependencies output to %s..."
+msgid "dependencies output to `%s'..."
 msgstr "afhankelijkheden uitvoer naar %s..."
 
 #: ly2dvi.py:665
 #, c-format
-msgid "%s output to %s..."
+msgid "%s output to `%s'..."
 msgstr "%s uitvoer naar %s..."
 
 #: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:667
@@ -215,7 +215,7 @@ msgstr "Verwerken..."
 
 #: mup2ly.py:1203
 #, fuzzy, c-format
-msgid "Writing %s..."
+msgid "Writing `%s'..."
 msgstr "Beëidigen ..."
 
 #: update-lily.py:46
@@ -787,7 +787,7 @@ msgstr "Schroot verzoek: `%s'"
 
 #: paper-def.cc:109
 #, c-format
-msgid "paper output to %s..."
+msgid "paper output to `%s'..."
 msgstr "papier uitvoer naar %s..."
 
 #: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:99
@@ -796,7 +796,7 @@ msgstr ", bij "
 
 #: paper-outputter.cc:232
 #, c-format
-msgid "writing header field %s to %s..."
+msgid "writing header field `%s' to `%s'..."
 msgstr "Schijven van kop veld %s naar bestand %s..."
 
 #: paper-score.cc:80
@@ -856,7 +856,7 @@ msgstr "van muzikale definitie: %s"
 
 #: performance.cc:168
 #, c-format
-msgid "MIDI output to %s..."
+msgid "MIDI output to `%s'..."
 msgstr "MIDI uitvoer naar %s..."
 
 #: phrasing-slur-engraver.cc:119
@@ -1202,7 +1202,7 @@ msgstr "#32 in kwart: %d"
 
 #: lilypond-score.cc:108
 #, c-format
-msgid "Lily output to %s..."
+msgid "Lily output to `%s'..."
 msgstr "Lelie uitvoer naar %s..."
 
 #: lilypond-score.cc:119
index 0ec90123995efc9f21f484e8c90c03cdbd987811..8be7cea62911b53f3dc864331db05159797475d9 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -156,12 +156,12 @@ msgstr "
 
 #: ly2dvi.py:654 scores.cc:44
 #, fuzzy, c-format
-msgid "dependencies output to %s..."
+msgid "dependencies output to `%s'..."
 msgstr "\"ÂÕÍÁÖÎÙÊ\" ×Ù×ÏÄ × %s..."
 
 #: ly2dvi.py:665
 #, fuzzy, c-format
-msgid "%s output to %s..."
+msgid "%s output to `%s'..."
 msgstr "×Ù×ÏÄ MIDI × %s..."
 
 #: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:667
@@ -207,7 +207,7 @@ msgstr "
 
 #: mup2ly.py:1203
 #, fuzzy, c-format
-msgid "Writing %s..."
+msgid "Writing `%s'..."
 msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'"
 
 #: update-lily.py:46
@@ -767,7 +767,7 @@ msgstr "
 
 #: paper-def.cc:109
 #, c-format
-msgid "paper output to %s..."
+msgid "paper output to `%s'..."
 msgstr "\"ÂÕÍÁÖÎÙÊ\" ×Ù×ÏÄ × %s..."
 
 #: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:99
@@ -776,7 +776,7 @@ msgstr ", 
 
 #: paper-outputter.cc:232
 #, fuzzy, c-format
-msgid "writing header field %s to %s..."
+msgid "writing header field `%s' to `%s'..."
 msgstr "úÁÐÉÓÙ×ÁÀ ÆÁÊÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ: `%s'..."
 
 #: paper-score.cc:80
@@ -837,7 +837,7 @@ msgstr "
 
 #: performance.cc:168
 #, c-format
-msgid "MIDI output to %s..."
+msgid "MIDI output to `%s'..."
 msgstr "×Ù×ÏÄ MIDI × %s..."
 
 #: phrasing-slur-engraver.cc:119
@@ -1186,7 +1186,7 @@ msgstr "#32 
 
 #: lilypond-score.cc:108
 #, c-format
-msgid "Lily output to %s..."
+msgid "Lily output to `%s'..."
 msgstr "Lily ×ÙÈÏÄ × %s..."
 
 #: lilypond-score.cc:119
index 53d0d6232cf8509d89fa08c3dfc84b9bf1726168..8c82d0f14672e63ab0385fefb03e1bf9420ac3ee 100644 (file)
@@ -1,7 +1,8 @@
-;;
+
 ;; (name . (glyph clef-position octavation))
-;; -- the name clefOctavation is misleading the value 7 is 1 octave not 7 Octaves.
 ;;
+;; -- the name clefOctavation is misleading. The value 7 is 1 octave, not 7 Octaves.
+
 (define supported-clefs '(
          ("treble" . ("clefs-G" -2 0))
          ("violin" . ("clefs-G" -2 0))
        )
 )
 
+; "an alist mapping GLYPHNAME to the position of the central C for that symbol")
+(define c0-pitch-alist
+  '(("clefs-G" . -4)
+         ("clefs-C" . 0)
+         ("clefs-F" . 4)
+         ("clefs-vaticana_do" . 0)
+         ("clefs-vaticana_fa" . 4)
+         ("clefs-medicaea_do" . 0)
+         ("clefs-medicaea_fa" . 4)
+         ("clefs-hufnagel_do" . 0)
+         ("clefs-hufnagel_fa" . 4)
+         ("clefs-hufnagel_do_fa" . 0)
+         ("clefs-mensural1_c" . 0)
+         ("clefs-mensural2_c" . 0)
+         ("clefs-mensural3_c" . 0)
+         ("clefs-mensural1_f" . 4)
+         ("clefs-mensural2_f" . 4)
+         ("clefs-mensural_g" . -4))
+  )
+
 (define (clef-name-to-properties cl)
   (let ((e '())
+       (c0 0)
        (oct 0)
        (l (string-length cl))
        )
 
 
     (set! e  (assoc cl supported-clefs))
+
     (if (pair? e)
        `(((symbol . clefGlyph)
           (iterator-ctor . ,Property_iterator::constructor)
           (value . ,(cadr e))
           )
          
-;        ((symbol . forceClef)
-;         (iterator-ctor . ,Property_iterator::constructor)
-;         (value . #t)
-;         )
-
+         ((symbol . centralCPosition)
+          (iterator-ctor . ,Property_iterator::constructor)
+          (value . ,(+ oct (caddr e) (cdr  (assoc  (cadr e) c0-pitch-alist))))
+          )
          ((symbol . clefPosition)
           (iterator-ctor . ,Property_iterator::constructor)
           (value . ,(caddr e))
index 09b8ea460af1d2d1424dbb7ff7e486d58de5f031..fd4a146c8e772e375868c69981cbb47af2aaf0d9 100644 (file)
        (SpanBar . (
                (break-align-symbol . Staff_bar)
                (bar-size-procedure . ,Span_bar::get_bar_size) 
-               (molecule-callback . ,Span_bar::brew_molecule)
+               (molecule-callback . ,Bar::brew_molecule)
                (visibility-lambda . ,begin-of-line-invisible)
                (X-extent-callback . ,Span_bar::width_callback)
                (Y-offset-callbacks . (,Span_bar::center_on_spanned_callback))
index 7edf9e0455f6b8cebca78babbb9991834afce334..b56382bfe976f74875ae2264fc5be5cd069a1ea1 100644 (file)
@@ -98,15 +98,7 @@ interesting items (ie. note heads, lyric syllables and normal rests)"
      "Clef_engraver"
      "Determine and set reference point for pitches"
      '(Clef OctavateEight)
-     '(
-      clefPosition
-      clefGlyph
-      centralCPosition
-      clefOctavation
-      explicitClefVisibility
-      clefPitches
-
-      )))
+     '( clefPosition clefGlyph centralCPosition clefOctavation explicitClefVisibility )))
    
    (cons
     'A2_engraver
@@ -144,7 +136,6 @@ up for the musicexpr called @code{one}, down for the musicexpr called
      "Generate object to put grace notes from left to right."
      '(GraceAlignment)
      '(
-      
       graceAlignPosition
       graceAccidentalSpace
       )))
index bb2743dab415bdba3b0eda52537f0b38a3f6e76a..5900032c1b5ddef1f702180a7ba829b4e06febcf 100644 (file)
@@ -124,7 +124,6 @@ key signatures after the bar lines:
 (translator-property-description 'clefGlyph string? "Name of the symbol within the music font")
 (translator-property-description 'clefOctavation integer? "Add
 this much extra octavation. Values of 7 and -7 are common.")
-(translator-property-description 'clefPitches list? "an alist mapping GLYPHNAME to the position of the central C for that symbol")
 (translator-property-description 'clefPosition number? "Where should the center of the symbol go?")
 (translator-property-description 'combineParts boolean? "try to combine parts?")
 (translator-property-description 'connectArpeggios boolean? " If
index a64607dbd84bb06c72fab9dde03930a7cc4a4cc0..ed92da172a209791c823199c3283332c0a4fd273 100644 (file)
@@ -255,11 +255,11 @@ def gulp_file(f):
                n = i.tell ()
                i.seek (0,0)
        except:
-               sys.stderr.write ("can't open file: %s\n" % f)
+               sys.stderr.write ("can't open file: `%s'\n" % f)
                return ''
        s = i.read (n)
        if len (s) <= 0:
-               sys.stderr.write ("gulped empty file: %s\n" % f)
+               sys.stderr.write ("gulped empty file: `%s'\n" % f)
        i.close ()
        return s
 
@@ -354,7 +354,7 @@ def lily_key (k):
        type = k[0:3]
        if key_lookup.has_key(type):
                return("%s \\%s" % ( key, key_lookup[type]))
-       sys.stderr.write("Unknown key type %s ignored\n" % type)
+       sys.stderr.write("Unknown key type `%s' ignored\n" % type)
        return key
 
 def shift_key (note, acc , shift):
@@ -696,15 +696,16 @@ def parse_duration (str, parser_state):
        (str, num) = parse_num (str)
        if not num:
                num = 1
-       
-       if str[0] == '/':
-               while str[:1] == '/':
-                       str= str[1:]
-                       d = 2
-                       if str[0] in DIGITS:
-                               (str, d) =parse_num (str)
+       if len(str):
+               if str[0] == '/':
+                       if len(str[0]):
+                               while str[:1] == '/':
+                                       str= str[1:]
+                                       d = 2
+                                       if str[0] in DIGITS:
+                                               (str, d) =parse_num (str)
 
-                       den = den * d
+                                       den = den * d
 
        den = den * default_len
        
@@ -779,7 +780,7 @@ def try_parse_articulation (str, state):
        while str and  artic_tbl.has_key(str[:1]):
                state.next_articulation = state.next_articulation + artic_tbl[str[:1]]
                if not artic_tbl[str[:1]]:
-                       sys.stderr.write("Warning: ignoring %s\n" % str[:1] )
+                       sys.stderr.write("Warning: ignoring `%s'\n" % str[:1] )
 
                str = str[1:]
 
@@ -1247,12 +1248,12 @@ for f in files:
        if f == '-':
                f = ''
 
-       sys.stderr.write ('Parsing... [%s]\n' % f)
+       sys.stderr.write ('Parsing `%s\'...\n' % f)
        parse_file (f)
 
        if not out_filename:
                out_filename = os.path.basename (os.path.splitext (f)[0]) + ".ly"
-       sys.stderr.write ('Ly output to: %s...' % out_filename)
+       sys.stderr.write ('lilypond output to: `%s\'...' % out_filename)
        outf = open (out_filename, 'w')
 
 #      dump_global (outf)
index c450497c9ca77f6c7803cab253833793ecad113c..c4e0619901c52c2c3cc22ce0d4e8c797940189da 100644 (file)
@@ -968,7 +968,7 @@ for f in files:
                do_one_file (f)
        except UnknownVersion:
                sys.stderr.write ('\n')
-               sys.stderr.write ("%s: can't determine version for %s" % (program_name, f))
+               sys.stderr.write ("%s: can't determine version for `%s'" % (program_name, f))
                sys.stderr.write ('\n')
                if assume_old:
                        fv = from_version
@@ -976,6 +976,6 @@ for f in files:
                        do_one_file (f)
                        from_version = fv
                else:
-                       sys.stderr.write ("%s: skipping: %s " % (program_name,  f))
+                       sys.stderr.write ("%s: skipping: `%s' " % (program_name,  f))
                pass
 sys.stderr.write ('\n')
index ab5ce0f5bf919011d6480b2a69311404a096ff28..c728cd78844bec3de79f3362a48b84a621971944 100644 (file)
@@ -135,9 +135,9 @@ verbose_p = 0
 # feta16.{afm,mf,tex,tfm}, and only set env upon failure.
 #
 environment = {
-       'MFINPUTS' : datadir + '/mf:',
-       'TEXINPUTS': datadir + '/tex:' + datadir + '/ps:.:',
-       'TFMFONTS' : datadir + '/tfm:',
+       'MFINPUTS' : ':' + datadir + '/mf',
+       'TEXINPUTS': ':' + datadir + '/tex:' + datadir + '/ps',
+       'TFMFONTS' : ':' + datadir + '/tfm',
        'GS_FONTPATH' : datadir + '/afm:' + datadir + '/pfa',
        'GS_LIB' : datadir + '/ps',
 }
@@ -146,7 +146,7 @@ def setup_environment ():
        for key in environment.keys ():
                val = environment[key]
                if os.environ.has_key (key):
-                       val = val + os.pathsep + os.environ[key]
+                       val = os.environ[key] + os.pathsep + val 
                os.environ[key] = val
 
 def identify ():
@@ -767,7 +767,7 @@ if files and files[0] != '-':
                depfile = os.path.join (outdir, outbase + '.dep')
                generate_dependency_file (depfile, depfile)
                if os.path.isfile (depfile):
-                       progress (_ ("dependencies output to %s...") % depfile)
+                       progress (_ ("dependencies output to `%s'...") % depfile)
 
        for i in targets.keys ():
                ext = string.lower (i)
@@ -777,7 +777,7 @@ if files and files[0] != '-':
                if reldir != '.':
                        outname = os.path.join (reldir, outname)
                if os.path.isfile (abs):
-                       progress (_ ("%s output to %s...") % (i, outname))
+                       progress (_ ("%s output to `%s'...") % (i, outname))
                elif verbose_p:
                        warning (_ ("can't find file: `%s'") % outname)