]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.1.62 release/1.1.62
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 18 Jul 1999 22:52:01 +0000 (00:52 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 18 Jul 1999 22:52:01 +0000 (00:52 +0200)
168 files changed:
ANNOUNCE-1.2
Documentation/faq.yo
Documentation/man/convert-mudela.yo
Documentation/man/mudela-book.yo
Documentation/man/out/convert-mudela.1
Documentation/man/out/mudela-book.1
Documentation/tex/lilypond-regtest.doc
Documentation/tex/reference-manual.yo
NEWS
TODO
VERSION
input/GNUmakefile
input/bugs/auto-staff-switch.ly [new file with mode: 0644]
input/denneboom.ly [new file with mode: 0644]
input/keys.ly [deleted file]
input/kortjakje.ly [deleted file]
input/part.ly [deleted file]
input/pedal.ly [deleted file]
input/rhythm.ly
input/scales.ly [deleted file]
input/scripts.ly [deleted file]
input/test/allfontstyle.ly [new file with mode: 0644]
input/test/alphabet.ly [deleted file]
input/test/beam-position.sly
input/test/beam-repeat.ly [deleted file]
input/test/beam-tremolo.ly [deleted file]
input/test/big-test.ly [deleted file]
input/test/denneboom.ly [deleted file]
input/test/find-fifths.ly [deleted file]
input/test/gourlay.ly
input/test/grace-end.fly [new file with mode: 0644]
input/test/grace.ly
input/test/keys2.ly [new file with mode: 0644]
input/test/lyric-combine.ly [new file with mode: 0644]
input/test/repeat-semifold.ly
input/test/repeat-unfold.ly
input/test/rhythm-lyric.ly [deleted file]
input/test/rhythm-melody.fly [deleted file]
input/test/rhythm.ly [deleted file]
input/test/rhythmic-staff.ly [new file with mode: 0644]
input/test/rhythmic.ly [deleted file]
input/test/scripts.ly [new file with mode: 0644]
input/test/size11.ly [new file with mode: 0644]
input/test/size13.ly [new file with mode: 0644]
input/test/size16.ly [new file with mode: 0644]
input/test/size20.ly [new file with mode: 0644]
input/test/size23.ly [new file with mode: 0644]
input/test/size26.ly [new file with mode: 0644]
input/test/slur-swap.ly [deleted file]
input/test/spacing-tight.ly [new file with mode: 0644]
input/test/staff-margin-partial.ly [new file with mode: 0644]
input/test/unfold.ly [deleted file]
input/twinkle.ly
lib/include/input.hh
lib/include/source.hh
lib/input.cc
lily/afm.cc
lily/align-note-column-engraver.cc
lily/axis-group-element.cc
lily/axis-group-spanner.cc
lily/break-algorithm.cc [new file with mode: 0644]
lily/break-align-item.cc
lily/break.cc [deleted file]
lily/extender-engraver.cc
lily/folded-repeat-iterator.cc [new file with mode: 0644]
lily/grace-iterator.cc
lily/grace-position-engraver.cc
lily/hyphen-engraver.cc
lily/includable-lexer.cc
lily/include/afm.hh
lily/include/extender-engraver.hh
lily/include/folded-repeat-iterator.hh
lily/include/font-metric.hh
lily/include/grace-iterator.hh
lily/include/hyphen-engraver.hh
lily/include/line-of-score.hh
lily/include/lyric-combine-music-iterator.hh [new file with mode: 0644]
lily/include/lyric-combine-music.hh [new file with mode: 0644]
lily/include/mudela-version.hh
lily/include/music-iterator.hh
lily/include/music-list-iterator.hh [deleted file]
lily/include/music-list.hh
lily/include/music-wrapper-iterator.hh
lily/include/music-wrapper.hh
lily/include/music.hh
lily/include/musical-request.hh
lily/include/new-repeated-music.hh
lily/include/note-head-side.hh
lily/include/note-heads-engraver.hh
lily/include/parseconstruct.hh
lily/include/re-rhythmed-music.hh [deleted file]
lily/include/relative-music.hh
lily/include/request-chord-iterator.hh
lily/include/sequential-music-iterator.hh
lily/include/simultaneous-music-iterator.hh
lily/include/spanner.hh
lily/include/tfm.hh
lily/include/transposed-music.hh
lily/include/unfolded-repeat-iterator.hh
lily/lexer.ll
lily/lily-guile.cc
lily/line-of-score.cc
lily/lookup.cc
lily/lyric-combine-music-iterator.cc [new file with mode: 0644]
lily/lyric-combine-music.cc [new file with mode: 0644]
lily/main.cc
lily/melisma-engraver.cc [new file with mode: 0644]
lily/music-iterator.cc
lily/music-list-iterator.cc [deleted file]
lily/music-list.cc
lily/music-sequence.cc
lily/music-wrapper-iterator.cc
lily/music-wrapper.cc
lily/music.cc
lily/musical-request.cc
lily/my-lily-lexer.cc
lily/note-head-side.cc
lily/note-heads-engraver.cc
lily/paper-def.cc
lily/parser.yy
lily/re-rhythmed-music.cc [deleted file]
lily/relative-octave-music.cc
lily/repeat-engraver.cc
lily/repeated-music-iterator.cc [deleted file]
lily/repeated-music.cc
lily/request-chord-iterator.cc
lily/scope.cc
lily/sequential-music-iterator.cc
lily/simultaneous-music-iterator.cc
lily/spacing-spanner.cc
lily/spanner.cc
lily/super-element.cc
lily/tfm.cc
lily/time-scaled-music-iterator.cc
lily/transposed-music.cc
lily/unfolded-repeat-iterator.cc
lily/volta-spanner.cc
lily/word-wrap.cc
ly/auto-beam-settings.ly
ly/declarations.ly
ly/engraver.ly
ly/generic-paper.ly
ly/paper11.ly
ly/paper13.ly
ly/paper16.ly
ly/paper20.ly
ly/paper23.ly [new file with mode: 0644]
ly/paper26.ly
ly/params.ly
ly/property.ly
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
mudela-mode.el
mutopia/F.Schubert/GNUmakefile
mutopia/F.Schubert/standchen.ly
mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly
mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Capriccio.ly
mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly
mutopia/J.S.Bach/wtk1-fugue1.ly
mutopia/J.S.Bach/wtk1-prelude1.ly
mutopia/J.S.Bach/wtk1-prelude2.ly.m4 [deleted file]
mutopia/los-toros-oboe.ly [deleted file]
ps/lilyponddefs.ps
scm/lily.scm
scripts/abc2ly.py
scripts/convert-mudela.py
scripts/mudela-book.py

index 2ff73be073f7b6e7299333c524eab5b6a73b8b53..f0246bb97a18049fabd4a915d1650bc615e638c0 100644 (file)
@@ -10,8 +10,10 @@ GNU LilyPond - The Music Typesetter
 
 WHAT IS LilyPond?
 
 
 WHAT IS LilyPond?
 
-LilyPond is the GNU Project music typesetter. It transforms a musical
-description file into beautiful sheet music.
+LilyPond is the GNU Project music typesetter.
+
+LilyPond produces beautiful sheet music using a high level description
+file as input.
 
 
 BROWSE
 
 
 BROWSE
@@ -26,36 +28,36 @@ DOWNLOAD
 Sources for this project are on
 
        ftp://ftp.cs.uu.nl/~hanwen/lilypond/ (Europe)
 Sources for this project are on
 
        ftp://ftp.cs.uu.nl/~hanwen/lilypond/ (Europe)
+       ftp://ftp.gnu.org/
+
+Prepackaged i386 and PPC packages for both Debian and RedHat GNU are
+also available.
 
 
-Prepackaged i386 and PPC for both Debian and RedHat are also
-available.
-       
 
 WHAT'S NEW?
 
 * Large cleanups, enhanced design and GUILE integration for smaller
   memory footprint and more flexible code.
 
 
 WHAT'S NEW?
 
 * Large cleanups, enhanced design and GUILE integration for smaller
   memory footprint and more flexible code.
 
-* Direct output to PostScript (optional), or as GUILE script.
+* Direct output to PostScript (optional), PDFTeX or as GUILE script.
 
 * convertors for ABC and MUP formats.
 
 * Font: now available as scaleable PostScript.  New glyphs: time
   signature, more note heads.
 
 
 * convertors for ABC and MUP formats.
 
 * Font: now available as scaleable PostScript.  New glyphs: time
   signature, more note heads.
 
-* Enhanced input:  semi-automatic beaming, (nested) tuplets, (nested)
-  repeats, automatic staff switching, chordnames.
+* Enhanced input: semi-automatic beaming, (nested) tuplets, (nested)
+  repeats, automatic staff switching, chordnames, automatic Lyrics
+  durations.
   
 * Grace notes, volta brackets, better spacing, multiple styles for
   note heads and time signatures, breathing signs, lyric extenders,
   cross staff beaming and slurring.
   
 * Grace notes, volta brackets, better spacing, multiple styles for
   note heads and time signatures, breathing signs, lyric extenders,
   cross staff beaming and slurring.
-
+  
 * --safe option for the paranoid
 
 * More elegant spacing.  Text is spaced exactly.
 
 * --safe option for the paranoid
 
 * More elegant spacing.  Text is spaced exactly.
 
-* The Mutopia archive is now a separate effort
-
 * lots of bugfixes
 
 
 * lots of bugfixes
 
 
index 02fe4d64a192500ca28e60a76711cd4cfd1932ed..e365332c99fb91754782b3e2432d0dfb1455490c 100644 (file)
@@ -426,13 +426,12 @@ verb(
     lilypond -fps foo.ly
 )
 it() To view the file(.ps) output with GhostView, set GS_FONTPATH to the 
     lilypond -fps foo.ly
 )
 it() To view the file(.ps) output with GhostView, set GS_FONTPATH to the 
-directory containing the file(pfa)s, and set GS_LIB to the directory containing the file(.ps) library files of LilyPond.  In the source tree, these are file(mf/out/) and file(ps/).
+directory containing the file(pfa)s.  In the source tree, this is file(mf/out/).
 
 
 i.e. do something like:
 verb(
    export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out
 
 
 i.e. do something like:
 verb(
    export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out
-   export GS_LIB=$HOME/usr/src/lilypond/ps
    gv foo.ps &
 )
 )
    gv foo.ps &
 )
 )
index 70b122276431638710ba446f473e32f95de5806d..ea6cbe9b31b91585337de8604bcfdf7ca4c74fa6 100644 (file)
@@ -29,9 +29,9 @@ manpagesynopsis()
 manpageoptions()
 description(
 dit(--output)
 manpageoptions()
 description(
 dit(--output)
-    The output file to write [FIXME, doesn't work]
+    The output file to write.  
 dit(--edit)
 dit(--edit)
-    Do an inline edit of the input file. override @samp{--output}
+    Do an inline edit of the input file. override code(--output)
 dit(--show-rules)
     shows all known conversions, and exit
 dit(--from=FROM_PATCHLEVEL)
 dit(--show-rules)
     shows all known conversions, and exit
 dit(--from=FROM_PATCHLEVEL)
index 1c79800ae4ca551e7c585199ff717fd4c6e7f3af..fbdd3787a1d616451c3e9bde5f7385949c31cb88 100644 (file)
@@ -75,7 +75,8 @@ dit(--outname=FILE)
     The name of LaTeX() file to output. If this option  is not given,
 the output name derived from the input name.
 dit(--outdir=DIRECTORY)
     The name of LaTeX() file to output. If this option  is not given,
 the output name derived from the input name.
 dit(--outdir=DIRECTORY)
-    The directory to output lilypond output and input to.
+    The name of the directory to output lilypond output and input to.
+    This must be a name; the subdirectory will be created in the cwd. [FIXME]
 dit(--help)
        Print a short help message
 dit(--dependencies)
 dit(--help)
        Print a short help message
 dit(--dependencies)
index a25b0aff250bc5f63e8f619fd3facc6daece50c6..13616a7bc41081c590505456928c9c5c681aa372 100644 (file)
@@ -18,9 +18,9 @@ convert-mudela [options] [files]
 .PP 
 .SH "OPTIONS" 
 .IP "--output" 
 .PP 
 .SH "OPTIONS" 
 .IP "--output" 
-The output file to write [FIXME, doesn\'t work]
+The output file to write\&.  
 .IP "--edit" 
 .IP "--edit" 
-Do an inline edit of the input file\&. override @samp{--output}
+Do an inline edit of the input file\&. override \f(CW--output\fP
 .IP "--show-rules" 
 shows all known conversions, and exit
 .IP "--from=FROM_PATCHLEVEL" 
 .IP "--show-rules" 
 shows all known conversions, and exit
 .IP "--from=FROM_PATCHLEVEL" 
index 46d16ab7dcd21b09f04613aef0250f59b4d1bf8d..0d9e0524d589c528d89773edc88cda60023b1d46 100644 (file)
@@ -70,7 +70,8 @@ given to \ebegin{mudela}
 The name of  file to output\&. If this option  is not given,
 the output name derived from the input name\&.
 .IP "--outdir=DIRECTORY" 
 The name of  file to output\&. If this option  is not given,
 the output name derived from the input name\&.
 .IP "--outdir=DIRECTORY" 
-The directory to output lilypond output and input to\&.
+The name of the directory to output lilypond output and input to\&.
+This must be a name; the subdirectory will be created in the cwd\&. [FIXME]
 .IP "--help" 
 Print a short help message
 .IP "--dependencies" 
 .IP "--help" 
 Print a short help message
 .IP "--dependencies" 
index 6412e1827da53bd64388468ed4e31142d3499616..6c6cdc4796739aff7b22cd47a9c9759a33629110 100644 (file)
@@ -6,9 +6,10 @@
 \begin{document}
 \maketitle
 
 \begin{document}
 \maketitle
 
-This document tries give an brief overview of LilyPond features. When
+This document tries give an brief overview of LilyPond features.  When
 the text correspond with the shown notation, we consider LilyPond
 the text correspond with the shown notation, we consider LilyPond
-Officially BugFree (tm).
+Officially BugFree (tm).  This document is intended for finding bugs,
+and documenting bugfixes.
 
 \section{Notes and rests} 
 
 
 \section{Notes and rests} 
 
@@ -148,6 +149,18 @@ Folded.  This doesn't make sense without alternatives, but it works.
 
 \mudelafile{repeat-fold.ly}
 
 
 \mudelafile{repeat-fold.ly}
 
+\section{Lyrics}
+
+Lyrics can be set to a melody automatically.  Excess lyrics will be
+dumped.  Lyrics will not be set over rests.  You can have melismata by
+setting a property melismaBusy.  If you want a different order than
+first Music, then Lyrics, you must precook a chord of staffs/lyrics
+and label those.  Of course \verb+\rhythm+ ignores any other rhythms
+in the piece.  Hyphens and extenders do not assume anything about
+lyric lengths, so they continue to work.
+
+\mudelafile{lyric-combine.ly}
+
 \section{Multiple notes}
 
 Rests should not collide with beams, stems and noteheads.  Rests may
 \section{Multiple notes}
 
 Rests should not collide with beams, stems and noteheads.  Rests may
@@ -177,6 +190,13 @@ effects.  In this example, space for opposite pointed stems is adjusted
 
 \mudelafile{stem-spacing.sly}
 
 
 \mudelafile{stem-spacing.sly}
 
+Even if a line is very tightly spaced,  there will still be room
+between prefatory matter and the following notes.  The same holds at
+the end of line.
+
+\mudelafile{spacing-tight.ly}
+
+
 \section{Global stuff}
 
 Markings that are attached to (invisible) barlines are 
 \section{Global stuff}
 
 Markings that are attached to (invisible) barlines are 
@@ -200,24 +220,41 @@ two measures all have the same distance from each other:
 
 \mudelafile{breathing-sign.ly}
 
 
 \mudelafile{breathing-sign.ly}
 
+Fonts are  available in a default set of sizes: 11, 13, 16, 20, 23 and
+26pt staffheight.  Sizes of the text fonts and symbol fonts are made
+to match the staff dimensions. 
+
+\mudelafile{size11.ly}
+
+\mudelafile{size13.ly}
+
+\mudelafile{size16.ly}
+
+\mudelafile{size20.ly}
+
+\mudelafile{size23.ly}
+
+\mudelafile{size26.ly}
+
 
 \section{Clefs and Time Signatures}
 
 The transparent clef should not occupy any space and with style
 \texttt{fullSizeChanges}, the changing clef should be typeset in full
 size. For octaviated clefs, the ``8'' should appear closely above or
 
 \section{Clefs and Time Signatures}
 
 The transparent clef should not occupy any space and with style
 \texttt{fullSizeChanges}, the changing clef should be typeset in full
 size. For octaviated clefs, the ``8'' should appear closely above or
-below the clef respectively.  The ``8'' is processed in a rather
-convoluted way, so this is fragile as well.
+below the clef respectively.  The ``8'' is processed in a convoluted
+way, so this is fragile as well.
 
 \mudelafile{clefs.ly}
 
 
 \mudelafile{clefs.ly}
 
+\def\bla#1{%the input file is too long and does not test for specific bugs
 By default, time signatures are written with two numbers. With style
 ``C'', 4/4 and 2/2 are written with their corresponding symbols and
 with style ``old'', 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and
 9/8 are typeset with symbols, all other signatures retain the default
 layout. The style ``1'', gives single number signatures for all
 signatures. 
 By default, time signatures are written with two numbers. With style
 ``C'', 4/4 and 2/2 are written with their corresponding symbols and
 with style ``old'', 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and
 9/8 are typeset with symbols, all other signatures retain the default
 layout. The style ``1'', gives single number signatures for all
 signatures. 
-
-\mudelafile{time.fly}
-
+%
+\mu delafile{time.fly}
+}
 \end{document}
 \end{document}
index e1dd3615669dedb0ccb0b607ecdd81e1794b48d6..4e5e209a0c8a4b7fbca3c0debccce7e0f066ef19 100644 (file)
@@ -12,16 +12,6 @@ COMMENT(
 
   BUGS:
 
 
   BUGS:
 
-    Causes segfault:
-
-    \score{
-      \notes{  \context Voice {
-         \repeat fold 2 { a b c d } {}
-     }
-     }
-    }
-    
-
    restStyle=mensural doesn't seem to work (lots of characters not found
      for rests.fly)
 
    restStyle=mensural doesn't seem to work (lots of characters not found
      for rests.fly)
 
@@ -33,8 +23,6 @@ TODO:
       Is there a simple way to explain this, or is the behavior
       too complicated for a reasonable explanation?
    accordion symbols
       Is there a simple way to explain this, or is the behavior
       too complicated for a reasonable explanation?
    accordion symbols
-   interstaff beams (beam-interstaff.ly)
-   interstaff slurs (see preludes-1.ly)
 )
 
 
 )
 
 
@@ -991,7 +979,6 @@ verb(
 
 END OF COMMENT  )
 
 
 END OF COMMENT  )
 
-
 sect(Repeats)
 
 In order to specify repeats, use the code(\repeat) keyword.  By
 sect(Repeats)
 
 In order to specify repeats, use the code(\repeat) keyword.  By
@@ -1035,6 +1022,48 @@ mudela(fragment,verbatim)(
 }})
 
 
 }})
 
 
+
+sect(Ambiguities)
+
+The grammar contains a number of ambiguities.  We hope to resolve most
+of them at a later time. 
+
+itemize(
+it()
+The assignment
+verb(
+foo = bar)
+COMMENT(
+
+)Can be interpreted as making a string identifier code(\foo) containing
+code("foo"), or a music identifier containing the lyric lyric `foo'.
+
+Since this assignment is possible at top-level and within paper, these
+are two conflicts.
+it()The assignment
+verb( foo = -6
+)Can be interpreted as making a int identifier containing -6, or a
+request identifier containing the fingering `6' (with neutral direction).
+
+Since this assignment is possible at top-level and within paper, these
+are two conflicts.
+it() A chord followed by
+code(-3)
+can be interpreted as a chord substraction, or as the fingering  `2' (with
+neutral direction)
+it() Similarly code(^2) is a conflict.
+ chord_addition '^' ->? 
+it()
+If you do a nested repeat,
+verb (
+\repeat ...
+  \repeat ..
+  \alternative
+  ) then it ambiguous to which code(\repeat) the code(\alternative)
+  belongs. This is the classic if-then-else dillema.  It may be solved
+  by using braces. 
+)
+
 sect(Keywords)
 
 Keywords sometimes appear alone, but usually they require arguments.
 sect(Keywords)
 
 Keywords sometimes appear alone, but usually they require arguments.
diff --git a/NEWS b/NEWS
index 11181c4da0acb2c07ce59b2cfccbb8294a15ccc5..fbaecd7e79662099ed29e88fa1362f881c8fefd3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,49 @@
+pl 61.hwn2
+       - revise / junk various input files.
+       - junk Music_list_iterator
+       - bf: declared paper + \shape
+       - bf: \shape and wordwrap
+       - Busy_playing_req ()
+       - Music_iterator::try_music_in_children (),
+so explicit \context Staff is often not needed for
+         * tuplets
+         * repeats
+       - automatic rest detection for \rhythm
+       - regtest tight-spacing.ly
+       - regtest lyric-combine.ly
+       - Melisma_playing_req, Melisma_engraver, Busy_playing_req:
+stuff  for syncing music & lyrics.
+       - simplify Extender_engraver, Hyphen_engraver.  Assume lyrics come in from only one voice.      
+       - docced ambiguities in grammar.
+       - mudela-book -I behavior, verbosity.
+       - state search path when file not found
+
+pl 61.hwn1
+       - bf: \scm with --safe
+       - (ly-gulp-file)
+       - no need to set GS_LIBDIR, .ps files are inlined and directly
+printable.
+       - bf: spacing engine
+       - fixed paper11/13/16/20/23/26.ly
+       - use (header-end) iso {ps,tex}setting
+       - bf: convert-mudela --output
+       - move \version check to lexer.ll
+       - moved repeated-music-iterator.cc to folded-repeat-iterator.cc
+       - bf: broken crescendi
+       - removed delayed Spanner breaking.
+       - new implementation of \rhythm:
+         * Lyric_combine_music
+         * Lyric_combine_music_iterator
+         * \property melismaBusy sets melisma state.
+         * (commented out in parser.yy -- solution is not good enough yet.)
+       - bf: record def spot of seq/sim music
+       - junk Music_iterator::next_music_l (), Music::to_rhythm () & friends.
+       - junk Re_rhythmed_music & friends
+       - mudela 1.1.62: \shape = -1 -2 -3; -> \shape -1, -2, -3; etc.
+       solves one ambiguity.
+       - grace notes at end of music don't crash Lily.
+
+*******
 pl 60.jcn2
        - moved creation of $BUILDDIR/share/locale into set-lily.sh
        - slur slope change constraints when snapping
 pl 60.jcn2
        - moved creation of $BUILDDIR/share/locale into set-lily.sh
        - slur slope change constraints when snapping
@@ -5,7 +51,7 @@ pl 60.jcn2
        - don't typeset unfinished (auto) beams
 
 pl 60.jbr1
        - don't typeset unfinished (auto) beams
 
 pl 60.jbr1
-        - Documentation/ntweb/angels.y,Documentation/ntweb/guile.patch: added
+        - Documentation/ntweb/angels.ly, Documentation/ntweb/guile.patch: added
         - Documentation/ntweb/GNUmakefile: add above to EXTRA_DIST_FILES
 
 pl 59.mb2
         - Documentation/ntweb/GNUmakefile: add above to EXTRA_DIST_FILES
 
 pl 59.mb2
diff --git a/TODO b/TODO
index e4b3b4ec17d5134cf3456bf61357ef9f8df8ee8f..7a9ca6eefe97785f1ac2b3318001e253b1fa33a8 100644 (file)
--- a/TODO
+++ b/TODO
@@ -9,133 +9,35 @@ Most of the items are marked in the code as well
 Grep for TODO and ugh/ugr/urg.  
 
 .* TODO before 1.2
 Grep for TODO and ugh/ugr/urg.  
 
 .* TODO before 1.2
-. * rename 'staff_line_leading' (who is being lead where?) to
-staff_space, interline; (or other meaningful name) and use throughout
-lily
-
-[-> leading are the lead strips between the sticks (lines) of
-typeface. ie. leading is vertical space  --hwn]
-. * Rewrite \rhythm to be during interpreting.
-. * move \version check to lexer.ll
-. * junk delayed spanner breaking.
-. * core dump on broken (de)crescendo
 . * align left edge of broken (de)cresc/slur/tie/tuplet/volta
 . * align left edge of broken (de)cresc/slur/tie/tuplet/volta
-. * check dangling_scm_sym working.
+. * auto-staff-switching.
+. * broken examples:
+mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly
+mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly
+mutopia/J.S.Bach/Solo-Cello-Suites/*
+mutopia/Coriolan/*
+
 . * spacing of accidentals
 . * key restorations & repeats
 . * spacing of accidentals
 . * key restorations & repeats
-. * 
-So how do I do what I want to do?
-
-In Caro Mio Ben, bar 8, there's a syllable that starts on a note, and
-ends on a pair of grace notes.  Standard practice is to mark this with
-a slur starting on the main note and ending on the grace note, so a
-singer knows where to break the words.
-
-In bar 26, there's a \p marker that should appear below the grace
-note.
-
-In bar 27, there's a crescendo that's supposed to start at the start
-of the grace notes and extend to the note after the grace notes.
-
-How do I specify these?
 . * spanners from grace to  normal ctxt
 . * spanners from grace to  normal ctxt
-. * Glen:
-
-5. Sometimes lyrics extend past the right end of the staff. I guess that
-this is a similar problem (if not another symptom of the same problem) as
-one of the spacing bugs mentioned in the TODO.
-. * 4.  Lyrics and grace sections don't go too well together.
-        The words are aligned with the main note, not the start of the
-        grace note.  This is usually wrong, but is sometimes right.
-. * Auto_beam debugging output (waarom/wanneer heb jij die weggehaald?)
-.  * Rename illegal to invalid
-.  * Mats:
-
-- The Postscript output is still very experimental
-
-- It is impossible to typeset two textual scripts that are stacked
-  on top of eachother and avoids note collisions and at the same
-  time are typeset with different textStyle. I tried to move around
-  the text_engraver and other engravers between Voice and Thread 
-  but the granularity is not fine enough, the scripts have to 
-  share the same engraver in order to be get correct vertical 
-  position but than they cannot have different style.
-  In my opinion, all scripts that share the same staff, should
-  be stacked vertically, avoiding collisions with the notes
-  in all voices.
-
-- I'd like to change the \repetitions command to Jan's suggested
-  syntax: \repeat "repeatsymbol" 2 {...}, but I'm not sure that
-  I understand the implementation of repeats well enough.
-
-- The paper11/13/26 files have to be updated.
 . * Grace_slur_engraver.
 . * Grace_slur_engraver.
-. * (gulp-file-to-str) for LilyPond
+. * paperXX.ly \quartwidth, font setting not up to date. (Should read from AFM?)
 . * input/star-spangled-banner.ly: fold for lyrics?
 . * input/star-spangled-banner.ly: fold for lyrics?
-. * don't create $srcdir/share/
 . * Break_req handling is silly (break_forbid () + \break fucks up.)
 . * Break_req handling is silly (break_forbid () + \break fucks up.)
-. * hangOnClef with non-breakable clefs.
 . * account for accidentals in spacing.
 . * account for accidentals in spacing.
-. * collision of lyrics with span_bars. See star-spangled.
-. * fix partial measures in meaningful way.
-. * relative mode for midi2ly
-. * 
-Crescendi/diminuendi that cross a line break lose their vertical
-position and all end up above the top staff line, see the 
-following example.
-
-----------------
-\score{
-  \context StaffGroup <
-    \context Staff=s1 \notes\relative c'{
-      c d e f | 
-      g f e d | \break %% If this break is removed, it works fine
-      c d e f |}
-    \context Staff=s2 \notes\relative c'{
-      c \< d e f | 
-      g f e d | 
-      c d e \! f |}
-  >
-}
-. * uniformise recent feta contributions.
-.  * bigger and fatter 4/4 C
-. * sort out directory stuff.
-.  * --prefix option?
-.  * -I option per filetype?
-.  * kpathsea?
-. * ly2dvi/lilypond logfile.
-. * fractional chord durs.
-. * hang Item on Spanner
-. * do --safe for PS output?
-. * convert-mudela --output
-. * Staff_margin (with a partial measure.)
-. * fix convert-mudela manpage
-. * decimal point in \paper {}
-. * msgfmt -o check?
-. * add new glyphs to font.ly
-. * formatting of input stuff. 
-.  * deps for ly2dvi
 . * indent = 0.0 with linewidth=-1.0
 . * indent = 0.0 with linewidth=-1.0
-. * collisions & accidentals.
-. * music ending in grace notes.
+. * \shape 1st dim skipped? 
 . * PostScript
 .  * half notes in pfa
 . * PostScript
 .  * half notes in pfa
-. * didot / big point.
-. * \shape 1st dim skipped? 
-. * turn slope-damping on/off
 . * We need feta-din*.mf files for more sizes than 10.
 . * fix dynamics decently, ie. use kerning & ligatures.  
 . * We need feta-din*.mf files for more sizes than 10.
 . * fix dynamics decently, ie. use kerning & ligatures.  
-. * behavior of  "that the obvious solution
-\lyrics { foo1*4 __ _ }" is unintuitive.
-. * Lyrics and scripts collide.
-. * filenames : junk lily.x 
 
 .* Cleanups needed
 . * \$ and $ identifier syntax in examples.
 . * Junk ghost positioning objects eg, Script leans on  Staffside
     leans on Staff.
 
 .* Cleanups needed
 . * \$ and $ identifier syntax in examples.
 . * Junk ghost positioning objects eg, Script leans on  Staffside
     leans on Staff.
-
 . * bracket ps code.
 . * bracket ps code.
+. * mudela-book.
 . * Key_engraver, Local_key_item
 . * Think of comprehensive solution for "if (grace_b == self_grace_b_)"
 . * Y dimension units: staffspace vs. Point
 . * Key_engraver, Local_key_item
 . * Think of comprehensive solution for "if (grace_b == self_grace_b_)"
 . * Y dimension units: staffspace vs. Point
@@ -145,6 +47,8 @@ following example.
 . * Duration
 . * clef engraver 
 . * parser
 . * Duration
 . * clef engraver 
 . * parser
+. * Lookup::text -> needs  to be TeX independent.
+. * junk Music_iterator::first_b_
 . * Bezier
 
 .* BUGS
 . * Bezier
 
 .* BUGS
@@ -156,6 +60,38 @@ following example.
 > >
 
 .* STUFF
 > >
 
 .* STUFF
+. *In Caro Mio Ben, bar 8, there's a syllable that starts on a note, and
+ends on a pair of grace notes.  Standard practice is to mark this with
+a slur starting on the main note and ending on the grace note, so a
+singer knows where to break the words.
+
+In bar 27, there's a crescendo that's supposed to start at the start
+of the grace notes and extend to the note after the grace notes.
+. * 5. Sometimes lyrics extend past the right end of the staff. I guess that
+this is a similar problem (if not another symptom of the same problem) as
+one of the spacing bugs mentioned in the TODO.
+. * 4.  Lyrics and grace sections don't go too well together.
+        The words are aligned with the main note, not the start of the
+        grace note.  This is usually wrong, but is sometimes right.
+. * decimal point in \paper {}
+. * use melismaBusy in Lyric context to typeset melismata correctly.  
+. * ly2dvi/lilypond logfile.
+. * hang Item on Spanner
+. * do --safe for PS output?
+. * msgfmt -o check?
+. * collision of lyrics with span_bars. See star-spangled.
+. * Auto_beam debugging output (waarom/wanneer heb jij die weggehaald?)
+. * It is impossible to typeset two textual scripts that are stacked
+  on top of eachother and avoids note collisions and at the same
+  time are typeset with different textStyle. I tried to move around
+  the text_engraver and other engravers between Voice and Thread 
+  but the granularity is not fine enough, the scripts have to 
+  share the same engraver in order to be get correct vertical 
+  position but than they cannot have different style.
+  In my opinion, all scripts that share the same staff, should
+  be stacked vertically, avoiding collisions with the notes
+  in all voices.
+
 . * break priority setting from SCM.
 . * Matanya's tips: 
 .  * don't  shorten stems/staffs closer to each other.
 . * break priority setting from SCM.
 . * Matanya's tips: 
 .  * don't  shorten stems/staffs closer to each other.
@@ -175,13 +111,13 @@ following example.
    possible with lily?
 . * scm-ify \property values.
 . * make dependencies () a virtual function.
    possible with lily?
 . * scm-ify \property values.
 . * make dependencies () a virtual function.
+. * deprecate hangOnClef.
 . * Abstraction for engravers:
 . * Abstraction for engravers:
-.  * make "in-between" engraver (Tie, Extender)
+.  * make "in-between" engraver (Tie)
 .  * make wide_spanner_engraver (line_group_spanner, staff_symbol)
 . * store req -> element, element -> element causes for warnings
 . * compulsory hshift
 .  * make wide_spanner_engraver (line_group_spanner, staff_symbol)
 . * store req -> element, element -> element causes for warnings
 . * compulsory hshift
-. * 
-My wish list for lyrics. I dream of a time when I will have enough time to
+. *  My wish list for lyrics. I dream of a time when I will have enough time to
 become familiar enough with the source code to be able to implement some of
 these myself, but I don't know when that will be, so I thought I'd "publish"
 my suggestions in case someone else is in a position to give them some
 become familiar enough with the source code to be able to implement some of
 these myself, but I don't know when that will be, so I thought I'd "publish"
 my suggestions in case someone else is in a position to give them some
@@ -212,7 +148,10 @@ repeated section with different words for each repeat.
 . * Give # lines in linebreaking.  
 . * arrows on slurs.
 . * rewrite context defs using Scheme
 . * Give # lines in linebreaking.  
 . * arrows on slurs.
 . * rewrite context defs using Scheme
+. * junk TeX specifics from internal code.
 . * \selectmusic to cut pieces from music. 
 . * \selectmusic to cut pieces from music. 
+. * formatting of input stuff. 
+.  * deps for ly2dvi
 . * TODO: merge atom & molecule; make  tree from molecule.
 . * Align_element::padding  ?
 . * typo checks on property names?
 . * TODO: merge atom & molecule; make  tree from molecule.
 . * Align_element::padding  ?
 . * typo checks on property names?
@@ -221,11 +160,20 @@ repeated section with different words for each repeat.
 . * seriously buffer TeX output (do profile of writing .5 mb TeX file.)
 . * strip EXEs before installing
 . * zip target for binary windows dist (JBR)
 . * seriously buffer TeX output (do profile of writing .5 mb TeX file.)
 . * strip EXEs before installing
 . * zip target for binary windows dist (JBR)
+. * fix partial measures in meaningful way.
+. * uniformise recent feta contributions.
+.  * bigger and fatter 4/4 C
+. * relative mode for midi2ly
 . * junking \skip req in lyrics
 . * midi2ly empty staffs.
 . * use Fourier transformation for rhythmic quantisation.
 . * horizontal centering of dynamics 
 . * $DEPENDENCIES_OUTPUT support
 . * junking \skip req in lyrics
 . * midi2ly empty staffs.
 . * use Fourier transformation for rhythmic quantisation.
 . * horizontal centering of dynamics 
 . * $DEPENDENCIES_OUTPUT support
+. * turn slope-damping on/off
+. * sort out directory stuff.
+.  * --prefix option?
+.  * -I option per filetype?
+.  * kpathsea?
 . * fix vertical alignment and stafflines
 . * declaring Performers
 . * *.yo: fix pod manpage layout legacy
 . * fix vertical alignment and stafflines
 . * declaring Performers
 . * *.yo: fix pod manpage layout legacy
@@ -252,7 +200,16 @@ repeated section with different words for each repeat.
 . * fix variable define/lookup parser global<->paper
 . * fix title/instrument placements; see input/test/title.ly
 . * <\voiceone c4. \voicetwo c4>
 . * fix variable define/lookup parser global<->paper
 . * fix title/instrument placements; see input/test/title.ly
 . * <\voiceone c4. \voicetwo c4>
+. *  I'd like to change the \repetitions command to Jan's suggested
+  syntax: \repeat "repeatsymbol" 2 {...}, but I'm not sure that
+  I understand the implementation of repeats well enough.
 . * add full cello suites to web site (kom op, Maarten!)
 . * add full cello suites to web site (kom op, Maarten!)
+. * rename 'staff_line_leading' (who is being lead where?) to
+staff_space, interline; (or other meaningful name) and use throughout
+lily
+
+[-> leading are the lead strips between the sticks (lines) of
+typeface. ie. leading is vertical space  --hwn]
 . * add mudela-book-doc source to webstie.
 . * Rethink Time_description
 \cadenza , \meter,  should all be \properties
 . * add mudela-book-doc source to webstie.
 . * Rethink Time_description
 \cadenza , \meter,  should all be \properties
@@ -261,12 +218,14 @@ repeated section with different words for each repeat.
 .  * abbreviation-beam -> (measured/unmeasured) tremolo
 .  * partial -> anacrouse
 . * move paper vars into engraver properties
 .  * abbreviation-beam -> (measured/unmeasured) tremolo
 .  * partial -> anacrouse
 . * move paper vars into engraver properties
+. * add new glyphs to font.ly
 . * check for groff / troff/ nroff et
 . * more intelligent file searching
 . * disable spaces in TeX stuff
 . * handle ^C for tmp/file creation.
 . * make LilyPond RPM fully relocatable
 . * better hshift (dots, distance, head dependent)
 . * check for groff / troff/ nroff et
 . * more intelligent file searching
 . * disable spaces in TeX stuff
 . * handle ^C for tmp/file creation.
 . * make LilyPond RPM fully relocatable
 . * better hshift (dots, distance, head dependent)
+. * didot / big point.
 . * clefs (AG): The "8" should appear closer to the actual clef,
 touching it.
 . * put errorlevel in Input class
 . * clefs (AG): The "8" should appear closer to the actual clef,
 touching it.
 . * put errorlevel in Input class
diff --git a/VERSION b/VERSION
index 19b7d79fb45f8aed9c9bb720a1d43e3a248b4f74..95b14773b2cee6e97daf16a7e9fc99609c8ec9ab 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=61
+PATCH_LEVEL=62
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index e05e4d26648df6f1710267aadb596a0362b03891..8d34775dfefb43146e501b2a1bbc94d1cc83eaa1 100644 (file)
@@ -4,7 +4,7 @@ depth = ..
 
 SUBDIRS=test bugs
 
 
 SUBDIRS=test bugs
 
-examples=praeludium-fuga-E 
+examples=praeludium-fuga-E  star-spangled-banner just-friends 
 flexamples=
 
 LOCALSTEPMAKE_TEMPLATES=mutopia
 flexamples=
 
 LOCALSTEPMAKE_TEMPLATES=mutopia
diff --git a/input/bugs/auto-staff-switch.ly b/input/bugs/auto-staff-switch.ly
new file mode 100644 (file)
index 0000000..ddf2b84
--- /dev/null
@@ -0,0 +1,38 @@
+
+\score  {
+\notes {
+       \context AutoSwitchGrandStaff \relative c' {
+       c8 d b a' a, f' g,4 ~ g
+
+       }
+}
+
+\paper {
+\translator { \ScoreContext
+\accepts AutoSwitchGrandStaff;
+}
+\translator{
+       \type "Engraver_group_engraver";
+       \name AutoSwitchGrandStaff;
+       \consists "Span_bar_engraver";
+       \consists "Vertical_align_engraver";
+       \consists "Piano_bar_engraver";
+       \consistsend "Axis_group_engraver";
+       minVerticalAlign = 2.*\staffheight;
+       maxVerticalAlign = 2.*\staffheight;     
+       switcherName = "Voice";
+       acceptorName = "Thread";
+       staffContextName = "Staff";
+
+       \accepts "AutoSwitchContext";
+       \accepts "Staff";
+}
+\translator {
+       \type "Engraver_group_engraver";
+       \name "AutoSwitchContext";
+       \consists "Staff_switching_translator";
+}
+
+}}
+
+\version "1.1.52"; 
diff --git a/input/denneboom.ly b/input/denneboom.ly
new file mode 100644 (file)
index 0000000..0c3bd87
--- /dev/null
@@ -0,0 +1,143 @@
+\header{
+filename =      "denneboom.ly";
+enteredby =     "jcn";
+copyright =     "public domain";
+TestedFeatures = "This file tests silly line shapes";
+}
+
+\include "paper20.ly"
+
+\version "1.1.52";
+
+oden = \lyrics{ 
+       O |
+       den- ne- boom, o | 
+       den- ne- boom  Wat |
+       zijn uw tak- ken | 
+       won- der- schoon 
+}
+
+ikheb = \lyrics{
+       Ik | 
+       heb u laatst in_'t |
+       bos zien staan  toen |
+       zat- en er geen |
+       kaars- jes aan 
+}
+
+ugloeit = \lyrics{
+       U |
+       gloeit in bar- re | 
+       win- ter- tijd, als |
+       sneeuw op aar- de | 
+       licht ge- spreid 
+}
+
+oboom = \notes\transpose c''{
+       g,8 |
+       c8. c16 c4. d8 | 
+       e8. e16 e4. e8 | 
+       d  e f4 b, | 
+       d8. c16 c4 r8
+}
+
+bos = \notes\transpose c''{
+       g8 | 
+       g e a4. g8 | 
+       g8. f16 f4 r8 f8 |
+       f d g4. f8 | 
+       f8. e16 e4 r8
+}
+
+
+melody = \notes{
+       \oboom
+       \oboom
+       \bos
+       \oboom
+}
+
+
+verse_one = \notes{
+       \oden
+       \oden
+       \ikheb
+       \oden
+}
+
+verse_one_staff = \context Lyrics = one 
+       \verse_one
+
+
+verse_two = \notes{
+       \oden
+       \oden
+       \ugloeit
+       \oden
+}
+
+verse_two_staff = \context Lyrics = two 
+       \verse_two
+
+
+denneboom_shape = \paper{ 
+       \paper_twenty
+       indent = 20. \mm;
+       \shape   70. \mm, 20. \mm,
+                65. \mm, 30. \mm,
+                57.5 \mm, 45. \mm,
+                50. \mm, 60. \mm,
+                42.5 \mm, 75. \mm,
+                35. \mm, 90. \mm,
+                27.5 \mm, 105. \mm,
+                20. \mm, 120. \mm,
+                10. \mm, 140. \mm,
+                65. \mm, 30. \mm
+                ;
+       gourlay_maxmeasures = 30.;
+% uhuh, loop if you comment these in
+%              arithmetic_basicspace = 3.8;
+%              arithmetic_multiplier = 8.\pt;
+}
+
+\score{
+       \addlyrics
+               \context Staff { \time 3/4; \melody }
+               \context Lyrics \verse_one
+       \paper{ 
+% huh?
+%              \denneboom_shape 
+       \paper_twenty
+       indent = 20. \mm;
+       \shape  70. \mm, 50. \mm,
+                65. \mm, 30. \mm,
+                57.5 \mm, 45. \mm,
+                50. \mm, 60. \mm,
+                42.5 \mm, 75. \mm,
+                35. \mm, 90. \mm,
+                27.5 \mm, 105. \mm,
+                20. \mm, 120. \mm,
+                10. \mm, 140. \mm,
+%               65. \mm, 30. \mm,
+                65. \mm, 40. \mm
+                ;
+       gourlay_maxmeasures = 30.;
+% uhuh, loop if you comment these in
+               arithmetic_basicspace = 3.8;
+%              arithmetic_multiplier = 8.\pt;
+               arithmetic_multiplier = 7.5\pt;
+               casting_algorithm= \Wordwrap;
+       }
+       \midi{ \tempo 4 = 90; }
+}
+
+%{
+\score{
+       <
+               \melody_staff
+               \verse_two_staff
+       >
+       \paper{ \denneboom_shape }
+       \midi{ \tempo 4 = 90; }
+}
+%}
diff --git a/input/keys.ly b/input/keys.ly
deleted file mode 100644 (file)
index 5a12cc0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-\version "1.1.52";
-
-
-blah = \notes {
-
-\transpose c'' {
-       \time 4/4;
-       \keysignature  es;
-       [cis8 d e f] [e! a b cis'] |
-       es e f e a a' a  a' |
- \clef "bass";  }
-  [es16 c' b a] [g f es d] [c d es d] [c Bes As G] |
-
-\clef "violin";
-       \keysignature  c;
-       cis4 c cis cis |
-       <cis dis eis fes ges> cis dis2 ~ | 
-               \time 2/4 ;
-       dis4 dis ~ | c cis~ | c
-}
-
-\score{
-       \context Staff \blah
-       
-}
diff --git a/input/kortjakje.ly b/input/kortjakje.ly
deleted file mode 100644 (file)
index 9e06348..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-\header{
-filename =      "kortjakje.ly";
-title =         "Ah  vous dirais-je maman (variations)";
-description =   "bare bones version. (written down from memory :-)";
-composer =      "Mozart KV 265";
-enteredby =     "HWN";
-copyright =     "public domain";
-}
-%{
-Tested Features: example file with comments
-
-%}
-\version "1.1.52";
-
-
-% the % is a comment.
-
-
-% declare melody (which will be in *one* staff ) for the lead voice
-melodie = \notes \relative c' {
-                               % switch Lilypond in note-mode
-       \clef"violin";
-       \time 2/4 ;
-       %%% theme
-       c4 c |                  % the | checks if there is a new measure here.
-       g' g|
-       a a|
-
-       g2|     % g2 means a "g-1" pitched half-note 
-       f4 f|   e e|    d d|  c2
-       g'4 g|  f f|    e e|    d d|    g g|    f f|    e e|    d d|
-       %%% var 1
-         c4 r8 c               % r8 means an 8th rest.
-                 (|            % start a slur
-                               % NOTE: the slurstart should be directly after the note
-                       )       % end a slur.
-                         g'4 r8 g8 ()   a4 r8 a8 ()     g4 r4 
-         f4 r8 f8 ()    e4 r8 e8 (|)  d4 r8 d8 ()       c4 r4 
-}
-
-                               % more of this.
-begeleiding = \notes \relative c { 
-       \clef "bass";
-       \time 2/4 ;
-
-       %%% theme
-       c4                      %  before note means one octave lower.
-                               % Similarly:  after means one higher.
-          c'   e c     f c     e c     d b     c a     f g     c,2 |
-       e'4 g,  d' g,   c g     b g     e' g,   d' g,   c g     b g
-       %%%% var 1
-       r8 e'8()  c4    r8 e8()  c4     r8 f8() c4      r8 e8() c4
-       r8 d8() b4      r8 c8() a4      r8 a8() f4      r8 e8() c4
-}
-
-\score{
-       \context GrandStaff <
-               \melodie
-               \begeleiding 
-       >
-       \paper{}
-       \midi{}
-}
-
diff --git a/input/part.ly b/input/part.ly
deleted file mode 100644 (file)
index b07f963..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-\version "1.1.52";
-part = \notes {
-       c-1 c c c
-       r1*3
-       c4-5 c c c
-       c-6 c c c
-       c-7 c c c
-       c-8 c c c
-}
-
-a4 = \paper{
-       linewidth= 80.\mm;
-        \translator {
-               \StaffContext
-               
-               \consists "Bar_column_engraver";
-               \consists "Bar_number_engraver";
-               
-       }
-}
-
-\score{
-       <
-               \notes{ 
-                       \part
-               }
-       >
-       \paper{\a4}
-}
-
-\score{
-       <
-               \notes{ 
-                       \part
-               }
-       >
-       \paper{\a4}
-}
diff --git a/input/pedal.ly b/input/pedal.ly
deleted file mode 100644 (file)
index 905715b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-%
-% This file does not work.  
-%
-
-% pedal.ly
-% 
-% Johann Sebastian Bach
-% preludium en fuga in D
-% bwv 532
-%
-% fuga --- two bar excerpt of pedal part
-%
-% example for pedal studies
-
-% ugh, front and back priority are the same...
-% one must use (ugh):
-%     left front:
-%         -\front-\l{toe,heel}
-%     left back:
-%         -\l{toe,heel}-\back
-%     rigth front:
-%         -\r{toe,heel}-\front
-%     right back:
-%         -\back-\r{toe,heel}
-
-% therefore: 
-% \lheel \ltoe \rheel \rtoe
-% \lbheel \lbheel \lfheel \lftoe
-% \rbheel \rbtoe \rfheel \rftoe
-
-\version "1.1.52";
-
-\score{
-               \notes {
-                       \time 4/4;
-                       \key D;
-                       \clef bass;
-                       % silly chord testing...
-% these should be stacked...
-%                      < c,-\ltoe e,-\lheel > < c'-\rtoe e'-\rheel>
-%                      < c,-\lheel e,-\ltoe > < c'-\rheel e'-\rtoe> |
-                       < c,-\ltoe-\lheel e, > < c'-\rtoe-\rheel e' >
-                       < c,-\lheel-\ltoe e, > < c'-\rheel-\rtoe e' > |
-                       % 46
-
-                       [d16-\lfheel e-\rbtoe fis-\ltoe e-\rbtoe]
-                       [d-\lfheel e-\rbtoe fis-\lheel e] [d e fis e] [d e fis e] |
-                       d4 r4 r4 [b16-\rtoe a-\ltoe b-\rtoe fis-\ltoe] |
-       }
-       \paper{}
-}
-
index 53198954a307ee7a5e29456923bcbdefba10c1ba..98af477f45a1b43ca7106a504603e37d21688c8a 100644 (file)
@@ -36,15 +36,11 @@ ritme = \notes\transpose c'' {
        
 
 another = 
        
 
 another = 
-       \notes{ \time 6/4; 
+       \relative c'' \notes{ \time 6/4; 
                c1.  c1. \time 4/4;c4 c4 c4 c4  c1 c1 c1
         }
 
 
                c1.  c1. \time 4/4;c4 c4 c4 c4  c1 c1 c1
         }
 
 
-%
-% Beams are incorrect for the next staff.  They cut through the whole notes.
-%
-
 yanother = 
        \notes{ \time 4/4; 
                c1 c1 c1 c4 c4 c4 c4  c1 c1 c1
 yanother = 
        \notes{ \time 4/4; 
                c1 c1 c1 c4 c4 c4 c4  c1 c1 c1
diff --git a/input/scales.ly b/input/scales.ly
deleted file mode 100644 (file)
index a4ea103..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-%
-% This file prints lots of warning messages about scripts-dportato
-%
-
-\header{
-filename =      "scales.ly";
-enteredby =     "HWN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features: scripts, beams, transposition, 
-%}
-
-%
-% scales with accents.
-%
-
-\version "1.1.52";
-blah =         \notes {
-               \time 6/8;      
-\transpose c {
-               \clef "bass";
-                       c4. d
-}
-                       c d 
-               \clef "violin" ;
-\transpose c'' {
-               \transpose  d { e f }  }
-\transpose c''' {
-               c4. d 
-       %ugr
-                |\times 6/9 { [ a8 \< a a a a a a  \! a a \ff \> ] } | }
-                \transpose c'' {
-                    \times 6/9 { [ a  a a a a a a a \! a ] } | }
-                \transpose c''' {
-                \times 6/9 { [ c,->-.-\fermata \< g,->-.-\fermata 
-                       d->-.-\fermata a->-.-\fermata
-                       e'->-.-\fermata b'-. f''-. c'''->-.-\fermata 
-                       \! g'''->-.-\fermata \> ] }
-
-               \times 6/9 { [ g'''->-.-\fermata c'''->-.-\fermata
-                       f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata 
-                       a->-.-\fermata d->-.-\fermata g,->-.-\fermata \! 
-                       c,->-.-\fermata ] }
-                       
-               \times 6/9 { [ c,->-.-\fermata \< g,->-.-\fermata d->-.-\fermata 
-               a->-.-\fermata
-                       e'->-.-\fermata b'-. f''-. 
-                       c'''->-.-\fermata \! g'''->-.-\fermata \> ] }
-                \times 6/9 { [ g'''->-.-\fermata c'''->-.-\fermata
-                       f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata 
-                       a->-.-\fermata d->-.-\fermata 
-                       g,->-.-\fermata \! c,->-.-\fermata ] }
-               }
-               \transpose c'' {
-                \times 2/3 { [ c g d' ] } 
-                \times 2/3 { [ d' g c ] }  
-                \times 2/3 { [ f c' g' ] } 
-                \times 2/3 { [ g' c' f ] }
-                }
-                \transpose c' {
-                \times 2/3 { [ c g d' ] } 
-                \times 2/3 { [ d' g c ] }  
-                \times 2/3 { [ f c' g' ] } 
-                \times 2/3 { [ g' c' f ] } 
-                \times 2/3 { [ g' c' f ] } 
-  \time 4/4;
-
-c1}
-
-               r8-"text" r8^. r8_. r8 r8 r8 r8 r8
-       [c-> d-> e-> f->][g-> a-> b-> c'->] % 1
-\transpose c'' {       [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]}
-       [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]
-       [c-. d-. e-. f-.][g-. a-. b-. c'-.]
-       [c'-- b-- a-- g][f-- e-- d c--] % 5
-       [c-\portato d-\portato e-\portato f-\portato]
-               [g-\portato a-\portato b-\portato c'-\portato]
-       [c'-\upbow b-\upbow a-\downbow g-\downbow]
-               [f-\downbow e-\downbow d-\upbow c-\upbow]
-       [c-| d-| e-| f-|][g-| a-| b-| c'-|]
-       [c' b a g][f e d c]
-       [c d e f][g a b c'] % 10 
-       |[c' b a g][f e d c]
-                       
-       }
-
-
-\score{
-       \notes {\blah}
-       \paper{
-        castingalgorithm = \Wordwrap;
-       }
-}
diff --git a/input/scripts.ly b/input/scripts.ly
deleted file mode 100644 (file)
index 92d4a62..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-       
-\version "1.1.52";
-
-
-blah =         \notes{ \transpose c'' {
-
-       c,4 ->-.-\fermata-"text"
-       c ->-.-\fermata-"text"
-       c' ->-.-\fermata-"text"
-       c'' ->-.-\fermata-"text"
-
-       d, ->-.-\fermata-"text"
-       d ->-.-\fermata-"text"
-       d' ->-.-\fermata-"text"
-       d'' ->-.-\fermata-"text"
-
-       c, ^>^.^\fermata^"text"
-       c ^>^.^\fermata^"text"
-       c' ^>^.^\fermata^"text"
-       c'' ^>^.^\fermata^"text"
-
-       d, ^>^.^\fermata^"text"
-       d ^>^.^\fermata^"text"
-       d' ^>^.^\fermata^"text"
-       d'' ^>^.^\fermata ^"text"
-
-       c, _>_._\fermata _"text"
-       c _>_._\fermata _"text"
-       c' _>_._\fermata _"text"
-       c'' _>_._\fermata _"text"
-
-       d, _>_._\fermata _"text"
-       d _>_._\fermata _"text"
-       d' _>_._\fermata _"text"
-       d'' _>_._\fermata _"text"
-                       
-       \stemup
-       b,-. c-. d-. e-. f-. g-. a-. b-. c'-.
-       \stemdown
-       a-. b-. c'-. d'-. e'-. f'-. g'-. a'-. b'-.
-       \stemup
-       b,-> c-> d-> e-> f-> g-> a-> b-> c'->
-       \stemup
-       b,---. c---. d---. e---. f---. g---. a---. b---. c'---.
-       \stemboth
-      \time 4/4;
-       [c8 \< d e \! f][d' \> e' f' \! g'] 
-       [c-> \< d-> e-> \! f->][d'-> \> e'-> f'-> \! g'->] 
-       [c-^ \< d-^ e-^ \! f-^][d'-^ \> e'-^ f'-^ \! g'-^] 
-       [c-. \< d-. e-. \! f-.][d'-. \> e'-. f'-. \! g'-.]
-       [c-- \< d-- e-- \! f--][d'-- \> e'-- f'-- \! g'--] 
-       [c-\tenuto \< d-\tenuto e-\tenuto \! f-\tenuto]
-               [d'-\tenuto \> e'-\tenuto f'-\tenuto \! g'-\tenuto]
-       [c-\upbow \< d-\upbow e-\upbow \! f-\upbow]
-               [d'-\upbow \> e'-\upbow f'-\upbow \! g'-\upbow] 
-       [c-| \< d-| e-| \! f-|][d'-| \> e'-| f'-| \! g'-|]
-       [c-\fermata \< d-\fermata e-\fermata \! f-\fermata]
-               [d'-\fermata \> e'-\fermata f'-\fermata \! g'-\fermata] 
-       [c-\lheel \< d-\lheel e-\lheel \! f-\lheel]
-               [d'-\lheel \> e'-\lheel f'-\lheel \! g'-\lheel]
-
-}}
-
-
-\score{
-       \blah
-
-}
diff --git a/input/test/allfontstyle.ly b/input/test/allfontstyle.ly
new file mode 100644 (file)
index 0000000..0e995e6
--- /dev/null
@@ -0,0 +1,10 @@
+
+
+
+\score {  \notes
+       \relative c'' \context Staff {
+               \repeat "semi" 2 { \time 4/4; c4^"foo" }
+                \alternative { d-4 e-\fermata  } \grace { c16 } f-\ff
+       }
+       \paper { linewidth = -1.0; }
+}
diff --git a/input/test/alphabet.ly b/input/test/alphabet.ly
deleted file mode 100644 (file)
index 9d72e6a..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-\score{
-       <
-       \context Staff \notes{ 
-         \skip 4*27;
-         \skip 4*27;
-         \skip 4*27;
-         \skip 4*27;
-         }
-       \context Lyrics \lyrics{ 
-aaaaaaaaaaaaaaaaaaa
-xxx\break
-bbbbbbbbbbbbbbbbbbb
-xxx\break
-ccccccccccccccccccc
-xxx\break
-ddddddddddddddddddd
-xxx\break
-eeeeeeeeeeeeeeeeeee
-xxx\break
-fffffffffffffffffff
-xxx\break
-ggggggggggggggggggg
-xxx\break
-hhhhhhhhhhhhhhhhhhh
-xxx\break
-iiiiiiiiiiiiiiiiiii
-xxx\break
-jjjjjjjjjjjjjjjjjjj
-xxx\break
-kkkkkkkkkkkkkkkkkkk
-xxx\break
-lllllllllllllllllll
-xxx\break
-mmmmmmmmmmmmmmmmmmm
-xxx\break
-nnnnnnnnnnnnnnnnnnn
-xxx\break
-ooooooooooooooooooo
-xxx\break
-ppppppppppppppppppp
-xxx\break
-qqqqqqqqqqqqqqqqqqq
-xxx\break
-rrrrrrrrrrrrrrrrrrr
-xxx\break
-sssssssssssssssssss
-xxx\break
-ttttttttttttttttttt
-xxx\break
-uuuuuuuuuuuuuuuuuuu
-xxx\break
-vvvvvvvvvvvvvvvvvvv
-xxx\break
-wwwwwwwwwwwwwwwwwww
-xxx\break
-xxxxxxxxxxxxxxxxxxx
-xxx\break
-yyyyyyyyyyyyyyyyyyy
-xxx\break
-zzzzzzzzzzzzzzzzzzz
-xxx\break
-...................
-xxx\break
-AAAAAAAAAAAAAAAAAAA
-xxx\break
-BBBBBBBBBBBBBBBBBBB
-xxx\break
-CCCCCCCCCCCCCCCCCCC
-xxx\break
-DDDDDDDDDDDDDDDDDDD
-xxx\break
-EEEEEEEEEEEEEEEEEEE
-xxx\break
-FFFFFFFFFFFFFFFFFFF
-xxx\break
-GGGGGGGGGGGGGGGGGGG
-xxx\break
-HHHHHHHHHHHHHHHHHHH
-xxx\break
-IIIIIIIIIIIIIIIIIII
-xxx\break
-JJJJJJJJJJJJJJJJJJJ
-xxx\break
-KKKKKKKKKKKKKKKKKKK
-xxx\break
-LLLLLLLLLLLLLLLLLLL
-xxx\break
-MMMMMMMMMMMMMMMMMMM
-xxx\break
-NNNNNNNNNNNNNNNNNNN
-xxx\break
-OOOOOOOOOOOOOOOOOOO
-xxx\break
-PPPPPPPPPPPPPPPPPPP
-xxx\break
-QQQQQQQQQQQQQQQQQQQ
-xxx\break
-RRRRRRRRRRRRRRRRRRR
-xxx\break
-SSSSSSSSSSSSSSSSSSS
-xxx\break
-TTTTTTTTTTTTTTTTTTT
-xxx\break
-UUUUUUUUUUUUUUUUUUU
-xxx\break
-VVVVVVVVVVVVVVVVVVV
-xxx\break
-WWWWWWWWWWWWWWWWWWW
-xxx\break
-XXXXXXXXXXXXXXXXXXX
-xxx\break
-YYYYYYYYYYYYYYYYYYY
-xxx\break
-ZZZZZZZZZZZZZZZZZZZ
-xxx\break
-       }
-       >
-       \paper {
-               castingalgorithm = \Wordwrap;
-              linewidth = 40.\mm;
-       }
-}
-
-\version "1.1.52"; 
index 8755ed44e5801af42aec33b7022c1497cb746b13..0fe44dafa2a610baba7e206063b873394d35dc4d 100644 (file)
@@ -1 +1 @@
-[f8 f] \grace { f8 e8 } [f64 f]
+[f8 f] \grace { [f8 e8] } [f64 f]
diff --git a/input/test/beam-repeat.ly b/input/test/beam-repeat.ly
deleted file mode 100644 (file)
index e1c5bf3..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-\score{
-    \notes \relative c''{
-       \time 2/4;
-       c8
-       \repeat 2 {  % \bar "|:" iknoort-i ook...
-       c8 c8
-       }
-       c8
-    }
-}
diff --git a/input/test/beam-tremolo.ly b/input/test/beam-tremolo.ly
deleted file mode 100644 (file)
index f60c9c7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-       %       broken.
-               [:32 c16 e]
-               [:32 c16 e]
-               [:16 c8 e]
-               [:16 e4 g]
-               [:16 e2 g]
-               [:16 e1 g]
diff --git a/input/test/big-test.ly b/input/test/big-test.ly
deleted file mode 100644 (file)
index 71e43ba..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\score { 
-\notes \relative c {
-\include "noteheadstyle.fly"
-}\header { title = "notehead style"; }
-}
-
-\score { 
-\notes \relative c {
-\include "number-staff-lines.fly"
-}\header { title = "number of staff lines"; }
-}
-
-\include "bar-scripts.ly"
-
-\include "font20.ly" 
diff --git a/input/test/denneboom.ly b/input/test/denneboom.ly
deleted file mode 100644 (file)
index 3579f8d..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-\header{
-filename =      "denneboom.ly";
-enteredby =     "jcn";
-copyright =     "public domain";
-TestedFeatures = "This file tests silly line shapes";
-}
-
-\include "paper20.ly"
-
-\version "1.1.52";
-
-oden = \lyrics{ 
-       O8 |
-       den-8. ne-16 boom,4. o8 | 
-       den-8. ne-16 boom.4.  Wat8 |
-       zijn uw tak-4 ken | 
-       won-8. der-16 schoon4 _8
-}
-
-ikheb = \lyrics{
-       Ik8 | 
-       heb u laatst4. in_'t8 |
-       bos8. zien16 staan4 _8 toen8 |
-       zat- en er4. geen8 |
-       kaars-8. jes16 aan.4 _8
-}
-
-ugloeit = \lyrics{
-       U8 |
-       gloeit in bar-4. re8 | 
-       win-8. ter-16 tijd,4 r8 als8 |
-       sneeuw op aar-4. de8 | 
-       licht8. ge-16 spreid.4 _8
-}
-
-oboom = \notes\transpose c''{
-       g,8 |
-       c8. c16 c4. d8 | 
-       e8. e16 e4. e8 | 
-       d  e f4 b, | 
-       d8. c16 c4 r8
-}
-
-bos = \notes\transpose c''{
-       g8 | 
-       g e a4. g8 | 
-       g8. f16 f4 r8 f8 |
-       f d g4. f8 | 
-       f8. e16 e4 r8
-}
-
-global = \notes{ 
-       \time 3/4;
-       \partial 8;
-       \skip 4*48;
-       \bar "|.";
-}
-melody = \notes{
-       \oboom
-       \oboom
-       \bos
-       \oboom
-}
-
-$melody_staff = \context Staff = melody <
-       \global
-       \melody
->
-
-$verse_one = \notes{
-       \oden
-       \oden
-       \ikheb
-       \oden
-}
-
-$verse_one_staff = \context Lyrics = one <
-       \global
-       \$verse_one
->
-
-$verse_two = \notes{
-       \oden
-       \oden
-       \ugloeit
-       \oden
-}
-
-$verse_two_staff = \context Lyrics = two <
-       \global
-       \$verse_two
->
-
-$denneboom_shape = \paper{ 
-       \paper_twenty
-       indent = 20. \mm;
-       \shape = 70. \mm 20. \mm
-                65. \mm 30. \mm
-                57.5 \mm 45. \mm
-                50. \mm 60. \mm
-                42.5 \mm 75. \mm
-                35. \mm 90. \mm
-                27.5 \mm 105. \mm
-                20. \mm 120. \mm
-                10. \mm 140. \mm
-                65. \mm 30. \mm
-                ;
-       gourlay_maxmeasures = 30.;
-% uhuh, loop if you comment these in
-%              arithmetic_basicspace = 3.8;
-%              arithmetic_multiplier = 8.\pt;
-}
-
-\score{
-       <
-               \$melody_staff
-               \$verse_one_staff
-       >
-       \paper{ 
-% huh?
-%              \$denneboom_shape 
-       \paper_twenty
-       indent = 20. \mm;
-       \shape = 70. \mm 50. \mm
-                65. \mm 30. \mm
-                57.5 \mm 45. \mm
-                50. \mm 60. \mm
-                42.5 \mm 75. \mm
-                35. \mm 90. \mm
-                27.5 \mm 105. \mm
-                20. \mm 120. \mm
-                10. \mm 140. \mm
-%               65. \mm 30. \mm
-                65. \mm 40. \mm
-                ;
-       gourlay_maxmeasures = 30.;
-% uhuh, loop if you comment these in
-               arithmetic_basicspace = 3.8;
-%              arithmetic_multiplier = 8.\pt;
-               arithmetic_multiplier = 7.5\pt;
-       }
-       \midi{ \tempo 4 = 90; }
-}
-
-%{
-\score{
-       <
-               \$melody_staff
-               \$verse_two_staff
-       >
-       \paper{ \$denneboom_shape }
-       \midi{ \tempo 4 = 90; }
-}
-%}
diff --git a/input/test/find-fifths.ly b/input/test/find-fifths.ly
deleted file mode 100644 (file)
index 8d88c31..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "1.0.21";
-
-\score{
-       \notes \relative c {
-             c d c f c g c b, c g, c f, c c'' c
-% run with find-quarts should suggest:
-%            c d c f c g' c, b c g c f, c' c'' c,,
-       }
-}
-
index 0975b2d9783999abc73047afae7fd46b6427670e..f04b4f961ed896e6dca5183ea88cc618ce402e2b 100644 (file)
@@ -1,9 +1,3 @@
-\header{
-enteredby =     "jcn";
-copyright =     "PD";
-TestedFeatures =        "This file tests some nasty Gourlay spacings";
-}
-
 \version "1.1.52";
 
 %{
 \version "1.1.52";
 
 %{
@@ -13,12 +7,12 @@ This is taken from [Gourlay]'s paper on breaking lines
 %}
 
 \score{
 %}
 
 \score{
-       \notes \context Staff  \transpose c''<
-               { \stemup d2 d     | d d | d4 d2. | \break  c1 }
-               \transpose c, { \stemdown g4 g g g | \times 2/3 { g2 g2 g2 } | g4. g8 g2 | c1 }
+       \notes \context Staff  \relative c'' <
+               \context Voice = VA { \stemup d2 d     | d d | d4 d2. | \break  c1 }
+              \context Voice = VB { \stemdown g4 g g g | \times 2/3 { g2 g2 g2 } | g4. g8 g2 | c1 }
                >
        \paper{
                >
        \paper{
-           linewidth = 8.\cm
+           linewidth = 9.\cm;
        }
 }
 
        }
 }
 
diff --git a/input/test/grace-end.fly b/input/test/grace-end.fly
new file mode 100644 (file)
index 0000000..14bcf26
--- /dev/null
@@ -0,0 +1,2 @@
+
+c4 \grace { [d16 d16] }
index 2f2f4a71e3a59958e3817c65f767848451251420..6c68d06e8f2e83ee59e247c3fa63ce1026e13f88 100644 (file)
@@ -5,7 +5,8 @@
        \grace { [cis32 dis32] } e4
        \grace { [c32 d] }\times 2/3 { [c8 c c] }
         \grace { [b32 ( c32] } ) c4
        \grace { [cis32 dis32] } e4
        \grace { [c32 d] }\times 2/3 { [c8 c c] }
         \grace { [b32 ( c32] } ) c4
-       \grace  c16 [c8 c8]
+       \grace  <c16 d16> [c8 c8]
+%      \grace  c16 [c8 c8]
        \grace  { \property Grace.graceAlignPosition = \right c16} c4
 }
 \paper {linewidth = -1.;}
        \grace  { \property Grace.graceAlignPosition = \right c16} c4
 }
 \paper {linewidth = -1.;}
diff --git a/input/test/keys2.ly b/input/test/keys2.ly
new file mode 100644 (file)
index 0000000..5a12cc0
--- /dev/null
@@ -0,0 +1,25 @@
+\version "1.1.52";
+
+
+blah = \notes {
+
+\transpose c'' {
+       \time 4/4;
+       \keysignature  es;
+       [cis8 d e f] [e! a b cis'] |
+       es e f e a a' a  a' |
+ \clef "bass";  }
+  [es16 c' b a] [g f es d] [c d es d] [c Bes As G] |
+
+\clef "violin";
+       \keysignature  c;
+       cis4 c cis cis |
+       <cis dis eis fes ges> cis dis2 ~ | 
+               \time 2/4 ;
+       dis4 dis ~ | c cis~ | c
+}
+
+\score{
+       \context Staff \blah
+       
+}
diff --git a/input/test/lyric-combine.ly b/input/test/lyric-combine.ly
new file mode 100644 (file)
index 0000000..689cca5
--- /dev/null
@@ -0,0 +1,40 @@
+\header{
+filename =      "twinkle-pop.ly";
+%title =        "Ah, vous dirais-je, maman ";
+description =   "twinkle twinkle in pop-song-settings";
+composer =      "traditional";
+enteredby =     "HWN, chords by Johan Vromans";
+copyright =     "public domain";
+}
+
+\version "1.1.52";
+
+m =\notes  \relative c'' {
+       \autoBeamOff
+       g4  r8 \times 2/3 { g'8 f e } r8 \grace { [d16 c b] } e4
+       \melisma
+       d8.() c16
+       \melismaEnd
+       b }
+
+noisebeat =\notes \relative c'' {g16 g g g }
+noise =  { \noisebeat \noisebeat \noisebeat  \noisebeat \noisebeat \noisebeat }
+textI =  \lyrics  { la2 __ la -- la __ la la la la la  }
+textII =  \lyrics  { da -- da __ da -- da da da da da  }
+
+\score {
+    \notes < \context Staff = SA \m
+      \context Lyrics = LA { s1 }
+      \context Staff = SB { s1 }
+      \context Lyrics = LB { s1 }
+      \context Staff = SC \noise
+      
+      \addlyrics
+         \context Staff = SB \m
+         < \context Lyrics = LA \textI
+           \context Lyrics = LB \textII
+         >
+         
+    >
+}
+
index 6baf4e60fd8449b4f2c88193366d3fd3b47722a9..346c5c8a56dea577b9d639b9351358329e2a7852 100644 (file)
@@ -1,6 +1,7 @@
 
 %  no alts.
 
 %  no alts.
-\score { \notes\context Staff\relative c'' {
+\score { \notes
+  \relative c'' {
 \repeat semi 3 { c^"3$\\times$ 0alt" d }
 % less alts than body
 \repeat semi 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
 \repeat semi 3 { c^"3$\\times$ 0alt" d }
 % less alts than body
 \repeat semi 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
index 78c35be4502d0a707a198f7ac873f8a3d2d1e776..95faea394ea44defcd2dd2ac03fd917c71859d50 100644 (file)
@@ -1,9 +1,9 @@
 
 
-\score { \notes\context Staff\relative c'' {
-\repeat unfold 3 { c^"3$\\times$ 0alt" d }
+\score { \notes\relative c'' {
+\repeat unfold 3 { c^"3x 0a" d }
 % less alts than body
 % less alts than body
-\repeat unfold 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
+\repeat unfold 4 { c^"4x 0a" d } \alternative { e f }
 % more alts than body
 % more alts than body
-\repeat unfold 2 { c^"2$\\times$ 3alt" d } \alternative { e f g } 
+\repeat unfold 2 { c^"2x 3a" d } \alternative { e f g } 
 }}
 
 }}
 
diff --git a/input/test/rhythm-lyric.ly b/input/test/rhythm-lyric.ly
deleted file mode 100644 (file)
index b9413ec..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-text = \lyrics { Feel the rhy- thm }
-
-melody = \notes { 
-       e4. d8 e4. c8
-}
-
-\score{
-       <
-               \context Voice \notes\relative c'' \melody
-               \context Lyrics \rhythm \melody \text
-       >
-}
diff --git a/input/test/rhythm-melody.fly b/input/test/rhythm-melody.fly
deleted file mode 100644 (file)
index 9ccd77a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-%\rhythm { 4. 8 8. 16 } { c'' d e f }
-\rhythm { c4. c8 c8. c16 } { c'' d e f }
diff --git a/input/test/rhythm.ly b/input/test/rhythm.ly
deleted file mode 100644 (file)
index 4fe37cb..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-\score{
-       \context Voice \notes\relative c''{
-               % still thinking 'bout this
-               %c4. 8 4. 8
-               c4. c8 c4. c8
-       }
-}
diff --git a/input/test/rhythmic-staff.ly b/input/test/rhythmic-staff.ly
new file mode 100644 (file)
index 0000000..9670f5b
--- /dev/null
@@ -0,0 +1,8 @@
+\score{
+  \context RhythmicStaff {
+    \notes\relative c''{ 
+      \time 4/4; 
+      r4 r g2 | r4 g r2 | g1:32 | r1 |
+    }
+  }
+}
diff --git a/input/test/rhythmic.ly b/input/test/rhythmic.ly
deleted file mode 100644 (file)
index 9670f5b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-\score{
-  \context RhythmicStaff {
-    \notes\relative c''{ 
-      \time 4/4; 
-      r4 r g2 | r4 g r2 | g1:32 | r1 |
-    }
-  }
-}
diff --git a/input/test/scripts.ly b/input/test/scripts.ly
new file mode 100644 (file)
index 0000000..92d4a62
--- /dev/null
@@ -0,0 +1,68 @@
+       
+\version "1.1.52";
+
+
+blah =         \notes{ \transpose c'' {
+
+       c,4 ->-.-\fermata-"text"
+       c ->-.-\fermata-"text"
+       c' ->-.-\fermata-"text"
+       c'' ->-.-\fermata-"text"
+
+       d, ->-.-\fermata-"text"
+       d ->-.-\fermata-"text"
+       d' ->-.-\fermata-"text"
+       d'' ->-.-\fermata-"text"
+
+       c, ^>^.^\fermata^"text"
+       c ^>^.^\fermata^"text"
+       c' ^>^.^\fermata^"text"
+       c'' ^>^.^\fermata^"text"
+
+       d, ^>^.^\fermata^"text"
+       d ^>^.^\fermata^"text"
+       d' ^>^.^\fermata^"text"
+       d'' ^>^.^\fermata ^"text"
+
+       c, _>_._\fermata _"text"
+       c _>_._\fermata _"text"
+       c' _>_._\fermata _"text"
+       c'' _>_._\fermata _"text"
+
+       d, _>_._\fermata _"text"
+       d _>_._\fermata _"text"
+       d' _>_._\fermata _"text"
+       d'' _>_._\fermata _"text"
+                       
+       \stemup
+       b,-. c-. d-. e-. f-. g-. a-. b-. c'-.
+       \stemdown
+       a-. b-. c'-. d'-. e'-. f'-. g'-. a'-. b'-.
+       \stemup
+       b,-> c-> d-> e-> f-> g-> a-> b-> c'->
+       \stemup
+       b,---. c---. d---. e---. f---. g---. a---. b---. c'---.
+       \stemboth
+      \time 4/4;
+       [c8 \< d e \! f][d' \> e' f' \! g'] 
+       [c-> \< d-> e-> \! f->][d'-> \> e'-> f'-> \! g'->] 
+       [c-^ \< d-^ e-^ \! f-^][d'-^ \> e'-^ f'-^ \! g'-^] 
+       [c-. \< d-. e-. \! f-.][d'-. \> e'-. f'-. \! g'-.]
+       [c-- \< d-- e-- \! f--][d'-- \> e'-- f'-- \! g'--] 
+       [c-\tenuto \< d-\tenuto e-\tenuto \! f-\tenuto]
+               [d'-\tenuto \> e'-\tenuto f'-\tenuto \! g'-\tenuto]
+       [c-\upbow \< d-\upbow e-\upbow \! f-\upbow]
+               [d'-\upbow \> e'-\upbow f'-\upbow \! g'-\upbow] 
+       [c-| \< d-| e-| \! f-|][d'-| \> e'-| f'-| \! g'-|]
+       [c-\fermata \< d-\fermata e-\fermata \! f-\fermata]
+               [d'-\fermata \> e'-\fermata f'-\fermata \! g'-\fermata] 
+       [c-\lheel \< d-\lheel e-\lheel \! f-\lheel]
+               [d'-\lheel \> e'-\lheel f'-\lheel \! g'-\lheel]
+
+}}
+
+
+\score{
+       \blah
+
+}
diff --git a/input/test/size11.ly b/input/test/size11.ly
new file mode 100644 (file)
index 0000000..bdd2767
--- /dev/null
@@ -0,0 +1,3 @@
+
+\include "paper11.ly"
+\include "allfontstyle.ly";
diff --git a/input/test/size13.ly b/input/test/size13.ly
new file mode 100644 (file)
index 0000000..ac58c4d
--- /dev/null
@@ -0,0 +1,2 @@
+\include "paper13.ly"
+\include "allfontstyle.ly";
diff --git a/input/test/size16.ly b/input/test/size16.ly
new file mode 100644 (file)
index 0000000..69352ff
--- /dev/null
@@ -0,0 +1,2 @@
+\include "paper16.ly"
+\include "allfontstyle.ly";
diff --git a/input/test/size20.ly b/input/test/size20.ly
new file mode 100644 (file)
index 0000000..d76a6cd
--- /dev/null
@@ -0,0 +1,2 @@
+\include "paper20.ly"
+\include "allfontstyle.ly";
diff --git a/input/test/size23.ly b/input/test/size23.ly
new file mode 100644 (file)
index 0000000..c5accc9
--- /dev/null
@@ -0,0 +1,2 @@
+\include "paper23.ly"
+\include "allfontstyle.ly";
diff --git a/input/test/size26.ly b/input/test/size26.ly
new file mode 100644 (file)
index 0000000..919c6e0
--- /dev/null
@@ -0,0 +1,2 @@
+\include "paper26.ly"
+\include "allfontstyle.ly";
diff --git a/input/test/slur-swap.ly b/input/test/slur-swap.ly
deleted file mode 100644 (file)
index ccd6dd0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "1.1.52";
-
-% urg, the direction of the slur gets swapped!
-\score{
-       \notes\relative c{
-       \slurup
-       \stemup
-               [e'8( c' a b]
-       \stemdown
-               [e c a )e] \break 
-       \stemup
-               [e8( c' a b]
-       \stemdown
-               [e c a )e] e1
-       }
-       \paper{
-               indent = 0.\mm
-               linewidth=80.\mm
-       }
-}
diff --git a/input/test/spacing-tight.ly b/input/test/spacing-tight.ly
new file mode 100644 (file)
index 0000000..93ae305
--- /dev/null
@@ -0,0 +1,5 @@
+
+\score {
+       \notes { \time 2/2; c'2 c'2 \time 2/2; }
+       \paper { linewidth = 2.9\cm; }
+}
diff --git a/input/test/staff-margin-partial.ly b/input/test/staff-margin-partial.ly
new file mode 100644 (file)
index 0000000..d93efd2
--- /dev/null
@@ -0,0 +1,5 @@
+% test staff margin with partial measure.
+\score {
+\notes { \property Staff.instrument = "foo" \partial 4; c4 c1 }
+\paper { \translator { \StaffContext \consists Staff_margin_engraver; }}
+}
diff --git a/input/test/unfold.ly b/input/test/unfold.ly
deleted file mode 100644 (file)
index 4664cfc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-\score{
-       \context Staff \notes\relative c'' {
-       % doesn't quite work yet
-       %       \property Staff.unfoldRepeats = 1
-               \repeat 3 { a b c d } 
-               \alternative { { d c b a } { a b c d } } d d d d
-       }
-}
-
-\version "1.0.16"; 
index 78a40f1a15e93452f36143819093eb9f1d771a22..1f5c15fa1b59ecdc90c9efe36afa56e915f7dfdc 100644 (file)
@@ -16,8 +16,7 @@ traditional song in various languages.
 %}
 
 %{
 %}
 
 %{
-Tested Features: lyrics, interleaving lyrics and staffs, repeats,
-       auto beaming, applying new rhythm on lyrics, hyphens
+Tested Features: lyrics, interleaving lyrics and staffs, repeats
 %}
 
 \version "1.1.52";
 %}
 
 \version "1.1.52";
@@ -53,12 +52,12 @@ global = \notes {
 }
 
 tekst = \lyrics{ 
 }
 
 tekst = \lyrics{ 
-       Al -- tijd is Kort -- jak -- je ziek, " "
-       midden "in de" week maar "'s zon" -- dags  " " niet.
-       "'s Zon" -- dags gaat ze naar de kerk, " "
-       met een boek vol zil -- ver  " " werk. " "
-       Al -- tijd is Kort -- jak -- je ziek, " "
-       midden  "in de" week maar "'s zon" -- dags  " " niet.
+       Al-4 tijd is Kort- jak- je ziek,2
+       midden4 "in de" week maar "'s zon-" dags niet.2
+       "'s Zon-"4 dags gaat ze naar de kerk,2
+       met4 een boek vol zil- ver werk.2
+       Al-4 tijd is Kort- jak- je ziek,2
+       mid-8 den  in de week4 maar "'s zon-" dags niet.2
 }
 
 
 }
 
 
@@ -68,73 +67,64 @@ tekst. Mogen wij ook af en toe ergens op afgeven?
 %}
 
 hegedraagjetekst = \lyrics{ 
 %}
 
 hegedraagjetekst = \lyrics{ 
-       Al -- tijd zuigt Bill Gates mijn piek, " "
-       "\TeX" is slecht -- ser dan mu --  " " ziek.
-       "'s Zon" -- dags gaat het door een raam, " "
-       Weet dat ik me er -- voor  " " schaam.
-       Al -- tijd zuigt Bill Gates mijn piek, " "
-       "\TeX" is slecht -- ser dan mu --  " " ziek.
+       Al-4 tijd zuigt Bill Gates mijn piek,2
+       "\TeX"4 is slecht- ser dan mu- ziek.2
+       "'s Zon-"4 dags gaat het door een raam,2
+       Weet4 dat ik me er- voor schaam.2
+       Al-4 tijd zuigt Bill Gates mijn piek,2
+       "\TeX"4 is slecht- ser dan mu- ziek.2
 }
 
 texte = \lyrics{ 
        \property Lyrics . textStyle" =  "italic" 
 %      \property Lyrics . textStyle" =  "roman" 
 }
 
 texte = \lyrics{ 
        \property Lyrics . textStyle" =  "italic" 
 %      \property Lyrics . textStyle" =  "roman" 
-       Ah! vous dir -- ai -- je ma -- man " "
-       Ce qui cau -- se mon tour --  " " ment
-       Pa -- pa veut que je rai -- son -- ne
-       Comm' u -- ne gran -- de per -- " " son -- ne
-       Moi je dis que les bon -- bons " "
-       Va -- lent mieux que la rai --  " " son
+       Ah!4 vous dir- ai- je ma- man2
+       Ce4 qui cau- se mon tour- ment2
+       Pa-4 pa veut que je rai- son- ne
+       Comm' u- ne gran- de per- son- ne
+       Moi je dis que les bon- bons2
+       Va-4 lent mieux que la rai- son2
 }
 
 texti = \lyrics{
        \property "Lyrics"."textStyle" =  "roman"
 }
 
 texti = \lyrics{
        \property "Lyrics"."textStyle" =  "roman"
-       Twin -- kle, twin -- kle, lit -- tle star, " "
-       How I won -- der what you  " " are.
-       Up a -- bove the world so high, " "
-       Like a dia -- mond in the  " " sky. " "
-       Twin -- kle, twin -- kle, lit -- tle star, " "
-       How I won -- der what you  " " are!
+       Twin-4 kle, twin- kle, lit- tle star,2
+       How4 I won- der what you are.2
+       Up4 a- bove the world so high,2
+       Like4 a dia- mond in the sky.2
+       Twin-4 kle, twin- kle, lit- tle star,2
+       How4 I won- der what you are!2
 }
 
 textii = \lyrics{
 }
 
 textii = \lyrics{
-       When the bla -- zing sun is gone, " "
-       When he no -- thing shines up --  " " on,
-       Then you show your lit -- tle light, " "
-       Twin -- kle, twin -- kle, all the  " " night. " "
-       Twin -- kle, twin -- kle, lit -- tle star, " "
-       How I won -- der what you  " " are!
+       When4 the bla- zing sun is gone,2
+       When4 he no- thing shines up- on,2
+       Then4 you show your lit- tle light,2
+       Twin-4 kle, twin- kle, all the night.2
+       Twin-4 kle, twin- kle, lit- tle star,2
+       How4 I won- der what you are!2
+       
 }
 
 textiii = \lyrics{
 }
 
 textiii = \lyrics{
-       Then the tra -- veler in the dark " "
-       Thanks you for your ti -- ny  " " spark;
-       He could not see which way to go,
-       If you did not twin -- kle  " " so. " "
-       Twin -- kle, twin -- kle, lit -- tle star, " "
-       How I won -- der what you  " " are!
+       Then4 the tra- veler in the dark2
+       Thanks4 you for your ti- ny spark;2
+       He4 could not see which way8 to8 go,2
+       If4 you did not twin- kle so.2
+       Twin-4 kle, twin- kle, lit- tle star,2
+       How4 I won- der what you are!2
 }
 
 \score{
        <
                \context Staff=i \repeat semi 2 < \global\melody >
 }
 
 \score{
        <
                \context Staff=i \repeat semi 2 < \global\melody >
-               \context Lyrics=top \context LyricVoice 
-                       \repeat fold 2 {} 
-                       \alternative { 
-                               \rhythm \melody \tekst 
-                               \rhythm \melody \texte 
-                       }
+               \context Lyrics=top \context LyricVoice \repeat fold 2 {} \alternative { \tekst \texte }
                \context GrandStaff <
                        \context Staff=ii \repeat semi 2 < \global\melody >
                        \context Staff=iii \repeat semi 2 < \global\accompany >
                >
                \context GrandStaff <
                        \context Staff=ii \repeat semi 2 < \global\melody >
                        \context Staff=iii \repeat semi 2 < \global\accompany >
                >
-               \context Lyrics =bottom \context LyricVoice 
-                       \repeat fold 3 {} 
-                       \alternative { 
-                               \rhythm \melody \texti 
-                               \rhythm \melody \textii 
-                               \rhythm \melody \textiii 
-                       }
+               \context Lyrics =bottom \context LyricVoice \repeat fold 3 {} 
+                       \alternative { \texti \textii \textiii }
        >
        \paper{
                gourlay_maxmeasures = 14.0;
        >
        \paper{
                gourlay_maxmeasures = 14.0;
index efab145f99ac5da0fabf9dea7eb2d17c164fe627..a78daa8ef394408561b85815e30a2cd09d6020b7 100644 (file)
   Base class for anything that records its poisition in the parse file.
  */
 class Input {
   Base class for anything that records its poisition in the parse file.
  */
 class Input {
-    char const *defined_ch_C_ ;
-    Source_file * source_file_l_;
+  char const *defined_ch_C_ ;
+  Source_file * source_file_l_;
 public:
     
 public:
     
-    void warning (String) const; // should use member func?
-    void non_fatal_error (String) const;
-    void error (String) const;
-    void message (String) const;
-    void set_spot (Input const &);
-    
-    String location_str () const;
-    Input (Source_file*, char const*);
-    Input ();
-    Input (Input const& );
+  void warning (String) const; // should use member func?
+  void non_fatal_error (String) const;
+  void error (String) const;
+  void message (String) const;
+  void set_spot (Input const &);
+  Input spot () const;
+  String location_str () const;
+  Input (Source_file*, char const*);
+  Input ();
 };
 
 #endif // INPUT_HH
 };
 
 #endif // INPUT_HH
index 7de83441f3c85dacf4089f327d4b0e0a10aec20c..711f453c052e916bd9ce861027250d8c9a769d8e 100644 (file)
@@ -26,8 +26,8 @@ public:
   void set_path (File_path*p_C);
   void set_binary (bool);
 
   void set_path (File_path*p_C);
   void set_binary (bool);
 
-private:
   const File_path * path_C_;
   const File_path * path_C_;
+private:
   Cons<Source_file> *sourcefile_p_list_;
   bool binary_b_ ;
 };
   Cons<Source_file> *sourcefile_p_list_;
   bool binary_b_ ;
 };
index 457ec5ebee9c1a455d9aeb94093be54d8bd3eeae..d159319a45002b98a1ef165bf577d35bc1e8625b 100644 (file)
@@ -23,10 +23,10 @@ Input::Input ()
   defined_ch_C_ = 0;
 }
 
   defined_ch_C_ = 0;
 }
 
-Input::Input (Input const &s)
+Input
+Input::spot () const
 {
 {
-  source_file_l_ = s.source_file_l_;
-  defined_ch_C_ = s.defined_ch_C_;
+  return *this;
 }
 
 void
 }
 
 void
@@ -104,3 +104,4 @@ Input::location_str () const
   else
     return "(" + _ ("position unknown") + ")";
 }
   else
     return "(" + _ ("position unknown") + ")";
 }
+
index 8ba8b9703fe66b26fbc702924bd9237ee87eaa00..db4f80110183c6a7c94ec8deeafea5987744d036 100644 (file)
@@ -135,7 +135,7 @@ Adobe_font_metric::find_char (String nm, bool warn) const
 }
 
 
 }
 
 
-Character_metric *
+Character_metric const *
 Adobe_font_metric::get_char (int code, bool warn) const
 {
   return &find_ascii (code,warn);
 Adobe_font_metric::get_char (int code, bool warn) const
 {
   return &find_ascii (code,warn);
index 70d08a62e1a2668bd47ad70f65917dc91a80a28e..ddb83af5f27f98e6f1b05a2dc4331cc220f74ae9 100644 (file)
@@ -53,7 +53,7 @@ Align_note_column_engraver::do_removal_processing ()
   Scalar al = get_property ("graceAlignPosition", 0);
   if (al.isdir_b ())
     {
   Scalar al = get_property ("graceAlignPosition", 0);
   if (al.isdir_b ())
     {
-      align_item_p_->notehead_align_dir_ = int (al);
+      align_item_p_->notehead_align_dir_ = Direction (int (al));
     }
   
   typeset_element (align_item_p_);
     }
   
   typeset_element (align_item_p_);
index a562b52d88d0b3254a62d5ef9af06bfbf779b5cd..bda1a307f424cfec16c9f1d7da5b818deb78dba4 100644 (file)
@@ -90,7 +90,7 @@ Interval
 Axis_group_element::extra_extent (Axis a )const
 {
   Interval g;
 Axis_group_element::extra_extent (Axis a )const
 {
   Interval g;
-  purge_extra ();
+  purge_extra ();              // Yeah yeah,  const correctness.
   for (int i=0;  i < extra_elems_.size (); i++)
     {
       Interval ge = extra_elems_[i]->extent (a);
   for (int i=0;  i < extra_elems_.size (); i++)
     {
       Interval ge = extra_elems_[i]->extent (a);
index aed0954e4738e7d09eeb325f0060ce234fbfeb2e..71064ac8b4b235eff42c0a7d40a1ca523c9978e3 100644 (file)
@@ -78,9 +78,9 @@ Axis_group_spanner::do_break_processing()
          Item *it = dynamic_cast <Item *> (elt) ;        
          if (Spanner * sp =dynamic_cast <Spanner *> (elt))
            {
          Item *it = dynamic_cast <Item *> (elt) ;        
          if (Spanner * sp =dynamic_cast <Spanner *> (elt))
            {
-             for (int j =0; j < sp->broken_info_.size(); j++) 
+             for (int j =0; j < sp->broken_into_l_arr_.size(); j++) 
                {
                {
-                 Line_of_score *l = sp->broken_info_[j].line_l_;
+                 Line_of_score *l = sp->broken_into_l_arr_[j]->line_l ();
 
                  Axis_group_spanner * my_broken_l
                    = dynamic_cast<Axis_group_spanner*>(find_broken_piece (l));
 
                  Axis_group_spanner * my_broken_l
                    = dynamic_cast<Axis_group_spanner*>(find_broken_piece (l));
diff --git a/lily/break-algorithm.cc b/lily/break-algorithm.cc
new file mode 100644 (file)
index 0000000..8291f81
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+  break.cc -- implement Break_algorithm
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "score-column.hh"
+#include "break.hh"
+#include "paper-def.hh"
+#include "spring-spacer.hh"
+#include "debug.hh"
+#include "line-of-score.hh"
+#include "paper-score.hh"
+#include "paper-column.hh"
+#include "cpu-timer.hh"
+#include "command-request.hh"
+
+String
+Col_stats::str () const
+{
+  String s;
+  if (!count_i_)
+    s = _ ("0 lines");
+  else if (count_i_ == 1)
+    s = _f ("1 line (of %.0f columns)", (Real)cols_i_/count_i_);
+  else
+    s = _f ("%d lines (with an average of %.1f columns)", 
+      count_i_, (Real)cols_i_/count_i_);
+  return s;
+}
+
+void
+Col_stats::add (Line_of_cols const& line)
+{
+  count_i_++;
+  cols_i_ += line.size ();
+}
+
+
+Col_stats::Col_stats ()
+{
+  count_i_ =0;
+  cols_i_ =0;
+}
+
+/* **************************************************************** */
+
+
+Array<int>
+Break_algorithm::find_break_indices () const
+{
+  Line_of_cols all (pscore_l_->col_l_arr_);
+  Array<int> retval;
+
+  for (int i=0; i < all.size (); i++)
+    if (all[i]->breakable_b ())
+      retval.push (i);
+
+  if (linelength <=0)
+    while (retval.size () >2)
+      retval.del (1);
+
+  return retval;
+}
+
+
+Line_of_cols
+Break_algorithm::find_breaks () const
+{
+  Line_of_cols all (pscore_l_->col_l_arr_);
+  Line_of_cols retval;
+
+  for (int i=0; i < all.size (); i++)
+    if (all[i]->breakable_b ())
+      retval.push (all[i]);
+
+
+  if (linelength <=0)
+    while (retval.size () >2)
+      retval.del (1);
+
+  return retval;
+}
+
+
+
+
+
+Line_spacer*
+Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line) const
+{
+  // ugh
+  Spring_spacer * sp= dynamic_cast<Spring_spacer*> ((*get_line_spacer) ());
+
+  sp->paper_l_ = pscore_l_->paper_l_;
+  sp->add_column (curline[0], true, line[LEFT]);
+  for (int i=1; i< curline.size ()-1; i++)
+    sp->add_column (curline[i]);
+
+  if (line.length () > 0)
+    {
+      sp->add_column (curline.top (), true, line[RIGHT]);
+      sp->energy_normalisation_f_  = sqr (line.length ());
+    }
+  else
+    sp->add_column (curline.top ());
+
+  sp->prepare ();
+  return sp;
+}
+
+Break_algorithm::Break_algorithm ()
+{
+  pscore_l_ = 0;
+  get_line_spacer =0;
+  linelength = 0;
+}
+
+void
+Break_algorithm::set_pscore (Paper_score*s)
+{
+  pscore_l_ = s;
+  linelength = s->paper_l_->linewidth_f ();
+  do_set_pscore ();
+}
+
+bool
+Break_algorithm::feasible (Line_of_cols curline) const
+{
+  if (linelength <=  0)
+    return true;
+
+  for (int i=0; i < curline.size (); i++)
+    {
+      if (i && i < curline.size () -1
+         && ((dynamic_cast<Score_column*>(curline[i]))->break_penalty_i () >= Break_req::FORCE))
+       return false;
+    }
+  return true;
+}
+
+void
+Break_algorithm::problem_OK () const
+{
+  if (pscore_l_->col_l_arr_.empty ())
+    error (_("score does not have any columns"));
+  OK ();
+}
+
+void
+Break_algorithm::OK () const
+{
+}
+
+Array<Column_x_positions>
+Break_algorithm::solve () const
+{
+  Cpu_timer timer;
+
+  Array<Column_x_positions> h= do_solve ();
+
+  if (approx_stats_.count_i_)
+    *mlog << '\n' << _f ("approximated %s", approx_stats_.str ()) << endl;
+  if (exact_stats_.count_i_)
+    *mlog << _f ("calculated %s exactly", exact_stats_.str ()) << endl;
+  *mlog << _f ("elapsed time %.2f seconds",  timer.read ()) << endl;
+
+  return h;
+}
+
+void
+Break_algorithm::do_set_pscore ()
+{
+
+}
index 12aa5e08a0664941db2605062d04261bef060628..3e1ba4e18c1b9c80a8d506a85cee5e8d6ec2cdb3 100644 (file)
@@ -101,14 +101,13 @@ Break_align_item::do_pre_processing()
   
   scm_set_car_x (first_pair, gh_double2scm (-dists[0]));
   elems[0]->set_elt_property (minimum_space_scm_sym, first_pair);
   
   scm_set_car_x (first_pair, gh_double2scm (-dists[0]));
   elems[0]->set_elt_property (minimum_space_scm_sym, first_pair);
-                              
-
   
   Axis_align_item::do_pre_processing();
 
   Real pre_space = elems[0]->extent (X_AXIS)[LEFT];
   Real spring_len = elems.top ()->extent (X_AXIS)[RIGHT];
   
   Axis_align_item::do_pre_processing();
 
   Real pre_space = elems[0]->extent (X_AXIS)[LEFT];
   Real spring_len = elems.top ()->extent (X_AXIS)[RIGHT];
-  Real stretch_distance =0.;  
+  Real stretch_distance =0.;
+  
   if (SCM_CAR (symbol_list) == extra_space_scm_sym)
     {
       spring_len += dists.top ();
   if (SCM_CAR (symbol_list) == extra_space_scm_sym)
     {
       spring_len += dists.top ();
@@ -120,7 +119,6 @@ Break_align_item::do_pre_processing()
       stretch_distance = spring_len;
     }
 
       stretch_distance = spring_len;
     }
 
-
   /*
     Hint the spacing engine how much space to put in.
   */
   /*
     Hint the spacing engine how much space to put in.
   */
@@ -129,7 +127,8 @@ Break_align_item::do_pre_processing()
                                           gh_double2scm (spring_len)));
 
   column_l ()->set_elt_property (stretch_distance_scm_sym,
                                           gh_double2scm (spring_len)));
 
   column_l ()->set_elt_property (stretch_distance_scm_sym,
-                                gh_double2scm (stretch_distance));
+                                gh_cons (gh_double2scm (dists[0]),
+                                         gh_double2scm (stretch_distance)));
                                 
 }
 
                                 
 }
 
diff --git a/lily/break.cc b/lily/break.cc
deleted file mode 100644 (file)
index 8291f81..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
-  break.cc -- implement Break_algorithm
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "score-column.hh"
-#include "break.hh"
-#include "paper-def.hh"
-#include "spring-spacer.hh"
-#include "debug.hh"
-#include "line-of-score.hh"
-#include "paper-score.hh"
-#include "paper-column.hh"
-#include "cpu-timer.hh"
-#include "command-request.hh"
-
-String
-Col_stats::str () const
-{
-  String s;
-  if (!count_i_)
-    s = _ ("0 lines");
-  else if (count_i_ == 1)
-    s = _f ("1 line (of %.0f columns)", (Real)cols_i_/count_i_);
-  else
-    s = _f ("%d lines (with an average of %.1f columns)", 
-      count_i_, (Real)cols_i_/count_i_);
-  return s;
-}
-
-void
-Col_stats::add (Line_of_cols const& line)
-{
-  count_i_++;
-  cols_i_ += line.size ();
-}
-
-
-Col_stats::Col_stats ()
-{
-  count_i_ =0;
-  cols_i_ =0;
-}
-
-/* **************************************************************** */
-
-
-Array<int>
-Break_algorithm::find_break_indices () const
-{
-  Line_of_cols all (pscore_l_->col_l_arr_);
-  Array<int> retval;
-
-  for (int i=0; i < all.size (); i++)
-    if (all[i]->breakable_b ())
-      retval.push (i);
-
-  if (linelength <=0)
-    while (retval.size () >2)
-      retval.del (1);
-
-  return retval;
-}
-
-
-Line_of_cols
-Break_algorithm::find_breaks () const
-{
-  Line_of_cols all (pscore_l_->col_l_arr_);
-  Line_of_cols retval;
-
-  for (int i=0; i < all.size (); i++)
-    if (all[i]->breakable_b ())
-      retval.push (all[i]);
-
-
-  if (linelength <=0)
-    while (retval.size () >2)
-      retval.del (1);
-
-  return retval;
-}
-
-
-
-
-
-Line_spacer*
-Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line) const
-{
-  // ugh
-  Spring_spacer * sp= dynamic_cast<Spring_spacer*> ((*get_line_spacer) ());
-
-  sp->paper_l_ = pscore_l_->paper_l_;
-  sp->add_column (curline[0], true, line[LEFT]);
-  for (int i=1; i< curline.size ()-1; i++)
-    sp->add_column (curline[i]);
-
-  if (line.length () > 0)
-    {
-      sp->add_column (curline.top (), true, line[RIGHT]);
-      sp->energy_normalisation_f_  = sqr (line.length ());
-    }
-  else
-    sp->add_column (curline.top ());
-
-  sp->prepare ();
-  return sp;
-}
-
-Break_algorithm::Break_algorithm ()
-{
-  pscore_l_ = 0;
-  get_line_spacer =0;
-  linelength = 0;
-}
-
-void
-Break_algorithm::set_pscore (Paper_score*s)
-{
-  pscore_l_ = s;
-  linelength = s->paper_l_->linewidth_f ();
-  do_set_pscore ();
-}
-
-bool
-Break_algorithm::feasible (Line_of_cols curline) const
-{
-  if (linelength <=  0)
-    return true;
-
-  for (int i=0; i < curline.size (); i++)
-    {
-      if (i && i < curline.size () -1
-         && ((dynamic_cast<Score_column*>(curline[i]))->break_penalty_i () >= Break_req::FORCE))
-       return false;
-    }
-  return true;
-}
-
-void
-Break_algorithm::problem_OK () const
-{
-  if (pscore_l_->col_l_arr_.empty ())
-    error (_("score does not have any columns"));
-  OK ();
-}
-
-void
-Break_algorithm::OK () const
-{
-}
-
-Array<Column_x_positions>
-Break_algorithm::solve () const
-{
-  Cpu_timer timer;
-
-  Array<Column_x_positions> h= do_solve ();
-
-  if (approx_stats_.count_i_)
-    *mlog << '\n' << _f ("approximated %s", approx_stats_.str ()) << endl;
-  if (exact_stats_.count_i_)
-    *mlog << _f ("calculated %s exactly", exact_stats_.str ()) << endl;
-  *mlog << _f ("elapsed time %.2f seconds",  timer.read ()) << endl;
-
-  return h;
-}
-
-void
-Break_algorithm::do_set_pscore ()
-{
-
-}
index 7b6712be70a9a0546c9847ee7508d45c925bb65b..dd0b405bb1a6298dead9a5f6493430d7dd8fc776 100644 (file)
@@ -1,7 +1,9 @@
 /*
   extender-engraver.cc -- implement Extender_engraver
 
 /*
   extender-engraver.cc -- implement Extender_engraver
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1999 Glen Prideaux <glenprideaux@iname.com>,
+  Han-Wen Nienhuys, Jan Nieuwenhuizen.
+  
 */
 
 #include "proto.hh"
 */
 
 #include "proto.hh"
 #include "extender-spanner.hh"
 #include "score-column.hh"
 #include "text-item.hh"
 #include "extender-spanner.hh"
 #include "score-column.hh"
 #include "text-item.hh"
+#include "extender-engraver.hh"
 
 ADD_THIS_TRANSLATOR (Extender_engraver);
 
 Extender_engraver::Extender_engraver ()
 {
 
 ADD_THIS_TRANSLATOR (Extender_engraver);
 
 Extender_engraver::Extender_engraver ()
 {
+  current_lyric_l_ = 0;
+  last_lyric_l_ = 0;
   extender_spanner_p_ = 0;
   req_l_ = 0;
 }
   extender_spanner_p_ = 0;
   req_l_ = 0;
 }
@@ -24,14 +29,7 @@ Extender_engraver::acknowledge_element (Score_element_info i)
 {
   if (Text_item* t = dynamic_cast<Text_item*> (i.elem_l_))
     {
 {
   if (Text_item* t = dynamic_cast<Text_item*> (i.elem_l_))
     {
-      Rhythmic_req * rh = dynamic_cast<Rhythmic_req*>  (i.req_l_);
-      if (!rh)
-       return;
-
-      now_lyrics_.push (Text_lyric_tuple (t, rh, now_mom () + rh->length_mom ()));
-      /*
-       UGH.  What do we do in case of multiple alternatives? 
-       */
+      current_lyric_l_ = t;
       if (extender_spanner_p_
          && !extender_spanner_p_->spanned_drul_[RIGHT]
            )
       if (extender_spanner_p_
          && !extender_spanner_p_->spanned_drul_[RIGHT]
            )
@@ -43,9 +41,9 @@ Extender_engraver::acknowledge_element (Score_element_info i)
 
 
 bool
 
 
 bool
-Extender_engraver::do_try_music (Music* req_l)
+Extender_engraver::do_try_music (Music* r)
 {
 {
-  if (Extender_req* p = dynamic_cast <Extender_req *> (req_l))
+  if (Extender_req* p = dynamic_cast <Extender_req *> (r))
     {
       if (req_l_)
        return false;
     {
       if (req_l_)
        return false;
@@ -69,24 +67,16 @@ Extender_engraver::do_removal_processing ()
 void
 Extender_engraver::do_process_requests ()
 {
 void
 Extender_engraver::do_process_requests ()
 {
-  Array<Text_lyric_tuple> stopped_texts;
-  Moment now = now_mom ();
-
-  stopped_texts.clear ();
-  while (past_lyrics_pq_.size ()
-        && past_lyrics_pq_.front ().end_ == now)
-    stopped_texts.push (past_lyrics_pq_.get ());
-
   if (req_l_)
     {
   if (req_l_)
     {
-      if (!stopped_texts.size ())
+      if (!last_lyric_l_)
        {
          req_l_->warning ("Nothing to connect extender to on the left. Ignoring extender request");
          return;
        }
       
       extender_spanner_p_ = new Extender_spanner;
        {
          req_l_->warning ("Nothing to connect extender to on the left. Ignoring extender request");
          return;
        }
       
       extender_spanner_p_ = new Extender_spanner;
-      extender_spanner_p_->set_textitem  (LEFT, stopped_texts[0].text_l_);
+      extender_spanner_p_->set_textitem  (LEFT, last_lyric_l_);
       announce_element (Score_element_info (extender_spanner_p_, req_l_));
     }
 }
       announce_element (Score_element_info (extender_spanner_p_, req_l_));
     }
 }
@@ -95,47 +85,23 @@ Extender_engraver::do_process_requests ()
 void
 Extender_engraver::do_pre_move_processing ()
 {
 void
 Extender_engraver::do_pre_move_processing ()
 {
-  for (int i=0; i < now_lyrics_.size (); i++)
-    {
-      past_lyrics_pq_.insert (now_lyrics_[i]);
-    }
-  now_lyrics_.clear ();
-
   if (extender_spanner_p_)
     {
       typeset_element (extender_spanner_p_);
       extender_spanner_p_ = 0;
     }
   if (extender_spanner_p_)
     {
       typeset_element (extender_spanner_p_);
       extender_spanner_p_ = 0;
     }
-}
-void
-Extender_engraver::do_post_move_processing ()
-{
-  Moment now = now_mom ();
-  while (past_lyrics_pq_.size () && past_lyrics_pq_.front ().end_ < now)
-    past_lyrics_pq_.delmin ();
 
 
-  req_l_ =0;
-}
-
-/**********************************************************************/
-Text_lyric_tuple::Text_lyric_tuple ()
-{
-  text_l_ =0;
-  req_l_ =0;
-  end_ = 0;
+  if (current_lyric_l_)
+    {
+      last_lyric_l_ = current_lyric_l_;
+      current_lyric_l_ =0;
+    }
 }
 
 }
 
-Text_lyric_tuple::Text_lyric_tuple (Text_item *h, Rhythmic_req*m, Moment mom)
+void
+Extender_engraver::do_post_move_processing ()
 {
 {
-  text_l_ = h;
-  req_l_ = m;
-  end_ = mom;
+  req_l_ = 0;
 }
 
 
 }
 
 
-int
-Text_lyric_tuple::time_compare (Text_lyric_tuple const&h1,
-                            Text_lyric_tuple const &h2)
-{
-  return (h1.end_ - h2.end_ ).sign ();
-}
diff --git a/lily/folded-repeat-iterator.cc b/lily/folded-repeat-iterator.cc
new file mode 100644 (file)
index 0000000..ca1a2ed
--- /dev/null
@@ -0,0 +1,131 @@
+/*   
+  new-repeated-music-iterator.cc --  implement Folded_repeat_iterator
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "folded-repeat-iterator.hh"
+#include "new-repeated-music.hh"
+#include "music-list.hh"
+#include "simultaneous-music-iterator.hh"
+#include "translator-group.hh"
+
+Folded_repeat_iterator::Folded_repeat_iterator ()
+{
+  main_iter_p_ = 0;
+  alternative_iter_p_ = 0;
+}
+
+bool
+Folded_repeat_iterator::ok () const
+{
+  return main_iter_p_ || alternative_iter_p_;
+}
+
+Folded_repeat_iterator::~Folded_repeat_iterator ()
+{
+  delete main_iter_p_;
+  delete alternative_iter_p_;
+}
+
+Moment
+Folded_repeat_iterator::next_moment () const
+{
+  if (main_iter_p_)
+    {
+      return main_iter_p_->next_moment ();
+    }
+  else
+    return main_length_mom_ + alternative_iter_p_->next_moment ();
+}
+
+void
+Folded_repeat_iterator::construct_children ()
+{
+  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);
+  main_iter_p_ = get_iterator_p (mus->repeat_body_p_);
+  if (!main_iter_p_->ok())
+    {
+      leave_body ();
+      enter_alternative ();
+    }
+}
+
+void
+Folded_repeat_iterator::do_process_and_next (Moment m)
+{
+  if (!m)
+    {
+      bool success = try_music (music_l_);
+      if (!success)
+       music_l_->warning ( _("No one to print a repeat brace"));
+    }
+  
+  if (main_iter_p_)
+    {
+      main_iter_p_->process_and_next (m);
+      if (!main_iter_p_->ok ())
+       leave_body ();
+    }
+
+  if (!main_iter_p_ && !alternative_iter_p_)
+    {
+      enter_alternative ();
+    }
+  
+  if (alternative_iter_p_)
+    {
+      alternative_iter_p_->process_and_next (m - main_length_mom_);
+      if (!alternative_iter_p_->ok ())
+       {
+         delete alternative_iter_p_;
+         alternative_iter_p_ =0;
+       }
+    }
+}
+
+void
+Folded_repeat_iterator::leave_body ()
+{
+  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);
+  delete main_iter_p_;
+  main_iter_p_ = 0;
+  main_length_mom_ +=  mus->repeat_body_p_->length_mom ();
+}
+
+void
+Folded_repeat_iterator::enter_alternative ()
+{
+  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);  
+  if (mus->alternatives_p_)
+    {
+      Simultaneous_music_iterator * s = new Simultaneous_music_iterator;
+      s->separate_contexts_b_ = true;
+      s->init_translator (mus->alternatives_p_, report_to_l ());
+  
+      alternative_iter_p_ = s;
+      alternative_iter_p_->construct_children ();
+    }
+}
+
+void
+Folded_repeat_iterator::do_print () const
+{
+#ifndef NPRINT
+#endif
+}
+
+Music_iterator*
+Folded_repeat_iterator::try_music_in_children (Music const* m) const
+{
+  if (main_iter_p_)
+    {
+      return main_iter_p_->try_music (m);
+    }
+  if (alternative_iter_p_)
+    return alternative_iter_p_->try_music (m);
+  return 0;
+}
index b291cf29d7f798aeb29710bacf40783bded491ae..b3c9cf9c5a7e3e3262a0bb9fd84d48a9b6442904 100644 (file)
@@ -51,8 +51,3 @@ Grace_iterator::next_moment () const
   return 0;
 }
 
   return 0;
 }
 
-Music*
-Grace_iterator::next_music_l ()
-{
-  return 0;
-}
index 3d0295f0179ed7a9114c9d2414fe860c01edb8ee..d8dcb08257de0e6c2983bb23e5a744ccc5aed22d 100644 (file)
 #include "grace-align-item.hh"
 #include "note-head.hh"
 #include "local-key-item.hh"
 #include "grace-align-item.hh"
 #include "note-head.hh"
 #include "local-key-item.hh"
+#include "paper-column.hh"
 
 class Grace_position_engraver:public Engraver
 {
 
 class Grace_position_engraver:public Engraver
 {
+  Paper_column *last_musical_col_l_;
 protected:
   VIRTUAL_COPY_CONS(Translator);
   virtual void acknowledge_element (Score_element_info);
   virtual void process_acknowledged ();
   virtual void do_post_move_processing ();
 protected:
   VIRTUAL_COPY_CONS(Translator);
   virtual void acknowledge_element (Score_element_info);
   virtual void process_acknowledged ();
   virtual void do_post_move_processing ();
+  virtual void do_pre_move_processing ();
   Grace_align_item*align_l_;
   Link_array<Item> support_;
 public:
   Grace_align_item*align_l_;
   Link_array<Item> support_;
 public:
@@ -29,6 +32,7 @@ public:
 Grace_position_engraver::Grace_position_engraver ()
 {
   align_l_ =0;
 Grace_position_engraver::Grace_position_engraver ()
 {
   align_l_ =0;
+  last_musical_col_l_ =0;
 }
 
 void
 }
 
 void
@@ -40,7 +44,8 @@ Grace_position_engraver::acknowledge_element (Score_element_info i)
     }
   else if (Note_head * n = dynamic_cast <Note_head*> (i.elem_l_))
     {
     }
   else if (Note_head * n = dynamic_cast <Note_head*> (i.elem_l_))
     {
-      support_.push (n);
+      if (n->get_elt_property (grace_scm_sym) == SCM_BOOL_F)
+       support_.push (n);
     }
   else if (Local_key_item*it = dynamic_cast<Local_key_item*>(i.elem_l_))
     {
     }
   else if (Local_key_item*it = dynamic_cast<Local_key_item*>(i.elem_l_))
     {
@@ -62,6 +67,35 @@ Grace_position_engraver::process_acknowledged ()
     }
 }
 
     }
 }
 
+void
+Grace_position_engraver::do_pre_move_processing ()
+{
+  /*
+     We don't have support. Either some moron tried attaching us to a rest,
+     or we're at the end of the piece.  In the latter case, we have a
+     problem if there are spanners in the grace section,
+     they will want to  be broken into pieces (their line_l () field  is nil).
+
+     Solution: attach ourselves to  the last musical column known.  A little intricate.
+     
+  */
+  if (align_l_ && !align_l_->supported_b ())
+    {
+      Graphical_element * elt = align_l_->parent_l (X_AXIS);
+      if (elt)
+       return;
+
+      warning (_("Unattached grace notes. Attaching to last musical column."));
+      Axis_group_element * ae = dynamic_cast<Axis_group_element*> (elt);
+      if (ae)
+       ae->remove_element (align_l_);
+      else if (elt)
+       align_l_->dim_cache_[X_AXIS]->parent_l_ = 0;
+      last_musical_col_l_->add_element (align_l_);
+    }
+  last_musical_col_l_ = get_staff_info ().musical_pcol_l ();
+}
+
 void
 Grace_position_engraver::do_post_move_processing ()
 {
 void
 Grace_position_engraver::do_post_move_processing ()
 {
index 013c9620b6b3e79292d23a44e32ea63383a916f2..4fccd9cb540cabd241d9eeae1bcbe8d6de6b7655 100644 (file)
@@ -16,6 +16,8 @@ ADD_THIS_TRANSLATOR (Hyphen_engraver);
 
 Hyphen_engraver::Hyphen_engraver ()
 {
 
 Hyphen_engraver::Hyphen_engraver ()
 {
+  current_lyric_l_ = 0;
+  last_lyric_l_ = 0;
   hyphen_spanner_p_ = 0;
   req_l_ = 0;
 }
   hyphen_spanner_p_ = 0;
   req_l_ = 0;
 }
@@ -25,14 +27,7 @@ Hyphen_engraver::acknowledge_element (Score_element_info i)
 {
   if (Text_item* t = dynamic_cast<Text_item*> (i.elem_l_))
     {
 {
   if (Text_item* t = dynamic_cast<Text_item*> (i.elem_l_))
     {
-      Rhythmic_req * rh = dynamic_cast<Rhythmic_req*>  (i.req_l_);
-      if (!rh)
-       return;
-
-      now_lyrics_.push (Text_lyric_tuple (t, rh, now_mom () + rh->length_mom ()));
-      /*
-       UGH.  What do we do in case of multiple alternatives? 
-       */
+      current_lyric_l_ = t;
       if (hyphen_spanner_p_
          && !hyphen_spanner_p_->spanned_drul_[RIGHT]
            )
       if (hyphen_spanner_p_
          && !hyphen_spanner_p_->spanned_drul_[RIGHT]
            )
@@ -70,24 +65,16 @@ Hyphen_engraver::do_removal_processing ()
 void
 Hyphen_engraver::do_process_requests ()
 {
 void
 Hyphen_engraver::do_process_requests ()
 {
-  Array<Text_lyric_tuple> stopped_texts;
-  Moment now = now_mom ();
-
-  stopped_texts.clear ();
-  while (past_lyrics_pq_.size ()
-        && past_lyrics_pq_.front ().end_ == now)
-    stopped_texts.push (past_lyrics_pq_.get ());
-
   if (req_l_)
     {
   if (req_l_)
     {
-      if (!stopped_texts.size ())
+      if (!last_lyric_l_)
        {
          req_l_->warning ("Nothing to connect hyphen to on the left. Ignoring hyphen request");
          return;
        }
       
       hyphen_spanner_p_ = new Hyphen_spanner;
        {
          req_l_->warning ("Nothing to connect hyphen to on the left. Ignoring hyphen request");
          return;
        }
       
       hyphen_spanner_p_ = new Hyphen_spanner;
-      hyphen_spanner_p_->set_textitem  (LEFT, stopped_texts[0].text_l_);
+      hyphen_spanner_p_->set_textitem  (LEFT, last_lyric_l_);
       announce_element (Score_element_info (hyphen_spanner_p_, req_l_));
     }
 }
       announce_element (Score_element_info (hyphen_spanner_p_, req_l_));
     }
 }
@@ -96,26 +83,23 @@ Hyphen_engraver::do_process_requests ()
 void
 Hyphen_engraver::do_pre_move_processing ()
 {
 void
 Hyphen_engraver::do_pre_move_processing ()
 {
-  for (int i=0; i < now_lyrics_.size (); i++)
-    {
-      past_lyrics_pq_.insert (now_lyrics_[i]);
-    }
-  now_lyrics_.clear ();
-
   if (hyphen_spanner_p_)
     {
       typeset_element (hyphen_spanner_p_);
       hyphen_spanner_p_ = 0;
     }
   if (hyphen_spanner_p_)
     {
       typeset_element (hyphen_spanner_p_);
       hyphen_spanner_p_ = 0;
     }
+
+  if (current_lyric_l_)
+    {
+      last_lyric_l_ = current_lyric_l_;
+      current_lyric_l_ =0;
+    }
 }
 }
+
 void
 Hyphen_engraver::do_post_move_processing ()
 {
 void
 Hyphen_engraver::do_post_move_processing ()
 {
-  Moment now = now_mom ();
-  while (past_lyrics_pq_.size () && past_lyrics_pq_.front ().end_ < now)
-    past_lyrics_pq_.delmin ();
-
-  req_l_ =0;
+  req_l_ = 0;
 }
 
 
 }
 
 
index 46e2f8826b17171c6f3cb77fef8e10253d94c3e9..2adb810cd99b6eb2946fc9259598b8cdcca4c56c 100644 (file)
@@ -8,6 +8,8 @@
 
 #include <strstream.h>
 
 
 #include <strstream.h>
 
+
+#include "file-path.hh"
 #include "includable-lexer.hh"
 #include "source-file.hh"
 #include "source.hh"
 #include "includable-lexer.hh"
 #include "source-file.hh"
 #include "source.hh"
@@ -43,7 +45,9 @@ Includable_lexer::new_input (String s, Sources  * global_sources)
   if (!sl)
     {
       String msg = _f ("can't find file: `%s\'", s);
   if (!sl)
     {
       String msg = _f ("can't find file: `%s\'", s);
+      msg += _f ("\nSearch path is `%s'\n", global_sources->path_C_->str ().ch_C());
       LexerError (msg.ch_C ());
       LexerError (msg.ch_C ());
+
       return;
     }
   filename_str_arr_.push (sl->name_str ());
       return;
     }
   filename_str_arr_.push (sl->name_str ());
index 757ed776ee22f020f073086e34c1dc64c613e17d..263deb8b62229ccd1d797642e59a46f87171405e 100644 (file)
@@ -55,7 +55,7 @@ struct Adobe_font_metric : Font_metric {
   Adobe_font_metric ();
   void read_char_metrics (Data_file &input, int size);
 
   Adobe_font_metric ();
   void read_char_metrics (Data_file &input, int size);
 
-  Character_metric *get_char (int, bool) const;
+  Character_metric const *get_char (int, bool) const;
 };
 
 Adobe_font_metric read_afm_file (String fn);
 };
 
 Adobe_font_metric read_afm_file (String fn);
index 76f724c63a50d71b854845cefcdbd34e792fc93b..28e9dadeb90b39d2f71fdf798a0e78a4995d1119 100644 (file)
@@ -3,7 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1999 Glen Prideaux <glenprideaux@iname.com>,
+  Han-Wen Nienhuys, Jan Nieuwenhuizen.
 */
 
 #ifndef EXTENDER_ENGRAVER_HH
 */
 
 #ifndef EXTENDER_ENGRAVER_HH
 #include "drul-array.hh"
 #include "extender-spanner.hh"
 #include "pqueue.hh"
 #include "drul-array.hh"
 #include "extender-spanner.hh"
 #include "pqueue.hh"
-
-struct Text_lyric_tuple {
-  Rhythmic_req *req_l_ ;
-  Text_item *text_l_;
-  Moment end_;
-  
-  Text_lyric_tuple ();
-  Text_lyric_tuple (Text_item*, Rhythmic_req*, Moment);
-  static int time_compare (Text_lyric_tuple const &, Text_lyric_tuple const &);
-};
-
-inline int compare (Text_lyric_tuple const &a, Text_lyric_tuple const &b)
-{
-  return Text_lyric_tuple::time_compare (a,b);
-}
-
-
+#include "extender-engraver.hh"
 
 
 /**
 
 
 /**
-  Generate an extender.  Should make an Extender_spanner that typesets
-  a nice extender line.
-
-  We remember all Text_items that come across, and store their
-  termination times. When we get a request, we create the spanner, and
-  attach the left point to the finished lyrics, and the right point to
-  any lyrics we receive by then.
-*/
+  Generate an centred extender.  Should make a Extender_spanner that
+  typesets a nice centred extender of varying length depending on the
+  gap between syllables.
+
+  We remember the last Text_item that come across. When we get a
+  request, we create the spanner, and attach the left point to the
+  last lyrics, and the right point to any lyrics we receive by
+  then.  */
 class Extender_engraver : public Engraver
 {
 class Extender_engraver : public Engraver
 {
-  PQueue<Text_lyric_tuple> past_lyrics_pq_;
-  Array<Text_lyric_tuple> now_lyrics_;
-  Array<Text_lyric_tuple> stopped_lyrics_;  
-  
+  Text_item *  last_lyric_l_;
+  Text_item * current_lyric_l_;
   Extender_req* req_l_;
   Extender_spanner* extender_spanner_p_;
   Extender_req* req_l_;
   Extender_spanner* extender_spanner_p_;
-
-  
 public:
   Extender_engraver ();
   VIRTUAL_COPY_CONS (Translator);
 public:
   Extender_engraver ();
   VIRTUAL_COPY_CONS (Translator);
index d9215a95553b3c71e8901d78a807981b49b95720..07e6710d443817052437f0e06877413ccf004e72 100644 (file)
@@ -36,6 +36,7 @@ protected:
   
   virtual void do_print () const;
   virtual void do_process_and_next (Moment);
   
   virtual void do_print () const;
   virtual void do_process_and_next (Moment);
+  virtual Music_iterator *try_music_in_children (Music const *) const;
 };
 #endif /* FOLDED_REPEAT_ITERATOR_HH */
 
 };
 #endif /* FOLDED_REPEAT_ITERATOR_HH */
 
index 2878cfc38b4b14f4cefc2e0402a31858d9b7fa88..13c6aca493ebc8377ca4afb6b0da6b551c637e3d 100644 (file)
@@ -25,7 +25,7 @@ struct Character_metric
 
 struct Font_metric
 {
 
 struct Font_metric
 {
-  virtual Character_metric *get_char (int ascii, bool warn) const=0;
+  virtual Character_metric const *get_char (int ascii, bool warn) const=0;
   virtual ~Font_metric () {}
 };
 
   virtual ~Font_metric () {}
 };
 
index 77d5cd75b7d12c05963b68cffc4d22cce02c8537..2aa1e1434dbc0c6a7ab2d61b7d5686809e40107f 100644 (file)
@@ -18,8 +18,8 @@ public:
   ~Grace_iterator ();
   virtual void construct_children () ;
   virtual void do_process_and_next (Moment);
   ~Grace_iterator ();
   virtual void construct_children () ;
   virtual void do_process_and_next (Moment);
+
   Moment next_moment () const;
   Moment next_moment () const;
-  Music* next_music_l ();
 };
 
 
 };
 
 
index 6ab2eb59bc5957bbdf27e6a2b41ff571cbc14879..d8af602c1240e531c230dd0ccc57da38bb700c5f 100644 (file)
 
 
 /**
 
 
 /**
-  Generate an centred hyphen.  Should make a Hyphen_spanner that typesets
-  a nice centred hyphen of varying length depending on the gap between syllables.
-
-  We remember all Text_items that come across, and store their
-  termination times. When we get a request, we create the spanner, and
-  attach the left point to the finished lyrics, and the right point to
-  any lyrics we receive by then.
-*/
+  Generate an centred hyphen.  Should make a Hyphen_spanner that
+  typesets a nice centred hyphen of varying length depending on the
+  gap between syllables.
+
+  We remember the last Text_item that come across. When we get a
+  request, we create the spanner, and attach the left point to the
+  last lyrics, and the right point to any lyrics we receive by
+  then.  */
 class Hyphen_engraver : public Engraver
 {
 class Hyphen_engraver : public Engraver
 {
-  PQueue<Text_lyric_tuple> past_lyrics_pq_;
-  Array<Text_lyric_tuple> now_lyrics_;
-  Array<Text_lyric_tuple> stopped_lyrics_;  
-  
+  Text_item *  last_lyric_l_;
+  Text_item * current_lyric_l_;
   Hyphen_req* req_l_;
   Hyphen_spanner* hyphen_spanner_p_;
   Hyphen_req* req_l_;
   Hyphen_spanner* hyphen_spanner_p_;
-
-  
 public:
   Hyphen_engraver ();
   VIRTUAL_COPY_CONS (Translator);
 public:
   Hyphen_engraver ();
   VIRTUAL_COPY_CONS (Translator);
index 578c58638b22778b7ff776758f3c21d80834cf2b..6cf5efbfaea3d61dac7d2707d5d2d77726f9f5ec 100644 (file)
@@ -22,7 +22,7 @@ public:
   /// is #c# contained in #*this#?
   bool contains_b (Paper_column const *c) const;
     
   /// is #c# contained in #*this#?
   bool contains_b (Paper_column const *c) const;
     
-  Line_of_score * set_breaking (Array<Column_x_positions> const&, int j) const;
+  Line_of_score * set_breaking (Array<Column_x_positions> const&, int j);
 
 
   void output_all (bool last_line);
 
 
   void output_all (bool last_line);
diff --git a/lily/include/lyric-combine-music-iterator.hh b/lily/include/lyric-combine-music-iterator.hh
new file mode 100644 (file)
index 0000000..5ae6a43
--- /dev/null
@@ -0,0 +1,37 @@
+
+/*   
+  lyric-combine-music-iterator.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef LYRIC_COMBINE_MUSIC_ITERATOR_HH
+#define LYRIC_COMBINE_MUSIC_ITERATOR_HH
+
+#include "music-iterator.hh"
+
+class Lyric_combine_music_iterator : public Music_iterator
+{
+  Music_iterator * music_iter_p_;
+  Music_iterator * lyric_iter_p_;
+  
+protected:
+  bool melisma_started_b_;
+
+  
+  virtual void construct_children ();
+  virtual Moment next_moment () const;
+  virtual void do_process_and_next (Moment);
+  virtual Music_iterator *try_music_in_children (Music const*) const;
+
+  virtual bool ok () const;
+  virtual void do_print () const;
+  virtual ~Lyric_combine_music_iterator ();
+public:
+  Lyric_combine_music_iterator ();
+};
+#endif /* LYRIC_COMBINE_MUSIC_ITERATOR_HH */
+
diff --git a/lily/include/lyric-combine-music.hh b/lily/include/lyric-combine-music.hh
new file mode 100644 (file)
index 0000000..d3a2a21
--- /dev/null
@@ -0,0 +1,36 @@
+/*   
+  lyric-combine-music.hh -- declare Lyric_combine_music
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef LYRIC_COMBINE_MUSIC_HH
+#define LYRIC_COMBINE_MUSIC_HH
+#include "music.hh"
+
+
+class Lyric_combine_music : public Music
+{
+  Music * music_p_;
+  Music * lyrics_p_;
+public:
+  Music * music_l () const;
+  Music * lyrics_l () const;
+  
+  Lyric_combine_music (Music*, Music*);
+
+  virtual void transpose (Musical_pitch);
+  virtual void do_print () const;
+  
+  VIRTUAL_COPY_CONS(Music);
+  Lyric_combine_music (Lyric_combine_music const&);
+  virtual Moment length_mom () const;
+  virtual ~Lyric_combine_music ();
+  virtual Musical_pitch to_relative_octave (Musical_pitch);
+  virtual void compress (Moment);
+};
+#endif /* LYRIC_COMBINE_MUSIC_HH */
+
index 7135fc88974df2611b585366046c3fad9def3e4c..0547e213291ec573dbe1ac3a7ab6d78467fed5fc 100644 (file)
@@ -25,4 +25,6 @@ struct Mudela_version
   int patch_i_;
 };
 
   int patch_i_;
 };
 
+extern Mudela_version oldest_version;
+
 #endif // MUDELA_VERSION_HH
 #endif // MUDELA_VERSION_HH
index 9d2a68f68903b36faba3c3053dc7f8e51edfa1e9..f7d9c061e378160b750034b6ecfe96f8c2c7c9d0 100644 (file)
@@ -49,13 +49,22 @@ protected:
    */
   Music_iterator* get_iterator_p (Music const*mus) const;
 
    */
   Music_iterator* get_iterator_p (Music const*mus) const;
 
-  /** Do the actual reporting.  This should be overriden in derived
+  /** Do the actual move.  This should be overriden in derived
     classes.  It is called by #process_and_next#, the public interface 
     */
   virtual void do_process_and_next (Moment until);
 
     classes.  It is called by #process_and_next#, the public interface 
     */
   virtual void do_process_and_next (Moment until);
 
+
+  virtual Music_iterator* try_music_in_children (Music const *) const;
+  
 public:
 
 public:
 
+  /**
+     Do the reporting.  Will try MUSIC_L_ in its own translator first,
+     then its children. Returns the iterator that succeeded
+  */
+  Music_iterator *  try_music (Music const *) const;
+
   /**
     The translation unit that we this iterator is reporting  to now.
    */
   /**
     The translation unit that we this iterator is reporting  to now.
    */
@@ -74,8 +83,6 @@ public:
   ///  Find the next interesting point in time.
   virtual Moment next_moment() const;
 
   ///  Find the next interesting point in time.
   virtual Moment next_moment() const;
 
-  ///  Return next Music item
-  virtual Music* next_music_l ();
 
   ///Are we finished with this piece of music?
   virtual bool ok() const;
 
   ///Are we finished with this piece of music?
   virtual bool ok() const;
diff --git a/lily/include/music-list-iterator.hh b/lily/include/music-list-iterator.hh
deleted file mode 100644 (file)
index 7385230..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  music-list-iterator.hh -- declare Music_list_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef MUSIC_LIST_ITERATOR_HH
-#define MUSIC_LIST_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-
-class Music_list_iterator : public Music_iterator
-{
-public:
-  Music_list_iterator ();
-  virtual ~Music_list_iterator ();
-
-  virtual void construct_children ();
-  virtual Moment next_moment () const;
-  virtual Music* next_music_l ();
-  virtual bool ok () const;
-
-protected:
-  virtual void do_print () const;
-  virtual void do_process_and_next (Moment);
-};
-
-#endif // MUSIC_LIST_ITERATOR_HH
index e00d9633ecb3afebb2a4e69a274deab239833912..e36fefec7352532e24df971b60e6ee8a6b114ff7 100644 (file)
 #include "cons.hh"
 
 
 #include "cons.hh"
 
 
-class Music_list : public Cons_list<Music> 
+class Music_list : public Cons_list<Music> , public Input
 {
 public:
   Musical_pitch do_relative_octave (Musical_pitch, bool); 
 {
 public:
   Musical_pitch do_relative_octave (Musical_pitch, bool); 
-  Music_iterator* do_rhythm (Music_iterator*); 
   void add_music (Music*);
   Music_list (Music_list const&);
   Music_list ();
   void add_music (Music*);
   Music_list (Music_list const&);
   Music_list ();
@@ -39,7 +38,6 @@ public:
   
   VIRTUAL_COPY_CONS(Music);
   Musical_pitch do_relative_octave (Musical_pitch p, bool b);
   
   VIRTUAL_COPY_CONS(Music);
   Musical_pitch do_relative_octave (Musical_pitch p, bool b);
-  Music_iterator* do_rhythm (Music_iterator*);
   virtual void transpose (Musical_pitch );
   virtual void compress (Moment);
   void add_music (Music *music_p);
   virtual void transpose (Musical_pitch );
   virtual void compress (Moment);
   void add_music (Music *music_p);
@@ -50,7 +48,6 @@ public:
   
 protected:
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   
 protected:
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
   virtual void do_print() const;
 };
 
   virtual void do_print() const;
 };
 
@@ -65,7 +62,6 @@ public:
   
   Simultaneous_music(Music_list *);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   
   Simultaneous_music(Music_list *);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
   virtual Moment length_mom () const;
 };
 
   virtual Moment length_mom () const;
 };
 
@@ -80,7 +76,6 @@ public:
   VIRTUAL_COPY_CONS(Music);
   
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   VIRTUAL_COPY_CONS(Music);
   
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
   Request_chord();
 };
 
   Request_chord();
 };
 
index deee35091331e7d1518e23e63a213bb647b2d6b6..0f8ab73454504b694bbca023b9fad963c435e9f0 100644 (file)
@@ -26,12 +26,13 @@ public:
 
   virtual void construct_children  () ;
   virtual Moment next_moment () const;
 
   virtual void construct_children  () ;
   virtual Moment next_moment () const;
-  virtual Music* next_music_l ();
   virtual bool ok () const;
 
 protected:
   virtual void do_print () const;
   virtual void do_process_and_next (Moment) ;
   virtual bool ok () const;
 
 protected:
   virtual void do_print () const;
   virtual void do_process_and_next (Moment) ;
+  virtual Music_iterator *try_music_in_children (Music const *) const;
+
   Music_iterator *child_iter_p_;
 };
 
   Music_iterator *child_iter_p_;
 };
 
index 7e87040acf417e6f214bff9f3ae8da4db47f5a03..f01a39ff9aa055caa4e57f68b5c40fae02f8921b 100644 (file)
@@ -33,7 +33,6 @@ public:
   virtual Moment length_mom () const;
   virtual ~Music_wrapper ();
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   virtual Moment length_mom () const;
   virtual ~Music_wrapper ();
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
   virtual void compress (Moment);
 };
 
   virtual void compress (Moment);
 };
 
index 30ae02fddb30a2f5510993f5846760c9ec024f39..0bd1e966d07330c1a066670649d844c5a3be10b5 100644 (file)
@@ -33,7 +33,6 @@ public:
     
 
   virtual Musical_pitch to_relative_octave (Musical_pitch);
     
 
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
 
   /// The duration of this piece of music
   virtual Moment length_mom () const;
 
   /// The duration of this piece of music
   virtual Moment length_mom () const;
index 88d5f6fbcee88c9fd5c97df69c36a7a470ff8370..d3cfc3dd1ed14390e3d56356e4513d35a2f516e7 100644 (file)
@@ -151,4 +151,28 @@ public:
   VIRTUAL_COPY_CONS(Music);
 };
 
   VIRTUAL_COPY_CONS(Music);
 };
 
+/** is anyone  playing a note?
+    Used for communication between Music & Lyrics
+ */
+class Busy_playing_req : public Request
+{
+public:
+  VIRTUAL_COPY_CONS (Music);
+};
+/**
+   instruct lyric context to alter typesetting (unimplemented).  */
+class Melisma_req : public Span_req
+{
+public:
+  VIRTUAL_COPY_CONS(Music);
+};
+
+/**
+   Helping req to signal start of a melisma from within a context, and
+   to   */
+class Melisma_playing_req : public Request
+{
+public:
+  VIRTUAL_COPY_CONS (Music);
+};
 #endif // MUSICALREQUESTS_HH
 #endif // MUSICALREQUESTS_HH
index 0f4caed5bd713e8a29b35ac390bfff258ac73013..5cf2ff31669a6324cb2de84e764d90f98cd0430a 100644 (file)
@@ -61,7 +61,6 @@ public:
   Music_sequence * alternatives_p_;
 
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   Music_sequence * alternatives_p_;
 
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
 
   /// The duration of this piece of music
   virtual Moment length_mom () const;
 
   /// The duration of this piece of music
   virtual Moment length_mom () const;
index 421ad9c57d4fbec7379f92ece70935566eaea0ce..201acbacd13c4516c82bf26f3c157a87839e0e77 100644 (file)
@@ -25,6 +25,7 @@ public:
   Direction notehead_align_dir_;
 
   Note_head_side ();
   Direction notehead_align_dir_;
 
   Note_head_side ();
+  bool supported_b () const;
   void add_support (Item*);
   VIRTUAL_COPY_CONS (Score_element);
 protected:
   void add_support (Item*);
   VIRTUAL_COPY_CONS (Score_element);
 protected:
index 433a05f43aa1901c47a0b6bc771789975105606f..9dcd26f469b3c48555f894ea3f38a2aa08902b23 100644 (file)
@@ -8,6 +8,7 @@
 #ifndef HEADSGRAV_HH
 #define HEADSGRAV_HH
 #include "engraver.hh"
 #ifndef HEADSGRAV_HH
 #define HEADSGRAV_HH
 #include "engraver.hh"
+#include "pqueue.hh"
 
 /**
   make balls and rests
 
 /**
   make balls and rests
@@ -16,6 +17,7 @@ class Note_heads_engraver : public Engraver {
   Link_array<Note_head> note_p_arr_;
   Link_array<Dots> dot_p_arr_;
   Link_array<Note_req> note_req_l_arr_;
   Link_array<Note_head> note_p_arr_;
   Link_array<Dots> dot_p_arr_;
   Link_array<Note_req> note_req_l_arr_;
+  PQueue<Moment> notes_end_pq_;
 
 public:
   VIRTUAL_COPY_CONS(Translator);
 
 public:
   VIRTUAL_COPY_CONS(Translator);
index 527dafbd359da4dfeb7fc8acaf8c75ddf6e48541..572e465602f5198c95135fb359efab3f54d8e104 100644 (file)
@@ -13,5 +13,6 @@ String * get_scriptdef (char c);
 Request* get_script_req (char);
 Request*get_grouping_req (Array<int> i_arr);
 
 Request* get_script_req (char);
 Request*get_grouping_req (Array<int> i_arr);
 
+#error
 #endif // PARSECONSTRUCT_HH
 
 #endif // PARSECONSTRUCT_HH
 
diff --git a/lily/include/re-rhythmed-music.hh b/lily/include/re-rhythmed-music.hh
deleted file mode 100644 (file)
index 4c258a7..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*   
-  re-rhythmed-music.hh -- declare Re_rhythmed_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#ifndef RE_RHYTHMED_MUSIC_HH
-#define RE_RHYTHMED_MUSIC_HH
-
-#include "music-wrapper.hh"
-
-class Re_rhythmed_music : public Music_wrapper
-{
-public:
-  void do_print () const;
-  Re_rhythmed_music (Music*, Music*);
-  
-  VIRTUAL_COPY_CONS(Music);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
-};
-
-
-#endif /* RE_RHYTHMED_MUSIC_HH */
-
index 179362c59349efd081c803b12edcd39985a1bd24..2d7cff937bb2d318458f0e91361c492386e18de7 100644 (file)
@@ -22,7 +22,6 @@ public:
   
   VIRTUAL_COPY_CONS(Music);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   
   VIRTUAL_COPY_CONS(Music);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
 };
 
 
 };
 
 
index 0b35c447d62c6a3d4107d141029ee607337f2822..dea114deec13182e1e18ef3f511793779db38c74 100644 (file)
@@ -31,7 +31,6 @@ public:
 protected:
   virtual void do_process_and_next (Moment);
   virtual Moment next_moment() const;
 protected:
   virtual void do_process_and_next (Moment);
   virtual Moment next_moment() const;
-  virtual Music* next_music_l ();
   virtual void construct_children();
   virtual bool ok() const;
   virtual void do_print() const;
   virtual void construct_children();
   virtual bool ok() const;
   virtual void do_print() const;
index bfab2b805fe1f44205192fdb199363848467521a..160556cc9d914c8a8e030cbb50af31bd4018b866 100644 (file)
@@ -9,13 +9,13 @@
 #ifndef SEQUENTIAL_MUSIC_ITERATOR_HH
 #define SEQUENTIAL_MUSIC_ITERATOR_HH
 
 #ifndef SEQUENTIAL_MUSIC_ITERATOR_HH
 #define SEQUENTIAL_MUSIC_ITERATOR_HH
 
-#include "music-list-iterator.hh"
+#include "music-iterator.hh"
 
 /** Sequential_music iteration: walk each element in turn, and
   construct an iterator for every element.
   
  */
 
 /** Sequential_music iteration: walk each element in turn, and
   construct an iterator for every element.
   
  */
-class Sequential_music_iterator :  public Music_list_iterator
+class Sequential_music_iterator :  public Music_iterator
 {
 public:
   Sequential_music_iterator ();
 {
 public:
   Sequential_music_iterator ();
@@ -23,18 +23,17 @@ public:
 
   virtual void construct_children ();
   virtual Moment next_moment () const;
 
   virtual void construct_children ();
   virtual Moment next_moment () const;
-  virtual Music* next_music_l ();
   virtual bool ok () const;
 
 protected:
   virtual void do_print() const;
   virtual void do_process_and_next (Moment);
   virtual bool ok () const;
 
 protected:
   virtual void do_print() const;
   virtual void do_process_and_next (Moment);
+  virtual Music_iterator *try_music_in_children (Music const*) const;
+
 
 private:
   Moment here_mom_;
 
 
 private:
   Moment here_mom_;
 
-  /// don't go into next element when you finish.
-  bool per_elt_b_;
   Cons<Music> *cursor_;
   Music_iterator * iter_p_;
 
   Cons<Music> *cursor_;
   Music_iterator * iter_p_;
 
index a04f3f221605ff257ad9d7b227389cc32ecf6721..1671a30ef68c2bef97c4f374df9d3d088c3078e9 100644 (file)
@@ -9,11 +9,10 @@
 
 #ifndef SIMULTANEOUS_MUSIC_ITERATOR_HH
 #define SIMULTANEOUS_MUSIC_ITERATOR_HH
 
 #ifndef SIMULTANEOUS_MUSIC_ITERATOR_HH
 #define SIMULTANEOUS_MUSIC_ITERATOR_HH
-
+#include "music-iterator.hh"
 #include "cons.hh"
 #include "cons.hh"
-#include "music-list-iterator.hh"
 
 
-class Simultaneous_music_iterator : public Music_list_iterator
+class Simultaneous_music_iterator : public Music_iterator
 {
 public:
 
 {
 public:
 
@@ -30,6 +29,8 @@ public:
 protected:
   virtual void do_print () const;
   virtual void do_process_and_next (Moment);
 protected:
   virtual void do_print () const;
   virtual void do_process_and_next (Moment);
+  virtual Music_iterator *try_music_in_children (Music const*) const;
+
 
 private:
   Cons_list<Music_iterator> children_p_list_;
 
 private:
   Cons_list<Music_iterator> children_p_list_;
index 287492989fe429b46f762fb008244142189e16ba..828391d70bdf9f53e45b6c7f713e9312105ad387 100644 (file)
@@ -49,7 +49,7 @@ class Axis_group_spanner;
 class Spanner : public virtual Score_element {
 public:
   Drul_array<Item*> spanned_drul_;
 class Spanner : public virtual Score_element {
 public:
   Drul_array<Item*> spanned_drul_;
-  Array<Breaking_information> broken_info_;
+  Link_array<Spanner> broken_into_l_arr_;
   void set_bounds (Direction d, Item*);
 
   
   void set_bounds (Direction d, Item*);
 
   
index a1db42f6942827d79204929f7221029210da3278..b14eea6be702124873e3e9c3e6202bfec45f9e5e 100644 (file)
@@ -147,7 +147,7 @@ public:
   Tex_font_metric ();
 
   void clear (int n);
   Tex_font_metric ();
 
   void clear (int n);
-  Character_metric *get_char (int, bool) const;
+  Character_metric const *get_char (int, bool) const;
   Tex_font_char_metric const &find_ascii (int ascii, bool warn=true) const;
   void read_file (String name);
   String str () const;
   Tex_font_char_metric const &find_ascii (int ascii, bool warn=true) const;
   void read_file (String name);
   String str () const;
index ce1314a78dfc2122cf6302a22a2c94498c103e1e..f6c1e130217a192a03d886d9b98789c02c229bbc 100644 (file)
@@ -23,7 +23,6 @@ public:
   
   VIRTUAL_COPY_CONS(Music);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   
   VIRTUAL_COPY_CONS(Music);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
-  virtual Music_iterator* to_rhythm (Music_iterator*);
 };
 
 #endif /* TRANSPOSED_MUSIC_HH */
 };
 
 #endif /* TRANSPOSED_MUSIC_HH */
index 42e78e04871247c2d11ed5b584b9b6e7c7359cd4..22888cf29aa6a2844d3e4739ee119be9a4c48f2e 100644 (file)
@@ -45,6 +45,8 @@ protected:
   virtual void construct_children ();
   virtual Moment next_moment () const;
   virtual void do_process_and_next (Moment);
   virtual void construct_children ();
   virtual Moment next_moment () const;
   virtual void do_process_and_next (Moment);
+  virtual Music_iterator *try_music_in_children (Music const*) const;
+
   virtual bool ok () const;
   virtual void next_element ();
   virtual void do_print () const;
   virtual bool ok () const;
   virtual void next_element ();
   virtual void do_print () const;
index 3dd6d59e8c5fbd7ca29a7beeb474993cc712d61c..f7e82ac5bf5d0cefbe076ac88cb8d43b1cc7c4d4 100644 (file)
 #include "interval.hh"
 #include "parser.hh"
 #include "debug.hh"
 #include "interval.hh"
 #include "parser.hh"
 #include "debug.hh"
-#include "parseconstruct.hh"
 #include "main.hh"
 #include "musical-request.hh"
 #include "identifier.hh"
 #include "main.hh"
 #include "musical-request.hh"
 #include "identifier.hh"
+#include "mudela-version.hh"
+#include "version.hh"
+
 void strip_trailing_white (String&);
 void strip_leading_white (String&);
 
 void strip_trailing_white (String&);
 void strip_leading_white (String&);
 
+
+bool
+valid_version_b (String s);
+
+
+
 #define start_quote()  \
        yy_push_state (quote);\
        yylval.string = new String
 #define start_quote()  \
        yy_push_state (quote);\
        yylval.string = new String
@@ -62,6 +70,7 @@ LYRICS                ({AA}|{TEX})[^0-9 \t\n\f]*
 %option never-interactive 
 %option warn
 
 %option never-interactive 
 %option warn
 
+%x version
 %x chords
 %x incl
 %x lyrics
 %x chords
 %x incl
 %x lyrics
@@ -118,6 +127,21 @@ HYPHEN             --
   }
 }
 
   }
 }
 
+<INITIAL,chords,lyrics,notes>\\version{WHITE}* {
+       yy_push_state (version);
+}
+<version>\"[^"]*\";?   { /* got the include file name */
+       String s (YYText ()+1);
+       s = s.left_str (s.index_last_i ('"'));
+       DOUT << "#version `" << s << "\'\n";
+       if (!valid_version_b (s))
+               return INVALID;
+       yy_pop_state ();
+}
+<version>.     {
+       LexerError ("No quoted string found after \\version");
+       yy_pop_state ();
+}
 <longcomment>{
        [^\%]*          {
        }
 <longcomment>{
        [^\%]*          {
        }
@@ -220,7 +244,6 @@ HYPHEN              --
                yylval.i = String_convert::dec2_i (String (YYText ()));
                return DIGIT;
        }
                yylval.i = String_convert::dec2_i (String (YYText ()));
                return DIGIT;
        }
-
        {UNSIGNED}              {
                yylval.i = String_convert::dec2_i (String (YYText ()));
                return UNSIGNED;
        {UNSIGNED}              {
                yylval.i = String_convert::dec2_i (String (YYText ()));
                return UNSIGNED;
@@ -397,7 +420,7 @@ My_lily_lexer::pop_state ()
 
 int
 My_lily_lexer::scan_escaped_word (String str)
 
 int
 My_lily_lexer::scan_escaped_word (String str)
-{      
+{
        DOUT << "\\word: `" << str<<"'\n";
        int l = lookup_keyword (str);
        if (l != -1) {
        DOUT << "\\word: `" << str<<"'\n";
        int l = lookup_keyword (str);
        if (l != -1) {
@@ -496,3 +519,20 @@ strip_trailing_white (String&s)
        s = s.left_str (i+1);
 }
 
        s = s.left_str (i+1);
 }
 
+
+
+
+bool
+valid_version_b (String s)
+{
+  Mudela_version current ( MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL );
+  Mudela_version ver (s);
+  if (!((ver >= oldest_version) && (ver <= current)))
+       {       
+               error (_f ("incorrect mudela version: %s (%s, %s)", ver.str (), oldest_version.str (), current.str ()));
+               if (!version_ignore_global_b)
+                       return false;
+    }
+  return true;
+}
+       
index e63015501e0285ad19fe4020e07dc62b39dc6beb..a177b2c88b6961164c9c44e2db9c9a82b47d7220 100644 (file)
@@ -19,9 +19,6 @@
 #include "file-path.hh"
 #include "debug.hh"
 
 #include "file-path.hh"
 #include "debug.hh"
 
-
-
-
 /*
   scm_m_quote doesn't use any env, but needs one for a good signature in GUILE.
 
 /*
   scm_m_quote doesn't use any env, but needs one for a good signature in GUILE.
 
@@ -59,11 +56,10 @@ ly_set_scm (String name, SCM val)
   return scm_sysintern (name.ch_C(), val);
   
 }
   return scm_sysintern (name.ch_C(), val);
   
 }
-/**
 
 
+/**
    Read a file, and shove it down GUILE.  GUILE also has file read
    functions, but you can't fiddle with the path of those.
    Read a file, and shove it down GUILE.  GUILE also has file read
    functions, but you can't fiddle with the path of those.
-   
  */
 void
 read_lily_scm_file (String fn)
  */
 void
 read_lily_scm_file (String fn)
@@ -87,6 +83,26 @@ read_lily_scm_file (String fn)
 }
 
 
 }
 
 
+SCM
+ly_gulp_file (SCM name)
+{
+  String fn (ly_scm2string (name));
+ String s = global_path.find (fn);
+  if (s == "")
+    {
+      String e = _f ("Can not find file `%s\'", fn);
+      e += " ";
+      e += _f ("(Load path is `%s\'", global_path.str ());
+      error (e);
+    }
+  else
+    *mlog << '[' << s;
+
+
+  Simple_file_storage f(s);
+  return gh_str02scm (f.ch_C());
+}
+
 void
 ly_display_scm (SCM s)
 {
 void
 ly_display_scm (SCM s)
 {
@@ -137,9 +153,9 @@ void
 init_functions ()
 {
   scm_make_gsubr ("ly-warn", 1, 0, 0, ly_warning);
 init_functions ()
 {
   scm_make_gsubr ("ly-warn", 1, 0, 0, ly_warning);
+  scm_make_gsubr ("ly-gulp-file", 1,0, 0, ly_gulp_file);
 }
 
 }
 
-
 extern void init_symbols ();
 
 void
 extern void init_symbols ();
 
 void
index c53a33a9e8cc4f7f6647015f2dffa7db0e95ec03..441dcd9465178ea3012bf783c8af0b5128194c8b 100644 (file)
@@ -26,7 +26,7 @@ Line_of_score::contains_b (Paper_column const* c) const
 
 // const?
 Line_of_score*
 
 // const?
 Line_of_score*
-Line_of_score::set_breaking (Array<Column_x_positions> const &breaking, int j) const
+Line_of_score::set_breaking (Array<Column_x_positions> const &breaking, int j) 
 {
   const Link_array<Paper_column> &curline (breaking[j].cols_);
   const Array<Real> &config (breaking[j].config_);
 {
   const Link_array<Paper_column> &curline (breaking[j].cols_);
   const Array<Real> &config (breaking[j].config_);
@@ -49,7 +49,7 @@ Line_of_score::set_breaking (Array<Column_x_positions> const &breaking, int j) c
   b.broken_spanner_l_ = line_l;
   b.line_l_ = line_l;
   
   b.broken_spanner_l_ = line_l;
   b.line_l_ = line_l;
   
-  broken_info_.push (b);
+  broken_into_l_arr_.push (line_l);
 
   return line_l;
 }
 
   return line_l;
 }
index 00354d3c2de448574c19e1109c9dbe71ac84f7fc..cc9466bc12dae5be0c80b1ad31c24f9003a16aa7 100644 (file)
@@ -506,7 +506,7 @@ Lookup::staff_brace (Real y, int staff_size) const
   Real step  = 1.0;
   int minht  = 2 * staff_size;
   int maxht = 7 *  minht;
   Real step  = 1.0;
   int minht  = 2 * staff_size;
   int maxht = 7 *  minht;
-  int idx = ((maxht - step) <? y - minht) / step;
+  int idx = int (((maxht - step) <? y - minht) / step);
   idx = idx >? 0;
   
   SCM f =  ly_symbol (String ("feta-braces" + to_str (staff_size)));
   idx = idx >? 0;
   
   SCM f =  ly_symbol (String ("feta-braces" + to_str (staff_size)));
diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc
new file mode 100644 (file)
index 0000000..639cbaa
--- /dev/null
@@ -0,0 +1,109 @@
+/*   
+  lyric-combine-music-iterator.cc --  implement Lyric_combine_music_iterator
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "translator-group.hh"
+#include "lyric-combine-music-iterator.hh"
+#include "lyric-combine-music.hh"
+#include "musical-request.hh"
+
+Busy_playing_req busy_req;
+Melisma_req melisma_start_req;
+Melisma_req melisma_stop_req;
+Melisma_playing_req melisma_playing_req;
+
+
+Lyric_combine_music_iterator::Lyric_combine_music_iterator ()
+{
+  melisma_start_req.span_dir_ = START;
+  melisma_stop_req.span_dir_ = STOP;
+  
+  melisma_started_b_ = false;
+  music_iter_p_ =0;
+  lyric_iter_p_ =0;
+}
+
+Moment
+Lyric_combine_music_iterator::next_moment () const
+{
+  Moment musnext = music_iter_p_->next_moment ();
+  return musnext;
+}
+
+bool
+Lyric_combine_music_iterator::ok () const
+{
+  return music_iter_p_->ok ();
+}
+
+void
+Lyric_combine_music_iterator::do_print () const
+{
+  music_iter_p_->print ();
+  lyric_iter_p_->print ();
+}
+
+void
+Lyric_combine_music_iterator::construct_children ()
+{
+  Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (music_l_);
+  
+  music_iter_p_ = get_iterator_p (m->music_l ());
+  lyric_iter_p_ = get_iterator_p (m->lyrics_l ());
+}
+
+void
+Lyric_combine_music_iterator::do_process_and_next (Moment m)
+{
+  Moment my_next = music_iter_p_->next_moment ();
+  if (my_next > m)
+    return;
+  
+  music_iter_p_->process_and_next (m);
+
+  bool busy = try_music (&busy_req);
+  if (busy)
+    {
+      bool melisma_b = try_music (&melisma_playing_req);
+      if (!melisma_started_b_ || !melisma_b)
+       {
+         if (lyric_iter_p_->ok ())
+           {
+             if (melisma_b && !melisma_started_b_)
+               lyric_iter_p_->try_music (&melisma_start_req);
+             else if (melisma_started_b_)
+               lyric_iter_p_->try_music (&melisma_stop_req);
+         
+             Moment m= lyric_iter_p_->next_moment ();
+             lyric_iter_p_->process_and_next (m);
+           }
+       }
+      melisma_started_b_ = melisma_b;
+    }
+  
+
+  
+  Music_iterator::do_process_and_next (m);
+}
+
+Lyric_combine_music_iterator::~Lyric_combine_music_iterator ()
+{
+  delete lyric_iter_p_;
+  delete music_iter_p_;
+}
+
+Music_iterator*
+Lyric_combine_music_iterator::try_music_in_children (Music const *m) const
+{
+  Music_iterator * i =  music_iter_p_->try_music (m);
+  if (i)
+    return i;
+  else
+    return lyric_iter_p_->try_music (m);
+}
+
diff --git a/lily/lyric-combine-music.cc b/lily/lyric-combine-music.cc
new file mode 100644 (file)
index 0000000..9da40bf
--- /dev/null
@@ -0,0 +1,75 @@
+/*   
+  lyric-combine-music.cc --  implement Lyric_combine_music
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "lyric-combine-music.hh"
+#include "musical-pitch.hh"
+
+Lyric_combine_music::Lyric_combine_music (Music * m, Music * l)
+{
+  music_p_ = m;
+  lyrics_p_ = l;
+}
+
+Lyric_combine_music::~Lyric_combine_music ()
+{
+  delete music_p_;
+  delete lyrics_p_;
+}
+
+Lyric_combine_music::Lyric_combine_music (Lyric_combine_music const&s)
+  : Music (s)
+{
+  music_p_ = s.music_p_ ? s.music_p_->clone ():0;
+  lyrics_p_ = s.lyrics_p_ ? s.lyrics_p_->clone ():0;
+}
+
+void
+Lyric_combine_music::transpose (Musical_pitch p)
+{
+  music_p_->transpose (p);
+  lyrics_p_->transpose (p);
+}
+
+void
+Lyric_combine_music::do_print () const  
+{
+  music_p_->print();
+  lyrics_p_->print ();
+}
+
+Moment
+Lyric_combine_music::length_mom () const
+{
+  return music_p_->length_mom ();
+}
+
+Musical_pitch
+Lyric_combine_music::to_relative_octave (  Musical_pitch p )
+{
+  p = music_p_->to_relative_octave (p);
+  return lyrics_p_->to_relative_octave (p);
+}
+
+void
+Lyric_combine_music::compress (Moment m)
+{
+  music_p_->compress (m);
+}
+
+Music*
+Lyric_combine_music::music_l () const
+{
+  return music_p_;
+}
+
+Music*
+Lyric_combine_music::lyrics_l () const
+{
+  return lyrics_p_;
+}
index a5a222b2e50e563116abccd4708d3ae77d25be6b..ffb26cede22b2b55a3acf53865fef337346daae2 100644 (file)
@@ -243,7 +243,7 @@ setup_paths ()
     global_path.parse_path (env_sz);
 
 
     global_path.parse_path (env_sz);
 
 
-  char *suffixes[] = {"ly", "afm", "scm", "tfm", "cmtfm", 0};
+  char *suffixes[] = {"ly", "afm", "scm", "tfm", "cmtfm", "ps", 0};
   for (char **s = suffixes; *s; s++){
     if (!prefix_directory.empty_b())
       global_path.add (prefix_directory + to_str ('/') + String (*s));
   for (char **s = suffixes; *s; s++){
     if (!prefix_directory.empty_b())
       global_path.add (prefix_directory + to_str ('/') + String (*s));
diff --git a/lily/melisma-engraver.cc b/lily/melisma-engraver.cc
new file mode 100644 (file)
index 0000000..434fefb
--- /dev/null
@@ -0,0 +1,33 @@
+/*   
+  melisma-engraver.cc --  implement Melisma_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "engraver.hh"
+#include "musical-request.hh"
+
+/**
+   Signal existence of melismas.
+ */
+class Melisma_engraver:public Engraver
+{
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  bool do_try_music (Music *);
+};
+ADD_THIS_TRANSLATOR(Melisma_engraver);
+
+bool
+Melisma_engraver::do_try_music (Music *m ) 
+{
+  if (dynamic_cast<Melisma_playing_req*>(m))
+    {
+      Scalar s (get_property ("melismaBusy", 0));
+      return s.to_bool ();
+    }
+  return false;
+}
index 0dcba0a2b40691e5bb07fa6b9b542bd54612799c..c0c59c48f43d980a9662425810b5e7af2bf53b67 100644 (file)
@@ -26,6 +26,8 @@
 #include "unfolded-repeat-iterator.hh"
 #include "grace-iterator.hh"
 #include "grace-music.hh"
 #include "unfolded-repeat-iterator.hh"
 #include "grace-iterator.hh"
 #include "grace-music.hh"
+#include "lyric-combine-music.hh"
+#include "lyric-combine-music-iterator.hh"
 
 void
 Music_iterator::do_print() const
 
 void
 Music_iterator::do_print() const
@@ -39,8 +41,8 @@ Music_iterator::print() const
   if (!check_debug)
     return ;
   DOUT << classname(this) << "{";
   if (!check_debug)
     return ;
   DOUT << classname(this) << "{";
-  DOUT << "report to " << 
-    report_to_l() << " (" << classname (report_to_l ()) << ")\n";
+  Translator_group *t =     report_to_l();
+  DOUT << "report to " << t->type_str_ << " = " << t->id_str_ << "\n";
   if (ok())
     DOUT << "next at " << next_moment() << " ";
   else
   if (ok())
     DOUT << "next at " << next_moment() << " ";
   else
@@ -90,11 +92,6 @@ Music_iterator::next_moment() const
   return 0;
 }
 
   return 0;
 }
 
-Music*
-Music_iterator::next_music_l ()
-{
-  return 0;
-}
 
 void
 Music_iterator::process_and_next (Moment m)
 
 void
 Music_iterator::process_and_next (Moment m)
@@ -121,6 +118,8 @@ Music_iterator::static_get_iterator_p (Music const *m)
   
   if (dynamic_cast<Request_chord  const *> (m))
     p = new Request_chord_iterator;
   
   if (dynamic_cast<Request_chord  const *> (m))
     p = new Request_chord_iterator;
+  else if (dynamic_cast<Lyric_combine_music const*> (m))
+    p = new Lyric_combine_music_iterator;
   else if (dynamic_cast<Simultaneous_music  const *> (m)) 
     p =  new Simultaneous_music_iterator;
   else if (dynamic_cast<Sequential_music  const *> (m)) 
   else if (dynamic_cast<Simultaneous_music  const *> (m)) 
     p =  new Simultaneous_music_iterator;
   else if (dynamic_cast<Sequential_music  const *> (m)) 
@@ -183,4 +182,19 @@ Music_iterator::Music_iterator()
   first_b_ = true;
 }
 
   first_b_ = true;
 }
 
+Music_iterator*
+Music_iterator::try_music (Music const *m) const
+{
+  bool b = report_to_l ()->try_music ((Music*)m); // ugh
+  Music_iterator * it = b ? (Music_iterator*) this : 0;        // ugh
+  if (!it)
+    it = try_music_in_children (m);
+  return it;
+}
+
+Music_iterator*
+Music_iterator::try_music_in_children (Music const *  ) const
+{
+  return 0;
+}
 
 
diff --git a/lily/music-list-iterator.cc b/lily/music-list-iterator.cc
deleted file mode 100644 (file)
index 2be250f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  Music_list-iterator.cc -- implement Music_list_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "music-list-iterator.hh"
-#include "music-list.hh"
-
-Music_list_iterator::Music_list_iterator ()
-{
-}
-
-Music_list_iterator::~Music_list_iterator ()
-{
-}
-
-void
-Music_list_iterator::construct_children ()
-{
-}
-
-void
-Music_list_iterator::do_print() const
-{
-}
-
-void
-Music_list_iterator::do_process_and_next (Moment)
-{
-}
-
-Moment
-Music_list_iterator::next_moment () const
-{
-  return 0;
-}
-
-Music*
-Music_list_iterator::next_music_l ()
-{
-  return 0;
-}
-
-bool
-Music_list_iterator::ok () const
-{
-  return false;
-}
-
index 3b9c830fbaac781242709085aa0b4244d0740ed0..2b2fce2fda216187f7917b1cb343cfcba5073df9 100644 (file)
@@ -52,11 +52,6 @@ Simultaneous_music::to_relative_octave (Musical_pitch p)
   return do_relative_octave (p, true);
 }
 
   return do_relative_octave (p, true);
 }
 
-Music_iterator*
-Simultaneous_music::to_rhythm (Music_iterator* r)
-{
-  return do_rhythm (r);
-}
 
 Musical_pitch
 Music_sequence::do_relative_octave (Musical_pitch p, bool b)
 
 Musical_pitch
 Music_sequence::do_relative_octave (Musical_pitch p, bool b)
@@ -64,11 +59,6 @@ Music_sequence::do_relative_octave (Musical_pitch p, bool b)
   return music_p_list_p_->do_relative_octave (p, b);  
 }
 
   return music_p_list_p_->do_relative_octave (p, b);  
 }
 
-Music_iterator*
-Music_sequence::do_rhythm (Music_iterator* r)
-{
-  return music_p_list_p_->do_rhythm (r);
-}
 
 Musical_pitch 
 Music_list::do_relative_octave (Musical_pitch last, bool ret_first)
 
 Musical_pitch 
 Music_list::do_relative_octave (Musical_pitch last, bool ret_first)
@@ -88,18 +78,9 @@ Music_list::do_relative_octave (Musical_pitch last, bool ret_first)
   return retval;
 }
 
   return retval;
 }
 
-Music_iterator*
-Music_list::do_rhythm (Music_iterator* r)
-{
-  for (Cons<Music> *i = head_; i ; i = i->next_)
-    {
-      r = i->car_->to_rhythm (r);
-    }
-  return r;
-}
 
 Music_list::Music_list (Music_list const &s)
 
 Music_list::Music_list (Music_list const &s)
-  : Cons_list<Music> (s)
+  : Cons_list<Music> (s), Input (s)
 {
   Cons_list<Music>::init ();
   clone_killing_cons_list (*this, s.head_);
 {
   Cons_list<Music>::init ();
   clone_killing_cons_list (*this, s.head_);
@@ -136,34 +117,6 @@ Request_chord::to_relative_octave (Musical_pitch last)
   return last;
 }
 
   return last;
 }
 
-Music_iterator*
-Request_chord::to_rhythm (Music_iterator* it)
-{
-  for (Cons<Music>* i = music_p_list_p_->head_; i ; i = i->next_)
-    {
-      if (Rhythmic_req* r= dynamic_cast <Rhythmic_req*> (i->car_))
-       {
-         for (Music*m = it->next_music_l (); m; m = it->next_music_l ())
-           {
-#if 0
-             // is it sane to assume we don't want rests on lyrics/in rhythm?
-             if (dynamic_cast <Rest_req*> (r)
-                 || dynamic_cast <Multi_measure_rest_req*> (r)
-                 || dynamic_cast <Skip_req*> (r))
-                 {
-                   continue;
-                 }
-#endif
-             if (Rhythmic_req* d= dynamic_cast <Rhythmic_req*> (m))
-               {
-                 r->duration_ = d->duration_;
-                 return it;
-               }
-           }
-       }
-    }
-  return it;
-}
 
 Music_list::Music_list ()
 {
 
 Music_list::Music_list ()
 {
index 6b074c5b16367fa4a6ec28e7147aba7d4b8d8363..60e6459a20f7e850ce1a4a4ca5186c239ff91694 100644 (file)
@@ -63,11 +63,6 @@ Music_sequence::to_relative_octave (Musical_pitch p)
   return do_relative_octave (p, false);
 }
 
   return do_relative_octave (p, false);
 }
 
-Music_iterator*
-Music_sequence::to_rhythm (Music_iterator* r)
-{
-  return do_rhythm (r);
-}
 
 Moment
 Music_sequence::maximum_length () const
 
 Moment
 Music_sequence::maximum_length () const
index 03fefdd44e90269c69b986a16a206b7ce2dd2de8..1f89d771c6740413f9d5c1b5db101fd23399d81a 100644 (file)
@@ -50,15 +50,16 @@ Music_wrapper_iterator::do_process_and_next (Moment m)
   Music_iterator::do_process_and_next (m);
 }
 
   Music_iterator::do_process_and_next (m);
 }
 
+
 Moment
 Music_wrapper_iterator::next_moment () const
 {
   return child_iter_p_->next_moment ();
 }
 
 Moment
 Music_wrapper_iterator::next_moment () const
 {
   return child_iter_p_->next_moment ();
 }
 
-Music*
-Music_wrapper_iterator::next_music_l ()
+
+Music_iterator*
+Music_wrapper_iterator::try_music_in_children (Music const *m) const
 {
 {
-  return child_iter_p_->next_music_l ();
+  return child_iter_p_->try_music (m);
 }
 }
-
index 4512e26fc2033bbb0b9ff8df701cc871dbc95ed1..71de46fc45bc17d6027be97bd1d3c809ee75b68d 100644 (file)
@@ -56,11 +56,6 @@ Music_wrapper::to_relative_octave (Musical_pitch p)
   return element_p_->to_relative_octave (p);
 }
 
   return element_p_->to_relative_octave (p);
 }
 
-Music_iterator*
-Music_wrapper::to_rhythm (Music_iterator* r)
-{
-  return element_p_->to_rhythm (r);
-}
 
 Music*
 Music_wrapper::element_l () const
 
 Music*
 Music_wrapper::element_l () const
index 1d137e4524233a4160f2fcbf7705c9376c140e5c..1eda545aa292c26de7c2d85ae86b93123233c30d 100644 (file)
@@ -54,11 +54,6 @@ Music::to_relative_octave (Musical_pitch m)
   return m;
 }
 
   return m;
 }
 
-Music_iterator*
-Music::to_rhythm (Music_iterator* r)
-{
-  return r;
-}
 
 void
 Music::transpose (Musical_pitch )
 
 void
 Music::transpose (Musical_pitch )
index 65b72214044e01fa8ba25c4a75ab044287f9aa0a..00faa6f0f435d1012b6bc511333e5cb1cb24ccea 100644 (file)
@@ -32,9 +32,6 @@ Tremolo_req::do_print () const
 #endif
 }
 
 #endif
 }
 
-
-
-
 void
 Melodic_req::transpose (Musical_pitch delta)
 {
 void
 Melodic_req::transpose (Musical_pitch delta)
 {
index 1da40f6b55c38e25b3d6499740234a2962449a8a..8e73971984178a09b3720056077318a58aee8e6e 100644 (file)
@@ -16,7 +16,6 @@
 #include "my-lily-lexer.hh"
 #include "debug.hh"
 #include "source-file.hh"
 #include "my-lily-lexer.hh"
 #include "debug.hh"
 #include "source-file.hh"
-#include "parseconstruct.hh"
 #include "main.hh"
 #include "scope.hh"
 
 #include "main.hh"
 #include "scope.hh"
 
@@ -60,7 +59,7 @@ static Keyword_ent the_key_tab[]={
   {"remove", REMOVE},
   {"repeat", REPEAT},
   {"repetitions", REPETITIONS},
   {"remove", REMOVE},
   {"repeat", REPEAT},
   {"repetitions", REPETITIONS},
-  {"rhythm", RHYTHM},
+  {"addlyrics", ADDLYRICS},
   {"scm", SCM_T},
   {"scmfile", SCMFILE},
   {"score", SCORE},
   {"scm", SCM_T},
   {"scmfile", SCMFILE},
   {"score", SCORE},
index 785da0c33275e1035ad9b0668b877f69e61892f8..a5ef70294ca42df6326f86e25cb532a6d80624f7 100644 (file)
@@ -50,3 +50,8 @@ Note_head_side:: Note_head_side()
 {
   notehead_align_dir_ = LEFT;
 }
 {
   notehead_align_dir_ = LEFT;
 }
+bool
+Note_head_side::supported_b ()const
+{
+  return support_l_arr_.size ();
+}
index 099c8bf731a75397d01f6dfde9f8d79c9a1c5b37..2669e2fa51335f028f694562fed525c3e41d8d59 100644 (file)
@@ -21,13 +21,20 @@ Note_heads_engraver::do_try_music (Music *m)
   if (Note_req * n =dynamic_cast <Note_req *> (m))
     {
       note_req_l_arr_.push (n);
   if (Note_req * n =dynamic_cast <Note_req *> (m))
     {
       note_req_l_arr_.push (n);
+      notes_end_pq_.insert (now_mom () + m->length_mom ());
+      
       return true;
     }
       return true;
     }
-  if (Tonic_req* t = dynamic_cast<Tonic_req*> (m))
+  else if (Tonic_req* t = dynamic_cast<Tonic_req*> (m))
     {
       return true;
     }
     {
       return true;
     }
+  else if (Busy_playing_req * p = dynamic_cast<Busy_playing_req*> (m))
+    {
+      return notes_end_pq_.size ();
+    }
   return false;
   return false;
+  
 }
 
 void
 }
 
 void
@@ -50,11 +57,8 @@ Note_heads_engraver::do_process_requests()
          announce_element (Score_element_info (d,0));
          dot_p_arr_.push (d);
        }
          announce_element (Score_element_info (d,0));
          dot_p_arr_.push (d);
        }
-
-      //      note_p->steps_i_ = note_req_l->pitch_.steps ();
       note_p->position_i_ = note_req_l->pitch_.steps ();
 
       note_p->position_i_ = note_req_l->pitch_.steps ();
 
-
       if (noteheadstyle == "transparent")
        note_p->set_elt_property (transparent_scm_sym, SCM_BOOL_T);
       else 
       if (noteheadstyle == "transparent")
        note_p->set_elt_property (transparent_scm_sym, SCM_BOOL_T);
       else 
@@ -88,7 +92,9 @@ Note_heads_engraver::do_pre_move_processing()
 void
 Note_heads_engraver::do_post_move_processing()
 {
 void
 Note_heads_engraver::do_post_move_processing()
 {
-
+  Moment n (now_mom ());
+  while (notes_end_pq_.size () && notes_end_pq_.front () <=n)
+    notes_end_pq_.get ();
 }
 
 
 }
 
 
index f6ed231d349684a521c43fe4ba232c0510da7244..b3ca52a21a2d03d8a1809ced59b86cac2532671e 100644 (file)
@@ -43,6 +43,7 @@ Paper_def::~Paper_def ()
 Paper_def::Paper_def (Paper_def const&s)
   : Music_output_def (s)
 {
 Paper_def::Paper_def (Paper_def const&s)
   : Music_output_def (s)
 {
+  shape_int_a_ = s.shape_int_a_;
   lookup_p_tab_p_ = new Hash_table<int, Lookup*>;
   lookup_p_tab_p_->hash_func_ = int_hash;
   
   lookup_p_tab_p_ = new Hash_table<int, Lookup*>;
   lookup_p_tab_p_->hash_func_ = int_hash;
   
@@ -106,11 +107,13 @@ Interval
 Paper_def::line_dimensions_int (int n) const
 {
   if (!shape_int_a_.size ())
 Paper_def::line_dimensions_int (int n) const
 {
   if (!shape_int_a_.size ())
-    if (n)
-      return Interval (0, linewidth_f ());
-    else
-      return Interval (get_var ("indent"), linewidth_f ());
-
+    {
+      if (n)
+       return Interval (0, linewidth_f ());
+      else
+       return Interval (get_var ("indent"), linewidth_f ());
+    }
+  
   if (n >= shape_int_a_.size ())
     n = shape_int_a_.size () -1;
 
   if (n >= shape_int_a_.size ())
     n = shape_int_a_.size () -1;
 
@@ -257,7 +260,7 @@ Paper_def::paper_outputter_p (Paper_stream* os_p, Header* header_l, String origi
     p->output_scope (scope_p_, "mudelapaper");
   
 
     p->output_scope (scope_p_, "mudelapaper");
   
 
-  *p->outstream_l_  << *scope_p_->elem (String (output_global_ch) + "setting")->access_content_String (false);
+  //  *p->outstream_l_  << *scope_p_->elem (String (output_global_ch) + "setting")->access_content_String (false);
 
   SCM scm = gh_list (ly_symbol ("experimental-on"), SCM_UNDEFINED);
   p->output_scheme (scm);
 
   SCM scm = gh_list (ly_symbol ("experimental-on"), SCM_UNDEFINED);
   p->output_scheme (scm);
index bc65f297bd88b2b1960a94df533dc3f8fbfae049..0cf567a55ee6f14a7b83b6490e0ebe16ebc196ab 100644 (file)
@@ -9,16 +9,6 @@
            Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
            Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-/*
-       Ambiguities:
-
-       * \alternative
-
-       * use of '-' in various places
-
-*/
-
-
 #include <iostream.h>
 #include "lily-guile.hh"
 #include "notename-table.hh"
 #include <iostream.h>
 #include "lily-guile.hh"
 #include "notename-table.hh"
@@ -33,7 +23,6 @@
 #include "file-path.hh"
 #include "keyword.hh"
 #include "debug.hh"
 #include "file-path.hh"
 #include "keyword.hh"
 #include "debug.hh"
-#include "parseconstruct.hh"
 #include "dimensions.hh"
 #include "identifier.hh"
 #include "command-request.hh"
 #include "dimensions.hh"
 #include "identifier.hh"
 #include "command-request.hh"
 #include "duration-convert.hh"
 #include "change-translator.hh"
 #include "file-results.hh"
 #include "duration-convert.hh"
 #include "change-translator.hh"
 #include "file-results.hh"
-#include "mudela-version.hh"
 #include "scope.hh"
 #include "relative-music.hh"
 #include "scope.hh"
 #include "relative-music.hh"
-#include "re-rhythmed-music.hh"
+#include "lyric-combine-music.hh"
 #include "transposed-music.hh"
 #include "time-scaled-music.hh"
 #include "new-repeated-music.hh"
 #include "transposed-music.hh"
 #include "time-scaled-music.hh"
 #include "new-repeated-music.hh"
-#include "version.hh"
+#include "mudela-version.hh"
 #include "grace-music.hh"
 
 // mmm
 Mudela_version oldest_version ("1.1.52");
 #include "grace-music.hh"
 
 // mmm
 Mudela_version oldest_version ("1.1.52");
-Mudela_version version ( MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL );
+
 
 
 void
 
 
 void
@@ -86,7 +74,7 @@ print_mudela_versions (ostream &os)
 
 
 %union {
 
 
 %union {
-    Array<Interval>* intarr;
+    Array<Real>* realarr;
     Array<Musical_pitch> *pitch_arr;
     Link_array<Request> *reqvec;
     Array<String> * strvec;
     Array<Musical_pitch> *pitch_arr;
     Link_array<Request> *reqvec;
     Array<String> * strvec;
@@ -155,6 +143,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token GRACE
 %token HEADER
 %token IN_T
 %token GRACE
 %token HEADER
 %token IN_T
+%token INVALID
 %token KEY
 %token KEYSIGNATURE
 %token LYRICS
 %token KEY
 %token KEYSIGNATURE
 %token LYRICS
@@ -175,7 +164,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token REMOVE
 %token REPEAT
 %token REPETITIONS
 %token REMOVE
 %token REPEAT
 %token REPETITIONS
-%token RHYTHM
+%token ADDLYRICS
 %token SCM_T
 %token SCMFILE
 %token SCORE
 %token SCM_T
 %token SCMFILE
 %token SCORE
@@ -251,7 +240,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <music>  property_def translator_change
 %type <music_list> Music_list
 %type <paper>  paper_block paper_def_body
 %type <music>  property_def translator_change
 %type <music_list> Music_list
 %type <paper>  paper_block paper_def_body
-%type <real>   real_expression real real_with_dimension
+%type <real>   real real_with_dimension
 %type <request> abbrev_command_req
 %type <request>        post_request 
 %type <request> command_req verbose_command_req
 %type <request> abbrev_command_req
 %type <request>        post_request 
 %type <request> command_req verbose_command_req
@@ -259,7 +248,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <request> hyphen_req
 %type <string> string
 %type <score>  score_block score_body
 %type <request> hyphen_req
 %type <string> string
 %type <score>  score_block score_body
-%type <intarr> shape_array
+%type <realarr>        real_array
 
 %type <string> script_abbreviation
 %type <trans>  translator_spec_block translator_spec_body
 
 %type <string> script_abbreviation
 %type <trans>  translator_spec_block translator_spec_body
@@ -278,7 +267,9 @@ mudela:     /* empty */
        | mudela toplevel_expression {}
        | mudela assignment { }
        | mudela error
        | mudela toplevel_expression {}
        | mudela assignment { }
        | mudela error
-       | mudela check_version { }
+       | mudela INVALID        {
+               THIS->error_level_i_  =1;
+       }
        ;
 
 toplevel_expression:
        ;
 
 toplevel_expression:
@@ -315,24 +306,12 @@ embedded_scm:
                delete $2;
        }
        | SCM_T STRING semicolon {
                delete $2;
        }
        | SCM_T STRING semicolon {
+               if (THIS->lexer_p_->main_input_b_ && safe_global_b)
+                       error (_("Cannot evaluate Scheme in safe mode"));
                gh_eval_str ($2->ch_l ());
                delete $2;
        };
 
                gh_eval_str ($2->ch_l ());
                delete $2;
        };
 
-check_version:
-       VERSION STRING semicolon                {
-               Mudela_version ver (*$2);
-               if (!((ver >= oldest_version) && (ver <= version))) {
-                       if (THIS->ignore_version_b_) {
-                               THIS->here_input ().error (_f ("incorrect mudela version: %s (%s, %s)", ver.str (), oldest_version.str (), version.str ()));
-                       } else {
-                               THIS->fatal_error_i_ = 1;
-                               THIS->parser_error (_f ("incorrect mudela version: %s (%s, %s)", ver.str (), oldest_version.str (), version.str ()));
-                       }
-               }
-       }
-       ;
-
 
 chordmodifiers_block:
        CHORDMODIFIERS '{' notenames_body '}'  {  $$ = $3; }
 
 chordmodifiers_block:
        CHORDMODIFIERS '{' notenames_body '}'  {  $$ = $3; }
@@ -504,19 +483,18 @@ translator_spec_body:
        SCORE
 */
 score_block:
        SCORE
 */
 score_block:
-       SCORE { THIS->remember_spot ();
+       SCORE { 
        }
        /*cont*/ '{' score_body '}'     {
                $$ = $4;
        }
        /*cont*/ '{' score_body '}'     {
                $$ = $4;
-               $$->set_spot (THIS->pop_spot ());
                if (!$$->def_p_arr_.size ())
                        $$->add_output (THIS->default_paper_p ());
                if (!$$->def_p_arr_.size ())
                        $$->add_output (THIS->default_paper_p ());
-
        }
        ;
 
 score_body:            {
                $$ = new Score;
        }
        ;
 
 score_body:            {
                $$ = new Score;
+               $$->set_spot (THIS->here_input ());
        }
        | SCORE_IDENTIFIER {
                $$ = $1->access_content_Score (true);
        }
        | SCORE_IDENTIFIER {
                $$ = $1->access_content_Score (true);
@@ -581,9 +559,20 @@ paper_def_body:
        | paper_def_body translator_spec_block {
                $$->assign_translator ($2);
        }
        | paper_def_body translator_spec_block {
                $$->assign_translator ($2);
        }
-       | paper_def_body SHAPE '=' shape_array semicolon {
-               $$->shape_int_a_ = *$4;
-               delete $4;
+       | paper_def_body SHAPE real_array  semicolon {
+               /*
+                       URG URG.
+               */
+               if ($3->size () % 2)
+                       warning ("Need even number of args for shape array");
+
+               for (int i=0; i < $3->size ();  i+=2)
+               {
+                       Real l = $3->elem (i);
+                       $$->shape_int_a_.push (Interval (l,
+                                                        l + $3->elem (i+1)));
+               }
+               delete $3;
        }
        | paper_def_body error {
 
        }
        | paper_def_body error {
 
@@ -591,10 +580,6 @@ paper_def_body:
        ;
 
 
        ;
 
 
-real:
-       real_expression         { $$ = $1; }
-       ;
-
 
 real_with_dimension:
        REAL CM_T       {
 
 real_with_dimension:
        REAL CM_T       {
@@ -611,7 +596,7 @@ real_with_dimension:
        }
        ;
 
        }
        ;
 
-real_expression:
+real:
        REAL            {
                $$ = $1;
        }
        REAL            {
                $$ = $1;
        }
@@ -619,34 +604,39 @@ real_expression:
        | REAL_IDENTIFIER               {
                $$= *$1->access_content_Real (false);
        }
        | REAL_IDENTIFIER               {
                $$= *$1->access_content_Real (false);
        }
-       | '-'  real_expression %prec UNARY_MINUS {
+       | '-'  real %prec UNARY_MINUS {
                $$ = -$2;
        }
                $$ = -$2;
        }
-       | real_expression '*' real_expression {
+       | real '*' real {
                $$ = $1 * $3;
        }
                $$ = $1 * $3;
        }
-       | real_expression '/' real_expression {
+       | real '/' real {
                $$ = $1 / $3;
        }
                $$ = $1 / $3;
        }
-       | real_expression '+' real_expression {
+       | real '+' real {
                $$ = $1  + $3;
        }
                $$ = $1  + $3;
        }
-       | real_expression '-' real_expression {
+       | real '-' real {
                $$ = $1 - $3;
        }
                $$ = $1 - $3;
        }
-       | '(' real_expression ')'       {
+       | '(' real ')'  {
                $$ = $2;
        }
        ;
                
 
                $$ = $2;
        }
        ;
                
 
-shape_array:
-       /* empty */ {
-               $$ = new Array<Interval>;
+real_array:
+       real {
+               $$ = new Array<Real>;
+               $$->push ($1);
        }
        }
-       | shape_array real real {
-               $$->push(Interval($2, $2 + $3));
-       };
+       |  /* empty */ {
+               $$ = new Array<Real>;
+       }
+       | real_array ',' real {
+               $$->push($3);
+       }
+       ;
 
 /*
        MIDI
 
 /*
        MIDI
@@ -689,6 +679,7 @@ tempo_request:
 
 Music_list: /* empty */ {
                $$ = new Music_list;
 
 Music_list: /* empty */ {
                $$ = new Music_list;
+               $$->set_spot (THIS->here_input ());
        }
        | Music_list Music {
                $$->add_music ($2);
        }
        | Music_list Music {
                $$->add_music ($2);
@@ -728,23 +719,25 @@ Repeated_music:
                r->fold_b_ = (*$2 == "fold");
                r->semi_fold_b_ =  (*$2 == "semi");
                delete $2;
                r->fold_b_ = (*$2 == "fold");
                r->semi_fold_b_ =  (*$2 == "semi");
                delete $2;
-               r->set_spot (THIS->here_input ());
-
+               r->set_spot ($4->spot  ());
        }
        ;
 
 Music_sequence: '{' Music_list '}'     {
                $$ = new Music_sequence ($2);
        }
        ;
 
 Music_sequence: '{' Music_list '}'     {
                $$ = new Music_sequence ($2);
+               $$->set_spot ($2->spot ());
        }
        ;
 
 Sequential_music: '{' Music_list '}'           {
                $$ = new Sequential_music ($2);
        }
        ;
 
 Sequential_music: '{' Music_list '}'           {
                $$ = new Sequential_music ($2);
+               $$->set_spot ($2->spot ());
        }
        ;
 
 Simultaneous_music: '<' Music_list '>' {
                $$ = new Simultaneous_music ($2);
        }
        ;
 
 Simultaneous_music: '<' Music_list '>' {
                $$ = new Simultaneous_music ($2);
+               $$->set_spot ($2->spot ());
        }
        ;
 
        }
        ;
 
@@ -828,7 +821,7 @@ Composite_music:
                  THIS->lexer_p_->pop_state ();
        }
        | relative_music        { $$ = $1; }
                  THIS->lexer_p_->pop_state ();
        }
        | relative_music        { $$ = $1; }
-       | re_rhythmed_music     { $$ = $1; }
+       | re_rhythmed_music     { $$ = $1; } 
        ;
 
 relative_music:
        ;
 
 relative_music:
@@ -839,8 +832,9 @@ relative_music:
        ;
 
 re_rhythmed_music:
        ;
 
 re_rhythmed_music:
-       RHYTHM Music Music {
-               $$ = new Re_rhythmed_music ($3, $2);
+       ADDLYRICS Music Music {
+               Lyric_combine_music * l = new Lyric_combine_music ($2, $3);
+               $$ = l;
        }
        ;
 
        }
        ;
 
@@ -1371,37 +1365,6 @@ simple_element:
 
                $$ = v;
        }
 
                $$ = v;
        }
-       /*
-       This rhythm option introduces a lot of shift/reduce conflicts;
-       ie, for every optional_notemode_duration.
-       However, we always want the default behaviour, which is to shift:
-       if an optional_notemode_duration is allowed, a following duration
-       is to be taken as this default duration.  Thus
-
-          c4 c 8 4
-
-       are three notes, ie: c4 c8 c4.
-       Parsing whitespace is a snaky thing to do.
-       * /
-       | entered_notemode_duration {
-               if (!THIS->lexer_p_->note_state_b ())
-                       THIS->parser_error (_ ("have to be in Note mode for notes"));
-
-               Note_req *n = new Note_req;
-               
-               n->pitch_ = THIS->default_pitch_;
-               n->duration_ = *$1;
-               delete $1;
-
-               Simultaneous_music*v = new Request_chord;
-               v->set_spot (THIS->here_input ());
-               n->set_spot (THIS->here_input ());
-
-               v->add_music (n);
-
-               $$ = v;
-       }
-*/
        | RESTNAME optional_notemode_duration           {
                $$ = THIS->get_rest_element (*$1, $2);
                delete $1;  // delete notename
        | RESTNAME optional_notemode_duration           {
                $$ = THIS->get_rest_element (*$1, $2);
                delete $1;  // delete notename
@@ -1542,9 +1505,10 @@ unsigned:
        UNSIGNED        {
                $$ = $1;
        }
        UNSIGNED        {
                $$ = $1;
        }
-       | DIGIT {
+       | DIGIT         {
                $$ = $1;
                $$ = $1;
-       };
+       }
+       ;
 
 int:
        unsigned {
 
 int:
        unsigned {
@@ -1603,4 +1567,3 @@ My_lily_parser::do_yyparse ()
 }
 
 
 }
 
 
-
diff --git a/lily/re-rhythmed-music.cc b/lily/re-rhythmed-music.cc
deleted file mode 100644 (file)
index e2ba452..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*   
-  re-rhythmed-music.cc --  implement Re_rhythmed_music
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
-
- */
-
-#include "re-rhythmed-music.hh"
-#include "music-iterator.hh"
-#include "global-translator.hh"
-
-// urg
-class Foo_translator : public Global_translator 
-{
-};
-
-Music_iterator*
-Re_rhythmed_music::to_rhythm (Music_iterator* r)
-{
-  return r;
-}
-
-Re_rhythmed_music::Re_rhythmed_music (Music* m, Music* r)
-  : Music_wrapper (m)
-{
-  Music_iterator* i = Music_iterator::static_get_iterator_p (r);
-  Global_translator*t = new Foo_translator ();
-  i->init_translator (r, t);
-  i->construct_children ();
-  element_l ()->to_rhythm (i);
-}
-
-void
-Re_rhythmed_music::do_print () const
-{
-  Music_wrapper::do_print ();
-}
-
-
index dc0fc9906c006e15bc69658ce65c6fe4693235b7..14faba3d5f9b4881814e2e14d50ae3606fff488a 100644 (file)
@@ -16,11 +16,6 @@ Relative_octave_music::to_relative_octave (Musical_pitch)
   return last_pitch_;
 }
 
   return last_pitch_;
 }
 
-Music_iterator*
-Relative_octave_music::to_rhythm (Music_iterator* r)
-{
-  return element_l ()->to_rhythm (r);
-}
 
 Relative_octave_music::Relative_octave_music(Music*p,Musical_pitch def)
   : Music_wrapper (p)
 
 Relative_octave_music::Relative_octave_music(Music*p,Musical_pitch def)
   : Music_wrapper (p)
index 5dd89eb2f56a620c2a953016a8860c751500fb03..62f5f4a48c07bc1b55348450c70b51fb2e930c6f 100644 (file)
@@ -37,8 +37,14 @@ Repeat_engraver::do_try_music (Music* m)
       if (r->semi_fold_b_)
        {
          repeated_music_l_ = r;
       if (r->semi_fold_b_)
        {
          repeated_music_l_ = r;
-         return true;
        }
        }
+
+      /*
+       We acknowledge other types of unfolded music as well, to
+       get auto context selection right.
+       */
+      return true;
+
     }
   return false;
 }
     }
   return false;
 }
diff --git a/lily/repeated-music-iterator.cc b/lily/repeated-music-iterator.cc
deleted file mode 100644 (file)
index 03854fd..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*   
-  new-repeated-music-iterator.cc --  implement Folded_repeat_iterator
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "folded-repeat-iterator.hh"
-#include "new-repeated-music.hh"
-#include "music-list.hh"
-#include "simultaneous-music-iterator.hh"
-#include "translator-group.hh"
-
-Folded_repeat_iterator::Folded_repeat_iterator ()
-{
-  main_iter_p_ = 0;
-  alternative_iter_p_ = 0;
-}
-
-bool
-Folded_repeat_iterator::ok () const
-{
-  return main_iter_p_ || alternative_iter_p_;
-}
-
-Folded_repeat_iterator::~Folded_repeat_iterator ()
-{
-  delete main_iter_p_;
-  delete alternative_iter_p_;
-}
-
-Moment
-Folded_repeat_iterator::next_moment () const
-{
-  if (main_iter_p_)
-    {
-      return main_iter_p_->next_moment ();
-    }
-  else
-    return main_length_mom_ + alternative_iter_p_->next_moment ();
-}
-
-void
-Folded_repeat_iterator::construct_children ()
-{
-  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);
-  main_iter_p_ = get_iterator_p (mus->repeat_body_p_);
-  if (!main_iter_p_->ok())
-    {
-      leave_body ();
-      enter_alternative ();
-    }
-}
-
-void
-Folded_repeat_iterator::do_process_and_next (Moment m)
-{
-  if (!m)
-    {
-      bool success = report_to_l ()->try_music (music_l_);
-      if (!success)
-       music_l_->warning ( _("No one to print a volta bracket"));
-    }
-  
-  Repeated_music const * mus = dynamic_cast<Repeated_music const*> (music_l_);
-  
-  if (main_iter_p_)
-    {
-      main_iter_p_->process_and_next (m);
-      if (!main_iter_p_->ok ())
-       leave_body ();
-    }
-
-  if (!main_iter_p_ && !alternative_iter_p_)
-    {
-      enter_alternative ();
-    }
-  
-  if (alternative_iter_p_)
-    {
-      alternative_iter_p_->process_and_next (m - main_length_mom_);
-      if (!alternative_iter_p_->ok ())
-       {
-         delete alternative_iter_p_;
-         alternative_iter_p_ =0;
-       }
-    }
-}
-
-void
-Folded_repeat_iterator::leave_body ()
-{
-  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);
-  delete main_iter_p_;
-  main_iter_p_ = 0;
-  main_length_mom_ +=  mus->repeat_body_p_->length_mom ();
-}
-
-void
-Folded_repeat_iterator::enter_alternative ()
-{
-  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);  
-  if (mus->alternatives_p_)
-    {
-      Simultaneous_music_iterator * s = new Simultaneous_music_iterator;
-      s->separate_contexts_b_ = true;
-      s->init_translator (mus->alternatives_p_, report_to_l ());
-  
-      alternative_iter_p_ = s;
-      alternative_iter_p_->construct_children ();
-    }
-}
-
-void
-Folded_repeat_iterator::do_print () const
-{
-#ifndef NPRINT
-#endif
-}
index 6436be9bfa7adaea4d34997cece84660e3866b0e..09fe2e05e81c23619386b9f1c3488af47b4c2a40 100644 (file)
@@ -66,16 +66,6 @@ Repeated_music::to_relative_octave (Musical_pitch p)
   return p;
 }
 
   return p;
 }
 
-Music_iterator*
-Repeated_music::to_rhythm (Music_iterator* r)
-{
-  if (repeat_body_p_)
-    r = repeat_body_p_->to_rhythm (r);
-
-  if (alternatives_p_)
-    r = alternatives_p_->do_rhythm (r);
-  return r;
-}
 
 
 void
 
 
 void
index 47d28ce770484c69e928723bb0ba3b9ebb2b1148..462cead1b41ba19116c64c343c9030b18f23fdc0 100644 (file)
@@ -50,24 +50,6 @@ Request_chord_iterator::next_moment() const
   return m;
 }
 
   return m;
 }
 
-Music*
-Request_chord_iterator::next_music_l ()
-{
-  if (first_b_)
-    {
-      cursor_ = elt_l ()->music_p_list_p_->head_;
-      first_b_ = false;
-    }
-  else
-    {
-      if (cursor_)
-       cursor_ = cursor_->next_;
-    }
-  if (cursor_)
-    return cursor_->car_;
-  else
-    return 0;
-}
 
 void
 Request_chord_iterator::do_print() const
 
 void
 Request_chord_iterator::do_print() const
@@ -86,7 +68,7 @@ Request_chord_iterator::do_process_and_next (Moment mom)
        {
          if (Request * req_l = dynamic_cast<Request*> (i->car_))
            {
        {
          if (Request * req_l = dynamic_cast<Request*> (i->car_))
            {
-             bool gotcha = report_to_l()->try_music (req_l);
+             bool gotcha = try_music (req_l);
              if (!gotcha)
                req_l->warning (_f ("junking request: `%s\'", classname( req_l)));
            }
              if (!gotcha)
                req_l->warning (_f ("junking request: `%s\'", classname( req_l)));
            }
index 2f8c56a3ed70a733c710f39f69d2349d4791d823..fd2e391747c993add126c3188f3ca8e370f946d8 100644 (file)
@@ -28,7 +28,7 @@ Scope::print () const
 
 Scope::~Scope ()
 {
 
 Scope::~Scope ()
 {
-  for (Scope_iter       ai (*this); ai.ok(); ai++)
+  for (Scope_iter ai (*this); ai.ok(); ai++)
     {
       DOUT << "deleting: " << ai.key() << '\n';
       delete ai.val ();
     {
       DOUT << "deleting: " << ai.key() << '\n';
       delete ai.val ();
index 6714625393c079a154c670dd5500331bbc05b19a..b6ace95e1386b6f5760058912d6a046197159cc6 100644 (file)
@@ -25,7 +25,6 @@ Sequential_music_iterator::Sequential_music_iterator ()
   cursor_ = 0;
   here_mom_ = 0;
   iter_p_ =0;
   cursor_ = 0;
   here_mom_ = 0;
   iter_p_ =0;
-  per_elt_b_ = false;
 }
 
 void
 }
 
 void
@@ -68,14 +67,22 @@ Sequential_music_iterator::start_next_element()
 void
 Sequential_music_iterator::set_sequential_music_translator()
 {
 void
 Sequential_music_iterator::set_sequential_music_translator()
 {
-  if (iter_p_->report_to_l()->depth_i () > report_to_l ()->depth_i ()
-      && ! dynamic_cast<Grace_iterator*> (iter_p_)) // UGH.!
-    set_translator (iter_p_->report_to_l());
+  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_;
+    
+  if (report_to_l()->depth_i () < child_report->depth_i ())
+    set_translator (child_report);
 }
 
 Sequential_music_iterator::~Sequential_music_iterator()
 {
 }
 
 Sequential_music_iterator::~Sequential_music_iterator()
 {
-  assert (! iter_p_);
+  if (iter_p_)
+    {
+      music_l_->warning ("Must stop before this music ends");
+      delete iter_p_;
+      iter_p_ = 0;
+    }
 }
 
 
 }
 
 
@@ -101,20 +108,13 @@ Sequential_music_iterator::do_process_and_next (Moment until)
       
       if (!iter_p_->ok()) 
        {
       
       if (!iter_p_->ok()) 
        {
+         set_sequential_music_translator();
          leave_element();
          
          if (cursor_)
          leave_element();
          
          if (cursor_)
-           {
-             start_next_element();
-             set_sequential_music_translator();
-
-             if (per_elt_b_)
-               goto loopexit;  // ugh.
-           }
+           start_next_element();
          else 
          else 
-           {
-             goto loopexit;
-           }
+           goto loopexit;
        }
     }
 
        }
     }
 
@@ -129,40 +129,6 @@ Sequential_music_iterator::next_moment() const
   return iter_p_->next_moment() + here_mom_;
 }
 
   return iter_p_->next_moment() + here_mom_;
 }
 
-Music*
-Sequential_music_iterator::next_music_l ()
-{
-  if (!iter_p_)
-    return 0;
-
-  while (1) 
-    {
-      if (Music* m = iter_p_->next_music_l ())
-       {
-         return m;
-       }
-      else
-       {
-         // urg FIXME: sequential children should be iterated to finish
-         if (dynamic_cast<Request_chord_iterator*> (iter_p_))
-           delete iter_p_;
-         iter_p_ = 0;
-         leave_element ();
-         
-         if (cursor_)
-           {
-             start_next_element ();
-             set_sequential_music_translator ();
-           }
-         else 
-           {
-             delete iter_p_;
-             iter_p_ = 0;
-             return 0;
-           }
-       }
-    }
-}
 
 bool
 Sequential_music_iterator::ok() const
 
 bool
 Sequential_music_iterator::ok() const
@@ -170,3 +136,8 @@ Sequential_music_iterator::ok() const
   return iter_p_;
 }
 
   return iter_p_;
 }
 
+Music_iterator*
+Sequential_music_iterator::try_music_in_children (Music const *m) const
+{ 
+  return iter_p_ ? iter_p_->try_music (m) : 0;
+}
index 80dbc9d2da97529d304f875124876e605f851745..70b163169397f4ee99446d8772e0f52e9454034f 100644 (file)
@@ -102,3 +102,11 @@ Simultaneous_music_iterator::ok() const
   return children_p_list_.head_;
 }
 
   return children_p_list_.head_;
 }
 
+Music_iterator*
+Simultaneous_music_iterator::try_music_in_children (Music const*m) const
+{
+  Music_iterator * b=0;
+  for (Cons<Music_iterator> *p = children_p_list_.head_; !b && p; p = p->next_)
+    b =p->car_->try_music (m);
+  return b;
+}
index a307e1b1044b5d1d57cda128c23e98d97496db75..5063bfa7a4b8700ceadbc68a4fb3a0cf463f7baa 100644 (file)
@@ -44,6 +44,8 @@ Spacing_spanner::scol (int i)const
   John S. Gourlay. ``Spacing a Line of Music,'' Technical Report
   OSU-CISRC-10/87-TR35, Department of Computer and Information
   Science, The Ohio State University, 1987.
   John S. Gourlay. ``Spacing a Line of Music,'' Technical Report
   OSU-CISRC-10/87-TR35, Department of Computer and Information
   Science, The Ohio State University, 1987.
+
+  TOO HAIRY.
   
  */
 Array<Spring>
   
  */
 Array<Spring>
@@ -90,63 +92,73 @@ Spacing_spanner::do_measure (int col1, int col2) const
          
          SCM hint = lc->get_elt_property (extra_space_scm_sym);
          SCM next_hint = rc->get_elt_property (extra_space_scm_sym);
          
          SCM hint = lc->get_elt_property (extra_space_scm_sym);
          SCM next_hint = rc->get_elt_property (extra_space_scm_sym);
-         SCM stretch_hint = rc->get_elt_property (stretch_distance_scm_sym);
-           
+         SCM stretch_hint = lc->get_elt_property (stretch_distance_scm_sym);
+         SCM next_stretch_hint = rc->get_elt_property (stretch_distance_scm_sym);        
+
+         Real left_distance;
          if (hint != SCM_BOOL_F)
            {
              hint = SCM_CDDR (hint);
              
          if (hint != SCM_BOOL_F)
            {
              hint = SCM_CDDR (hint);
              
-             s.distance_f_ = gh_scm2double (hint); 
-             if (!lc->musical_b ())
-               s.strength_f_ = non_musical_space_strength; // fixed after complaints by michael krause 2.0;
+             left_distance = gh_scm2double (hint); 
            }
          else if (!lc->musical_b() && i+1 < col_count())
            {
            }
          else if (!lc->musical_b() && i+1 < col_count())
            {
-             s.distance_f_ = default_bar_spacing (lc,rc,shortest);
+             left_distance= default_bar_spacing (lc,rc,shortest);
            }
          else if (lc->musical_b())
            {
            }
          else if (lc->musical_b())
            {
-             s.distance_f_ = note_spacing (lc, rc, shortest);
-             
+             left_distance  = note_spacing (lc, rc, shortest);
            }
            }
-         
+
+         s.distance_f_ = left_distance;
+         if (!lc->musical_b () || !rc->musical_b ())
+           s.strength_f_ = non_musical_space_strength;
+
+         Real right_dist = 0.0;
          if (next_hint != SCM_BOOL_F)
            {
          if (next_hint != SCM_BOOL_F)
            {
-            next_hint = SCM_CADR(next_hint);
-            s.distance_f_ += gh_scm2double (next_hint);
+             next_hint = SCM_CADR(next_hint);
+             right_dist += gh_scm2double (next_hint);
            }
          else
            {
              Interval ext (rc->extent (X_AXIS));
            }
          else
            {
              Interval ext (rc->extent (X_AXIS));
-             Real correction =  ext.empty_b() ? 0.0 : - ext [LEFT];
+             right_dist =  ext.empty_b() ? 0.0 : - ext [LEFT];
+           }
 
 
-             /*
-               don't want to create too much extra space for accidentals
-              */
-             if (lc->musical_b () && rc->musical_b ())
-               correction /= 2.0;
+         /*
+           don't want to create too much extra space for accidentals
+         */
+         if (lc->musical_b () && rc->musical_b ())
+           right_dist /= 2.0;
 
 
-             s.distance_f_ += correction;
+         s.distance_f_ = left_distance + right_dist;
+           
+         Real stretch_dist = 0.;
+         if (stretch_hint != SCM_BOOL_F)
+           stretch_dist += gh_scm2double (SCM_CDDR (stretch_hint));
+         else
+           stretch_dist += left_distance;
+         
+         if (next_stretch_hint != SCM_BOOL_F)
+           {
+             // see regtest spacing-tight
+             //              stretch_dist += gh_scm2double (SCM_CADR (next_stretch_hint));
            }
            }
+         else
+           stretch_dist += right_dist;
 
 
-         if (s.distance_f_ == 0.0)
+         if (stretch_dist == 0.0)
            {
              /*
                \bar "".  We give it 0 space, with high strength. 
               */
            {
              /*
                \bar "".  We give it 0 space, with high strength. 
               */
-             s.distance_f_ = 0.0 PT;
              s.strength_f_ = 20.0; 
            }
              s.strength_f_ = 20.0; 
            }
-         else if (stretch_hint != SCM_BOOL_F)
-           {
-             Real hint_sp = gh_scm2double (SCM_CDR (stretch_hint));
-             s.strength_f_ /= hint_sp;
-           }
          else
          else
-           {
-             s.strength_f_ /= s.distance_f_; 
-           }
-
+           s.strength_f_ /= stretch_dist;
+         
          meas_springs.push (s);        
        }
     }
          meas_springs.push (s);        
        }
     }
@@ -158,7 +170,8 @@ Spacing_spanner::do_measure (int col1, int col2) const
    Do something if breakable column has no spacing hints set.
  */
 Real
    Do something if breakable column has no spacing hints set.
  */
 Real
-Spacing_spanner::default_bar_spacing (Score_column *lc, Score_column *rc, Moment shortest) const
+Spacing_spanner::default_bar_spacing (Score_column *lc, Score_column *rc,
+                                     Moment shortest) const
 {
   Real symbol_distance = lc->extent (X_AXIS)[RIGHT] ;
   Real durational_distance = 0;
 {
   Real symbol_distance = lc->extent (X_AXIS)[RIGHT] ;
   Real durational_distance = 0;
index 4d4659f66aa0d43b3ea0e9963234ac1cae21484b..27f72c9e0f8bb41b4e6cba7d5e8aa9437e4e3b02 100644 (file)
@@ -21,7 +21,7 @@ Spanner::do_print() const
        << " and " << classname (spanned_drul_[RIGHT]) << '\n';
 
   if (broken_b ())
        << " and " << classname (spanned_drul_[RIGHT]) << '\n';
 
   if (broken_b ())
-    DOUT << "Broken in " << to_str (broken_info_.size ()) << " pieces";
+    DOUT << "Broken in " << to_str (broken_into_l_arr_.size ()) << " pieces";
 #endif
 }
 
 #endif
 }
 
@@ -56,7 +56,7 @@ Spanner::break_into_pieces ()
          Item *&pc_l = info.bounds_[d] ;
          if (!pc_l->line_l())
            pc_l =  pc_l->find_prebroken_piece(- d);
          Item *&pc_l = info.bounds_[d] ;
          if (!pc_l->line_l())
            pc_l =  pc_l->find_prebroken_piece(- d);
-
+         
          assert (pc_l);
          if (!info.line_l_)
            info.line_l_ = pc_l-> line_l ();
          assert (pc_l);
          if (!info.line_l_)
            info.line_l_ = pc_l-> line_l ();
@@ -65,8 +65,16 @@ Spanner::break_into_pieces ()
          
        }
       while ((flip(&d))!= LEFT);
          
        }
       while ((flip(&d))!= LEFT);
-      info.broken_spanner_l_ = 0;
-      broken_info_.push (info);
+
+      Spanner *span_p = dynamic_cast<Spanner*>(clone ());
+      span_p->set_bounds(LEFT,info.bounds_[LEFT]);
+      span_p->set_bounds(RIGHT,info.bounds_[RIGHT]);
+      pscore_l_->typeset_element (span_p);
+             
+      info.broken_spanner_l_ = span_p;
+      span_p->handle_broken_dependencies();
+
+      broken_into_l_arr_.push (span_p);
     }
 }
 
     }
 }
 
@@ -149,25 +157,10 @@ Spanner::line_l() const
 Spanner*
 Spanner::find_broken_piece (Line_of_score*l) const
 {
 Spanner*
 Spanner::find_broken_piece (Line_of_score*l) const
 {
-  for (int i=0; i < broken_info_.size (); i++)
+  for (int i=0; i < broken_into_l_arr_.size (); i++)
     {
     {
-      Spanner *me =(Spanner*) this;
-      Breaking_information &info  = me->broken_info_[i];
-      if (info.line_l_ == l)
-       {
-         if (!info.broken_spanner_l_)
-           {
-             Spanner *span_p = dynamic_cast<Spanner*>(clone ());
-             span_p->set_bounds(LEFT,info.bounds_[LEFT]);
-             span_p->set_bounds(RIGHT,info.bounds_[RIGHT]);
-             pscore_l_->typeset_element (span_p);
-             
-             info.broken_spanner_l_ = span_p;
-             span_p->handle_broken_dependencies();
-
-           }
-         return info.broken_spanner_l_;
-       }
+      if (broken_into_l_arr_[i]->line_l () == l)
+       return broken_into_l_arr_[i];
     }
 
   return 0;                               
     }
 
   return 0;                               
@@ -176,7 +169,7 @@ Spanner::find_broken_piece (Line_of_score*l) const
 bool
 Spanner::broken_b() const
 {
 bool
 Spanner::broken_b() const
 {
-  return broken_info_.size();
+  return broken_into_l_arr_.size();
 }
 
 Array<Rod>
 }
 
 Array<Rod>
@@ -209,30 +202,24 @@ Spanner::do_space_processing ()
     }
 }
 
     }
 }
 
+/*
+  UGH.
+ */
 void
 Spanner::handle_broken_dependents ()
 {
 void
 Spanner::handle_broken_dependents ()
 {
-#if 0 // need to remove delayd breaking.
-  if (original_l_ && !original_l_->line_l ())
+  Spanner *unbrok = dynamic_cast<Spanner*> (original_l_);
+  if (!unbrok || dim_cache_[Y_AXIS]->parent_l_)
+    return;
+  
+  Spanner *refpoint = dynamic_cast<Spanner*> (unbrok->parent_l (Y_AXIS));
+  
+  if (refpoint)
     {
     {
-      
-      /* we're the broken pieces of a spanner.
-        Check if our Y-leaning point is sane.
-       */
-      Dimension_cache *d = dim_cache_[Y_AXIS]->parent_l_;
-      if (d)
-       return;
-
-      Score_element *  ref_elt = dynamic_cast<Score_element*>(d->element_l());
-      Spanner *ref_span = dynamic_cast<Spanner*> (ref_elt);      
-      if (!ref_elt->line_l () && ref_span)
-       {
-         Spanner *broken_refpoint =  ref_span->find_broken_piece (line_l ());
-         if (broken_refpoint)
-           dim_cache_[Y_AXIS]->parent_l_ = broken_refpoint->dim_cache_[Y_AXIS];
-         else
-           programming_error ("Spanner y -refpoint lost.");
-       }
+      Spanner * broken_refpoint = refpoint->find_broken_piece (line_l ());
+      if (broken_refpoint)
+       dim_cache_[Y_AXIS]->parent_l_ = broken_refpoint->dim_cache_[Y_AXIS];
+      else
+       programming_error ("Spanner y -refpoint lost.");
     }
     }
-#endif
 }
 }
index 03788e8f403a90bce79702ec0de5abe46567ecb2..90f8d49700ce02fa46f1697485fa4fe084affa52 100644 (file)
@@ -60,12 +60,13 @@ void
 Super_element::break_processing ()
 {
   calculate_dependencies (BROKEN, BROKEN, &Score_element::do_break_processing);
 Super_element::break_processing ()
 {
   calculate_dependencies (BROKEN, BROKEN, &Score_element::do_break_processing);
-  calculate_dependencies (BROKEN_SECOND, BROKEN_SECOND,
-                         &Score_element::handle_broken_dependents);
 }
 }
+
 void
 Super_element::post_processing ()
 {
 void
 Super_element::post_processing ()
 {
+  calculate_dependencies (BROKEN_SECOND, BROKEN_SECOND,
+                         &Score_element::handle_broken_dependents);
   calculate_dependencies (POSTCALCED, POSTCALCING, &Score_element::do_post_processing);
 }
 
   calculate_dependencies (POSTCALCED, POSTCALCING, &Score_element::do_post_processing);
 }
 
index 1ae9e51f07349b8b55b1cc955bab8fdf2b8bf5b5..9fcac3d436d86d4784ae7683334c5cec477016fa 100644 (file)
@@ -67,7 +67,7 @@ Tex_font_metric::find_ascii (int ascii, bool warn) const
   return dummy_static_char_metric;  
 }
 
   return dummy_static_char_metric;  
 }
 
-Character_metric*
+Character_metric const*
 Tex_font_metric::get_char (int a, bool w) const
 {
   return &find_ascii (a, w);
 Tex_font_metric::get_char (int a, bool w) const
 {
   return &find_ascii (a, w);
index c6a086419e02dbab971b8aedcc132ab4c62f02ac..fc48ff2cd662b3dffc1f23fa768c582d758517dc 100644 (file)
@@ -1,5 +1,5 @@
 /*   
 /*   
-  time-scaled-music-iterator.cc --  implement Time_scaled_music_iterator
+  time-scaled-music-iterator.cc -- implement Time_scaled_music_iterator
   
   source file of the GNU LilyPond music typesetter
   
   
   source file of the GNU LilyPond music typesetter
   
 #include "translator-group.hh"
 #include "command-request.hh"
 
 #include "translator-group.hh"
 #include "command-request.hh"
 
-
-
 void
 Time_scaled_music_iterator::do_process_and_next (Moment m)
 {
 void
 Time_scaled_music_iterator::do_process_and_next (Moment m)
 {
-  if (first_b_)
+  if (!m)
     {
     {
-      bool success = report_to_l ()->try_music (dynamic_cast<Time_scaled_music const*> (music_l_));
-      if (!success)
+      Music_iterator *yeah = try_music (music_l_);
+      if (yeah)
+       set_translator (yeah->report_to_l ());
+      else
        music_l_->warning ( _("No one to print a tuplet start bracket"));
     }
 
        music_l_->warning ( _("No one to print a tuplet start bracket"));
     }
 
index f6de2eb3b3cce299bb76d23ba5976d0fca3218a8..02fe0889733e26d85fb1997c2d47e7766420ecd2 100644 (file)
@@ -33,10 +33,5 @@ Transposed_music::to_relative_octave (Musical_pitch p)
   return p;
 }
 
   return p;
 }
 
-Music_iterator*
-Transposed_music::to_rhythm (Music_iterator* r)
-{
-  return r;
-}
 
 
 
 
index 3a9118cab39e9686d8bcda723cfcb9a2d590b007..99a316406350ae6c5789aaf17b2d86e21617c678 100644 (file)
@@ -138,8 +138,10 @@ Unfolded_repeat_iterator::do_process_and_next (Moment m)
 {
   if (!m)
     {
 {
   if (!m)
     {
-      bool success = report_to_l ()->try_music (music_l_);
-      if (!success)
+      Music_iterator *yeah = try_music (music_l_);
+      if (yeah)
+       set_translator (yeah->report_to_l ());
+      else
        music_l_->warning ( _("No one to print a volta bracket"));
     }
   while (1)
        music_l_->warning ( _("No one to print a volta bracket"));
     }
   while (1)
@@ -168,3 +170,9 @@ Unfolded_repeat_iterator::do_print () const
   current_iter_p_->print();
 #endif
 }
   current_iter_p_->print();
 #endif
 }
+
+Music_iterator* 
+Unfolded_repeat_iterator::try_music_in_children (Music const * m) const
+{
+  return  current_iter_p_->try_music (m);
+}
index 9b0566af2f219caa8fddfa84985cf23977adfeaa..a92e590714e382c8c0673bd90d2128de78e47ab1 100644 (file)
@@ -36,9 +36,9 @@ Volta_spanner::do_brew_molecule_p () const
   bool no_vertical_start = false;
   bool no_vertical_end = last_b_;
   Spanner *orig_span =  dynamic_cast<Spanner*> (original_l_);
   bool no_vertical_start = false;
   bool no_vertical_end = last_b_;
   Spanner *orig_span =  dynamic_cast<Spanner*> (original_l_);
-  if (orig_span && orig_span->broken_info_[0].broken_spanner_l_ != this)
+  if (orig_span && orig_span->broken_into_l_arr_[0] != this)
     no_vertical_start = true;
     no_vertical_start = true;
-  if (orig_span && orig_span->broken_info_.top ().broken_spanner_l_ != this)
+  if (orig_span && orig_span->broken_into_l_arr_.top () != this)
     no_vertical_end = true;
   if (bar_arr_.top ()->type_str_.length_i () > 1)
     no_vertical_end = false;
     no_vertical_end = true;
   if (bar_arr_.top ()->type_str_.length_i () > 1)
     no_vertical_end = false;
index 81a407450ebc87fb7c8003e82fa83f8e1b186fe5..d6f6cbf7ceb763ea867cdf20190adcf3baa99253 100644 (file)
@@ -20,7 +20,6 @@
    A Dynamic Programming type of algorithm
    similar to TeX's is in Gourlay_breaking
 
    A Dynamic Programming type of algorithm
    similar to TeX's is in Gourlay_breaking
 
-
    UGH.  Should think about pre/post break columns.
    */
 Array<Column_x_positions>
    UGH.  Should think about pre/post break columns.
    */
 Array<Column_x_positions>
@@ -36,7 +35,6 @@ Word_wrap::do_solve () const
   assert (breakpoints.size ()>=2);
 
   int break_idx=0;
   assert (breakpoints.size ()>=2);
 
   int break_idx=0;
-  int line_no = 0;
   while (break_idx < breakpoints.size () -1)
     {
       Column_x_positions minimum;
   while (break_idx < breakpoints.size () -1)
     {
       Column_x_positions minimum;
@@ -44,7 +42,7 @@ Word_wrap::do_solve () const
 
 
       // do  another line
 
 
       // do  another line
-      line_no ++;
+
       Item *post = breakpoints[break_idx]->find_prebroken_piece (RIGHT);
       Paper_column *postcol =dynamic_cast<Paper_column*>(post);
       
       Item *post = breakpoints[break_idx]->find_prebroken_piece (RIGHT);
       Paper_column *postcol =dynamic_cast<Paper_column*>(post);
       
@@ -67,7 +65,7 @@ Word_wrap::do_solve () const
          current.add_paper_column (precol);
 
          current.spacer_l_ = generate_spacing_problem (current.cols_, 
          current.add_paper_column (precol);
 
          current.spacer_l_ = generate_spacing_problem (current.cols_, 
-           pscore_l_->paper_l_->line_dimensions_int (line_no));
+           pscore_l_->paper_l_->line_dimensions_int (breaking.size ()));
 
          // try to solve
          if (!feasible (current.cols_))
 
          // try to solve
          if (!feasible (current.cols_))
index c1911c70743fd5eb6fbc0cf73b759a32cd07b0fd..d08d3d8ae1d275d2acb58ef40bdc188b813559f1 100644 (file)
@@ -84,3 +84,4 @@ see also input/test/auto-beam-override.ly
 
 %}
 
 
 %}
 
+
index 30677bb55ede8d6b6cc6b9881f3ac8316f7b9e50..4e5d37d75155431270940ad75023383bc1e3ae42 100644 (file)
@@ -36,16 +36,15 @@ lydian = 7
 phrygian = 8
 dorian = 10
 
 phrygian = 8
 dorian = 10
 
+melisma = \property Staff.melismaBusy = "1"
+melismaEnd = \property Staff.melismaBusy = "0"
+
 
 
 papersize = "a4"
 \include "generic-paper.ly"
 \include "paper20.ly"
 
 
 
 papersize = "a4"
 \include "generic-paper.ly"
 \include "paper20.ly"
 
-\paper{
-       \paper_twenty
-}
-
 % ugh
 \include "midi.ly"
 
 % ugh
 \include "midi.ly"
 
index 645f0946a74151b73c768501351666359304480f..4c21a7d1f5826eb1e0d35f2f5d830cf93058cbd5 100644 (file)
@@ -98,6 +98,7 @@ VoiceContext = \translator {
 %      \consists "Multi_measure_rest_engraver";
 
        % ugh.  Order matters here.
 %      \consists "Multi_measure_rest_engraver";
 
        % ugh.  Order matters here.
+       \consists "Melisma_engraver";
        \consists "Text_engraver";
        \consists "Script_engraver";
        \consists "Script_column_engraver";
        \consists "Text_engraver";
        \consists "Script_engraver";
        \consists "Script_column_engraver";
@@ -125,6 +126,7 @@ GraceContext=\translator {
        \consists "Align_note_column_engraver";
        \consists "Font_size_engraver";
        \consists "Rhythmic_column_engraver";
        \consists "Align_note_column_engraver";
        \consists "Font_size_engraver";
        \consists "Rhythmic_column_engraver";
+       \consists "Dynamic_engraver";
 
        stemStyle = "grace";
        weAreGraceContext = "1";
 
        stemStyle = "grace";
        weAreGraceContext = "1";
index 206c771d5479d66e1fe3949721578165f185e99f..1399f4c7bc4b63d6d7b6899cd3e3e2fac8f271e8 100644 (file)
@@ -1,5 +1,6 @@
 \paper {
 \paper {
-       texsetting = "\\input lilyponddefs ";
-       pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n";
-       scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n";
+       texsetting = "";
+       pssetting = "";
+       scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n";% UGH. 
+
 }
 }
index 8dc410b4e8fad4a13423d53b8ab71e7a08fb2922..f41bc11c7eb647343e3df972b9ad1494686cc1fe 100644 (file)
@@ -8,11 +8,21 @@ paper_eleven = \paper {
        quartwidth = 3.63\pt;
        wholewidth = 5.45\pt;
 
        quartwidth = 3.63\pt;
        wholewidth = 5.45\pt;
 
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 4.8\pt;
-       
+       font_large = 8.;
+       font_Large = 6.;
+       font_normal = 5.;
+
+       font_finger = 4.;
+       font_volta = 4.;
+       font_number = 4.;
+       font_dynamic = 10.;
+       font_mark = 6.;
+
+       -1=\font "feta11"
+       -2=\font "feta11"
        0=\font "feta11"
 
        \include "params.ly";
 }
 
        0=\font "feta11"
 
        \include "params.ly";
 }
 
+\paper { \paper_eleven }
index fa73ad312e444c212ad31042b3dbadbd005e6ceb..afe0cd5651acc36eabce1c512c3006f314085486 100644 (file)
@@ -8,10 +8,20 @@ paper_thirteen = \paper {
        wholewidth = 6.44\pt;
 
 
        wholewidth = 6.44\pt;
 
 
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 4.8\pt;
-       
+       font_large = 8.;
+       font_Large = 6.;
+       font_normal = 5.;
+
+       font_finger = 4.;
+       font_volta = 4.;
+       font_number = 6.;
+       font_dynamic = 10.;
+       font_mark = 6.;
+
        0=\font "feta13"
        0=\font "feta13"
+       -1=\font "feta11"
+       
        \include "params.ly";
 }
 
        \include "params.ly";
 }
 
+\paper { \paper_thirteen }
index c015aa2a1e752224d61fdbcefad47f68b171c9a4..785f85834c24a24555e91d2e3c4601edf51f1869 100644 (file)
@@ -21,14 +21,11 @@ paper_sixteen = \paper {
        font_dynamic = 10.;
        font_mark = 10.;
 
        font_dynamic = 10.;
        font_mark = 10.;
 
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 4.8\pt;
-
-%      scmsetting = "\"\\\\input lilyponddefs \";\n";
-
        0 = \font "feta16" 
        -1 = \font "feta13"
        -2 = \font "feta11"
        
        \include "params.ly";
 }
        0 = \font "feta16" 
        -1 = \font "feta13"
        -2 = \font "feta11"
        
        \include "params.ly";
 }
+
+\paper {\paper_sixteen }
index 800ad6038bc6cbfca6780efced2d2364e5318f3e..c4ac674fdd534844c4d82f194b663904175368fc 100644 (file)
@@ -27,14 +27,11 @@ paper_twenty = \paper {
        quartwidth =  6.61\pt;
        wholewidth = 9.90\pt;
 
        quartwidth =  6.61\pt;
        wholewidth = 9.90\pt;
 
-
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 6.\pt;
-
-               -2 = \font "feta13"
+       -2 = \font "feta13"
        -1 = \font "feta16"
        0 = \font "feta20"
 
        \include "params.ly";
 }
 
        -1 = \font "feta16"
        0 = \font "feta20"
 
        \include "params.ly";
 }
 
+\paper { \paper_twenty }
diff --git a/ly/paper23.ly b/ly/paper23.ly
new file mode 100644 (file)
index 0000000..57f64a7
--- /dev/null
@@ -0,0 +1,32 @@
+% paper23.ly
+
+
+\version "1.1.52";
+
+paper_twentythree = \paper {
+       staffheight = 23.0\pt;
+
+       font_large = 12.;
+       font_Large = 12.;       
+       font_normal = 10.;
+
+       font_finger = 5.;
+       font_volta = 8.;
+       font_number = 10.;
+       font_mark = 12.;
+
+       % Ugh
+       magnification_dynamic = 3.;
+       
+       % ugh see table20 for sizes
+       quartwidth =  6.61\pt;
+       wholewidth = 9.90\pt;
+
+       -2 = \font "feta16"
+       -1 = \font "feta20"
+       0 = \font "feta23"
+
+       \include "params.ly";
+}
+
+\paper { \paper_twentythree }
index 67640bda89945cecec927102fc0b6c185252aada..84d29e891b63c7336b686821557e63e85f792c53 100644 (file)
@@ -3,16 +3,26 @@
 paper_twentysix = \paper {
        staffheight = 26.0\pt;
 
 paper_twentysix = \paper {
        staffheight = 26.0\pt;
 
-       % ugh see table26 for sizes
        quartwidth = 8.59\pt;
        wholewidth = 12.87\pt;
        quartwidth = 8.59\pt;
        wholewidth = 12.87\pt;
-
-       arithmetic_basicspace = 2.;
-        arithmetic_multiplier = 6.\pt;
        
        
+       font_large = 14.;
+       font_Large = 17.;       
+       font_normal = 12.;
+       font_dynamic = 10.;
+       % Ugh
+       magnification_dynamic = 4.;
+
+       font_finger = 8.;
+       font_volta = 10.;
+       font_number = 10.;
+       magnification_number = 2.;
+       font_mark = 14.;
+
        0=\font "feta26"
        0=\font "feta26"
+       -1 = \font "feta23"
+       -2 = \font "feta20"
        \include "params.ly";
        \include "params.ly";
-       linewidth = \linewidth20;
-       textheight = \textheight20;
 }
 
 }
 
+\paper { \paper_twentysix }
index 3cf95651a8dbef1977e1a90a65222a93036e7e8f..65d4e8d02a2350feefe76ab4c30b9f4147e9ab45 100644 (file)
@@ -28,6 +28,12 @@ stem_length1 = 5.;
 stem_length2 = 4.;
 stem_length3 = 3.;
 
 stem_length2 = 4.;
 stem_length3 = 3.;
 
+%
+arithmetic_basicspace = 2.;
+arithmetic_multiplier = 0.9 * \quartwidth ;
+
+
+
 % urg.
 % if only these ugly arrays were scm,
 % we could override them in the Grace context
 % urg.
 % if only these ugly arrays were scm,
 % we could override them in the Grace context
index 7ebb13411500769221bb6cbbea466b3d0aeb6d79..24a6f8c066a3ba6c0b2342d183ee6ad69432163d 100644 (file)
@@ -135,3 +135,5 @@ endincipit = \notes{
     \nobreak \bar "";
 }
 
     \nobreak \bar "";
 }
 
+autoBeamOff = \property Voice.beamAuto = ""
+autoBeamOn = \property Voice.beamAuto = "1"  
index 12b7f61068f121a94b3629c583119e9067a72ad7..6c030642fa98bf56ae913a256af745c67e5ec935 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Titel: LilyPond
 Begin3
 Titel: LilyPond
-Versie: 1.1.61
-Inschrijf datum: 16JUL99
+Versie: 1.1.62
+Inschrijf datum: 19JUL99
 Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
 Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       770k lilypond-1.1.61.tar.gz 
+       770k lilypond-1.1.62.tar.gz 
 Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
 Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.61.tar.gz 
+       770k lilypond-1.1.62.tar.gz 
 Copi-eer voorwaarden: GPL
 End
 Copi-eer voorwaarden: GPL
 End
index 4aeb3eba9a0c7b644f709fc5e5ae4293a2665717..c56fe881335146b5ed1b4d8cdf0ce19a00ac67ab 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
 Begin3
 Title: LilyPond
-Version: 1.1.61
-Entered-date: 16JUL99
+Version: 1.1.62
+Entered-date: 19JUL99
 Description: 
 
 LilyPond is the GNU Project music typesetter. It transforms a musical
 Description: 
 
 LilyPond is the GNU Project music typesetter. It transforms a musical
@@ -12,8 +12,8 @@ Author: hanwen@cs.ruu.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
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       770k lilypond-1.1.61.tar.gz 
+       770k lilypond-1.1.62.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.61.tar.gz 
+       770k lilypond-1.1.62.tar.gz 
 Copying-policy: GPL
 End
 Copying-policy: GPL
 End
index aba10b009c8c757074251967f65eb626b67db478..fd3c166533cd5c4ec9544dbc81631de7f8a03214 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
 Name: lilypond
-Version: 1.1.61
+Version: 1.1.62
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.61.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.62.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
index 076362af232665a4503beee3f19fa8efac7f2862..4a39958f0d500f70b39b29a0d6b59bee6c599726 100644 (file)
@@ -37,7 +37,7 @@
                     "spanrequest" "grace" "scmfile" "lyrics"
                     "in" "translator" "context" "key" "maininput" "notes"
                     "musical_pitch" "time" "midi" "mm" "header"
                     "spanrequest" "grace" "scmfile" "lyrics"
                     "in" "translator" "context" "key" "maininput" "notes"
                     "musical_pitch" "time" "midi" "mm" "header"
-                    "notenames" "octave" "output" "partial" "paper" "plet" "name"
+                    "notenames" "octave" "output" "partial" "paper" "plet" "name" "addlyrics"
                     "property" "pt" "shape" "relative" "include" "score"
                     "scm" "scmfile"
                     "script" "skip"  "table" "times" "textscript" "symboltables" "type"
                     "property" "pt" "shape" "relative" "include" "score"
                     "scm" "scmfile"
                     "script" "skip"  "table" "times" "textscript" "symboltables" "type"
index 2d7fc58cf05acc773ad3ec3fde1a646d1d82494d..d1038f0a04ca9817061106b6030ad7a99dc602b3 100644 (file)
@@ -2,7 +2,7 @@
 
 depth = ../..
 
 
 depth = ../..
 
-examples=
+examples=standchen
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
index 46aabb538bfa4c06a79015f400ac2e25902bc101..c12411366841ebb25570097c0a9c955bb1c8b202 100644 (file)
@@ -11,7 +11,7 @@ copyright =    "public domain";
 } 
 
 %{
 } 
 
 %{
- Tested Features: multivoice accents lyrics chords piano music
+ Tested Features@ multivoice accents lyrics chords piano music
 multiple \paper{}s in one \score 
 Note: Original key F.
 %}
 multiple \paper{}s in one \score 
 Note: Original key F.
 %}
@@ -69,62 +69,104 @@ vocalThrough = \notes\relative c{
        e2 r4 |
 }
 
        e2 r4 |
 }
 
-lyricVerseOne = \lyrics{
-       Lei- " " se fleh- en mei- " " ne Lie- der " "
-       Durch die Nacht " " zu dir; " "
-       " "
-       " "
-       In " " den stil- len Hain " " her- nie- der
-       Lieb- chen, komm " " zu mir! " "
-       " "
-       " "
-       Fl\"us- ternd schlan- ke Wip- fel rau- schen
-       In " " des Mon- des Licht,
-       In " " des Mon- des Licht;
-
-       Des Ver- r\"a- ters feind- lich Lau- schen
-       F\"urch- " " te, Hol- de, nicht,
-       f\"urch- " " te, Hol- de, nicht.
+lyricVerse1 = \lyrics{
+% 5
+       \times 2/3 {  Lei-4 se8 } fleh-4. en8 |
+       \times 2/3 {  mei-4 ne8 } Lie-4 der8 " "8 |
+       Durch4. die8 \times 2/3 {  Nacht4 zu8 } |
+       dir;2 " "4 |
+       " "2.*2
+%{     " "4 " " " " |
+       " " " " " " |%}
+% 11
+       \times 2/3 {  In4 den8 } stil-4. len8 |
+       \times 2/3 {  Hain4 her-8 } nie-4. der8 |
+       Lieb-4. chen,8 \times 2/3 {  komm4 zu8 } |
+       mir!2 " "4 |
+               " "2.*2
+%{     " "4 " " " " |
+       " " " " " " |%}
+% 17
+       Fl\"us-8. ternd16 schlan-4. ke8 |
+       Wip-8. fel16 rau-4. schen8 |
+       \times 2/3 {  In4 des8 } Mon-4. des8 |
+       Licht;2. |
+       \times 2/3 {  In4 des8 } Mon-4. des8 |
+       Licht;2. |
+% 23 
+       Des8. Ver-16 r\"a-4. thers8 |
+       feind-8. lich16 Lau-4. schen8 |
+       \times 2/3 {  F\"urch-4 te8 } Hol-4. de8 |
+       nicht2. |
+       \times 2/3 {  f\"urch-4 te8 } Hol-4. de8 |
+       nicht.2. |
 }
        
 }
        
-lyricVerseTwo = \lyrics{
-       H\"orst " " die Nach- ti- gal- " " len schla- gen? " "
-       Ach! sie fleh- " " en dich, " "
-       " "
-       " "
-       Mit " " der T\"o- ne s\"u- " " "\ss en" Kla- gen
-       Fleh- en sie " " f\"ur mich. " "
-       " "
-       " "
-       Sie- ver- "steh'n" des Bus- ens Seh- nen
-       Ken- " " nen Lieb- es- schmerz,
-       Ken- " " nen Lieb- es- schmerz.
+lyricVerse2 = \lyrics{
+% 5
+       \times 2/3 {  H\"orst4 die8 } Nach-4. ti-8 
+       \times 2/3 {  gal-4 len8 } schla-4 gen?8 " "8
+       ach!4. sie8 \times 2/3 {  fleh-4 en8 } 
+       dich,2 " "4
+       " "2.*2
+%{     " "4 " " " " 
+       " "4" " " "
+%}
+% 11
+       \times 2/3 {  Mit4 der8 } T\"o-4. ne8
+       \times 2/3 {  s\"u-4 "\ss en"8 } Kla-4. gen8
+       Fleh-4. en8 \times 2/3 {  sie4 f\"ur8 }
+       mich2 " "4
+       " "2.*2
+%{     " "4" " " " 
+       " "4" " " "
+%}
+% 17
+       Sie-8. ver-16 stehn4. des8
+       Bus-8. ens16 Seh-4. nen8
+       \times 2/3 {  Ken-4 nen8 } Lieb-4. es-8 
+       schmerz,2.
+       \times 2/3 {  Ken-4 nen8 } Lieb-4. es-8 
+       schmerz.2.
 
 
-       R\"uh- ren mit den Sil- ber- t\"o- nen
-       Jed- " " es wei- che Herz,
-       Jed- " " es wei- che Herz.
+% 23
+       R\"uh-8. ren16 mit4. den8 
+       Sil-8. ber-16 t\"o-4. nen8
+       \times 2/3 {  jed-4 es8 } wei-4. che8 
+       Herz,2.
+       \times 2/3 {  jed-4 es8 } wei-4. che8 
+       Herz.2.
 }
 
 lyricThrough = \lyrics{
 }
 
 lyricThrough = \lyrics{
-       La\ss auch dir die Brust be- we- gen " "
-       Lieb- chen, h\"o- re mich! " "
-       Be- bend harr' " " ich dir ent- ge- gen! " "
-       " "
-       " "
-       Komm, " " be- "gl\"uk-" ke mich!
-       Komm, " " be- "gl\"uk-" ke mich, __ " "  " "
-       Be- "gl\"uk-" ke mich!
+% 37
+       La\ss8. auch16 dir8. die16 Brust8. be-16 |
+       we-4 gen " " |
+       Lieb-4. chen,8 h\"o-8. re16 |
+       mich!2 " "4 |
+       Be-4. bend8 \times 2/3 {  harr'4 ich8} |
+       dir8. ent-16 ge-4 gen!8 " "8 |
+       " "2. |
+       " "2. |
+       \times 2/3 {  Komm4 be-8 } gl\"u4. cke8 |
+       mich!2. |
+       \times 2/3 {  Komm4 be-8 } gl\"u4. cke8 |
+       mich,2. __ |
+       " "2 be-4 |
+       gl\"u-2. |
+       cke2. |
+       mich!2 " "4 |
 }
 
 trebleIntro = \notes\relative c{
 }
 
 trebleIntro = \notes\relative c{
-       r8^"\bf M\\\"a\\ss ig"\pp <g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
+       r8^"\bf m\\\"a\\\ss ig"\pp <g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
        r8 <as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.> |
        r8 <as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.> |
        r8 <g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.> |
        \break
 }
 
        r8 <as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.> |
        r8 <as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.> |
        r8 <g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.> |
        \break
 }
 
-trebleVerseOne = \notes\relative c{
+trebleVerse1 = \notes\relative c{
        %5
        r8 <g' c> <c es> <g c> <c es> <g c> |
        r8 <f c'> <c' d> <f, c'> <c' d> <f, c'> |
        %5
        r8 <g' c> <c es> <g c> <c es> <g c> |
        r8 <f c'> <c' d> <f, c'> <c' d> <f, c'> |
@@ -232,7 +274,7 @@ bassIntro = \notes\relative c{
        <g2 g'> r4 |
 }
 
        <g2 g'> r4 |
 }
 
-bassVerseOne = \notes\relative c{
+bassVerse1 = \notes\relative c{
 %      \clef bass;
        \property Voice.dynamicDir=1
 %5
 %      \clef bass;
        \property Voice.dynamicDir=1
 %5
@@ -320,13 +362,24 @@ global = \notes{
 }
 
 
 }
 
 
-allLyrics = \lyrics {
-       " "4 * 12
-       \rhythm \vocalVerse \lyricVerseOne
-       " "4 * 12
-       " "4 * 12
-       \rhythm \vocalVerse \lyricVerseTwo
-       \rhythm \vocalThrough \lyricThrough
+lyricFour = \lyrics{
+       " "2.*4
+%{     " "4 " " " "
+       " " " " " "
+       " " " " " "
+       " " " " " "%}
+}
+allLyrics = {
+       \time 3/4; 
+%      \skip 4 * 12; 
+       \lyricFour
+       \lyricVerse1
+%      \skip 4 * 24; 
+       \lyricFour
+       \lyricFour
+       \lyricVerse2
+       \lyricThrough
 }
 
 lyricStaff = \context Lyrics = lyric<
 }
 
 lyricStaff = \context Lyrics = lyric<
@@ -337,6 +390,7 @@ vocals = \notes{
        \clef treble;
        % certainly no auto-beaming for vocals
        \property Voice.beamAuto=0
        \clef treble;
        % certainly no auto-beaming for vocals
        \property Voice.beamAuto=0
 
        \property Voice.dynamicDir = \up
        \skip 4 * 12; 
 
        \property Voice.dynamicDir = \up
        \skip 4 * 12; 
@@ -356,9 +410,9 @@ treble = {
        \clef treble;
        \property Voice.beamAutoBegin=0
        \trebleIntro 
        \clef treble;
        \property Voice.beamAutoBegin=0
        \trebleIntro 
-       \trebleVerseOne 
+       \trebleVerse1 
        \trebleEentje
        \trebleEentje
-       \trebleVerseOne 
+       \trebleVerse1 
        \trebleThrough
 }
 
        \trebleThrough
 }
 
@@ -370,9 +424,9 @@ trebleStaff = \context Staff = treble<
 bass = {
        \clef bass;
        \bassIntro 
 bass = {
        \clef bass;
        \bassIntro 
-       \bassVerseOne 
+       \bassVerse1 
        \bassEentje
        \bassEentje
-       \bassVerseOne 
+       \bassVerse1 
        \bassThrough
 }
 
        \bassThrough
 }
 
@@ -401,9 +455,12 @@ grandStaff = \context PianoStaff <
                { \notes { \grandStaff } }
        >
        \paper { 
                { \notes { \grandStaff } }
        >
        \paper { 
+%              \translator { \OrchestralScoreContext }
+%              \translator { \OrchestralPartStaffContext }
                \translator { \HaraKiriStaffContext }
        }
                \translator { \HaraKiriStaffContext }
        }
-       \midi{
-               \tempo 4 = 54;
-       }
+%broken 1.1.51
+%      \midi{
+%              \tempo 4 = 54;
+%      }
 }
 }
index e1136e13da83d5b9f0c82676b37bf2e544795ae3..36945c0d0a541593f1244332f2afdbd24a537416 100644 (file)
@@ -96,7 +96,7 @@ venstreEn = \notes\relative c{
        >
        \stemboth [es, f g16 c,32 d es16][g,8. bes32 as][g as bes16 es,32 f g16] |
 %8
        >
        \stemboth [es, f g16 c,32 d es16][g,8. bes32 as][g as bes16 es,32 f g16] |
 %8
-       [a,8 c][f a][bes. f''32 es][d es f16 bes,32 c d16] |
+       [a,8 c][f a][bes8. f''32 es][d es f16 bes,32 c d16] |
        [es, g a bes][c d es c][fis, a bes c][d e fis d] |
        [g, bes c d][e fis g es][a, c d es][d c bes a] |
        [bes c d a][bes es d c][d a bes fis][g c bes a] |
        [es, g a bes][c d es c][fis, a bes c][d e fis d] |
        [g, bes c d][e fis g es][a, c d es][d c bes a] |
        [bes c d a][bes es d c][d a bes fis][g c bes a] |
@@ -145,4 +145,4 @@ venstreEn = \notes\relative c{
                >
        >
        \paper{}
                >
        >
        \paper{}
-}
\ No newline at end of file
+}
index 48431357928263e57554e6d1528e430f04fe646b..99dfaa16ebfa01d3742a387f9103ef208c4af58c 100644 (file)
@@ -494,5 +494,5 @@ vThreeSwitch = \context Voice = voiceThree \notes{
        >
        \paper{
        }
        >
        \paper{
        }
-       \midi{\tempo=60;}
+       \midi{\tempo 4 =60;}
 }
 }
index 4ec2a3428fda178c3301081ae9d1e2576d341e2f..41b4496d43c52fb12e0fdc596a47e291d0317e24 100644 (file)
@@ -25,16 +25,16 @@ global = \notes {
   
 hoyreOpp = \notes\relative c''  {
        \stemup
   
 hoyreOpp = \notes\relative c''  {
        \stemup
-       es4^"Grave adagio" r16 [es d. es32] f4 r16 [f16 f. g32] |
-       [as8. as16] [as16 g32 f g16. d32] es4 r16 [g g. as32] |
+       es4^"Grave adagio" r16 [es d16. es32] f4 r16 [f16 f16. g32] |
+       [as8. as16] [as16 g32 f g16. d32] es4 r16 [g g16. as32] |
 %3
 %3
-       bes4 r16 [bes,16 bes. c32] [des8. des16] 
+       bes4 r16 [bes,16 bes16. c32] [des8. des16] 
        \context Staff < 
                { \stemup e4 }
                { \stemup \property Voice.horizontalNoteShift = 1 [des16 c32 bes c16. g32] }
        >
 %4
        \context Staff < 
                { \stemup e4 }
                { \stemup \property Voice.horizontalNoteShift = 1 [des16 c32 bes c16. g32] }
        >
 %4
-       f4 \stemboth r16 [f g. as32] \stemup d,4 r16 [d g. es32] |
+       f4 \stemboth r16 [f g16. as32] \stemup d,4 r16 [d g16. es32] |
        c4 ~ [c32 es des c des16. f32] [b,16. c32 b16. c32] d4 ~ |
        d2 ~ [d16. g,32 a16. b32] [c16. <b32 g> <c16. a> <d32 b>] |
        <[es8. c> <es16 c>]
        c4 ~ [c32 es des c des16. f32] [b,16. c32 b16. c32] d4 ~ |
        d2 ~ [d16. g,32 a16. b32] [c16. <b32 g> <c16. a> <d32 b>] |
        <[es8. c> <es16 c>]
@@ -47,12 +47,12 @@ hoyreOpp = \notes\relative c''  {
 hoyreNed = \notes\relative c'' {
        \clef violin;
        \stemdown
 hoyreNed = \notes\relative c'' {
        \clef violin;
        \stemdown
-       <c4 g> r16 [c b. c32] d4 r16 [d d. es32] |
-       [f8. f16] f8 r <c4 g> r16 [es16 es. f32] |
+       <c4 g> r16 [c b16. c32] d4 r16 [d d16. es32] |
+       [f8. f16] f8 r <c4 g> r16 [es16 es16. f32] |
        <c4 g' > r16 [g16 g16. as32] [bes8. bes16] bes8 r |
        <c4 g' > r16 [g16 g16. as32] [bes8. bes16] bes8 r |
-       <c4 as> r16 s16*3 r16 [f, f. g32] g4 |
+       <c4 as> r16 s16*3 r16 [f, f16. g32] g4 |
 %5
 %5
-       r16 [es es. f32] f4 [g16. a32 g16. a32] b4 ~ |
+       r16 [es es16. f32] f4 [g16. a32 g16. a32] b4 ~ |
        [b8. d,16] [f8. as16] [g16. f32 es16. d32] [es16. d32 es16. f32] |
        g4 <c8 a> r <d2 b>
 }
        [b8. d,16] [f8. as16] [g16. f32 es16. d32] [es16. d32 es16. f32] |
        g4 <c8 a> r <d2 b>
 }
@@ -63,13 +63,13 @@ venstreOpp = \notes\relative c' {
        <c4 g es> r <b as f d> r |
        r <b f d> <c g es> r |
        <c g e> r r <c g> |
        <c4 g es> r <b as f d> r |
        r <b f d> <c g es> r |
        <c g e> r r <c g> |
-       <c as f> r r16 <[as d,><as. d,><g32 d>] <g4 d> |
+       <c as f> r r16 <[as d,><as16. d,><g32 d>] <g4 d> |
 %5
 %5
-       r16 <[g c,><g. c,><f32 c>] 
+       r16 <[g c,><g16. c,><f32 c>] 
        \context Staff <
                {\stemup f4~ f}
                {\stemup c4 d}
        \context Staff <
                {\stemup f4~ f}
                {\stemup c4 d}
-       > r16 [f f. g32] |
+       > r16 [f f16. g32] |
 %6
        [as8. as16]~ [as g32 f g16 d] <es4 c> r |
        r <a es c> <g2 d>
 %6
        [as8. as16]~ [as g32 f g16 d] <es4 c> r |
        r <a es c> <g2 d>
@@ -77,8 +77,8 @@ venstreOpp = \notes\relative c' {
 
 venstreNed = \notes\relative c{
        \stemdown
 
 venstreNed = \notes\relative c{
        \stemdown
-       c4 r c r | r c c r | c r r c | c r r16 [c c. bes32] bes4 |
-       r16 [bes bes. as32] as4_"tr" g r16 [d' d. es32] |
+       c4 r c r | r c c r | c r r c | c r r16 [c c16. bes32] bes4 |
+       r16 [bes bes16. as32] as4_"tr" g r16 [d' d16. es32] |
        \context Staff <
                { \stemdown \property Voice.horizontalNoteShift = 1 [f8. f16] [b,8. b16] g4 r | }
                { \stemdown s4 g}
        \context Staff <
                { \stemdown \property Voice.horizontalNoteShift = 1 [f8. f16] [b,8. b16] g4 r | }
                { \stemdown s4 g}
index 5d029b0bcb27f81e290d5740583b0ec624d40f02..1a1dfb0256ba4ae19383546e714da80ad8bc0650 100644 (file)
@@ -9,24 +9,17 @@ copyright =    "Public Domain";
 }
 
 %{
 }
 
 %{
-       
+TODO: use autobeaming. 
 %}
 \version "1.1.52";
 
 
 %}
 \version "1.1.52";
 
 
-global = 
-       \notes {
-       \time 4/4;                % should be \time C
-       }
-
-
-
 tenor =
 tenor =
-       \notes \relative c' {
+       \context Voice  = tenor  \notes \relative c' {
        \clef "violin";
 
        \stemdown
        \clef "violin";
 
        \stemdown
-       r8 [c8 d e] [f. g32 f] [e8 a] |
+       r8 [c8 d e] [f8. g32 f] [e8 a] |
        [d, g] ~ [g16 a g f] [e f e d] [c d c b ] |
        [a 8 fis'] g4 ~ [g8 fis16 e] [f8 d] |
        [g f! e d] c r r g' ~ |
        [d, g] ~ [g16 a g f] [e f e d] [c d c b ] |
        [a 8 fis'] g4 ~ [g8 fis16 e] [f8 d] |
        [g f! e d] c r r g' ~ |
@@ -35,20 +28,20 @@ tenor =
        [c8 f] r16 [g f e] [f8 d] g4 ~ |
        g4 r4 r2 |
        r1 |
        [c8 f] r16 [g f e] [f8 d] g4 ~ |
        g4 r4 r2 |
        r1 |
-       r8 [g8 a b] [c .   d 32 c ] [b8 e ]
+       r8 [g8 a b] [c8.   d 32 c ] [b8 e ]
 %% 10
        [a, d ] ~ [d 16 e  d  c ] b8 r8 r d, |
 %% 10
        [a, d ] ~ [d 16 e  d  c ] b8 r8 r d, |
-       [e fis] [g.   a32 g] [fis8 b e, a] ~ |
+       [e fis] [g8.   a32 g] [fis8 b e, a] ~ |
        [a16 b a gis] [fis8 f!] [e d] ~ [d16 e fis gis] |
        [a gis a b] [gis fis gis a] b8 r8 r4 |
        [a16 b a gis] [fis8 f!] [e d] ~ [d16 e fis gis] |
        [a gis a b] [gis fis gis a] b8 r8 r4 |
-       r8 [c,8 d e] \stemup [f.  g32 f] [e8 a] |
+       r8 [c,8 d e] \stemup [f8.  g32 f] [e8 a] |
 %% 15
        [d, g] ~ [g16 a g f] e8 \stemdown [e fis g] ~ |
        [g8 fis] [gis8 a] ~ [a g! a b] |
        \stemboth
 %% 15
        [d, g] ~ [g16 a g f] e8 \stemdown [e fis g] ~ |
        [g8 fis] [gis8 a] ~ [a g! a b] |
        \stemboth
-       [c .    d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
+       [c8.    d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
        [b8 g'  cis,  d ] [e  cis  d  e  ] |
        [b8 g'  cis,  d ] [e  cis  d  e  ] |
-       \stemdown a,8 r8 r e [fis g] \stemboth [a.  b32 a] |
+       \stemdown a,8 r8 r e [fis g] \stemboth [a8.  b32 a] |
 %% 20
        [g8 c  fis, b] ~ [b16 c  b a] \stemdown [g fis e d] \stemboth |
        e4 \stemdown d ~ [d16 a' g f!] [e g f! a] |
 %% 20
        [g8 c  fis, b] ~ [b16 c  b a] \stemdown [g fis e d] \stemboth |
        e4 \stemdown d ~ [d16 a' g f!] [e g f! a] |
@@ -63,17 +56,17 @@ tenor =
 
 
 soprane =
 
 
 soprane =
-       \notes \relative c' {
+       \context Voice = sop \notes \relative c' {
 
        \stemup
        r1 |
        r2 r8 [g'8 a b] |
 
        \stemup
        r1 |
        r2 r8 [g'8 a b] |
-       [c .  d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
+       [c8.  d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
        [b g a b] [c  b c  d ] [e  d  e  fis ] [g 8 b,] |
 %% 5
        [c  a] [d 16 c  b a] [g8. g16] [f e f g] |
        [a g a b] c 2 b4 |
        [b g a b] [c  b c  d ] [e  d  e  fis ] [g 8 b,] |
 %% 5
        [c  a] [d 16 c  b a] [g8. g16] [f e f g] |
        [a g a b] c 2 b4 |
-       r8 [c8 d e] [f.  g32 f] [e8 a] |
+       r8 [c8 d e] [f8.  g32 f] [e8 a] |
        [d, g] ~ [g16 a g f] [e8 a] ~ [a16 b a g] |
        f2 [e8. fis16] g4 ~
 %% 10
        [d, g] ~ [g16 a g f] [e8 a] ~ [a16 b a g] |
        f2 [e8. fis16] g4 ~
 %% 10
@@ -84,14 +77,14 @@ soprane =
        a 4 r4 r2 |
 %% 15
        r2 r8 [g 8 a  b ] |
        a 4 r4 r2 |
 %% 15
        r2 r8 [g 8 a  b ] |
-       [c8.  d32 c] [b 8 c] [d e] [f!.  g32 f!] |
+       [c8.  d32 c] [b 8 c] [d e] [f!8.  g32 f!] |
        [e8 a d, g] ~ [g16 a g f] [e8 a] |
        [d,8 bes'] [a g16 f] [g f g e] [f g g  f32 g] |
        [a16 cis, d g] [e8. d16] d8 r8 r4 |
 %% 20
        r2 r4 r8 g,  |
        [e8 a d, g] ~ [g16 a g f] [e8 a] |
        [d,8 bes'] [a g16 f] [g f g e] [f g g  f32 g] |
        [a16 cis, d g] [e8. d16] d8 r8 r4 |
 %% 20
        r2 r4 r8 g,  |
-       [a  b ] [c.  d32 c] [b 8 e a,  d] ~ |
-       [e16 e d c] [b  c d e] [f g a g] [f e d c] |
+       [a  b ] [c8.  d32 c] [b 8 e a,  d( ]  |
+       [e16 e d c] [b  c d e] [f g a g] [f e d c] |
        b 4 [c,8 d] g  c4 b 8 |
        c4 [b 8 bes 8] a  d4 c8 |
 %% 25
        b 4 [c,8 d] g  c4 b 8 |
        c4 [b 8 bes 8] a  d4 c8 |
 %% 25
@@ -101,7 +94,7 @@ soprane =
        }
 
 alt =
        }
 
 alt =
-       \notes \relative c {
+\context Voice = alt   \notes \relative   c {
        \clef "bass";
 
        
        \clef "bass";
 
        
@@ -109,38 +102,38 @@ alt =
        r1 |
        r |
        r |
        r1 |
        r |
        r |
-       r8 [g'8 a b] [c .  d32 c ] [b8 e ] |
+       r8 [g'8 a b] [c8.  d32 c ] [b8 e ] |
 %% 5
        [a, d ] ~ [d 16 e  d  c ] [b8 c  ~ c  bes8] |
        [a d  g, c ] r16 [a16 b c ] d 4 |
 %% 5
        [a, d ] ~ [d 16 e  d  c ] [b8 c  ~ c  bes8] |
        [a d  g, c ] r16 [a16 b c ] d 4 |
-       g,4 r8 g8 [a b] [c .  d32 c ] |
+       g,4 r8 g8 [a b] [c8.  d32 c ] |
        [b8 e  a, d ] ~ [d 16 e  d  c !] [b!8 e ] ~ |
        e 4 d 4 [c 16 b c  a] [e'  d  c  b] |
 %% 10
        [c 16 a b c ] [d  c  b a] g4 r4 |
        r1 |
        [b8 e  a, d ] ~ [d 16 e  d  c !] [b!8 e ] ~ |
        e 4 d 4 [c 16 b c  a] [e'  d  c  b] |
 %% 10
        [c 16 a b c ] [d  c  b a] g4 r4 |
        r1 |
-       r8 [e8 fis gis] [a.  b32 a] [gis8 c ] |
+       r8 [e8 fis gis] [a8.  b32 a] [gis8 c ] |
        [fis, b] ~ [b16 c  b a] gis8 a4 gis8 |
        [fis, b] ~ [b16 c  b a] gis8 a4 gis8 |
-       a4 r8 g8 [a b] c . [d32 c ] |
+       a4 r8 g8 [a b] c8. [d32 c ] |
 %% 15
 %% 15
-       [b8 e  a, d ] ~ [d'  g,] d 4 |
+       [b8 e  a, d (]  [ ) d'  g,] d 4 |
        [c 8 a] e' 4 d 8 r8 r4 |
        [c 8 a] e' 4 d 8 r8 r4 |
-       r8 [a8 b cis ] [d .  e32 d ] [c !8 f ] |
+       r8 [a8 b cis ] [d8.  e32 d ] [c !8 f ] |
        [b,8 e ] ~ [e 16 f  e  d ] cis 8 r8 r4 |
        [b,8 e ] ~ [e 16 f  e  d ] cis 8 r8 r4 |
-       r8 [a8 b cis ] [d .  e32 d ] [c !8 fis ] |
+       r8 [a8 b cis ] [d8.  e32 d ] [c !8 fis ] |
 %% 20
        [b, e ] ~ [e 16 fis  e  d ] c 2 ~ |
        [c 16 d  c  b] [a g a fis] [g8 b c  d ] |
 %% 20
        [b, e ] ~ [e 16 fis  e  d ] c 2 ~ |
        [c 16 d  c  b] [a g a fis] [g8 b c  d ] |
-       [e .  f32 e ] [d 8 g ] [c,  f ] ~ [f 16 g  f  e ] |
+       [e8.  f32 e ] [d 8 g ] [c,  f ] ~ [f 16 g  f  e ] |
        d 4 [e 8 d ] ~ [d  g,] g4 ~
        d 4 [e 8 d ] ~ [d  g,] g4 ~
-       [g8 c, d e] [f.  g32 f] [e8 a] |
+       [g8 c, d e] [f8.  g32 f] [e8 a] |
 %% 25
        [d, g] ~ [g16 a g f] [e d e f] [g a bes g] |
        [a e f g] [a b c  a] b2 |
        c 1 |
        }
 
 %% 25
        [d, g] ~ [g16 a g f] [e d e f] [g a bes g] |
        [a e f g] [a b c  a] b2 |
        c 1 |
        }
 
-bass =
+bass =\context Voice = bassvoice
        \notes \relative c {
        \clef "bass";
 
        \notes \relative c {
        \clef "bass";
 
@@ -152,18 +145,18 @@ bass =
        r |
 %% 5
        r2 r8 [c8 d e] |
        r |
 %% 5
        r2 r8 [c8 d e] |
-       [f.  g32 f] [e8 a] [d, g] ~ [g16 a g f] |
+       [f8.  g32 f] [e8 a] [d, g] ~ [g16 a g f] |
        [e f e d] [c d c b ] [a' 8 d a fis] |
        [g16 a bes g] [cis,8 d] a'4 e4 |
        [a16 b c  d ] [c  b a g] c 8 r8 r4 |
 %% 10
        r2 r8 [g, 8 a  b ] |
        [e f e d] [c d c b ] [a' 8 d a fis] |
        [g16 a bes g] [cis,8 d] a'4 e4 |
        [a16 b c  d ] [c  b a g] c 8 r8 r4 |
 %% 10
        r2 r8 [g, 8 a  b ] |
-       [c.  d32 c] [b 8 e] [a,  d] ~ [d16 e d c] |
+       [c8.  d32 c] [b 8 e] [a,  d] ~ [d16 e d c] |
        b 8 e4 d8 c f!4 e8 ~ |
        e d4 e8 [f! e16 d] e4 |
        a, 4 r4 r2 |
 %% 15
        b 8 e4 d8 c f!4 e8 ~ |
        e d4 e8 [f! e16 d] e4 |
        a, 4 r4 r2 |
 %% 15
-       r8 [g 8 a  b ] [c.  d32 c] [b 8 e] |
+       r8 [g 8 a  b ] [c8.  d32 c] [b 8 e] |
        [a, 8 d] ~ [d16 e d c] [b 8 bes  a  g'' ] |
        [a,, 8 fis' g e] d4 [e8 f!] |
        [g8.  a32 g] [f8 bes] [e, a] ~ [a16 bes a g] |
        [a, 8 d] ~ [d16 e d c] [b 8 bes  a  g'' ] |
        [a,, 8 fis' g e] d4 [e8 f!] |
        [g8.  a32 g] [f8 bes] [e, a] ~ [a16 bes a g] |
@@ -182,22 +175,22 @@ bass =
 
        
 \score {
 
        
 \score {
-       \notes \context GrandStaff < 
-               \context Staff = one <
-                       \global 
+       \notes \context PianoStaff < 
+               \context Staff = one {
+               \time 4/4;
+               <
                        \soprane
                        \tenor
                        \soprane
                        \tenor
-               >
-               \context Staff = two <
-                       \global
+               > \bar "|."; }
+               \context Staff = two { <
                        \alt
                        \bass
                        \alt
                        \bass
-               >
-       >
+               > \bar "|."; }
+       > 
 
        \paper{
 
        \paper{
-       gourlay_maxmeasures =5.;
-       castingalgorithme = \Wordwrap;
+       gourlay_maxmeasures = 7.;
+%      castingalgorithme = \Wordwrap;
        }
 %      \midi { \tempo 4 = 84; }
 }
        }
 %      \midi { \tempo 4 = 84; }
 }
index df8501f268c91d67dcd9d30497bb4a6017d37bc1..77af81893f3464c6480fcd3401da5b05f282fa0f 100644 (file)
@@ -10,21 +10,16 @@ copyright =  "Public Domain";
 
 \version "1.1.52";
 
 
 \version "1.1.52";
 
-global = 
-    \notes {
-        \time 4/4;                % should be \time C
-    }
-  
-
 % should do programmable input.
 % should do programmable input.
-
 soprane =
     \notes \transpose c'' {
 soprane =
     \notes \transpose c'' {
-        \clef "violin";
-
        \context Staff <
        % Real soprane
        \context Staff <
        % Real soprane
-       {\stemup
+       \context Voice = uVoice {
+       \time 4/4;
+        \clef "violin";
+
+       \stemup
        r8 [g16 c'] [e' g c' e'] r8 [g16 c'] [e' g c' e'] |
        r8 [a16 d'] [f' a d' f'] r8 [a16 d'] [f' a d' f'] |
        r8 [g16 d'] [f' g d' f'] r8 [g16 d'] [f' g d' f'] |
        r8 [g16 c'] [e' g c' e'] r8 [g16 c'] [e' g c' e'] |
        r8 [a16 d'] [f' a d' f'] r8 [a16 d'] [f' a d' f'] |
        r8 [g16 d'] [f' g d' f'] r8 [g16 d'] [f' g d' f'] |
@@ -33,9 +28,9 @@ soprane =
        r8 [fis16 a] [d' fis a d'] r8 [fis16 a] [d' fis a d'] |
        r8 [g16 d'] [g' g d' g'] r8 [g16 d'] [g' g d' g'] |
        r8 [e16 g] [c' e g c'] r8 [e16 g] [c' e g c'] |
        r8 [fis16 a] [d' fis a d'] r8 [fis16 a] [d' fis a d'] |
        r8 [g16 d'] [g' g d' g'] r8 [g16 d'] [g' g d' g'] |
        r8 [e16 g] [c' e g c'] r8 [e16 g] [c' e g c'] |
-       r8 [e16 g] [c' e g c'] r8 [e16 g] [c' e g c'] |}
+       r8 [e16 g] [c' e g c'] r8 [e16 g] [c' e g c'] }
        % Tenor
        % Tenor
-       {\stemdown
+       \context Voice = dVoice {\stemdown
        r16 e8. ~ e4 r16 e8. ~ e4 |
        r16 d8. ~ d4 r16 d8. ~ d4 |
        r16 d8. ~ d4 r16 d8. ~ d4 |
        r16 e8. ~ e4 r16 e8. ~ e4 |
        r16 d8. ~ d4 r16 d8. ~ d4 |
        r16 d8. ~ d4 r16 d8. ~ d4 |
@@ -74,7 +69,7 @@ soprane =
 
        r8 [f,16 a,] [c f c a,] [c a, f, a,] [f, d, f, d,] |
        r8 [g16 b] [d' f' d' b] [d' b g b] [d f e d] |
 
        r8 [f,16 a,] [c f c a,] [c a, f, a,] [f, d, f, d,] |
        r8 [g16 b] [d' f' d' b] [d' b g b] [d f e d] |
-       <e1 g c'> ||
+       <e1 g c'> \bar "|.";
     }
 
 bass =
     }
 
 bass =
@@ -94,7 +89,7 @@ bass =
        a a |   
 %% 10
        \context Staff <
        a a |   
 %% 10
        \context Staff <
-       % Alt
+       \context Voice =  Alt
        {\stemup
        r16 a8. ~ a4 r16 a8. ~ a4 |
        r16 b8. ~ b4 r16 b8. ~ b4 |
        {\stemup
        r16 a8. ~ a4 r16 a8. ~ a4 |
        r16 b8. ~ b4 r16 b8. ~ b4 |
@@ -126,7 +121,7 @@ bass =
        r16 b,8. ~ b,4 ~ b,2 |
        c1 ||}
 
        r16 b,8. ~ b,4 ~ b,2 |
        c1 ||}
 
-       % Bass
+       \context Voice = Bass
        {\stemdown
        d2 d |
        g g |
        {\stemdown
        d2 d |
        g g |
@@ -156,22 +151,15 @@ bass =
        
        c, c, |
        c, c, |
        
        c, c, |
        c, c, |
-       c,1 }>
+       c,1 \bar "|."; }>
     }
 
         
 \score {
     }
 
         
 \score {
-    \notes \context GrandStaff < 
-                  <
-                       \global 
-                       \soprane
-                 >
-                  <
-                       \global
-                      \bass
-                 >
-             >
-
+    \notes \context PianoStaff < 
+       \soprane
+        \bass
+    >
     \paper{
        gourlay_maxmeasures =5.;        
     }
     \paper{
        gourlay_maxmeasures =5.;        
     }
@@ -181,3 +169,4 @@ bass =
 }
 
 % EOF
 }
 
 % EOF
+       
diff --git a/mutopia/J.S.Bach/wtk1-prelude2.ly.m4 b/mutopia/J.S.Bach/wtk1-prelude2.ly.m4
deleted file mode 100644 (file)
index 617f681..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-%% under construction
-
-define(preludepattern, `[' $1 $2 $3 $2 `]')
-define(preludehalfmeasure, preludepattern($1, $2, $3) 
-       preludepattern($4, $2, $3))
-
-define(intromeasure,
-       preludehalfmeasure($1, $2, $3, $4)
-       preludehalfmeasure($1, $2, $3, $4)|     
-)
-define(handymeasure, `intromeasure(translit($*,` ', `,'))')
-
-
-
-trebleIntro=\notes \transpose c'' {
-handymeasure(c' es d c)
-handymeasure(as f e c)
-handymeasure(b f es d)
-handymeasure(c g f es)
-handymeasure(es' as g es)
-handymeasure(d' fis e d)
-handymeasure(d' g fis d)
-handymeasure(c' e d c)
-handymeasure(c' f e c)
-handymeasure(bes f es d)
-handymeasure(bes g f es)
-handymeasure(as g f es)
-handymeasure(as d c Bes)
-handymeasure(g Bes As es)
-handymeasure(f c Bes A)
-handymeasure(f d c B)
-handymeasure(es c B G)
-handymeasure(F es d f)
-handymeasure(Fis c b es)
-handymeasure(es c B G)
-handymeasure(fis c B A)
-handymeasure(g c B d)
-handymeasure(as c B d)
-}
-
-bassIntro = \notes {
-handymeasure(c g f es)
-handymeasure(c as g f)
-handymeasure(c as g f)
-handymeasure(c es d g)
-handymeasure(c c' bes as)
-handymeasure(c a g fis)
-handymeasure(Bes bes a g)
-handymeasure(Bes g f e)
-handymeasure(As as g f)
-handymeasure(As d c f)
-handymeasure(G es d g)
-handymeasure(c es d As)
-handymeasure(d f es as)
-handymeasure(es g f as)
-handymeasure(es a g f)
-handymeasure(d f es as)
-handymeasure(c f e as)
-preludehalfmeasure(c, es, d, f)
-preludehalfmeasure(bes, es, d, f)|
-handymeasure(As c b d)
-handymeasure(A es d c)
-handymeasure(G es d f)
-handymeasure(G es d c)
-handymeasure(G es d f)
-handymeasure(G es d f)
-}
-
-
-middlepiece = \notes
-{
-       \stemdown
-       [G B d] 
-       \stemup f [as f ef] [b f d' b'] [as f e f] |
-       \stemdown [G c es]]
-       \stemup g [c' g fis g ] [es' c' g' es'] [c' as g as]| 
-       \stemdown [G A fis] 
-       \translator Staff=treble
-       \stemsboth \transpose c'' { c [es c B c] [fis  c a fis] [es c B c] }
-}
-
-
-
-
diff --git a/mutopia/los-toros-oboe.ly b/mutopia/los-toros-oboe.ly
deleted file mode 100644 (file)
index 6152042..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-\header{
-filename =      "los-toros-oboe.ly";
-title =                 "La Feria";
-subtitle = "Los Toros";
-opus =          "";
-composer =      "Paul Lac\\^ome dEstalenx (1838-1920)";
-enteredby =     "jcn";
-copyright =     "public domain";
-latexheaders=    "headers";
-} 
-\version "1.1.52";
-
-
-
-\include "paper16.ly"
-
-hoboonestart = \notes
-  \relative c'{
-% ugh: cant copy: allegro/primo tempo
-       \property Voice . textStyle =  "large"
-       [es''16-.^"Allegro" es-. es-. es-.] [es8-. d-.] |
-       \property Voice . textStyle =  "italic"
-}
-
-hobooneintro = \notes  \relative c'{
-
-%      \property Voice . textStyle =  "roman"
-%      [es''16-.-"Allegro" es-. es-. es-.] [es8-. d-.] |
-%      \property Voice . textStyle =  "italic"
-       [f''8.-> es16(] [)d8 c-.] |
-       [bes16( c d es] [)d8 c-.] |
-       [bes-. as->~] [as16( g f g] |
-       [as bes c d] [)es8 c-.] |
-       [d8-. c16( bes] )as4 ~ |
-       [as16 g( f g] [as c bes as] |
-%      [)g8 as16 g(] [)f8 g16( f] |
-       [)g8 as16 g(] [)f8 g16( f] |
-       [)es8 f16-. g-.] [as-. bes-. c-. d-.] |
-       [es-. es-. es-. es-.] [es8-. d-.] |
-       [f8.-> es16(] [)d8 c-.] |
-       [bes16( c d es] [)d8 c-.] |
-       [bes8 a->~] [a16 g( fis g] |
-       [a bes c d] [)es8 d16()c] |
-       [bes-. g-. bes-. d-.] g4-> ~ |
-       [g16 f( es d] [c es  d c] |
-       [)bes8 c16( bes] [)a8 bes16( a] |
-       [)g8  r d'] r |
-}
-
-hoboonemid = \notes    \relative c'{
-
-       [g'16-. g-. g-. g-.] [g8-. f-.] |
-       as2-> |
-       [as16-. as-. as-. as-.] [as8-. g-.] |
-       bes2-> |
-       [bes16-. bes-. bes-. bes-.] [bes8-. c] |
-
-       r-"cresc." [d8-. r c-.] |
-       r\f [d-. es-. f-.] |
-       [g8.-> es16] [bes8 g] |
-
-       % four measures copied from 8 measures back...
-       [g16-.\p g-. g-. g-.] [g8-. f-.] |
-       as2-> |
-       [as16-. as-. as-. as-.] [as8-. g-.] |
-       bes2-> |
-       [b16-. b-. b-. b-.] [b8-. c-.] |
-
-       % same measure
-       [b16-. b-. b-. b-.] [b8-. c-.] |
-
-       [b8-.-"cresc." c-. b-. c-.] |
-       [d-. es-. d-. es-.] |
-       [f\f-. g-. f-. g-.] |
-       [as-.\< g-. as-. bes-.] |
-       [\!g16\ff-. g-. g-. g-.] [g8-. g-.] |
-       [g8.-> g16] [g8 g] |
-       [g8.-> g16] [g8 g] |
-       [f8.-> f16] [f8 f] |
-       [f8.-> f16] [f8 f] |
-       [bes8-. as16( g] )f4 ~ |
-       [f16 es( d es] [f as g )f] |
-       [es( g f es] [d f es d] |
-       [c es d c] [b d c b] |
-       [a c bes a] [g bes a g] |
-       [fis a g fis] [e g fis )e] |
-       % `a deux
-       [d8 d'] [es8.-> c16] |
-       [a8 bes g es] |
-       [c' d es8. bes16] |
-       [g8 es bes' c,] |
-       [d16-. d-. d-. d-.] [d8.-. es16->] |
-       [d'16-.-"cresc." d-. d-. d-.] [d8.-. es16->] |
-       [d16-. d-. d-. d-.] [d8.-. es16->] |
-       [d16 d d d] [d8 es16-.] r16-\fermata^"court"^"tr\\`es" |
-       % Un peu plus lent.
-       \property Voice . textStyle =  "bold"
-
-% ugh
-%      d4(\<^"Un peu plus lent" \property Voice . textStyle =  "italic _"tr\\`es \\'el\\'egant"
-%      d4(\^"Un peu plus lent et \\'el\\'egant"<
-       \property Voice . textStyle =  "italic" 
-       d4(\<
-       [e8 \!fis8] |
-%      [)b-. a-.] [g16( fis e )d] |
-       \property Voice . textStyle =  "bold"
-       [)b-.^"Un peu plus lent et \\'el\\'egant" a-.] [g,,16( fis' e )d] |
-       \property Voice . textStyle =  "italic" 
-       [d( c b\< c] [)\!fis'8-. e-.] |
-       d,,4-> ~ [d16 e( fis g] |
-       [a b\< d fis] [)\!a8-. g-.] |
-       [fis16( e a, )c] e4 ~ |
-       [e16 d( e, c'] [)b8-. a-.] |
-       g2 ~ |
-       [g8 \times 2/3 {  d16( e fis ] } [)g8 d'-.] |
-       b2-> ~ |
-       [b8 \times 2/3 {  d,16( e fis ] } [)g8-"cresc. poco" e'-.] |
-       e2-> ~ |
-       [e8 \times 2/3 {  d,,16( e fis ] } [)g8\f d'-.] |
-       [d8.-> b'16-.] [g16-. d-. b-. c-.] |
-       [d-. e-. fis-. a-.] [g8-. e-.] |
-       fis2-> ~ |
-       [fis16 g-.\< a-. b-.] [\!c8-. c,-.] |
-       [es8.->(-"espress.") d16] d4 ~ |
-       [d16 e( fis a] [)g8 b,-.] |
-       [b8.->( )c16] c4 ~ |
-       [c16\< cis( d \!dis] [)e8-.-"dim." fis,-.] |
-       [fis8.->( g16] )g4 ~ |
-
-       % (only notes! of) five measures copied from 14 measures above
-       [g8 \times 2/3 {  d16( e fis ] } [)g8 d'-.] |
-       b2->-"cresc." ~ |
-       [b8 \times 2/3 {  d,16( e fis ] } [)g8 e'-.] |
-       e2-> ~ |
-       [e8 \times 2/3 {  d,,16(_"h\\^atez" e fis ] } [)g8\f d'-.] |
-       [d8.-> b16-.] [g16-.-"cresc." d'-. b-. c-.] |
-       [d16\f\< e-. fis-. g-.] [a-. b,-. c-. \!d-.] 
-}
-
-
-hoboonesecondstart = \notes   \relative c'{
-
-% ugh: cant copy: allegro/primo tempo
-       \property Voice . textStyle =  "large"
-       [es''16-.\ff^"Tempo 1$^o$" es-. es-. es-.] [es8-. d-.] |
-       \property Voice . textStyle =  "italic"
-       
-}
-       
-hoboonelast = \notes   \relative c'{
-       % could transpose/copy from measure 19...
-       [d''16-.\p  d-. d-. d-.] [d8-. c-.] |
-       es2-> |
-       [es16-. es-. es-. es-.] [es8-. d-.] |
-       f2-> |
-       [f16-. f-. f-. f-.] [f8-. g-.] |
-       r8 [a-.-"cresc." r g-.] |
-       r [a-.\f bes-.\< \!c-.] |
-       [d8.->\> \!bes16] [f8 d] |
-
-       % four measures copied from 8 measures back...
-       [d16-.\p  d-. d-. d-.] [d8-. c-.] |
-       es2-> |
-       [es16-. es-. es-. es-.] [es8-. d-.-"cresc."] |
-       f2-> |
-       [fis16-.\p  fis-. fis-. fis-.] [fis8-. g-.] |
-       % same measure
-       [fis16-.\p  fis-. fis-. fis-.] [fis8-. g-.] |
-       [fis8-. g-. fis-. g-.] |
-       [a-. bes-. a-. bes-. ] |
-       [a-.\f bes-. a-. bes-. ] |
-       [c-.-"cresc." f,-. g-. a-.] |
-       [bes-. bes-. ces8.-> as16] |
-       [f8-. ges-. es-. ces-.] |
-       % `a deux
-       [as-. bes-. ces8.-> ges16] |
-       [es8-. ces'-. ges-. as-.] |
-       bes\p r r4 |
-       [bes16-.-"cresc." bes-. bes-. bes-.] [bes8-. ces->] |
-       % same measure
-       [bes16-. bes-. bes-. bes-.] [bes8-. ces->] |
-       [bes'16-.\ff bes-. bes-. bes-.] [bes8-. ces16->] r16^"court"-\fermata |
-       % ugh: eight measures rest (ugh: r1 -> four beats...)
-       % eiht measures rest..
-       \property Voice . textStyle =  "bold"
-%      r2^"Un peu plus lent et \\'el\\'egant"
-       R2*8
-%      r4 r8\p bes |
-       r4^"Un peu plus lent et \\'el\\'egant"
-       r8\p bes,, |
-%      g2->^"Un peu plus lent et \\'el\\'egant" ~ |
-       g2-> ~ |
-       \property Voice . textStyle =  "italic"
-       g8 r r c |
-       c2-> ~ |
-       c8 r r bes'\f |
-       [bes8.->\f g16-.] [es16-. bes-. g-. as-.] |
-       [bes-.-"dim." c-. d-. f-.] [es8-. c-.] |
-       d2-> ~ |
-       [d16-"dim."( es f g] [)as,8 as-.] |
-       [ces8.->\p( )bes16-.] bes4 ~ |
-       [bes16( c! d f] [)es8 g,-.] |
-       [g8.->( )as16] as4 ~ |
-       [as16( a bes b] [)c8-. d,-.] |
-       % a deux
-       [d8.->( ) es16] es4 ~ |
-       es4 r8 bes'-. |
-       g2-> ~ |
-       g8 r r c |
-       c2 ~ |
-       c8  r r bes' |
-       [bes8.-> g16-.] [es16-. bes-. g-. as-.] |
-       [bes-. c-. d-. es-.] [f-. g-. as-. bes-.] |
-       d8-. r c4-> ~ |
-       [c16 f,-. g-. a-.] [bes-. c,-. d-. es-.] |
-       g8-. r f4-> ~ |
-       [f16 bes,-. c-. d-.] [es-. f-. g-. as-.] |
-       c8 r bes4 ~ |
-       [bes8 as-. g8.-. e16-.] |
-       g8-. r f4-> ~ |
-       [f8 es-. ces8.-. as16-.] |
-       % `a deux
-       \property Voice . textStyle =  "large"
-       [ces8.->^"Plus vite" bes16-.(] [a bes es d] |
-       \property Voice . textStyle =  "italic"
-       [)c!8.-> bes16] [a( bes es )d] |
-       [c->( bes es )d] [c->( bes es )d] |
-       % same measure
-       [c->( bes es )d] [c->( bes es )d] |
-       [c( bes a bes] [c d es e] |
-       [g )f d( es] [f g as a] |
-       [c )bes bes,( c] [d es f g] |
-       [as g f g] [as bes c d] |
-       \property Voice . textStyle =  "large"
-       [)es-.^"Tempo 1$^o$" g,-. g-. g-.] [g8-. g-.] |
-       \property Voice . textStyle =  "italic"
-       bes4.-> g8-. |
-       gis2->( |
-       )as! |
-       [g16-. g-. g-. g-.] [g8-. g-.] |
-       bes4.-> g8-. |
-       gis2->( |
-%      )as! |
-       )as |
-       [bes16-. bes-. bes-. bes-.] [bes8-. bes-.] |
-       bes4.-> g8-. |
-       [g16-._"h\\^atez" g-. g-. g-.] [g8-. g-.] |
-       g4.-> g8-. |
-       es4.-> es8-. |
-       bes4.-> bes8-. |
-       \property Voice . textStyle =  "large"
-       g'4.->^"Presto" g8-. |
-       \property Voice . textStyle =  "italic"
-       es4.-> es8-. |
-       [bes-. bes-. es-. g-.] |
-       [bes-. bes,-. es-. g-.] |
-       bes-. r r4 |
-       g8-. r r4 |
-       g8-. r r4 |
-}
-
-hoboone = \notes {
-       \hoboonestart
-       \hobooneintro
-       \hoboonemid
-       \hoboonesecondstart
-       \hobooneintro
-       \hoboonelast
-}
-
-global = \notes{
-       \key es;
-       \time 2/4;
-       \skip 4*110;
-       \key g; |
-       \bar "||";
-       \skip 4*58;
-       \key es; |
-       \bar "||";
-       \skip 4*220;
-       \bar "|.";
-}
-
-
-$staff_hoboone = \context Staff = hoboonestaff <
-       \global
-       \property Staff.instrument = "oboe"
-       % don't expand multi-bar rest
-       \property Score.skipBars = 1
-       \hoboone
->
-
-a4 = \paper{
-       \translator{ \BarNumberingStaffContext }
-}
-
-a4sixteen = \paper{
-       \paper_sixteen
-       linewidth= 193.\mm;
-       \translator { \BarNumberingStaffContext }
-}
-
-\score{
-       \$staff_hoboone
-       \paper{ \a4 }
-       \midi{
-               \tempo 4 = 80;
-       }
-%      \paper{ \a4sixteen }
-}
-
index 6f2666422e0427eccacd54241dbfdbc18726f4aa..a1a0d94f90c4f46cf9cd61b65eff0b13a51124b7 100644 (file)
        yoffset mudelapaperstaffheight 8 mul sub /yoffset exch def
 } bind def
 
        yoffset mudelapaperstaffheight 8 mul sub /yoffset exch def
 } bind def
 
-/unknown { (U) setbold } bind def
-/empty { (E) setbold } bind def
-
 /turnOnExperimentalFeatures { } bind def
 
 /turnOnExperimentalFeatures { } bind def
 
-/rulesym % thick length
-{
-       gsave
-       exch setlinewidth
-       0 lineto stroke
-       grestore
-} bind def
-
-(lily.ps) findlibfile 
-{
-       exch pop //systemdict /run get exec
-} 
-{ 
-       /undefinedfilename signalerror 
-} ifelse
-
 stafflinethickness setlinewidth
 
 % see if we're there...
 stafflinethickness setlinewidth
 
 % see if we're there...
index 1e66463e58c7dbc2ec5adf87485b0a41a422f725..1974a009fc61381c508245d947655be1b14373f1 100644 (file)
    (("Clef_item"  "Span_bar") . (minimum_space 3.7))
    (("Time_signature" "Span_bar") . (minimum_space 2.0))
    (("Key_item"  "Span_bar") . (minimum_space 2.5))
    (("Clef_item"  "Span_bar") . (minimum_space 3.7))
    (("Time_signature" "Span_bar") . (minimum_space 2.0))
    (("Key_item"  "Span_bar") . (minimum_space 2.5))
-   (("Staff_bar" "Time_signature") . (minimum_space 2.0)) ;double check this.
+   (("Staff_bar" "Time_signature") . (minimum_space 1.5)) ;double check this.
    (("Time_signature" "begin-of-note") . (extra_space 2.0)) ;double check this.
    (("Key_item" "begin-of-note") . (extra_space 2.5))
    (("Staff_bar" "begin-of-note") . (extra_space 1.0))
    (("Time_signature" "begin-of-note") . (extra_space 2.0)) ;double check this.
    (("Key_item" "begin-of-note") . (extra_space 2.5))
    (("Staff_bar" "begin-of-note") . (extra_space 1.0))
 
   ;; UGH
    
 
   ;; UGH
    
-  (define (header-end) "\\turnOnPostScript")
+  (define (header-end) "\\input lilyponddefs \\turnOnPostScript")
 
   (define (header creator generate) 
     (string-append
 
   (define (header creator generate) 
     (string-append
   (define (font-switch i)
     (string-append (font i) " "))
 
   (define (font-switch i)
     (string-append (font i) " "))
 
-  (define (header-end) "")
+  (define (header-end)
+    (string-append
+     (ly-gulp-file "lilyponddefs.ps")
+     " {exch pop //systemdict /run get exec} "
+     (ly-gulp-file "lily.ps")
+     "{ exch pop //systemdict /run get exec } "
+    ))
+  
   (define (lily-def key val)
 
      (if (string=? (substring key 0 (min (string-length "mudelapaper") (string-length key))) "mudelapaper")
   (define (lily-def key val)
 
      (if (string=? (substring key 0 (min (string-length "mudelapaper") (string-length key))) "mudelapaper")
index dd4bcf263766dec2bdb03eb79e49c928b403006f..dead360f7e3d9cee91340ab7713c0ee24fd440d5 100644 (file)
@@ -80,9 +80,10 @@ def dump_voices ():
                print ("}")
        
 def dump_score ():
                print ("}")
        
 def dump_score ():
-       print ("\\score{")
-       print ("        \\notes<")
-       print ("                \\global")
+       print r"""\score{
+        \notes<
+           \global"""
+
        for i in range (len (voices)):
                print ("        \\context Staff=%s \\voice%s" %
                        (names [i], names [i]))
        for i in range (len (voices)):
                print ("        \\context Staff=%s \\voice%s" %
                        (names [i], names [i]))
@@ -90,7 +91,7 @@ def dump_score ():
                j = i
                if j >= len (voices):
                        j = len (voices) - 1
                j = i
                if j >= len (voices):
                        j = len (voices) - 1
-               print ("        \\context Lyrics=%s \\rhythm \\voice%s \\verse%s" % 
+               print ("        \\context Lyrics=%s \\addlyrics \\voice%s \\verse%s" % 
                        (names [i], names [j], names [i]))
        print ("    >")
        dump_header (header)
                        (names [i], names [j], names [i]))
        print ("    >")
        dump_header (header)
@@ -525,7 +526,6 @@ def try_parse_chord_delims (str):
 
        return str
 
 
        return str
 
-# urg, hairy to compute grace note hack using \times{}
 def try_parse_grace_delims (str):
        if str and str[0] == '{':
                str = str[1:]
 def try_parse_grace_delims (str):
        if str and str[0] == '{':
                str = str[1:]
index bb957a03af623c328b897c8c3e0a30e16448c748..a36b83edf9df57f91a09391e3a547971e5882bee 100644 (file)
@@ -470,7 +470,7 @@ outfile_name = ''
 
 identify ()
 (options, files) = getopt.getopt (
 
 identify ()
 (options, files) = getopt.getopt (
-       sys.argv[1:], 'f:t:seh', ['show-rules', 'help', 'edit', 'from', 'to'])
+       sys.argv[1:], 'o:f:t:seh', ['output', 'show-rules', 'help', 'edit', 'from', 'to'])
 
 for opt in options:
        o = opt[0]
 
 for opt in options:
        o = opt[0]
@@ -486,6 +486,8 @@ for opt in options:
        elif o== '--show-rules' or o == '-s':
                show_rules (sys.stdout)
                sys.exit(0)
        elif o== '--show-rules' or o == '-s':
                show_rules (sys.stdout)
                sys.exit(0)
+       elif o == '--output' or o == '-o':
+               outfile_name = a
        else:
                print o
                raise getopt.error
        else:
                print o
                raise getopt.error
index 869b7907acfc7d7e1b3f917e4232e837d60a0696..3044ea03892f4edaeb5918e2c75ed3b00b1496b9 100644 (file)
 #   - changed RE to search for pre/postMudelaExample to make it possible to
 #     comment out a definition.
 #   - use sys.stderr and sys.stdout instead of print
 #   - changed RE to search for pre/postMudelaExample to make it possible to
 #     comment out a definition.
 #   - use sys.stderr and sys.stdout instead of print
+# 1.1.62
+#   - junked separate versioning
+#   - pass -I options to lily.
+#   - portability stuff (os.sep).
+
 import os
 import string
 import re
 import getopt
 import sys
 import os
 import string
 import re
 import getopt
 import sys
+import __main__
 
 outdir = 'out'
 initfile = ''
 
 outdir = 'out'
 initfile = ''
-program_version = '0.5.6'
+program_version = '@TOPLEVEL_VERSION@'
 include_path = ['.']
 
 out_files = []
 include_path = ['.']
 
 out_files = []
@@ -162,6 +168,7 @@ def need_recompile_b(infile, outfile):
 def compile (command, workingdir, infile, outfile):
     "Test if infile is newer than outfile. If so, cd to workingdir"
     "and execute command"
 def compile (command, workingdir, infile, outfile):
     "Test if infile is newer than outfile. If so, cd to workingdir"
     "and execute command"
+    print "COMPILE!!"
     indate = file_mtime (workingdir+infile)
     try:
         outdate = file_mtime (workingdir+outfile)
     indate = file_mtime (workingdir+infile)
     try:
         outdate = file_mtime (workingdir+outfile)
@@ -381,8 +388,18 @@ class Tex_output:
         for g in g_vec:
             if need_recompile_b(outdir+g[1]+'.ly', outdir+g[1]+'.tex'):
                     s = s + ' ' + g[1]+'.ly'
         for g in g_vec:
             if need_recompile_b(outdir+g[1]+'.ly', outdir+g[1]+'.tex'):
                     s = s + ' ' + g[1]+'.ly'
+
+        lilyoptions = ''
+       for inc in __main__.include_path :
+               p = inc[:]
+               if p[0] <> os.sep and outdir:           # UGH-> win32 ?
+                       p = '..' + os.sep + p 
+               lilyoptions = lilyoptions + " -I \"%s\"" % p
+               
         if s != '':
         if s != '':
-            e = os.system('cd %s; lilypond %s' %(outdir, s))
+           cmd = 'cd %s; lilypond %s %s' %(outdir, lilyoptions, s)
+           sys.stderr.write ('invoking command %s'  % cmd)
+            e = os.system(cmd)
             if e:
                 sys.stderr.write("error: lilypond exited with value %i\n" % e)
                 sys.exit(e)
             if e:
                 sys.stderr.write("error: lilypond exited with value %i\n" % e)
                 sys.exit(e)
@@ -758,8 +775,8 @@ def main():
             Props.force_verbatim_b = 1
         elif o == '--init':
             initfile =  a
             Props.force_verbatim_b = 1
         elif o == '--init':
             initfile =  a
-    if outdir[-1:] != '/':
-        outdir = outdir + '/'
+    if outdir[-1:] != os.sep:
+        outdir = outdir + os.sep
 
     # r""" ... """ means: leave escape seqs alone.
     defined_mudela_cmd = {'mudela': r"""
 
     # r""" ... """ means: leave escape seqs alone.
     defined_mudela_cmd = {'mudela': r"""