]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.5.0 release/1.5.0
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 28 Jun 2001 23:06:14 +0000 (01:06 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 28 Jun 2001 23:06:14 +0000 (01:06 +0200)
=====

* experimental grace notes:
  - add grace timing to Moment
  - hack to Sequential_music_iterator to use the correct timing for
the note before a grace
  - change the implementation of \grace construct
  - property set/unset (eg. font size) is done through startGraceMusic
and stopGraceMusic
  - various engraver fixes to deal with the fact that the
main-time-moment may remain the same during several steps.
  - Change column creation logic in score-engraver.

* Bugfix: don't crash when \name not set in \translator block.

* rename ly/*.ly to ly/*-init.ly (except language files) to avoid
name clashes

* deprecate Property_engraver, add Font_size_engraver to Staff, Voice
and Thread.

* Change mailing list address: *gnu-music*@gnu.org becomes
*lilypond*@gnu.org

* Put span-bar lines only between the other barlines, not on top of
them (thanks to Juergen Reuter)

1.4.4.j

188 files changed:
CHANGES
DEDICATION
Documentation/misc/CHANGES-1.3
Documentation/misc/CHANGES-1.4 [new file with mode: 0644]
Documentation/regression-test.tely
Documentation/topdocs/FAQ.texi
Documentation/topdocs/INSTALL.texi
Documentation/topdocs/README.texi
Documentation/user/bugs.itexi
Documentation/user/convert-ly.itexi
Documentation/user/converters.itely
Documentation/user/ly2dvi.itexi
Documentation/user/refman.itely
Documentation/windows/compiling.texi
Documentation/windows/installing.texi
FAQ.txt
INSTALL.txt
README.txt
VERSION
buildscripts/lilypond-login.sh
flower/include/rational.hh
input/bugs/beam.ly [new file with mode: 0644]
input/bugs/newgrace.ly [new file with mode: 0644]
input/regression/grace-bar-line.ly [new file with mode: 0644]
input/regression/grace-start.ly [new file with mode: 0644]
input/regression/grace-sync.ly [new file with mode: 0644]
input/regression/span-bar.ly [new file with mode: 0644]
input/test/trills.ly [new file with mode: 0644]
lily/auto-beam-engraver.cc
lily/auto-change-iterator.cc
lily/bar-engraver.cc
lily/beam-engraver.cc
lily/beam.cc
lily/beaming-info.cc
lily/change-iterator.cc
lily/chord-tremolo-iterator.cc
lily/clef-engraver.cc
lily/duration.cc
lily/folded-repeat-iterator.cc
lily/font-size-engraver.cc [new file with mode: 0644]
lily/global-translator.cc
lily/grace-iterator.cc
lily/grace-position-performer.cc
lily/include/duration.hh
lily/include/grace-music.hh
lily/include/moment.hh
lily/include/music-iterator.hh
lily/include/music-list.hh
lily/include/music-sequence.hh
lily/include/music-wrapper.hh
lily/include/music.hh
lily/include/new-grace-iterator.hh [new file with mode: 0644]
lily/include/new-grace-music.hh [new file with mode: 0644]
lily/include/score-engraver.hh
lily/include/sequential-music-iterator.hh
lily/include/spaceable-element.hh
lily/include/spaceable-grob.hh [new file with mode: 0644]
lily/include/timing-translator.hh
lily/lyric-combine-music-iterator.cc
lily/main.cc
lily/midi-item.cc
lily/molecule.cc
lily/moment.cc
lily/music-iterator.cc
lily/music-list.cc
lily/music-output-def.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/new-grace-iterator.cc [new file with mode: 0644]
lily/new-grace-music.cc [new file with mode: 0644]
lily/output-property-music-iterator.cc
lily/paper-column.cc
lily/parser.yy
lily/part-combine-music-iterator.cc
lily/percent-repeat-engraver.cc
lily/percent-repeat-iterator.cc
lily/property-iterator.cc
lily/request-chord-iterator.cc
lily/request-chord.cc [new file with mode: 0644]
lily/rod.cc
lily/scm-option.cc
lily/score-engraver.cc
lily/sequential-music-iterator.cc
lily/sequential-music.cc [new file with mode: 0644]
lily/simple-music-iterator.cc
lily/simple-spacer.cc
lily/simultaneous-music-iterator.cc
lily/simultaneous-music.cc [new file with mode: 0644]
lily/spaceable-element.cc [deleted file]
lily/spaceable-grob.cc [new file with mode: 0644]
lily/spacing-engraver.cc
lily/spacing-spanner.cc
lily/span-bar-engraver.cc
lily/span-bar.cc
lily/spring.cc
lily/stem.cc
lily/tie-engraver.cc
lily/tie-performer.cc
lily/time-scaled-music-iterator.cc
lily/timing-engraver.cc
lily/timing-translator.cc
lily/translator-group.cc
lily/unfolded-repeat-iterator.cc
ly/a4-init.ly [new file with mode: 0644]
ly/a4.ly [deleted file]
ly/accordion-defs-init.ly [new file with mode: 0644]
ly/accordion-defs.ly [deleted file]
ly/book-init-init.ly [new file with mode: 0644]
ly/book-init.ly [deleted file]
ly/center-init.ly [new file with mode: 0644]
ly/center.ly [deleted file]
ly/chord-modifiers-init.ly [new file with mode: 0644]
ly/chord-modifiers.ly [deleted file]
ly/declarations-init.ly [new file with mode: 0644]
ly/declarations.ly [deleted file]
ly/drumpitch-init.ly [new file with mode: 0644]
ly/drumpitch.ly [deleted file]
ly/dynamic-scripts-init.ly [new file with mode: 0644]
ly/dynamic-scripts.ly [deleted file]
ly/engraver-init.ly [new file with mode: 0644]
ly/engraver.ly [deleted file]
ly/generate-interface-doc-init.ly [new file with mode: 0644]
ly/generate-interface-doc.ly [deleted file]
ly/generic-paper-init.ly [new file with mode: 0644]
ly/generic-paper.ly [deleted file]
ly/german-chords-init.ly [new file with mode: 0644]
ly/german-chords.ly [deleted file]
ly/grace-init.ly [new file with mode: 0644]
ly/init.fly [deleted file]
ly/init.ly
ly/init.sly [deleted file]
ly/ledger-init.ly [new file with mode: 0644]
ly/ledger.ly [deleted file]
ly/legal-init.ly [new file with mode: 0644]
ly/legal.ly [deleted file]
ly/letter-init.ly [new file with mode: 0644]
ly/letter.ly [deleted file]
ly/midi-init.ly [new file with mode: 0644]
ly/midi.ly [deleted file]
ly/paper-as5-init.ly [new file with mode: 0644]
ly/paper-as5.ly [deleted file]
ly/paper-as9-init.ly [new file with mode: 0644]
ly/paper-as9.ly [deleted file]
ly/paper-init.ly [new file with mode: 0644]
ly/paper.ly [deleted file]
ly/paper11-init.ly [new file with mode: 0644]
ly/paper11.ly [deleted file]
ly/paper13-init.ly [new file with mode: 0644]
ly/paper13.ly [deleted file]
ly/paper16-init.ly [new file with mode: 0644]
ly/paper16.ly
ly/paper20-init.ly [new file with mode: 0644]
ly/paper20.ly [deleted file]
ly/paper23-init.ly [new file with mode: 0644]
ly/paper23.ly [deleted file]
ly/paper26-init.ly [new file with mode: 0644]
ly/paper26.ly
ly/params-as-init.ly [new file with mode: 0644]
ly/params-as.ly [deleted file]
ly/params-init.ly [new file with mode: 0644]
ly/params.ly [deleted file]
ly/part-paper-init.ly [new file with mode: 0644]
ly/part-paper.ly [deleted file]
ly/performer-init.ly [new file with mode: 0644]
ly/performer.ly [deleted file]
ly/property-init.ly [new file with mode: 0644]
ly/property.ly [deleted file]
ly/scale-definitions-init.ly [new file with mode: 0644]
ly/scale-definitions.ly [deleted file]
ly/script-init.ly [new file with mode: 0644]
ly/script.ly [deleted file]
ly/spanners-init.ly [new file with mode: 0644]
ly/spanners.ly [deleted file]
make/out/lilypond.lsm
make/out/lilypond.redhat.spec
make/out/lilypond.suse.spec
midi2ly/duration.cc
ps/lilyponddefs.ps
ps/music-drawing-routines.ps
scm/grob-description.scm
scm/lily.scm
scm/ps.scm
scm/tex.scm
scm/translator-property-description.scm

diff --git a/CHANGES b/CHANGES
index 0ccd47a1684286713f841344bc5b01c34058190b..6fe737d18570866922269712b22a5c85ffc37468 100644 (file)
--- a/CHANGES
+++ b/CHANGES
-
-
-1.4.3.jcn2
-==========
-
-* Included documentatioon and post-flex lexer.cc patch for
-Debian/unstable gcc-3.0.
-
-* Enhanced gcc autoconf and make messages.
-
-* Added -mieee to CFLAGS for alpha.
-
-* Fixed help and documentation of new LilyPond command line.
-
-* Redirected SuSE download to ftp.lilypond.org (where mirror script runs).
-
-1.4.3
-=====
-
-1.4.2.jcn4
-==========
-
-* Windows: bugfix for tex-wrappers, added tex wrapper for dvips.
-LilyPond (read: ly2dvi) should now work right out of the box.
-
-Amazing; it seems that ly2dvi won't generate PK files without this
-dvips wrapper.  We had over 200 downloads of setup.exe, yet only one
-`call for help'.  Did all the others give up, or did none of them
-bother to share their fix/file a bug report?  Urg.
-
-* Included mktexnam.patch (again?).
-
-* Documentation fix (Mark Hindley).
-
-* Debian patch and bashism fix (Anthony).
-
-* Bugfix: local-install should depend on $(INSTALLATION_FILES).  This fixes
-./configure; make install in buildscripts/ (Michael Vanier).
-
-* Removed les-nereides from short-examples, as it is tweaked a lot,
-contrary to what the webpage claims (didn't know that).
-
-1.4.2.mb1
-==========
-
-* ly2dvi, titledefs.tex: Typeset copyright notice at the bottom of the
-first page. Make separate page styles for first and last page.
-
-* Bugfix: Default RehearsalMark font-family changed to roman (only
-affects Scheme text markups).
-
-1.4.2.hwn1
-==========
-
-* Added support for Q: statement to abc2ly. (Laura Conrad)
-
-* Tie shape bugfix (Mark Hindley).
-
-* Bugfix: lilypond-book LatexPaper.__setattr__()
-
-* Bugfix: make Hyphen_spanner::brew_molecule() more robust.
-
-* Don't use stdin when no argument specified.
-
-* Naming smobs -> grobs 
-
-* Bugfix: ledger lines on easy-notation note heads.
-
-1.4.2
+1.5.0
 =====
 
-* Glossary fixes (Thanks Jean-Pierre Coulon).
-
-1.4.1.jcn3
-==========
-
-* Updated les-nereides.
+* experimental grace notes:
+  - add grace timing to Moment
+  - hack to Sequential_music_iterator to use the correct timing for
+the note before a grace
+  - change the implementation of \grace construct
+  - property set/unset (eg. font size) is done through startGraceMusic
+and stopGraceMusic
+  - various engraver fixes to deal with the fact that the
+main-time-moment may remain the same during several steps.
+  - Change column creation logic in score-engraver. 
 
-* Added \newpage command.
+* Bugfix: don't crash when \name not set in \translator block.
 
-* Doco fixes.
+* rename ly/*.ly to ly/*-init.ly (except language files) to avoid
+name clashes
 
-* Debian make fix.
+* deprecate Property_engraver, add Font_size_engraver to Staff, Voice
+and Thread.
 
-* Fix for index, small doco fixes.
+* Change mailing list address: *gnu-music*@gnu.org becomes
+*lilypond*@gnu.org
 
-* Bugfix: use roman font (instead of feta) for unacorda pedal.
+* Put span-bar lines only between the other barlines, not on top of
+them (thanks to Juergen Reuter)
 
-* Don't use cyclic symlinks for web doc.
-
-* Don't create `empty pngs' with touch, make symlinks instead.
-
-* Added extra header titling fields to ly2dvi too.
-
-1.4.1.mb2
-=========
-
-* documentation fixes
-
-* Add make rule to avoid problems building dvi documentation
-
-* Documentation fixes
-
-* Bugfix: tuplet-number-visibility
-
-1.4.1.hwn1
-==========
-
-* Do not lengthen the stem in case of a collision with the flag, but
-move dots to the right.
-
-* Debian patches (Thanks, Anthony!)
-
-1.4.1
-=====
-
-1.4.0.jcn7
+1.4.4.jcn3
 ==========
+  
+TODO: look at other filledbox'es (stafflines and barlines don't match up).
 
-* Added \tupletUp, \tupletDown, \tupletBoth.
-
-* Bugfix convert-ly: treCorde.
-
-* Slur attachment and extremity offsets taken relative to slur
-direction; so that
-
-   Slur \override #'attachment-offset = #'((0 . 1) . (0 . 1))
-
-will always make the slur move away from the note head.
-
-* Bugfix: slurs on dotted or flagged notes.
-
-* Added @reng, @rgrob, and @rint macros for referencing engravers,
-grobs and interfaces in documentation.
-
-* Bugfix for configure.
-
-* text2html: use python script, use <pre> instead of <xmp>.
-
-* Fixed pa.ly.
-
-* Bugfix: lilypond mode: make view messages scroll by.
-
-* configure: check for splitting makeinfo; small fixes for
-non-splitting makeinfo doc.
-
-* Added some missing titling (dedication, translator) and fixed ps titling
-(Thanks David Arnold).
-
-* More doco fixes.  Added a small legend.
-
-* Bugfix: trend of broken slurs with user-overridden stem attachments.
-
-* Bugfix redhat.spec: use root attributes on files.
-
-* Bugfix: typo in update-lily, re-set download url to /development.
-
-* Removed some empty files.
-
-* Merged tutorials. Simplified the text.
-
-* Small doco fixes.
-
-1.4.0.uu1
-=========
-
-* Bugfix: percussion clef
-
-* Bugfix: multiple scripts.
+* Testing code off by default.  On: -e "(define ps-testing 1)" -fps
 
-* Bugfix: read TeX's afm files. Metrics are still messed up (too small), but no
-crash.
+* Output via TeX/dvips still gives problems.  Use direct postscript
+output for real testing.
 
-* Bugfix: fixed the problem where dots clash with other notes (Timothy S.
-Nelson)
+* Beam and stem fixes:
+ - Stems drawn in PostScript (should do all filledbox'es in PS?).
+ - Fixes for draw_box and draw_beam PostScript routines.
+ - Stems reach to top (or bottom) of beam.
+ - Beam uses correct stem thickness (only right beams, left TODO).
+ - testing code in effect: only outlines are drawn.
 
index e29874c5e913dcc79b050cbc47187bf3419c1513..ad8fcd5309a8e7f1ec2f5e2741eb97545c140445 100644 (file)
@@ -5,10 +5,10 @@
                         met through music. 
 
 
-       Those deserving special mentioning (in no particular order):
-Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn,
-Maartje, Suzanne, Ilse (gee, again?), Marieke, Irene, Martine, and
-last (but certainly not least) Janneke!
+       Those deserving special mentioning (in no particular order): Esther,
+Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, Maartje, Suzanne,
+Ilse (gee, again?), Marieke, Irene, Martine, Idwine and last (but certainly not
+least) Janneke!
 
        HWN
 
index 864e359b6db1b37f11c221231e9efeeba20a3633..476a69dc152670ca6a6f55b4c9a17cb15f85a1d9 100644 (file)
@@ -41,7 +41,7 @@ dvips are stored in outdir.
 * PO updates.
 
 * petite-ouverture-a-danser.ly bugfix, twinkle.ly bugfix
-V
+
 1.3.153
 =======
 
@@ -363,7 +363,7 @@ staff.
 
 * Add a check for regular identifiers to parser.
 
-1.3.145
+1.3.146
 =======
 
 * Make and ly2dvi fixes.
diff --git a/Documentation/misc/CHANGES-1.4 b/Documentation/misc/CHANGES-1.4
new file mode 100644 (file)
index 0000000..af019b8
--- /dev/null
@@ -0,0 +1,157 @@
+1.4.2.jcn4
+==========
+
+* Windows: bugfix for tex-wrappers, added tex wrapper for dvips.
+LilyPond (read: ly2dvi) should now work right out of the box.
+
+Amazing; it seems that ly2dvi won't generate PK files without this
+dvips wrapper.  We had over 200 downloads of setup.exe, yet only one
+`call for help'.  Did all the others give up, or did none of them
+bother to share their fix/file a bug report?  Urg.
+
+* Included mktexnam.patch (again?).
+
+* Documentation fix (Mark Hindley).
+
+* Debian patch and bashism fix (Anthony).
+
+* Bugfix: local-install should depend on $(INSTALLATION_FILES).  This fixes
+./configure; make install in buildscripts/ (Michael Vanier).
+
+* Removed les-nereides from short-examples, as it is tweaked a lot,
+contrary to what the webpage claims (didn't know that).
+
+1.4.2.mb1
+==========
+
+* ly2dvi, titledefs.tex: Typeset copyright notice at the bottom of the
+first page. Make separate page styles for first and last page.
+
+* Bugfix: Default RehearsalMark font-family changed to roman (only
+affects Scheme text markups).
+
+1.4.2.hwn1
+==========
+
+* Added support for Q: statement to abc2ly. (Laura Conrad)
+
+* Tie shape bugfix (Mark Hindley).
+
+* Bugfix: lilypond-book LatexPaper.__setattr__()
+
+* Bugfix: make Hyphen_spanner::brew_molecule() more robust.
+
+* Don't use stdin when no argument specified.
+
+* Naming smobs -> grobs 
+
+* Bugfix: ledger lines on easy-notation note heads.
+
+1.4.2
+=====
+
+* Glossary fixes (Thanks Jean-Pierre Coulon).
+
+1.4.1.jcn3
+==========
+
+* Updated les-nereides.
+
+* Added \newpage command.
+
+* Doco fixes.
+
+* Debian make fix.
+
+* Fix for index, small doco fixes.
+
+* Bugfix: use roman font (instead of feta) for unacorda pedal.
+
+* Don't use cyclic symlinks for web doc.
+
+* Don't create `empty pngs' with touch, make symlinks instead.
+
+* Added extra header titling fields to ly2dvi too.
+
+1.4.1.mb2
+=========
+
+* documentation fixes
+
+* Add make rule to avoid problems building dvi documentation
+
+* Documentation fixes
+
+* Bugfix: tuplet-number-visibility
+
+1.4.1.hwn1
+==========
+
+* Do not lengthen the stem in case of a collision with the flag, but
+move dots to the right.
+
+* Debian patches (Thanks, Anthony!)
+
+1.4.1
+=====
+
+1.4.0.jcn7
+==========
+
+* Added \tupletUp, \tupletDown, \tupletBoth.
+
+* Bugfix convert-ly: treCorde.
+
+* Slur attachment and extremity offsets taken relative to slur
+direction; so that
+
+   Slur \override #'attachment-offset = #'((0 . 1) . (0 . 1))
+
+will always make the slur move away from the note head.
+
+* Bugfix: slurs on dotted or flagged notes.
+
+* Added @reng, @rgrob, and @rint macros for referencing engravers,
+grobs and interfaces in documentation.
+
+* Bugfix for configure.
+
+* text2html: use python script, use <pre> instead of <xmp>.
+
+* Fixed pa.ly.
+
+* Bugfix: lilypond mode: make view messages scroll by.
+
+* configure: check for splitting makeinfo; small fixes for
+non-splitting makeinfo doc.
+
+* Added some missing titling (dedication, translator) and fixed ps titling
+(Thanks David Arnold).
+
+* More doco fixes.  Added a small legend.
+
+* Bugfix: trend of broken slurs with user-overridden stem attachments.
+
+* Bugfix redhat.spec: use root attributes on files.
+
+* Bugfix: typo in update-lily, re-set download url to /development.
+
+* Removed some empty files.
+
+* Merged tutorials. Simplified the text.
+
+* Small doco fixes.
+
+1.4.0.uu1
+=========
+
+* Bugfix: percussion clef
+
+* Bugfix: multiple scripts.
+
+* Bugfix: read TeX's afm files. Metrics are still messed up (too small), but no
+crash.
+
+* Bugfix: fixed the problem where dots clash with other notes (Timothy S.
+Nelson)
+
index 54d58e9fe87423fa3fe4d14b6ab41d3486c30ba9..e6114b6f1c8797d30f67333f64fe20e802993c7d 100644 (file)
@@ -221,6 +221,8 @@ and documenting bugfixes.
 
 @lilypondfile[printfilename]{bar-number.ly}
 
+@lilypondfile[printfilename]{span-bar.ly}
+
 @lilypondfile[printfilename]{bar-scripts.ly}
 
 @lilypondfile[printfilename]{staff-margin.ly}
index 257fccc37dfebd553c6b4eaea636468fda06fed5..3612f583d04b4378843689385c80b6ed62de133d 100644 (file)
@@ -19,7 +19,7 @@
 @subsection I'm stuck, HELP!
 
 Please read the
-@uref{http://appel.lilypond.org/wiki?LilyPondFaqs, full online
+@uref{http://lilypond.org/wiki?LilyPondFaqs, full online
 FAQs}.  Also, please look in the searchable mailinglist archives:
 
 @itemize @bullet
index 8a0b07f13c55d0ebe03ec82cb27f0f52bbee7869..59f14e5688f8fa5133fa0a409c23919ebe1477d7 100644 (file)
@@ -489,10 +489,9 @@ interfere with your build, you may want to do this before the build too:
 
 @section Problems
 
-For help and questions use @email{help-gnu-music@@gnu.org} and
-@email{gnu-music-discuss@@gnu.org}.  Please consult the FAQ before
-mailing your problems.  If you find bugs, please send bug reports to
-@email{bug-gnu-music@@gnu.org}.
+For help and questions use @email{lilypond-user@@gnu.org}.  Please
+consult the FAQ before mailing your problems.  If you find bugs, please
+send bug reports to @email{bug-lilypond@@gnu.org}.
 
 Bugs that are not fault of LilyPond are documented here.
 
index a9160cdb0d4d4698adcb7c7291e07f8b2753bf24..421369f899de025f4e644601f092ed2ff2d64313 100644 (file)
@@ -64,19 +64,20 @@ criticism, comments, bugreports, patches, etc., to the mailing list,
 We have the following mailing lists:
 
 @itemize @bullet
-@item @uref{http://mail.gnu.org/mailman/listinfo/info-gnu-music,info-gnu-music@@gnu.org}
+@item @uref{http://mail.gnu.org/mailman/listinfo/info-lilypond,info-lilypond@@gnu.org}
 is a low-volume list for information on the GNU Music project.
     This list is moderated; ask 
     @email{drl@@gnu.org, David R. Linn} or
     @email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this
 list.
 @item
-@uref{http://mail.gnu.org/mailman/listinfo/gnu-music-discuss,gnu-music-discuss@@gnu.org}
-  For general discussions concerning LilyPond.
+@uref{http://mail.gnu.org/mailman/listinfo/lilypond-devel,lilypond-devel@@gnu.org}
+  For discussions about developing lilypond, in particular the unstable series.
 
-@item @uref{http://mail.gnu.org/mailman/listinfo/help-gnu-music,help-gnu-music@@gnu.org}
-    For help with using LilyPond.
-@item @uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-music,bug-gnu-music@@gnu.org}
+@item @uref{http://mail.gnu.org/mailman/listinfo/help-lilypond,help-lilypond@@gnu.org}
+  For discussions about using lilypond, in particular the stable series.
+
+@item @uref{http://mail.gnu.org/mailman/listinfo/bug-lilypond,bug-lilypond@@gnu.org}
 If you have bugreports, you should send them to this list.
 @end itemize
 
@@ -100,9 +101,9 @@ a script to do this for you is in @file{buildscripts/clean-fonts.sh}
 
 @section Bugs
 
-Send bug reports to @email{bug-gnu-music@@gnu.org}.  For help and
-questions use @email{help-gnu-music@@gnu.org} and
-@email{gnu-music-discuss@@gnu.org}.  Please consult the FAQ and
+Send bug reports to @email{bug-lilypond@@gnu.org}.  For help and
+questions use @email{help-lilypond@@gnu.org} and
+@email{lilypond-discuss@@gnu.org}.  Please consult the FAQ and
 installation instructions before mailing your problems.
 
 
index fc51178df959fd9753b0803ab19587f6a537da71..033837abff9cba425c59a350a1e0971672bba854 100644 (file)
@@ -27,7 +27,7 @@ system libraries, whether you downloaded a binary release)
 @end itemize
 
 
-You can send the report to @email{bug-gnu-music@@gnu.org}. This is a
+You can send the report to @email{bug-lilypondg@@gnu.org}. This is a
 mailinglist, but you don't have to be subscribed to it.  You may also
 enter the bug in the LilyPond wiki, at
 @uref{http://www.lilypond.org/wiki?LilyPondBugs}.
index dc1590a6edda7cd0664cae7c7696ead0726614af..f5bfe390426357f8e1286b2f6236bd166d1c358b 100644 (file)
@@ -53,6 +53,6 @@ work.
 
 @code{convert-ly} is written in @uref{http://www.python.org,Python}. It
 was written by @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}. Report bugs
-to @code{bug-gnu-music@@gnu.org}
+to @code{bug-lilypond@@gnu.org}
 
 
index b6d09011ad02c343ddfc56887ee214eaa4bb468e..7609ed2ca28dfbf65caa5c378ea929bd77093ba3 100644 (file)
@@ -75,7 +75,7 @@ robust midi2ly.
 @end table
 
 
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
 
 
 Written by @email{Jan Nieuwenhuizen, janneke@@gnu.org}.
@@ -115,7 +115,7 @@ Known: articulation scripts are buggy.  Empty measures confuse etf2ly.
 
 Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
 
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
 
 @node abc2ly
 @section abc2ly
@@ -175,7 +175,7 @@ abc2ly ignores the ABC beaming.
 Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
 @c How about Laura?   /MB
 
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
 
 @node pmx2ly
 @section pmx2ly
@@ -183,7 +183,7 @@ Report bugs to @email{bug-gnu-music@@gnu.org}.
 PMX is a MusiXTeX preprocessor written by Don Simons, see
 @uref{http://icking-music-archive.sunsite.dk/Misc/Music/musixtex/software/pmx/}.
 
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
 
 @subsection Invoking pmx2ly
 
@@ -204,7 +204,7 @@ set output filename to FILE
 version information
 @end table
 
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
 
 Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
 
@@ -242,7 +242,7 @@ version information
 @var{REFFILE}
 @end table
 
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
 
 Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
 
@@ -289,7 +289,7 @@ converted.
 
 Written by @email{Jan Nieuwenhuizen,janneke@@gnu.org}, based on pmx2ly.
 
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
 
 
 
index c1ee6242fae386a2314987d33fd7ab3a5a649f06..5e4f97c6c2c74e8fee6012a663495c8555e36086 100644 (file)
@@ -150,7 +150,7 @@ selects the language for the warning messages of Ly2dvi and LilyPond.
 @unnumberedsubsec  Bugs
 
 Cannot generate @TeX{} or @code{PostScript} only.  Send bugreports to to
-@email{bug-gnu-music@@gnu.org}.
+@email{bug-lilypond@@gnu.org}.
 
 @unnumberedsubsec  Authors
 
index ac17a848af24010203ff7292993714891354701f..7a4bc4379b6da4f9e9d9350ada2a29eff7b62774 100644 (file)
@@ -544,6 +544,7 @@ Shortcut for
 @example
   \property Staff.clefGlyph = @var{glyph associated with clefname} 
   \property Staff.clefPosition = @var{clef Y-position for clefname}
+  \property Staff.centralCPosition = @var{position for central C} 
   \property Staff.clefOctavation = @var{extra transposition of clefname}
 @end example
 
@@ -3505,6 +3506,7 @@ pstops ...
 
 
 @refbugs
+
 There is no mechanism to select magnification of particular fonts,
 meaning that you don't have access to continuously scaled fonts.
 
index 5110fb12e229cd228513892300343e1f305fab82..dc2b06439d9ff8913eefe56b5e0cf41acab13caa 100644 (file)
@@ -19,11 +19,19 @@ webpage}.  You may need the patch @file{guile-1.4-gnu-windows.patch}
 included in LilyPond's source distribution.
 @end table
 
+@subsection Cross compiling
+
 These binaries are cross compiled for Windows on a GNU/Linux box.  You
 may want to check out the
 @uref{http://www.lilypond.org/gnu-windows/cross.tar.gz,cross compilation
 scripts}.
 
+@subsection Compiling on Windows
+
+Compiling on Windows should be possible, but how should we now?  If you
+have any experiences you want to share, please do so at
+@uref{http://lilypond.org/wiki?CompilingOnWindows,Compiling on Windows}.
+Or write to one of the mailing lists.
 
 @section Windows installation specifics
 
index 9f2fa8bf9b3759eae578a16ed0c01f18dada128e..a06bc0e4769286fd94339f9a1bfc3868eadc995c 100644 (file)
@@ -90,7 +90,8 @@ and try again.
 @subsection Trouble
 
 For problems and solutions see
-@uref{Troubleshooting Windows,http://lilypond.org/TroubleshootingWindows}.
+@uref{http://lilypond.org/wiki?TroubleshootingWindows,Troubleshooting
+Windows}
 
 
 @subsection Additional software
diff --git a/FAQ.txt b/FAQ.txt
index 0db39587759c29974f4a20c4bd1edf0271b306ad..f4671b97070290269d26c8311788ba0b28578ad6 100644 (file)
--- a/FAQ.txt
+++ b/FAQ.txt
@@ -8,8 +8,8 @@ I'm stuck, HELP!
 ----------------
 
    Please read the full online FAQs
-(http://appel.lilypond.org/wiki?LilyPondFaqs).  Also, please look in
-the searchable mailinglist archives:
+(http://lilypond.org/wiki?LilyPondFaqs).  Also, please look in the
+searchable mailinglist archives:
 
    * help-gnu-music (http://www.mail-archive.com/help-gnu-music@gnu.org)
 
index eb9e4038159f520293ce9eac988c15eadaef2bde..a9ed703b2251d78984ee8c82c73167044599f127 100644 (file)
@@ -463,10 +463,9 @@ interfere with your build, you may want to do this before the build too:
 Problems
 ========
 
-   For help and questions use <help-gnu-music@gnu.org> and
-<gnu-music-discuss@gnu.org>.  Please consult the FAQ before mailing
-your problems.  If you find bugs, please send bug reports to
-<bug-gnu-music@gnu.org>.
+   For help and questions use <lilypond-user@gnu.org>.  Please consult
+the FAQ before mailing your problems.  If you find bugs, please send
+bug reports to <bug-lilypond@gnu.org>.
 
    Bugs that are not fault of LilyPond are documented here.
 
index 9d530f818c68a3e102ad49b7c361f6ba2e247aed..c5ea27a41658099c449c285630b44fae5ab67701 100644 (file)
@@ -52,22 +52,23 @@ list, _not_ to us personally.
 
    We have the following mailing lists:
 
-   * info-gnu-music@gnu.org
-     (http://mail.gnu.org/mailman/listinfo/info-gnu-music) is a
+   * info-lilypond@gnu.org
+     (http://mail.gnu.org/mailman/listinfo/info-lilypond) is a
      low-volume list for information on the GNU Music project.
      This list is moderated; ask     David R. Linn <drl@gnu.org> or
      Han-Wen <hanwen@cs.uu.nl> to send announcements for this list.
 
-   * gnu-music-discuss@gnu.org
-     (http://mail.gnu.org/mailman/listinfo/gnu-music-discuss)   For
-     general discussions concerning LilyPond.
+   * lilypond-devel@gnu.org
+     (http://mail.gnu.org/mailman/listinfo/lilypond-devel)   For
+     discussions about developing lilypond, in particular the unstable
+     series.
 
-   * help-gnu-music@gnu.org
-     (http://mail.gnu.org/mailman/listinfo/help-gnu-music)     For help
-     with using LilyPond.
+   * help-lilypond@gnu.org
+     (http://mail.gnu.org/mailman/listinfo/help-lilypond)   For
+     discussions about using lilypond, in particular the stable series.
 
-   * bug-gnu-music@gnu.org
-     (http://mail.gnu.org/mailman/listinfo/bug-gnu-music) If you have
+   * bug-lilypond@gnu.org
+     (http://mail.gnu.org/mailman/listinfo/bug-lilypond) If you have
      bugreports, you should send them to this list.
 
 Windows 32
@@ -90,8 +91,8 @@ files, eg.,
 Bugs
 ====
 
-   Send bug reports to <bug-gnu-music@gnu.org>.  For help and questions
-use <help-gnu-music@gnu.org> and <gnu-music-discuss@gnu.org>.  Please
+   Send bug reports to <bug-lilypond@gnu.org>.  For help and questions
+use <help-lilypond@gnu.org> and <lilypond-discuss@gnu.org>.  Please
 consult the FAQ and installation instructions before mailing your
 problems.
 
diff --git a/VERSION b/VERSION
index 69c891282e9968fca7f6c2cf2d46b1e0c289a4e6..b76131dbcc4a5fb95ab17ab0b8dd0bd63adb10c7 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
-MINOR_VERSION=4
-PATCH_LEVEL=4
+MINOR_VERSION=5
+PATCH_LEVEL=0
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index ec2dac64dfd6670dd44b05650ad3da6b62b87ec7..e809b66224adbbe5b98984311f8600e80fbe41e5 100755 (executable)
@@ -7,8 +7,17 @@
 # strange shell, this C
 set datadir="@datadir@"
 
-setenv GS_FONTPATH "$datadir/afm:@datadir@/pfa:$GS_FONTPATH"
-setenv GS_LIB "$datadir/ps:$GS_LIB"
+if ( $?GS_FONTPATH ) then
+       setenv GS_FONTPATH "$datadir/afm:/usr/share/lilypond/pfa:$GS_FONTPATH"
+ else
+       setenv GS_FONTPATH "$datadir/afm:/usr/share/lilypond/pfa"
+ endif
+ if ( $?GS_LIB ) then
+       setenv GS_LIB "$datadir/ps:$GS_LIB"
+ else
+       setenv GS_LIB "$datadir/ps"
+ endif
+
 
 # setenv LILYPONDPREFIX "$datadir"
 
index 0b1d5d972dbe7ca9953e28f0819143f94b1c67ae..270ee5634157ce8998a9089261f1d4d864c30aff 100644 (file)
@@ -39,8 +39,7 @@ public:
   void invert ();
   int num () const { return sign_ * num_; }
   int den () const { return den_; }
-  int num_i () const { return sign_ * num_; }
-  int den_i () const { return den_; }
+
   Rational trunc_rat () const;
   Rational div_rat (Rational) const;
   Rational mod_rat (Rational) const;
diff --git a/input/bugs/beam.ly b/input/bugs/beam.ly
new file mode 100644 (file)
index 0000000..44e7dfe
--- /dev/null
@@ -0,0 +1,15 @@
+\header {
+  texidoc="beam-stem attachment test"
+}
+       
+\score {
+  \context RhythmicStaff \notes {
+    \stemUp [c8 c]
+    \stemDown [c8 c]
+    \stemUp [c8. c16]
+  }
+  \paper {
+    linewidth = -1.0
+    magnification = 64
+  }
+}
\ No newline at end of file
diff --git a/input/bugs/newgrace.ly b/input/bugs/newgrace.ly
new file mode 100644 (file)
index 0000000..9db2a2b
--- /dev/null
@@ -0,0 +1,8 @@
+\score {  \notes {
+  \clef bass
+  <{ 
+    \grace { [c16  ] }
+    \relative b,  b2  
+   } >
+}
+}
diff --git a/input/regression/grace-bar-line.ly b/input/regression/grace-bar-line.ly
new file mode 100644 (file)
index 0000000..69b0cee
--- /dev/null
@@ -0,0 +1,13 @@
+\header {
+
+texidoc = "Bar line should come before the grace note.";
+}
+
+       
+
+
+
+\score  {\notes \relative c' \context Staff  { 
+ f1 \ngrace { [a'16 f]  } g1 }
+               \paper { linewidth = -1. }
+ } 
diff --git a/input/regression/grace-start.ly b/input/regression/grace-start.ly
new file mode 100644 (file)
index 0000000..1094d3b
--- /dev/null
@@ -0,0 +1,9 @@
+\header {
+texidoc = "Pieces may begin with grace notes."
+}
+\score  {\notes \relative c' \context Staff  { 
+ \grace { [a'16 f]  } g1
+ \grace { [a16 bes]  }  c1
+  }
+  \paper { linewidth = -1. }
+}
diff --git a/input/regression/grace-sync.ly b/input/regression/grace-sync.ly
new file mode 100644 (file)
index 0000000..0ddcdf3
--- /dev/null
@@ -0,0 +1,15 @@
+\header  {
+  texidoc = "grace notes in different voices/staffs are synchronized."
+}
+
+\score  {\notes < \context Staff  { c2
+ \ngrace  c8
+ c2 c4 }
+               \context Staff = SB { c2 \clef bass
+ %\ngrace { [dis8 ( d8] }
+
+  ) c2 c4 }
+               \context Staff = SC { c2 c2 c4 }
+               >
+               \paper { linewidth = -1. }
+ } 
diff --git a/input/regression/span-bar.ly b/input/regression/span-bar.ly
new file mode 100644 (file)
index 0000000..9bebddd
--- /dev/null
@@ -0,0 +1,37 @@
+\header {
+texidoc = "Span bars draw only in between staff bar lines, so setting those to transparent shows bar lines between systems only.
+"
+}
+
+\score {
+ \notes \relative c' \context StaffGroup = groupie <
+  \context Staff = SA { c1 c1 c1}
+  \context Lyrics = LA \lyrics <
+   { bla1 die bla }
+  >
+  \context Staff = SB { a1 a1 a1}
+  \context Lyrics = LB \lyrics <
+   { bla1 die bla }
+   { foo bar foo }
+  >
+  \context Staff = SC { f1 f1 f1}
+  \context Lyrics = LC \lyrics <
+   { bla1 die bla }
+   { foo bar foo }
+   { foo bar foo }
+  >
+  \context Staff = SD { d1 d1 d1}
+  \context Lyrics = LD \lyrics <
+   { bla1 die bla }
+   { foo bar foo }
+   { foo bar foo }
+   { foo bar foo }
+  >
+ >
+ \paper {
+  \translator {
+   \StaffContext
+   BarLine \override #'transparent = ##t
+  }
+ }
+}
diff --git a/input/test/trills.ly b/input/test/trills.ly
new file mode 100644 (file)
index 0000000..ab7cc17
--- /dev/null
@@ -0,0 +1,42 @@
+\header {
+  texidoc="Document trills, pralls and turns"
+  title="Marques des agr\'ements et leur signification"
+  copyright="(1689)"
+}
+
+\score {
+  <
+    \property Score.TimeSignature = \turnOff
+    \context GrandStaff <
+      \context Staff=upper \notes\relative c'' {
+       \time 1/4
+       c4-\prallprall
+       \time 3/8
+       c4.^"TODO"
+       c4.-\downprall
+       c4.-\upprall
+       \time 5/8
+       c4-\turn c4.-\upprall
+      }
+      \context Lyrics=one \lyrics {
+       "Tremblement"4
+       "Tremblement"4.
+       "Cadence"
+       "autre"
+       "Double"4 "cadence"4.
+      }
+      \context Lyrics=two \lyrics {
+       "simple"4
+       "appuy\'e"4.
+      }
+      \context Staff=lower \notes\relative c'' {
+        % autobeamer has som problems here
+       [\repeat unfold 4 { d32 c }]
+       d8~[\repeat unfold 4 { d32 c }]
+       d32 c b c \repeat unfold 4 { d32 c }
+       b32 c d c \repeat unfold 4 { d32 c }
+       [c32( b a16 b )c] [b32 c d c \repeat unfold 4 { d32 c }]
+      }
+    >
+  >
+}
\ No newline at end of file
index b3353789cd1faa855872f799c5ec9e7b139a6bd8..b4191f36bcfa18ec3ccd8e66e73be85a1b67d748 100644 (file)
@@ -119,11 +119,11 @@ Auto_beam_engraver::test_moment (Direction dir, Moment test_mom)
 
   Moment one_beat = *unsmob_moment (get_property ("beatLength"));
   int num = *unsmob_moment (get_property ("measureLength")) / one_beat;
-  int den = one_beat.den_i ();
+  int den = one_beat.den ();
   SCM time = gh_list (gh_int2scm (num), gh_int2scm (den), SCM_UNDEFINED);
 
-  SCM type = gh_list (gh_int2scm (test_mom.num_i ()),
-                     gh_int2scm (test_mom.den_i ()), SCM_UNDEFINED);
+  SCM type = gh_list (gh_int2scm (test_mom.num ()),
+                     gh_int2scm (test_mom.den ()), SCM_UNDEFINED);
 
   SCM settings = get_property ("autoBeamSettings");
   
@@ -176,7 +176,7 @@ Auto_beam_engraver::test_moment (Direction dir, Moment test_mom)
          Moment length = * unsmob_moment (get_property ("measureLength"));
          pos = length - pos;
        }
-      r = pos.mod_rat (moment);
+      r = pos.main_part_.mod_rat (moment.main_part_);
     }
   else
     {
@@ -440,7 +440,7 @@ Auto_beam_engraver::acknowledge_grob (Grob_info info)
                             durlog - 2);
       stem_l_arr_p_->push (stem_l);
       last_add_mom_ = now;
-      extend_mom_ = extend_mom_ >? now + rhythmic_req->length_mom ();
+      extend_mom_ = (extend_mom_ >? now) + rhythmic_req->length_mom ();
     }
 }
 
index d39c10d5d5b3e98de8ee56bc7a56f3d58b2f50e8..2f29c4be38e47c49f43f0dc175ac84f6840b06b6 100644 (file)
@@ -123,7 +123,7 @@ Auto_change_iterator::process (Moment m)
        {
          where_dir_ = s;
          String to_id = (s >= 0) ?  "up" : "down";
-         String wh = ly_scm2string (music_l_->get_mus_property ("what"));
+         String wh = ly_scm2string (music_l ()->get_mus_property ("what"));
          change_to (child_iter_p_, wh, to_id);   
        }
     }
index 23e22f0e168de1fbcc5592a3ebf8f42728eda4c5..0108cf961a798fec16c113ef8af15cdaa202ec46 100644 (file)
@@ -65,8 +65,8 @@ Bar_engraver::finalize ()
 }
 
 /*
-  Bar_engraver should come *after* any engravers that expect bars to
-  modify whichBar in  deprecated_process_music () be typeset
+  Bar_engraver should come *after* any engravers that  
+  modify whichBar
 */
 void
 Bar_engraver::create_grobs ()
index b5ebc0156f728605754722b184c3418bb11ecb94..e6f08096d6ae6dfe0ed15d319f6125a6190a6304 100644 (file)
@@ -220,14 +220,12 @@ Beam_engraver::finalize ()
   if (beam_p_)
     {
       prev_start_req_->origin ()->warning (_ ("unterminated beam"));
-#if 0
-      finished_beam_p_ = beam_p_;
-      finished_beam_info_p_ = beam_info_p_;
-      typeset_beam ();
-#else
+
+      /*
+       we don't typeset it, (we used to, but it was commented
+       out. Reason unknown) */
       beam_p_->suicide ();
       delete beam_info_p_;
-#endif
     }
 }
 
index 77186ed8e26575a251c1ba26e7d5c9fbd8d0d92c..2f314fa422b4e2bad640ae5ea1bae309ab7d7505 100644 (file)
@@ -670,6 +670,9 @@ Beam::set_stem_lengths (Grob *me)
 
       Real stem_y = calc_stem_y_f (me, s, y, dy);
 
+      stem_y += Stem::get_direction (s)
+       * gh_scm2double (me->get_grob_property ("thickness")) / 2;
+
       /* caution: stem measures in staff-positions */
       Real id = me->relative_coordinate (common, Y_AXIS)
        - stems[i]->relative_coordinate (common, Y_AXIS);
@@ -762,7 +765,6 @@ Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev,
  (prev && ! (prev->relative_coordinate (0, X_AXIS) < here->relative_coordinate (0, X_AXIS))))
       programming_error ("Beams are not left-to-right");
 
-  Real staffline_f = me->paper_l ()->get_var ("stafflinethickness");
   int multiplicity = get_multiplicity (me);
 
   SCM space_proc = me->get_grob_property ("space-function");
@@ -772,8 +774,7 @@ Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev,
   Real interbeam_f = gh_scm2double (space) ;
     
   Real bdy = interbeam_f;
-  Real stemdx = staffline_f;
-
+  
 #if 0
     // ugh -> use commonx
   Real dx = visible_stem_count (me) ?
@@ -811,12 +812,20 @@ Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev,
        Half beam should be one note-width, 
        but let's make sure two half-beams never touch
        */
-      Real w = here->relative_coordinate (0, X_AXIS) - prev->relative_coordinate (0, X_AXIS);
+
+      // FIXME: TODO (check) stem width / sloped beams
+      Real w = here->relative_coordinate (0, X_AXIS)
+       - prev->relative_coordinate (0, X_AXIS);
+      Real stem_w = gh_scm2double (prev->get_grob_property ("thickness"))
+       // URG
+       * me->paper_l ()->get_var ("stafflinethickness");
+
       w = w/2 <? nw_f;
       Molecule a;
       if (lhalfs)              // generates warnings if not
-       a =  Lookup::beam (dydx, w, thick);
+       a =  Lookup::beam (dydx, w + stem_w, thick);
       a.translate (Offset (-w, -w * dydx));
+      //a.translate_axis (stem_w/2, X_AXIS);
       for (int j = 0; j  < lhalfs; j++)
        {
          Molecule b (a);
@@ -827,15 +836,23 @@ Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev,
 
   if (next)
     {
-      int rhalfs  = Stem::beam_count (here,RIGHT) - Stem::beam_count (next,LEFT);
-      int rwholebeams= Stem::beam_count (here,RIGHT) <? Stem::beam_count (next,LEFT) ;
+      int rhalfs  = Stem::beam_count (here,RIGHT)
+       - Stem::beam_count (next,LEFT);
+      int rwholebeams= Stem::beam_count (here,RIGHT)
+       <? Stem::beam_count (next,LEFT) ;
 
-      Real w = next->relative_coordinate (0, X_AXIS) - here->relative_coordinate (0, X_AXIS);
-      Molecule a = Lookup::beam (dydx, w + stemdx, thick);
-      a.translate_axis (- stemdx/2, X_AXIS);
+      Real w = next->relative_coordinate (0, X_AXIS)
+       - here->relative_coordinate (0, X_AXIS);
+
+      Real stem_w = gh_scm2double (next->get_grob_property ("thickness"))
+       // URG
+       * me->paper_l ()->get_var ("stafflinethickness");
+
+      Molecule a = Lookup::beam (dydx, w + stem_w, thick);
+      a.translate_axis (- stem_w/2, X_AXIS);
       int j = 0;
       Real gap_f = 0;
-
+      
       SCM gap = me->get_grob_property ("gap");
       if (gh_number_p (gap))
        {
@@ -853,7 +870,7 @@ Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev,
          else
            gap_f = nw_f / 2;
          w -= 2 * gap_f;
-         a = Lookup::beam (dydx, w + stemdx, thick);
+         a = Lookup::beam (dydx, w + stem_w, thick);
        }
 
       for (; j  < rwholebeams; j++)
index fb828388de6381b3c6ea9173a4382147cacdbf61..97071ee65ed8bca91c7e1d26e7a370c0c4bc7b28 100644 (file)
@@ -33,10 +33,10 @@ Beaming_info_list::min_denominator_index () const
 
   for (int i=1; i < infos_.size (); i++)
     {
-      if (infos_[i].start_mom_.den_i () < minden)
+      if (infos_[i].start_mom_.den () < minden)
        {
          minidx = i;
-         minden = infos_[i].start_mom_.den_i ();
+         minden = infos_[i].start_mom_.den ();
        }
     }
 
index 96e7affd0741d01717ed08479ca35315fe43f278..727cb9b681804bff75be9a519e9b355867944514 100644 (file)
@@ -15,8 +15,8 @@
 void
 Change_iterator::error (String reason)
 {
-  String to_type = ly_scm2string (music_l_->get_mus_property ("change-to-type"));
-  String to_id =  ly_scm2string (music_l_->get_mus_property ("change-to-id"));
+  String to_type = ly_scm2string (music_l ()->get_mus_property ("change-to-type"));
+  String to_id =  ly_scm2string (music_l ()->get_mus_property ("change-to-id"));
 
   String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id) 
     + ": " + reason;
@@ -27,7 +27,7 @@ Change_iterator::error (String reason)
     + report_to_l ()->type_str_ + " = `"
     + report_to_l ()->id_str_ + "': ";
   warning (warn2);
-  music_l_->origin ()->warning (warn1);
+  music_l ()->origin ()->warning (warn1);
 }
 
 /*
@@ -39,8 +39,8 @@ Change_iterator::process (Moment m)
   Translator_group * current = report_to_l ();
   Translator_group * last = 0;
 
-  String to_type = ly_scm2string (music_l_->get_mus_property ("change-to-type"));
-  String to_id =  ly_scm2string (music_l_->get_mus_property ("change-to-id"));
+  String to_type = ly_scm2string (music_l ()->get_mus_property ("change-to-type"));
+  String to_id =  ly_scm2string (music_l ()->get_mus_property ("change-to-id"));
 
 
   /* find the type  of translator that we're changing.
index 9c2aaf4a77278b708ea27d14cd20650ab932fae8..ea1d410b6bf2f797b15e2f98e0620c8f021dd6d7 100644 (file)
@@ -19,7 +19,7 @@
 void
 Chord_tremolo_iterator::construct_children ()
 {
-  Repeated_music * rep = dynamic_cast<Repeated_music*> (music_l_);
+  Repeated_music * rep = dynamic_cast<Repeated_music*> (music_l ());
   factor_  = Moment (1, rep->repeat_count ());
   child_iter_p_ = get_iterator_p (rep->body ());
 }
@@ -41,11 +41,11 @@ Chord_tremolo_iterator::process (Moment m)
 {
   if (!m)
     {
-      Music_iterator *yeah = try_music (music_l_);
+      Music_iterator *yeah = try_music (music_l ());
       if (yeah)
        set_translator (yeah->report_to_l ());
       else
-       music_l_->origin ()->warning (_ ("no one to print a tremolos"));
+       music_l ()->origin ()->warning (_ ("no one to print a tremolos"));
     }
 
   child_iter_p_->process (factor_ * m);
index fb12bd8d9d19ee8ca83fc4508eae527d5c29ecea..d16cb8a20b5db7a4058e5ac061b73c10bc45c429 100644 (file)
@@ -167,10 +167,9 @@ Clef_engraver::inspect_clef_properties ()
 
       clef_p_->set_grob_property ("non-default", SCM_BOOL_T);
 
-       prev_cpos_ = clefpos;
-       prev_glyph_ = glyph;
-       prev_octavation_ = octavation;
-
+      prev_cpos_ = clefpos;
+      prev_glyph_ = glyph;
+      prev_octavation_ = octavation;
     }
 
   if (to_boolean (force_clef))
index 37e75ac8d1e7f1bf9ba8c1c349b83cf92500ff12..c0a97084bf4befa0eb6bc69ff2c4aa466f47c82b 100644 (file)
@@ -28,14 +28,14 @@ Duration::Duration ()
 {
   durlog_i_ = 0;
   dots_i_ = 0;
-  factor_ = Moment (1,1);
+  factor_ = Rational (1,1);
 }
 
 Duration::Duration (int l, int d)
 {
   durlog_i_ = l;
   dots_i_ = d;
-  factor_ = Moment (1,1);
+  factor_ = Rational (1,1);
 }
 
 Duration
@@ -52,13 +52,13 @@ Duration::length_mom () const
   Rational mom (1 << abs (durlog_i_));
 
   if (durlog_i_> 0)
-    mom = Moment (1)/mom;
+    mom = Rational (1)/mom;
 
   Rational delta = mom;
 
   for (int d = dots_i_; d; d--)
     {
-      delta /= Moment (2);
+      delta /= Rational (2);
       mom += delta;
     }
 
index 16454dba80f3d296a1dc2b761d16f80c2eb5617e..3012c6642912e1e78c257b08ac6022c93a00c21e 100644 (file)
@@ -59,7 +59,7 @@ Folded_repeat_iterator::pending_moment () const
 void
 Folded_repeat_iterator::construct_children ()
 {
-  Repeated_music  *  mus = dynamic_cast<Repeated_music*> (music_l_);
+  Repeated_music  *  mus = dynamic_cast<Repeated_music*> (music_l ());
   main_iter_p_ = get_iterator_p (mus->body ());
   if (!main_iter_p_->ok ())
     {
@@ -73,9 +73,9 @@ Folded_repeat_iterator::process (Moment m)
 {
   if (!m)
     {
-      bool success = try_music (music_l_);
+      bool success = try_music (music_l ());
       if (!success)
-       music_l_->origin ()->warning (_ ("no one to print a repeat brace"));
+       music_l ()->origin ()->warning (_ ("no one to print a repeat brace"));
     }
   
   if (main_iter_p_)
@@ -104,7 +104,7 @@ Folded_repeat_iterator::process (Moment m)
 void
 Folded_repeat_iterator::leave_body ()
 {
-  Repeated_music *  mus = dynamic_cast<Repeated_music *> (music_l_);
+  Repeated_music *  mus = dynamic_cast<Repeated_music *> (music_l ());
   delete main_iter_p_;
   main_iter_p_ = 0;
   main_length_mom_ +=  mus->body ()->length_mom ();
@@ -113,7 +113,7 @@ Folded_repeat_iterator::leave_body ()
 void
 Folded_repeat_iterator::enter_alternative ()
 {
-  Repeated_music *  mus = dynamic_cast<Repeated_music *> (music_l_);  
+  Repeated_music *  mus = dynamic_cast<Repeated_music *> (music_l ());  
   if (mus->alternatives ())
     {
       Simultaneous_music_iterator * s = new Simultaneous_music_iterator;
diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc
new file mode 100644 (file)
index 0000000..56f1555
--- /dev/null
@@ -0,0 +1,42 @@
+/*   
+  font-size-engraver.cc --  implement 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "grob.hh"
+#include "engraver.hh"
+
+class Font_size_engraver : public Engraver
+{
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  Font_size_engraver ();
+protected:
+  virtual void acknowledge_grob (Grob_info gi);
+private:
+};
+
+
+Font_size_engraver::Font_size_engraver ()
+{
+
+}
+
+void
+Font_size_engraver::acknowledge_grob (Grob_info gi)
+{
+  SCM sz = get_property ("fontSize");
+
+  if (gh_number_p (sz)
+      && gh_scm2int (sz)
+      && !gh_number_p (gi.elem_l_->get_grob_property ("font-relative-size")))
+    {
+      gi.elem_l_->set_grob_property ("font-relative-size", sz);
+    }
+}
+
+ADD_THIS_TRANSLATOR(Font_size_engraver);
index e7fe6790d7eb86656a006479c4370194c7311772..a1dd7c350107891f899144af3c2e1a0c812e9e47 100644 (file)
@@ -83,6 +83,9 @@ Global_translator::finish ()
 void
 Global_translator::run_iterator_on_me (Music_iterator * iter)
 {
+  if (iter-> ok ())
+    prev_mom_ = now_mom_ = iter->pending_moment ();
+  
   while (iter->ok () || moments_left_i ())
     {
       Moment w;
@@ -90,7 +93,6 @@ Global_translator::run_iterator_on_me (Music_iterator * iter)
       if (iter->ok ())
        {
          w = iter->pending_moment ();
-      
        }
 
       w = sneaky_insert_extra_moment (w);
index 18a7a62bf6c776e235faa1eeabd5bee881cae30d..f73e610bada19a1451a8cd037ef9d3f1e2914caa 100644 (file)
@@ -47,7 +47,7 @@ Grace_iterator::process (Moment)
 Moment
 Grace_iterator::pending_moment () const
 {
-  return 0;
+  return  0;
 }
 
 
index e275e891a76f7f9758539831cd109d2a58a4be07..7652ac98c62e295275e267971cc5dcbda224e791 100644 (file)
@@ -60,7 +60,7 @@ Grace_position_performer::create_audio_elements ()
          for (int i=1; i < notes_.size (); i++)
            shortest_mom = shortest_mom <? notes_[i]->length_mom_;
          
-         Rational grace_fraction_rat (1, 2);
+         Moment grace_fraction_rat (1, 2);
          SCM prop = get_property ("graceFraction");
          if (unsmob_moment (prop))
            grace_fraction_rat = *unsmob_moment (prop);
@@ -81,7 +81,7 @@ Grace_position_performer::create_audio_elements ()
       for (int i=0; i < graces_.size (); i++)
        grace_length_mom += graces_[i]->length_mom_;
 
-      Rational grace_factor_rat = delay_mom / grace_length_mom;
+      Moment grace_factor_rat = delay_mom / grace_length_mom;
 
       for (int i=0; i < graces_.size (); i++)
        {
index 685bddb5fc94cde14a563262225537dcdc7b1b5b..bdb988a1c3c3bb8c4e13f6058cfc834a95665250 100644 (file)
@@ -39,7 +39,7 @@ private:
   int durlog_i_;
   int dots_i_;
 
-  Moment factor_;
+  Rational factor_;
 
 };
 
index 47def5db9d95ad69c2756cf69b44728411011153..897146133d80087dff2fc332141bd5014e9f12ed 100644 (file)
@@ -23,5 +23,16 @@ protected:
   virtual Moment length_mom () const;
 };
 
+class New_grace_music : public Music_wrapper
+{
+public:
+  VIRTUAL_COPY_CONS (Music);
+  New_grace_music (SCM);
+  New_grace_music ();
+protected:
+  virtual void compress (Moment);
+  virtual Moment length_mom () const;
+};
+
 #endif /* GRACE_MUSIC_HH */
 
index 2583bb56ab70feefda4595ec05ce88b5af4859ee..fca85bb458be577be03c091af6bd018db67982fe 100644 (file)
 
 /**
    Rationals with glue for Guilification;
-
-   FIXME: remove self_scm_ and then remove this class */
-class Moment : public Rational
+*/
+class Moment
 {
   DECLARE_SIMPLE_SMOBS (Moment,);
 public:
-  Moment () { }
-  Moment (int m) : Rational (m) { }
-  Moment (int m, int n) : Rational (m,n) { }
-  Moment (Rational m) : Rational (m) { }
+  Moment ();
+  Moment (int m);
+  Moment (int m, int n);
+
+  Moment (Rational m);
+
+
+  void operator += (Moment const &m);
+  void operator -= (Moment const &m);  
 
+  void operator *= (Moment const &m);
+  void operator /= (Moment const &m);  
+
+  Rational main_part_;
+  Rational grace_mom_;
+
+  void set_infinite (int k);
+  
+  operator bool ();
+  int den () const;
+  int num () const;
   /*
     Deliver a copy of THIS as a smobified SCM
    */
-  SCM smobbed_copy () const; 
+  SCM smobbed_copy () const;
+  String str () const;
+  static int compare (Moment const&, Moment const&);
 };
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + );
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - );
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / );
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * );
 
 
 Moment * unsmob_moment (SCM);
+int compare (Moment const&,Moment const&);
+INSTANTIATE_COMPARE (Moment const&, Moment::compare);
 
 #if 0
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - );
 IMPLEMENT_ARITHMETIC_OPERATOR (Moment, % );
-INSTANTIATE_COMPARE (Moment const&, Rational::compare);
 #endif
 
 #endif /* MOMENT_HH */
index 4041b5d028f46cd442b269108b762f1c7b86afdc..bc99f499d3422fb3eb20cb60378729ebe977d64b 100644 (file)
@@ -52,11 +52,12 @@ class Music_iterator
 {
 protected:
   Moment music_length_;
-
+  Moment start_mom_;
 public:
   VIRTUAL_COPY_CONS (Music_iterator);
 
   Moment music_length_mom () const;
+  Moment music_start_mom () const;
   Music_iterator ();
   Music_iterator (Music_iterator const&);
   virtual ~Music_iterator ();
@@ -93,9 +94,6 @@ public:
   virtual void construct_children ();
   static SCM constructor_cxx_function;
   
-protected:
-  Music  * music_l_;
-
   /**
     Get an iterator for MUS, inheriting the translation unit from THIS.
    */
@@ -103,8 +101,10 @@ protected:
 
   virtual Music_iterator* try_music_in_children (Music *) const;
 
+  Music * music_l () const;
 private:
   Interpretation_context_handle handle_;
+  Music  * music_l_;
 };
 
 
index b953c6a35ce8864a8533fbad26c9489788faa18f..a874660322b87cfea8c734bfbc2b844a6667f883 100644 (file)
@@ -23,7 +23,7 @@ public:
   Simultaneous_music (SCM);
   virtual Pitch to_relative_octave (Pitch);
   virtual Moment length_mom () const;
-
+  virtual Moment start_mom () const;
   Simultaneous_music ();
 };
 
@@ -36,6 +36,7 @@ class Request_chord : public Simultaneous_music
 public:
   VIRTUAL_COPY_CONS (Music);
   virtual Pitch to_relative_octave (Pitch);
+  virtual Moment start_mom () const;
   Request_chord (SCM list);
 
   Request_chord ();
@@ -50,7 +51,8 @@ public:
   VIRTUAL_COPY_CONS (Music);
   Sequential_music (SCM);
   virtual Moment length_mom () const;
-
+  virtual Moment start_mom () const;
+  
   Sequential_music ();
 };
 
index 797563830de7064f16b91018bf4912e88b03d97c..b22d029582cee9a313e472f712b9ec531b2ffe67 100644 (file)
@@ -31,6 +31,9 @@ public:
   int length_i () const;
   Moment cumulative_length () const;
   Moment maximum_length () const;
+
+  Moment first_start () const;
+  Moment minimum_start () const;
   
 protected:
   virtual Pitch to_relative_octave (Pitch);
index ec9504664931a531d8473d843b8eaff95d92aa28..ed2cfe46c5a900a4123ecaa5eccedc9052d6a7ce 100644 (file)
@@ -30,6 +30,7 @@ public:
   
   VIRTUAL_COPY_CONS (Music);
   virtual Moment length_mom () const;
+  virtual Moment start_mom () const;
   virtual Pitch to_relative_octave (Pitch);
   virtual void compress (Moment);
 };
index 2c67ebdd90e00bd35743dffe7cc4b4f8871984c7..2ce12fed36ecaeb4a674fa461fd85434b3a549cb 100644 (file)
@@ -50,7 +50,7 @@ public:
 
   /// The duration of this piece of music
   virtual Moment length_mom () const;
-
+  virtual Moment start_mom () const;
   void print () const;
   /// Transpose, with the interval central C to #p#
   virtual void transpose (Pitch p);
diff --git a/lily/include/new-grace-iterator.hh b/lily/include/new-grace-iterator.hh
new file mode 100644 (file)
index 0000000..cb621e8
--- /dev/null
@@ -0,0 +1,30 @@
+/*   
+  new-grace-iterator.hh -- declare New-Grace_iterator
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef NEWGRACE_ITERATOR_HH
+#define NEWGRACE_ITERATOR_HH
+
+#include "music-wrapper-iterator.hh"
+
+class New_grace_iterator : public Music_wrapper_iterator
+{
+public:
+  VIRTUAL_COPY_CONS (Music_iterator);
+  ~New_grace_iterator ();
+  virtual void construct_children () ;
+  virtual void process (Moment);
+  static SCM constructor_cxx_function;
+  Moment pending_moment () const;
+};
+
+
+
+#endif /* GRACE_ITERATOR_HH */
+
+
diff --git a/lily/include/new-grace-music.hh b/lily/include/new-grace-music.hh
new file mode 100644 (file)
index 0000000..aae5ce0
--- /dev/null
@@ -0,0 +1,28 @@
+/*   
+  grace-music.hh -- declare Grace_music
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef NGRACE_MUSIC_HH
+#define NGRACE_MUSIC_HH
+
+#include "music-wrapper.hh"
+
+class New_grace_music : public Music_wrapper
+{
+public:
+  VIRTUAL_COPY_CONS (Music);
+  New_grace_music (SCM);
+  New_grace_music ();
+protected:
+  virtual void compress (Moment);
+  virtual Moment length_mom () const;
+  virtual Moment start_mom () const;
+};
+
+#endif /* GRACE_MUSIC_HH */
+
index bbb53792b612c98a5e4bb8d09fb96e78811c3064..815f04c05ec79b1ac3984f2214f95585e910cf95 100644 (file)
@@ -26,7 +26,7 @@ class Score_engraver :
     
   Paper_column* command_column_l_;
   Paper_column* musical_column_l_;
-  void make_columns (Moment);
+  void make_columns ();
   void set_columns (Paper_column*,Paper_column*);
   void typeset_all ();
     
index 963faf2d07e0508badc5900df1c92b2e8252bef2..6f13f441411e78d526a613da6d28b12db3c1d628 100644 (file)
 
 #include "music-iterator.hh"
 
+
+struct Grace_skip 
+{
+  Moment start_;
+  Rational length_;
+  Rational grace_length_;  
+  Grace_skip *next_;
+};
+
 /** Sequential_music iteration: walk each element in turn, and
   construct an iterator for every element.
   
@@ -18,6 +27,8 @@
 class Sequential_music_iterator :  public Music_iterator
 {
 public:
+  Grace_skip * grace_skips_;
+  
   VIRTUAL_COPY_CONS (Music_iterator);
   static SCM constructor_cxx_function;
   Sequential_music_iterator ();
index 2c40d2e8f51f074ac55a6fe02b75c95d7adb473a..272365ecd4c90b5bcdd6e0554b84a04baabe1e1d 100644 (file)
@@ -1,28 +1,3 @@
-/*   
-  spaceable-grob.hh -- declare Spaceable_grob
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
 
-#ifndef SPACEABLE_GROB_HH
-#define SPACEABLE_GROB_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-struct Spaceable_grob
-{
-  /// set a minimum distance
-  static void add_rod (Grob*me, Grob * to, Real distance);
-  static void add_spring (Grob*me,Grob * to, Real dist, Real strength);
-  static void set_interface (Grob*);
-  static void remove_interface (Grob*);
-  static SCM get_minimum_distances (Grob*);
-  static SCM get_ideal_distances (Grob*);
-};
-
-#endif /* SPACEABLE_GROB_HH */
+#error
 
diff --git a/lily/include/spaceable-grob.hh b/lily/include/spaceable-grob.hh
new file mode 100644 (file)
index 0000000..2c40d2e
--- /dev/null
@@ -0,0 +1,28 @@
+/*   
+  spaceable-grob.hh -- declare Spaceable_grob
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef SPACEABLE_GROB_HH
+#define SPACEABLE_GROB_HH
+
+#include "lily-guile.hh"
+#include "lily-proto.hh"
+
+struct Spaceable_grob
+{
+  /// set a minimum distance
+  static void add_rod (Grob*me, Grob * to, Real distance);
+  static void add_spring (Grob*me,Grob * to, Real dist, Real strength);
+  static void set_interface (Grob*);
+  static void remove_interface (Grob*);
+  static SCM get_minimum_distances (Grob*);
+  static SCM get_ideal_distances (Grob*);
+};
+
+#endif /* SPACEABLE_GROB_HH */
+
index 122f8d0d80ebf9876ebc5d2185e7a581d3272e2e..8a170e301946fc67bd721a883e3a3c8415d12c8f 100644 (file)
@@ -31,7 +31,6 @@ protected:
 
 public:
   Moment measure_position () const;
-  Moment measure_length () const;  
-
+  Rational measure_length () const;  
 };
 #endif // TIMING_TRANSLATOR_HH
index 3d9eecc7e0e2a660af7572575bc60e748d6a1bf0..6052b89ffd8e80577b71bfe46617d68e27449ea9 100644 (file)
@@ -53,7 +53,7 @@ Lyric_combine_music_iterator::ok () const
 void
 Lyric_combine_music_iterator::construct_children ()
 {
-  Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (music_l_);
+  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 ());
index b4c78117336d973c18b0d6e881a2a7730f9ff3d9..1f355bf96162b9e931c7459367ce7192fe95dcbc 100644 (file)
@@ -101,6 +101,7 @@ static Getopt_long *oparser_p_static = 0;
        follow regular localisation guidelines).
  */
 static Long_option_init options_static[] = {
+  /* print example usage:  lilypond -e "(set-lily-option 'help 0)" ? */
   {_i ("EXPR"), "evaluate", 'e',_i ("evalute EXPR as Scheme after .scm init is read")},
   /* another bug in option parser: --output=foe is taken as an abbreviation
      for --output-format */
@@ -168,7 +169,7 @@ _ (
 
   cout << endl;
 
-  cout << _f ("Report bugs to %s", "bug-gnu-music@gnu.org") << endl;
+  cout << _f ("Report bugs to %s", "bug-lilypond@gnu.org") << endl;
 }
 
 void
index 80d3e6e6bc4348595ddea27b0629a7214eaa66c2..bf046d464442f02f2f131654ffaf2c01304c9d6f 100644 (file)
@@ -201,12 +201,12 @@ Midi_time_signature::Midi_time_signature (Audio_time_signature* a)
 String
 Midi_time_signature::str () const
 {
-  int num_i = audio_l_->beats_i_;
-  int den_i = audio_l_->one_beat_i_;
+  int num = audio_l_->beats_i_;
+  int den = audio_l_->one_beat_i_;
 
   String str = "ff5804";
-  str += String_convert::i2hex_str (num_i, 2, '0');
-  str += String_convert::i2hex_str (intlog2 (den_i) , 2, '0');
+  str += String_convert::i2hex_str (num, 2, '0');
+  str += String_convert::i2hex_str (intlog2 (den) , 2, '0');
   str += String_convert::i2hex_str (clocks_per_1_i_, 2, '0');
   str += String_convert::i2hex_str (8, 2, '0');
   return String_convert::hex2bin_str (str);
index b414b498aea0720c03ea41bcc13d06a173fe55b3..e577691f8f7e04329923560689faaac9554076c0 100644 (file)
@@ -15,7 +15,7 @@
 #include "string.hh"
 #include "molecule.hh"
 #include "debug.hh"
-#include "killing-cons.tcc"
+
 
 #include "ly-smobs.icc"
 
index a1c9e071ec77595e79cb2bd2df7879c95c303701..8653e38514f2f3e761df2edb97038358288cfb34 100644 (file)
@@ -83,3 +83,109 @@ Moment::equal_p (SCM a, SCM b)
   return (*m1 == *m2) ? SCM_BOOL_T : SCM_BOOL_F;
 }
 
+/****************************************************************/
+
+int
+compare (Moment const &a, Moment const &b)
+{
+  return Moment::compare (a,b);
+}
+
+int
+Moment::compare (Moment const &a, Moment const &b)
+{
+  int c = Rational::compare (a.main_part_,b.main_part_);
+  if (c)
+    return c;
+
+  return Rational::compare (a.grace_mom_, b.grace_mom_);
+}
+
+Moment::Moment ()
+{
+
+}
+
+Moment::Moment (int m)
+{
+  main_part_ = Rational(m);
+  grace_mom_  = Rational( 0);
+}
+
+Moment::Moment (int m, int n)
+{
+  main_part_ = Rational (m,n);
+  grace_mom_  = Rational (0);
+}
+
+Moment::Moment (Rational m)
+{
+  main_part_ = m;
+  grace_mom_  = Rational (0);
+}
+
+void
+Moment::operator += (Moment const &src)
+{
+  main_part_ +=src.main_part_ ;
+  grace_mom_ += src.grace_mom_;
+}
+void
+Moment::operator -= (Moment const &src)
+{
+  main_part_ -= src.main_part_ ;
+  grace_mom_ -= src.grace_mom_;
+}
+
+/*
+  only take the main part of SRC for multiplication.
+ */
+void
+Moment::operator *= (Moment const &src)
+{
+  main_part_ *= src.main_part_ ;
+  grace_mom_ *= src.main_part_;
+}
+
+/*
+  only take the main part of SRC for multiplication.
+ */
+void
+Moment::operator /= (Moment const &src)
+{
+  main_part_ /= src.main_part_ ;
+  grace_mom_ /= src.main_part_;
+}
+
+
+#if 0
+Moment::operator Rational()
+{
+  return main_part_;
+}
+#endif
+
+int
+Moment::den () const { return main_part_.den (); }
+
+int
+Moment::num () const { return main_part_.num (); }
+
+
+Moment::operator bool ()
+{
+  return main_part_ || grace_mom_;
+}
+
+void
+Moment::set_infinite (int k)
+{
+  main_part_.set_infinite (k);
+}
+
+
+String
+Moment::str () const
+{
+  return main_part_.str ();
+}
index 7d5a5155be7a2a0af340e5950efc6833b4447e13..f27f2f0d7775dc839427044aa4f3a44ba3d52228 100644 (file)
@@ -26,6 +26,7 @@ Music_iterator::Music_iterator (Music_iterator const& src)
   handle_ = *src.handle_.clone ();
   music_l_ = src.music_l_;
   music_length_ = src.music_length_;
+  start_mom_ = src.start_mom_;
 }
 
 Music_iterator::~Music_iterator ()
@@ -59,7 +60,6 @@ Music_iterator::pending_moment () const
   return 0;
 }
 
-
 void
 Music_iterator::process (Moment)
 {
@@ -102,8 +102,9 @@ Music_iterator::static_get_iterator_p (Music *m)
     }
 
   p->music_l_ = m;
+  assert (m);
   p->music_length_ = m->length_mom ();
-  
+  p->start_mom_ = m->start_mom ();
   return p;
 }
 
@@ -112,12 +113,20 @@ Moment
 Music_iterator::music_length_mom () const
 {
   return music_length_;
+
+}
+
+Moment
+Music_iterator::music_start_mom ()const
+{
+  return start_mom_;
 }
 
 void
 Music_iterator::init_translator (Music *m, Translator_group *report_l)
 {
   music_l_ = m;
+  assert (m);
   if (Context_specced_music * csm =dynamic_cast<Context_specced_music *> (m))
     {
       SCM ct = csm->get_mus_property ("context-type");
@@ -169,3 +178,9 @@ Music_iterator::try_music_in_children (Music *) const
 }
 
 IMPLEMENT_CTOR_CALLBACK (Music_iterator);
+
+Music *
+Music_iterator::music_l () const
+{
+  return music_l_;
+}
index e3e188e9e2b7bb55304a350470e6e15d98fd0284..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -1,104 +1 @@
-/*
-  music-list.cc -- implement Music_sequence, Simultaneous_music, Sequential_music
 
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "music-list.hh"
-#include "music-wrapper.hh"
-#include "pitch.hh"
-#include "request.hh"
-#include "musical-request.hh"
-#include "music-iterator.hh"
-#include "main.hh"
-#include "killing-cons.tcc"
-#include "simultaneous-music-iterator.hh"
-#include "sequential-music-iterator.hh"
-#include "request-chord-iterator.hh"
-
-Moment
-Simultaneous_music::length_mom () const
-{
-  return maximum_length ();
-}
-
-Simultaneous_music::Simultaneous_music (SCM head)
-  : Music_sequence (head)
-{
-  set_mus_property ("iterator-ctor",
-                   Simultaneous_music_iterator::constructor_cxx_function);
-}
-
-Simultaneous_music::Simultaneous_music ()
-  : Music_sequence ()
-{
-  set_mus_property ("iterator-ctor",
-                   Simultaneous_music_iterator::constructor_cxx_function);
-  
-}
-
-Sequential_music::Sequential_music (SCM head)
-  : Music_sequence (head)
-{
-  set_mus_property ("iterator-ctor",
-                   Sequential_music_iterator::constructor_cxx_function);
-}
-Sequential_music::Sequential_music ()
-  : Music_sequence ()
-{
-  set_mus_property ("iterator-ctor",
-                   Sequential_music_iterator::constructor_cxx_function);
-}
-
-
-Moment
-Sequential_music::length_mom () const
-{
-  return cumulative_length ();
-}
-
-Pitch
-Simultaneous_music::to_relative_octave (Pitch p)
-{
-  return do_relative_octave (p, true);
-}
-
-Request_chord::Request_chord (SCM s)
-  : Simultaneous_music (s)
-{
-  set_mus_property ("iterator-ctor",
-                   Request_chord_iterator::constructor_cxx_function);
-}
-
-Request_chord::Request_chord ()
-{
-  set_mus_property ("iterator-ctor",
-                   Request_chord_iterator::constructor_cxx_function);
-}
-
-Pitch
-Request_chord::to_relative_octave (Pitch last)
-{
-  for (SCM s = music_list (); gh_pair_p (s);  s = gh_cdr (s))
-    {
-      Music * mus = unsmob_music (gh_car (s));
-      if (Melodic_req *m= dynamic_cast <Melodic_req *> (mus))
-       {
-         Pitch pit = *unsmob_pitch (m->get_mus_property ("pitch"));
-         
-         pit.to_relative_octave (last);
-         m->set_mus_property ("pitch", pit.smobbed_copy ());
-                 
-         return pit;
-       }
-    }
-  return last;
-}
-
-
-
-ADD_MUSIC (Simultaneous_music);
-ADD_MUSIC (Sequential_music);
-ADD_MUSIC (Request_chord);
index eb58cec14ce650bbfe0e80a5762b8dd679135fca..d3b6d7c7f6f063792ea50d9215bf7c30fd97853d 100644 (file)
@@ -86,7 +86,11 @@ Music_output_def::assign_translator (SCM transdef)
   Translator_def *tp = unsmob_translator_def (transdef);
   assert (tp);
 
-  String s = ly_scm2string (tp->type_name_);
+  
+  String s;
+  if (gh_string_p (tp->type_name_))
+      s =  ly_scm2string (tp->type_name_);
+
   translator_p_dict_p_->set (s, transdef);
 }
 
@@ -124,7 +128,10 @@ Music_output_def::get_global_translator_p ()
 int
 Music_output_def::print_smob (SCM s, SCM p, scm_print_state *)
 {
-  scm_puts ("#<Music_output_def>", p);
+  Translator_def * def = unsmob_translator_def (s);
+  scm_puts ("#<Music_output_def ", p);
+  scm_write (def->type_name_, p);
+  scm_puts (">", p);
   return 1;
 }
 
index 5be315fcd10ffa46fa204186398b8f263a5bf563..35c8bb16b3174c6e515058c38615a6dff005151f 100644 (file)
@@ -69,10 +69,24 @@ Music_sequence::transpose (Pitch rq)
 Moment
 Music_sequence::cumulative_length () const
 {
-  Moment last=0;
+  Moment cumulative;
+  
+  Moment last_len ; 
   for (SCM s = music_list (); gh_pair_p (s);  s = gh_cdr (s))
-    last += unsmob_music (gh_car (s))->length_mom ();
-  return  last;
+    {
+      Moment l = unsmob_music (gh_car (s))->length_mom ();
+      if (last_len.grace_mom_ && l.main_part_)
+       {
+         last_len.grace_mom_ = Rational (0);
+       }
+      cumulative += last_len;
+      last_len = l;
+    }
+
+  last_len.grace_mom_ = Rational (0);
+  cumulative += last_len;
+  
+  return  cumulative;
 }
 
 Pitch
@@ -131,3 +145,37 @@ Music_sequence::Music_sequence ()
 {
   
 }
+
+Moment
+Music_sequence::minimum_start () const
+{
+  Moment m;
+  
+  for (SCM s = music_list (); gh_pair_p (s);  s = gh_cdr (s))
+    {
+      m = m <? unsmob_music (gh_car (s))->start_mom ();
+    }
+  return m;
+}
+
+Moment
+Music_sequence::first_start () const
+{
+  Moment m;
+  
+  for (SCM s = music_list (); gh_pair_p (s);  s = gh_cdr (s))
+    {
+      Music * mus = unsmob_music (gh_car (s));
+      Moment l = mus->length_mom ();
+
+      if (l.main_part_)
+       return mus->start_mom ();
+      else if (l.grace_mom_)
+       {
+         m.grace_mom_ = - l.grace_mom_; 
+         return m;
+       }
+    }
+  return m;
+}
+
index a80577f387ebae0cfcb65c780ed94923c3ecb2fd..c5f72417c9a417583572a1ffda6158bee51d6477 100644 (file)
@@ -34,7 +34,7 @@ void
 Music_wrapper_iterator::construct_children ()
 {
   child_iter_p_ =
-    get_iterator_p (dynamic_cast<Music_wrapper const*> (music_l_)->element ());
+    get_iterator_p (dynamic_cast<Music_wrapper const*> (music_l ())->element ());
 }
 
 bool
index 3fc8d714c3502191a2f470f45892fd36950e6045..2541483dddafc8939b73bdd05d9669a9f1c5e4a6 100644 (file)
@@ -58,3 +58,9 @@ Music_wrapper::Music_wrapper ()
 {
   
 }
+
+Moment
+Music_wrapper::start_mom () const
+{
+  return element ()->start_mom ();
+}
index 917e14021b4e75d8c2b535526ab42d195e61a922..1da9e5329f022b25d59a73d44f26b1efd5576c46 100644 (file)
@@ -89,6 +89,13 @@ Music::length_mom () const
   return 0;
 }
 
+Moment
+Music::start_mom () const
+{
+  Moment m ;
+  return m;
+}
+
 void
 print_alist (SCM a, SCM port)
 {
index e4866b6064908b5aa236a9b710713c86fd5617ef..21c6c5d090207a876cb403371e9eb0feae1169b5 100644 (file)
@@ -61,7 +61,7 @@ Rhythmic_req::compress (Moment m)
 {
   Duration *d =  unsmob_duration (get_mus_property ("duration"));
 
-  set_mus_property ("duration", d ->compressed (m).smobbed_copy ());
+  set_mus_property ("duration", d ->compressed (m.main_part_).smobbed_copy ());
 }
 
 bool
index 3a41467abcf1bac7d78492a01159c4410cbdbf72..c27bf01d0dad0c5464d853e402fd80bf91d35326 100644 (file)
@@ -52,6 +52,7 @@ static Keyword_ent the_key_tab[]={
   {"elementdescriptions", ELEMENTDESCRIPTIONS},
   {"font", FONT},
   {"grace", GRACE},
+  {"ngrace", NGRACE},
   {"glissando", GLISSANDO},
   {"header", HEADER},
   {"in", IN_T},
diff --git a/lily/new-grace-iterator.cc b/lily/new-grace-iterator.cc
new file mode 100644 (file)
index 0000000..99cd02e
--- /dev/null
@@ -0,0 +1,52 @@
+/*   
+  new-grace-music.cc --  implement New-Grace_music
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "new-grace-music.hh"
+#include "new-grace-iterator.hh"
+
+#include "grace-iterator.hh"
+#include "global-translator.hh"
+#include "warn.hh"
+
+
+New_grace_iterator::~New_grace_iterator () 
+{
+  //  child_iter_p_ = 0;
+}
+
+
+void
+New_grace_iterator::process (Moment m )
+{
+  Moment main ;
+  main.main_part_ = m.grace_mom_;
+  Music_wrapper_iterator::process (main);
+}
+
+void
+New_grace_iterator::construct_children ()
+{
+  Music_wrapper_iterator::construct_children ();
+}
+
+
+
+Moment
+New_grace_iterator::pending_moment () const
+{
+  Moment cp =Music_wrapper_iterator::pending_moment();
+
+  Moment pending;
+  pending.grace_mom_ = - music_length_.main_part_  + cp.main_part_;
+
+  return pending;
+}
+
+
+IMPLEMENT_CTOR_CALLBACK (New_grace_iterator);
diff --git a/lily/new-grace-music.cc b/lily/new-grace-music.cc
new file mode 100644 (file)
index 0000000..d93708c
--- /dev/null
@@ -0,0 +1,48 @@
+/*   
+  grace-music.cc --  implement New_grace_music
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "new-grace-music.hh"
+#include "new-grace-iterator.hh"
+
+void
+New_grace_music::compress (Moment m) 
+{
+  Music_wrapper::compress (m); 
+}
+
+Moment
+New_grace_music::length_mom () const
+{
+  Moment l = Music_wrapper::length_mom ();
+  Moment gl;
+  gl.grace_mom_ = l.main_part_ + l.grace_mom_ ;
+  return gl;
+}
+
+
+Moment
+New_grace_music::start_mom () const
+{
+  return Music::start_mom ();
+}
+
+New_grace_music::New_grace_music ()
+{
+  set_mus_property ("iterator-ctor",
+                   New_grace_iterator::constructor_cxx_function);
+}
+
+New_grace_music::New_grace_music (SCM p)
+  : Music_wrapper (p)
+{
+  set_mus_property ("iterator-ctor",
+                   New_grace_iterator::constructor_cxx_function);
+}
+
+ADD_MUSIC (New_grace_music);
index 5759b85b42874f2d39620bb0059cf259fdc34a32..47ec4d784f8ea40b0f3eba037e328cf3dc85f240 100644 (file)
@@ -15,10 +15,10 @@ Output_property_music_iterator::process (Moment m)
 {
   if (last_processed_mom_ < Moment (0))
     {
-      bool accepted = try_music (music_l_);
+      bool accepted = try_music (music_l ());
       if (!accepted)
-       music_l_->origin ()->warning (_f ("Junking request: `%s'",
-                                         classname (music_l_)));
+       music_l ()->origin ()->warning (_f ("Junking request: `%s'",
+                                         classname (music_l ())));
     }
 
   skip (m);
index 4e76ff5ed8fe37b1312b959f766668c34e8eee46..e9cd3be70ecb18e31b3a6377a5f12798894515ff 100644 (file)
@@ -10,7 +10,7 @@
 #include "paper-score.hh"
 #include "debug.hh"
 #include "axis-group-interface.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
 
 void
 Paper_column::do_break_processing ()
index eacdc63aa8b7ca18f18f8f6d32188d5cc7c149f7..95caa860e01fdfcc8c474f096d477a2cc9ab0f20 100644 (file)
@@ -188,7 +188,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token EXTENDER
 %token FONT
 %token GLISSANDO
-%token GRACE
+%token GRACE NGRACE
 %token HEADER
 %token HYPHEN
 %token IN_T
@@ -806,9 +806,43 @@ Composite_music:
                chm->set_spot (*$3->origin ());
        }
        | GRACE Music {
-               $$ = new Grace_music (SCM_EOL);
+#if 1
+       /*
+               The other version is for easier debugging  of
+               Sequential_music_iterator in combination with grace notes.
+       */
+
+               SCM start = THIS->lexer_p_->lookup_identifier ("startGraceMusic");
+               SCM stop = THIS->lexer_p_->lookup_identifier ("stopGraceMusic");
+               Music *startm = unsmob_music (start);
+               Music *stopm = unsmob_music (stop);
+
+               SCM ms = SCM_EOL;
+               if (stopm) {
+                       stopm = stopm->clone ();
+                       ms = gh_cons (stopm->self_scm (), ms);
+                       scm_unprotect_object (stopm->self_scm ());
+               }
+               ms = gh_cons ($2->self_scm (), ms);
+               scm_unprotect_object ($2->self_scm());
+               if (startm) {
+                       startm = startm->clone ();
+                       ms = gh_cons (startm->self_scm () , ms);
+                       scm_unprotect_object (startm->self_scm ());
+               }
+
+               Music* seq = new Sequential_music (SCM_EOL);
+               seq->set_mus_property ("elements", ms);
+
+               $$ = new New_grace_music (SCM_EOL);
+               $$->set_mus_property ("element", seq->self_scm ());
+               scm_unprotect_object (seq->self_scm ());
+#else
+               $$ = new New_grace_music (SCM_EOL);
                $$->set_mus_property ("element", $2->self_scm ());
                scm_unprotect_object ($2->self_scm ());
+#endif
+
 
        }
        | CONTEXT string '=' string Music {
@@ -1604,7 +1638,7 @@ multiplied_duration:
                $$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
        }
        | multiplied_duration '*' FRACTION {
-               Moment m (gh_scm2int (gh_car ($3)), gh_scm2int (gh_cdr ($3)));
+               Rational  m (gh_scm2int (gh_car ($3)), gh_scm2int (gh_cdr ($3)));
 
                $$ = unsmob_duration ($$)->compressed (m).smobbed_copy ();
        }
index 043f83c55725c3e46e20afe39b152921e10e85ab..68d0516ff515527eecd06b299881d9438d45f9a3 100644 (file)
@@ -62,7 +62,7 @@ Part_combine_music_iterator::ok () const
 void
 Part_combine_music_iterator::construct_children ()
 {
-  Part_combine_music const * m = dynamic_cast<Part_combine_music const*> (music_l_);
+  Part_combine_music const * m = dynamic_cast<Part_combine_music const*> (music_l ());
   
   first_iter_p_ = get_iterator_p (m->first_l ());
   second_iter_p_ = get_iterator_p (m->second_l ());
@@ -141,7 +141,7 @@ int
 Part_combine_music_iterator::get_state (Moment)
 {
   int state = UNKNOWN;
-  Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
+  Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l ());
 
   String w = ly_scm2string (p->get_mus_property ("what"));
     
@@ -157,7 +157,7 @@ Part_combine_music_iterator::get_state (Moment)
   
   Moment now = pending_moment ();
 
-  if (!now.mod_rat (change_mom))
+  if (!now.main_part_.mod_rat (change_mom.main_part_))
     {
       SCM interval = SCM_BOOL_F;
       if (first_until_ < now)
@@ -341,7 +341,7 @@ Part_combine_music_iterator::process (Moment m)
   else
     state = state_;
   
-  Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
+  Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l ());
 
 
   bool previously_combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_
index cd11b6a89d5d4d1be779272f699c8a44870dfaee..0082971d9b4b62dd934b6bc6f7da102175039e05 100644 (file)
@@ -103,7 +103,7 @@ Percent_repeat_engraver::try_music (Music * m)
        meas_len = *unsmob_moment (m);
 
       if (body_length_ < meas_len &&
-         meas_len.mod_rat (body_length_) == Moment (0,0))
+         meas_len.main_part_.mod_rat (body_length_.main_part_) == Moment (0,0))
        repeat_sign_type_ = BEAT;
       else if (meas_len == body_length_)
        repeat_sign_type_ = MEASURE;
index b9248bb7a862869cccce52e5c04ca4c4a0a169a3..3d1120981b578146a4e1de32cade848101b9feaa 100644 (file)
@@ -35,7 +35,7 @@ Percent_repeat_iterator::ok () const
 void
 Percent_repeat_iterator::construct_children ()
 {
-  Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l_);
+  Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l ());
   finish_mom_ = mus->length_mom ();
   child_iter_p_ = get_iterator_p (mus->body ());
 }
@@ -46,11 +46,11 @@ Percent_repeat_iterator::process (Moment m)
 {
   if (!m)
     {
-      Music_iterator *yeah = try_music (music_l_);
+      Music_iterator *yeah = try_music (music_l ());
       if (yeah)
        set_translator (yeah->report_to_l ());
       else
-       music_l_->origin ()->warning ( _ ("no one to print a percent"));
+       music_l ()->origin ()->warning ( _ ("no one to print a percent"));
     }
   
   if (child_iter_p_->ok ())
index 84c8486d0b2086c5e469b35e2591d1edd937f7f7..cea57f3dc3b75a3cc8894bf1f53e1122c7fda42d 100644 (file)
 void
 Property_iterator::process (Moment m)
 {
-  SCM sym = music_l_->get_mus_property ("symbol");
+  SCM sym = music_l ()->get_mus_property ("symbol");
   if (gh_symbol_p (sym))
     {
-      SCM val = music_l_->get_mus_property ("value");
+      SCM val = music_l ()->get_mus_property ("value");
       bool ok= true;
       if (val != SCM_EOL)
        ok = type_check_assignment (val, sym, ly_symbol2scm ("translation-type?"));
@@ -34,7 +34,7 @@ Property_iterator::process (Moment m)
 void
 Property_unset_iterator::process (Moment m)
 {
-  SCM sym = music_l_->get_mus_property ("symbol");
+  SCM sym = music_l ()->get_mus_property ("symbol");
   if (gh_symbol_p (sym))
     {
       report_to_l ()->unset_property (sym);
@@ -46,11 +46,11 @@ Property_unset_iterator::process (Moment m)
 void
 Push_property_iterator::process (Moment m)
 {
-  SCM syms = music_l_->get_mus_property ("symbols");
-  SCM eprop = music_l_->get_mus_property ("grob-property");
-  SCM val = music_l_->get_mus_property ("grob-value");
+  SCM syms = music_l ()->get_mus_property ("symbols");
+  SCM eprop = music_l ()->get_mus_property ("grob-property");
+  SCM val = music_l ()->get_mus_property ("grob-value");
 
-  if (to_boolean (music_l_->get_mus_property ("pop-first")))
+  if (to_boolean (music_l ()->get_mus_property ("pop-first")))
     Translator_def::apply_pushpop_property (report_to_l (),
                                            syms, eprop, SCM_UNDEFINED);
 
@@ -62,8 +62,8 @@ Push_property_iterator::process (Moment m)
 void
 Pop_property_iterator::process (Moment m)
 {
-  SCM syms = music_l_->get_mus_property ("symbols");
-  SCM eprop = music_l_->get_mus_property ("grob-property");
+  SCM syms = music_l ()->get_mus_property ("symbols");
+  SCM eprop = music_l ()->get_mus_property ("grob-property");
   Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED);
   
   Simple_music_iterator::process (m);
index 55372a463f680725fb5c1c01ea5b2cfc53224092..9cee9ae4f40b38fb28145a2c5d45ba5521493063 100644 (file)
@@ -42,7 +42,7 @@ Request_chord_iterator::construct_children ()
 Request_chord*
 Request_chord_iterator::elt_l () const
 {
-  return (Request_chord*) music_l_;
+  return (Request_chord*) music_l ();
 }
 
 SCM
@@ -51,7 +51,7 @@ Request_chord_iterator::get_music (Moment) const
   SCM s = SCM_EOL;
   if (last_processed_mom_ < Moment (0))
     {
-      Music_sequence * ms = dynamic_cast<Music_sequence*> (music_l_);
+      Music_sequence * ms = dynamic_cast<Music_sequence*> (music_l ());
      
       for (SCM m = ms->music_list (); gh_pair_p (m); m = gh_cdr (m))
        {
@@ -66,7 +66,7 @@ Request_chord_iterator::process (Moment m)
 {
   if (last_processed_mom_ < Moment (0))
     {
-      for (SCM s = dynamic_cast<Music_sequence *> (music_l_)->music_list ();
+      for (SCM s = dynamic_cast<Music_sequence *> (music_l ())->music_list ();
           gh_pair_p (s);  s = gh_cdr (s))
        {
          Music *mus = unsmob_music (gh_car (s));
diff --git a/lily/request-chord.cc b/lily/request-chord.cc
new file mode 100644 (file)
index 0000000..084042f
--- /dev/null
@@ -0,0 +1,48 @@
+#include "pitch.hh" 
+#include "request-chord-iterator.hh"
+#include "music-list.hh"
+#include "musical-request.hh"
+
+Request_chord::Request_chord (SCM s)
+  : Simultaneous_music (s)
+{
+  set_mus_property ("iterator-ctor",
+                   Request_chord_iterator::constructor_cxx_function);
+}
+
+Request_chord::Request_chord ()
+{
+  set_mus_property ("iterator-ctor",
+                   Request_chord_iterator::constructor_cxx_function);
+}
+
+
+
+Pitch
+Request_chord::to_relative_octave (Pitch last)
+{
+  for (SCM s = music_list (); gh_pair_p (s);  s = gh_cdr (s))
+    {
+      Music * mus = unsmob_music (gh_car (s));
+      if (Melodic_req *m= dynamic_cast <Melodic_req *> (mus))
+       {
+         Pitch pit = *unsmob_pitch (m->get_mus_property ("pitch"));
+         
+         pit.to_relative_octave (last);
+         m->set_mus_property ("pitch", pit.smobbed_copy ());
+                 
+         return pit;
+       }
+    }
+  return last;
+}
+
+Moment
+Request_chord::start_mom () const
+{
+  return Music::start_mom ();
+}
+
+
+
+ADD_MUSIC (Request_chord);
index 932133f33918cc0e5b1f1782a4fd5eaacc910ddc..7fcfcbc52d6dbb997a61aaa4b85310db45c2d1e0 100644 (file)
@@ -10,7 +10,7 @@
 #include "paper-column.hh"
 #include "debug.hh"
 #include "dimensions.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
 
 Rod::Rod ()
 {
index 8b26f5ece06577277492eda00c38253de8e5fe49..b98327d1a37cc797a7c8f6176833b238cdc3c4ea 100644 (file)
@@ -53,13 +53,20 @@ Switch on any experimental features.  Not for general public use.
 SCM
 set_lily_option (SCM var, SCM val)
 {
+  /*
+    Scheme option usage:
+    lilypond -e "(set-lily-option 'help 0)"
+   */
   if (var == ly_symbol2scm ("help"))
     {
       cout << '\n';
       cout << _ ("Scheme options:");
-      cout << "help"; 
-      cout << "midi-debug (boolean)"; 
-      cout << "testing-level (int)"; 
+      cout << '\n';
+      cout << "  help (any-symbol)"; 
+      cout << '\n';
+      cout << "  midi-debug (boolean)"; 
+      cout << '\n';
+      cout << "  testing-level (int)"; 
       cout << '\n';
       exit (0);
     }
index c387a33959065ac0c1c7145db0bce2a06a8e2713..733aa5a3c045400fefae61d2ed8387c2191a3b8b 100644 (file)
@@ -19,6 +19,9 @@
 #include "translator-def.hh"
 
 
+/*
+  TODO: the column creation logic is rather hairy. Revise it.
+ */
 Score_engraver::Score_engraver ()
 {
   scoreline_l_ =0;
@@ -29,19 +32,17 @@ Score_engraver::Score_engraver ()
 }
 
 void
-Score_engraver::make_columns (Moment w)
+Score_engraver::make_columns ()
 {
   /*
     ugh.
    */
-  if (!command_column_l_
-      || *unsmob_moment (command_column_l_->get_grob_property ("when")) != w)
+  if (!command_column_l_)
+    //      || *unsmob_moment (command_column_l_->get_grob_property ("when")) != w)
     {
       set_columns (new Paper_column (get_property (ly_symbol2scm ("NonMusicalPaperColumn"))),
                   new Paper_column (get_property (ly_symbol2scm ("PaperColumn"))));
   
-      command_column_l_->set_grob_property ("when", w.smobbed_copy ());
-      musical_column_l_->set_grob_property ("when", w.smobbed_copy ());
       command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
 
       Grob_info i1 (command_column_l_, 0), i2 (musical_column_l_,0);
@@ -57,8 +58,8 @@ void
 Score_engraver::prepare (Moment w)
 {
   Global_translator::prepare (w);
-  make_columns (w);
 
+  make_columns ();
   start_translation_timestep ();
 }
 
@@ -70,6 +71,7 @@ Score_engraver::finish ()
    
   check_removal ();
   removal_processing ();
+
 }
 
 /*
@@ -89,11 +91,9 @@ Score_engraver::initialize ()
 
   pscore_p_->typeset_line (new Line_of_score (props));
   
-  make_columns (Moment (0));
+  make_columns ();
   scoreline_l_ = pscore_p_->line_l_;
-
   scoreline_l_->set_bound (LEFT, command_column_l_);
-  
   command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
 
   Engraver_group_engraver::initialize ();
@@ -104,12 +104,13 @@ void
 Score_engraver::finalize ()
 {
   Engraver_group_engraver::finalize ();
-  scoreline_l_->set_bound (RIGHT,command_column_l_);
-  command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
+
+  Grob * cc
+    = unsmob_grob (get_property (ly_symbol2scm ("currentCommandColumn")));
+  scoreline_l_->set_bound (RIGHT, cc);
+  cc->set_grob_property ("breakable", SCM_BOOL_T);
   
   typeset_all ();
-
-  set_columns (0,0);
 }
 
 void
@@ -217,25 +218,25 @@ Score_engraver::stop_translation_timestep ()
       if (! (breaks_i_%8))
        progress_indication ("[" + to_str (breaks_i_) + "]");
     }
+
+  command_column_l_->set_grob_property ("when", now_mom_.smobbed_copy ());
+  musical_column_l_->set_grob_property ("when", now_mom_.smobbed_copy ());
+
+  scoreline_l_->add_column (command_column_l_);
+  scoreline_l_->add_column (musical_column_l_);
+  
+  command_column_l_ = 0;
+  musical_column_l_ = 0;
 }
 
 void
 Score_engraver::set_columns (Paper_column *new_command_l, 
                             Paper_column *new_musical_l)
 {
-  Paper_column * news[] = {new_command_l, new_musical_l};
-  Paper_column **current[] = {&command_column_l_, &musical_column_l_};
-
-  for (int i=00; i< 2; i++) 
-    {
-      if (*current[i])
-       {
-         scoreline_l_->add_column ((*current[i]));
-       }
-      if (news[i])
-       *current[i] = news[i];
-    }
-
+  assert (!command_column_l_ && !musical_column_l_);
+  command_column_l_ = new_command_l;
+  musical_column_l_ = new_musical_l;
+  
   if (new_musical_l)
     set_property ("currentMusicalColumn", new_musical_l->self_scm ());
   if (new_command_l)
index ad1ae7b934d41bf2dd83018001779bcb6a95aef1..0f0f82d89886f97546419266aed3786cd8fad560 100644 (file)
@@ -33,13 +33,14 @@ Sequential_music_iterator::Sequential_music_iterator ()
 {
   cursor_ = SCM_EOL;
   here_mom_ = Moment (0);
-
+  grace_skips_ = 0;
   iter_p_ =0;
 }
 
 Sequential_music_iterator::Sequential_music_iterator (Sequential_music_iterator const &src)
   : Music_iterator (src)
 {
+  grace_skips_ = src.grace_skips_;
   cursor_ = src.cursor_;
   here_mom_ = src.here_mom_;
   if (src.iter_p_)
@@ -53,10 +54,46 @@ Sequential_music_iterator::~Sequential_music_iterator ()
   delete iter_p_;
 }
 
+
+Grace_skip *
+get_grace_skips (SCM cursor)
+{
+  Moment here (0);
+  Moment last (here);
+  Grace_skip *head = 0;
+  Grace_skip **tail = &head;
+  bool first = true; 
+
+  
+  for (; gh_pair_p (cursor); cursor = gh_cdr (cursor))
+    {
+      Music * mus = unsmob_music (gh_car (cursor));
+      Moment l =mus->length_mom ();
+      if (l.main_part_)
+       {
+         first = false;
+         last = here;
+         here += l;
+       }
+      else if(l.grace_mom_ && !first)
+       {
+         assert (!l.main_part_);
+         Grace_skip *p =new Grace_skip;
+         p->start_ = last;
+         p->length_ = (here - last).main_part_;
+         p->grace_length_ = l.grace_mom_;
+         p->next_ = 0;
+         *tail = p;
+         tail = &(*tail)->next_; 
+       }
+    }
+  return  head;
+}
+
 void
 Sequential_music_iterator::construct_children ()
 {
-  cursor_ = dynamic_cast<Music_sequence const*> (music_l_)->music_list ();
+  cursor_ = dynamic_cast<Music_sequence const*> (music_l ())->music_list ();
 
   iter_p_ = gh_pair_p (cursor_) ?  get_iterator_p (unsmob_music (gh_car (cursor_))) : 0;
   while (iter_p_ && !iter_p_->ok ())
@@ -64,12 +101,15 @@ Sequential_music_iterator::construct_children ()
       next_element ();
     }
 
+  grace_skips_ = get_grace_skips (cursor_);
+
+  here_mom_ = music_l ()->start_mom ();
+
   /*
     iter_p_->ok () is tautology, but what the heck.
    */
   if (iter_p_ && iter_p_->ok ()) 
     descend_to_child ();
-
 }
 
 
@@ -80,7 +120,30 @@ Sequential_music_iterator::construct_children ()
 void
 Sequential_music_iterator::next_element ()
 {
-  here_mom_ += iter_p_->music_length_mom ();
+  Moment len =iter_p_->music_length_mom ();
+  Moment start  = iter_p_->music_start_mom ();
+  assert (!grace_skips_  || grace_skips_->start_ >= here_mom_);
+
+  if (len.main_part_ && grace_skips_ && grace_skips_->start_ == here_mom_)
+    {
+      Moment sk;
+      sk.main_part_ = grace_skips_->length_;
+      here_mom_ +=  sk;
+      here_mom_.grace_mom_ = - grace_skips_->grace_length_;
+
+      Grace_skip * n =grace_skips_->next_;
+      delete       grace_skips_;
+      grace_skips_ = n;
+    }
+  else if (len.grace_mom_)
+    {
+      here_mom_.grace_mom_ =0;
+    }
+  else
+    {
+      here_mom_ += len - start;
+    }
+  
   delete iter_p_;
   cursor_ = gh_cdr (cursor_);
 
@@ -159,9 +222,9 @@ Sequential_music_iterator::get_music (Moment until)const
   return s;
 }
 /*
-  Skip events till UNTIL. We don't do any other side effects (such as
-  moving descending to child iterator contexts, because they might
-  depend on \context specs and \translator changes being executed
+  Skip events till UNTIL. We don't do any other side effects such as
+  descending to child iterator contexts, because they might depend on
+  \context specs and \translator changes being executed
     
  */
 void
@@ -185,7 +248,20 @@ Sequential_music_iterator::process (Moment until)
 {
   while (iter_p_)
     {
-      iter_p_->process (until - here_mom_);
+      if (grace_skips_ &&
+         grace_skips_->start_ == here_mom_
+         && (grace_skips_->start_ + grace_skips_->length_).main_part_ ==
+         until.main_part_)
+       {
+         /*
+           do the stuff/note/rest preceding a grace.
+          */
+         Moment u = until;
+         u.grace_mom_ = 0;
+         iter_p_->process (u - here_mom_);
+       }
+      else
+       iter_p_->process (until - here_mom_ + iter_p_->music_start_mom ());
 
       /*
        if the iter is still OK, there must be events left that have
@@ -204,7 +280,18 @@ Sequential_music_iterator::process (Moment until)
 Moment
 Sequential_music_iterator::pending_moment () const
 {
-  return iter_p_->pending_moment () + here_mom_;
+  Moment cp = iter_p_->pending_moment ();
+
+  if (grace_skips_
+      && here_mom_ == grace_skips_->start_
+      && cp.main_part_ >=  grace_skips_->length_)
+    {
+      cp += here_mom_ ;
+      cp.grace_mom_ = - grace_skips_->grace_length_;
+      return cp;
+    }
+  else
+    return cp + here_mom_ - iter_p_->music_start_mom ();
 }
 
 
diff --git a/lily/sequential-music.cc b/lily/sequential-music.cc
new file mode 100644 (file)
index 0000000..8e38c38
--- /dev/null
@@ -0,0 +1,30 @@
+
+#include "music-list.hh"
+#include "sequential-music-iterator.hh"
+
+Sequential_music::Sequential_music (SCM head)
+  : Music_sequence (head)
+{
+  set_mus_property ("iterator-ctor",
+                   Sequential_music_iterator::constructor_cxx_function);
+}
+Sequential_music::Sequential_music ()
+  : Music_sequence ()
+{
+  set_mus_property ("iterator-ctor",
+                   Sequential_music_iterator::constructor_cxx_function);
+}
+
+
+Moment
+Sequential_music::length_mom () const
+{
+  return cumulative_length ();
+}
+ADD_MUSIC (Sequential_music);
+
+Moment
+Sequential_music::start_mom () const
+{
+  return first_start ();
+}
index ef83a5abda1a3de36eb1a633c2fb50b4b8b406a7..002f070009baf856273bc00c32c5b19ffb4f2fe7 100644 (file)
@@ -41,7 +41,11 @@ Simple_music_iterator::pending_moment ()const
 void
 Simple_music_iterator::skip (Moment m)
 {
-  music_l_ = 0;
+  /*
+    docme??!!
+   */
+  //  music_l_ = 0;
+  
   last_processed_mom_ = m;
 }
 
index cea9d7079d0b8a1b52ee56ff722b11b76ed9a20c..2b9bbdde8348a4e74f4f6f34afd3249e4de0163a 100644 (file)
@@ -19,7 +19,7 @@
 #include "rod.hh"
 #include "warn.hh"
 #include "column-x-positions.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
 #include "dimensions.hh"
 
 Simple_spacer::Simple_spacer ()
@@ -170,7 +170,7 @@ Simple_spacer::add_columns (Link_array<Grob> cols)
   for (int i=0; i < cols.size () - 1; i++)
     {
       SCM spring_params = SCM_UNDEFINED;
-      for (SCM s = Spaceable_grob::get_ideal_distances (cols[i]);
+      for (SCM s = cols[i]->get_grob_property ("ideal-distances");
           spring_params == SCM_UNDEFINED && gh_pair_p (s);
           s = gh_cdr (s))
        {
index 3265bee03d2c01f7f229cdcb1c0ce61ca99dec2d..d72c81cea183196fa4275896625b2078833e3f40 100644 (file)
@@ -12,6 +12,7 @@
 #include "music-list.hh"
 #include "killing-cons.tcc"
 
+
 Simultaneous_music_iterator::Simultaneous_music_iterator ()
 {
   separate_contexts_b_ = false;
@@ -48,7 +49,7 @@ void
 Simultaneous_music_iterator::construct_children ()
 {
   int j = 0;
-  Music_sequence const *sim = dynamic_cast<Music_sequence const*> (music_l_);
+  Music_sequence const *sim = dynamic_cast<Music_sequence const*> (music_l ());
 
   SCM i = sim->music_list ();
   for (; gh_pair_p (i); i = gh_cdr (i), j++)
diff --git a/lily/simultaneous-music.cc b/lily/simultaneous-music.cc
new file mode 100644 (file)
index 0000000..51bc213
--- /dev/null
@@ -0,0 +1,41 @@
+
+#include "moment.hh"
+#include "pitch.hh"
+#include "simultaneous-music-iterator.hh"
+#include "music-list.hh"
+
+Moment
+Simultaneous_music::length_mom () const
+{
+  return maximum_length ();
+}
+
+Moment
+Simultaneous_music::start_mom () const
+{
+  return minimum_start ();
+}
+
+
+
+Simultaneous_music::Simultaneous_music (SCM head)
+  : Music_sequence (head)
+{
+  set_mus_property ("iterator-ctor",
+                   Simultaneous_music_iterator::constructor_cxx_function);
+}
+
+Simultaneous_music::Simultaneous_music ()
+  : Music_sequence ()
+{
+  set_mus_property ("iterator-ctor",
+                   Simultaneous_music_iterator::constructor_cxx_function);
+  
+}
+
+Pitch
+Simultaneous_music::to_relative_octave (Pitch p)
+{
+  return do_relative_octave (p, true);
+}
+ADD_MUSIC (Simultaneous_music);
diff --git a/lily/spaceable-element.cc b/lily/spaceable-element.cc
deleted file mode 100644 (file)
index b0d6779..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*   
-  spaceable-element.cc --  implement Spaceable_grob
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include "spaceable-element.hh"
-#include "grob.hh"
-#include "warn.hh"
-
-SCM
-Spaceable_grob::get_minimum_distances (Grob*me)
-{
-  return me->get_grob_property ("minimum-distances");
-}
-
-/*todo: merge code of spring & rod?
- */
-void
-Spaceable_grob::add_rod (Grob *me , Grob * p, Real d)
-{
-  SCM mins = get_minimum_distances (me);
-  SCM newdist = gh_double2scm (d);
-  for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM dist = gh_car (s);
-      if (gh_car (dist) == p->self_scm ())
-       {
-         gh_set_cdr_x (dist, scm_max (gh_cdr (dist),
-                                      newdist));
-         return ;
-       }
-    }
-
-  mins = gh_cons (gh_cons (p->self_scm (), newdist), mins);
-  me->set_grob_property ("minimum-distances", mins);
-}
-
-void
-Spaceable_grob::add_spring (Grob*me, Grob * p, Real d, Real strength)
-{
-  SCM mins = get_ideal_distances (me);
-  SCM newdist= gh_double2scm (d);
-  for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
-    {
-      SCM dist = gh_car (s);
-      if (gh_car (dist) == p->self_scm ())
-       {
-         programming_error ("already have that spring");
-         return ;
-       }
-    }
-  SCM newstrength= gh_double2scm (strength);  
-  
-  mins = gh_cons (gh_cons (p->self_scm (), gh_cons (newdist, newstrength)), mins);
-  me->set_grob_property ("ideal-distances", mins);
-}
-
-SCM
-Spaceable_grob::get_ideal_distances (Grob*me)
-{
-  return me->get_grob_property ("ideal-distances");
-}
-
-
-void
-Spaceable_grob::remove_interface (Grob*me)
-{
-  me->remove_grob_property ("minimum-distances");
-  me->remove_grob_property ("ideal-distances");
-  me->remove_grob_property ("dir-list");
-}
-
-
-void
-Spaceable_grob::set_interface (Grob*me)
-{
-  me->set_interface (ly_symbol2scm ("spaceable-element-interface"));
-}
diff --git a/lily/spaceable-grob.cc b/lily/spaceable-grob.cc
new file mode 100644 (file)
index 0000000..8aa3209
--- /dev/null
@@ -0,0 +1,77 @@
+/*   
+  spaceable-grob.cc --  implement Spaceable_grob
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "spaceable-grob.hh"
+#include "grob.hh"
+#include "warn.hh"
+
+SCM
+Spaceable_grob::get_minimum_distances (Grob*me)
+{
+  return me->get_grob_property ("minimum-distances");
+}
+
+/*todo: merge code of spring & rod?
+ */
+void
+Spaceable_grob::add_rod (Grob *me , Grob * p, Real d)
+{
+  SCM mins = get_minimum_distances (me);
+  SCM newdist = gh_double2scm (d);
+  for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
+    {
+      SCM dist = gh_car (s);
+      if (gh_car (dist) == p->self_scm ())
+       {
+         gh_set_cdr_x (dist, scm_max (gh_cdr (dist),
+                                      newdist));
+         return ;
+       }
+    }
+
+  mins = gh_cons (gh_cons (p->self_scm (), newdist), mins);
+  me->set_grob_property ("minimum-distances", mins);
+}
+
+void
+Spaceable_grob::add_spring (Grob*me, Grob * p, Real d, Real strength)
+{
+  SCM mins = me->get_grob_property ("ideal-distances");
+  SCM newdist= gh_double2scm (d);
+  for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
+    {
+      SCM dist = gh_car (s);
+      if (gh_car (dist) == p->self_scm ())
+       {
+         programming_error ("already have that spring");
+         return ;
+       }
+    }
+  SCM newstrength= gh_double2scm (strength);  
+  
+  mins = gh_cons (gh_cons (p->self_scm (), gh_cons (newdist, newstrength)), mins);
+  me->set_grob_property ("ideal-distances", mins);
+}
+
+
+
+void
+Spaceable_grob::remove_interface (Grob*me)
+{
+  me->remove_grob_property ("minimum-distances");
+  me->remove_grob_property ("ideal-distances");
+  me->remove_grob_property ("dir-list");
+}
+
+
+void
+Spaceable_grob::set_interface (Grob*me)
+{
+  me->set_interface (ly_symbol2scm ("spaceable-grob-interface"));
+}
index 0b3b58673159f08145eec098644ca9d7950323db..b02847bf66bd9d9548e2f7476789b0df4f8b5b0b 100644 (file)
@@ -64,7 +64,7 @@ int
 Rhythmic_tuple::time_compare (Rhythmic_tuple const &h1,
                              Rhythmic_tuple const &h2)
 {
-  return (h1.end_ - h2.end_).sign ();
+  return (h1.end_ - h2.end_).main_part_.sign ();
 }
 
 Spacing_engraver::Spacing_engraver ()
index bf85b6068350f03b201789508bc17cb0fc185087..31d44a0d7ec49426f85b4e94d160f3cc1d2b7268 100644 (file)
@@ -53,10 +53,18 @@ Spacing_spanner::do_measure (Grob*me, Link_array<Grob> cols)
     {
       if (dynamic_cast<Paper_column*> (cols[i])->musical_b ())
        {
+         Moment *when = unsmob_moment (cols[i]->get_grob_property  ("when"));
+
+         /*
+           ignore grace notes for shortest notes.
+          */
+         if (when && when->grace_mom_)
+           continue;
+         
          SCM  st = cols[i]->get_grob_property ("shortest-starter-duration");
          Moment this_shortest = *unsmob_moment (st);
          shortest = shortest <? this_shortest;
-         if (!mean_shortest.infty_b ())
+         if (!mean_shortest.main_part_.infty_b ())
            {
              n++;
              mean_shortest += this_shortest;
@@ -65,7 +73,6 @@ Spacing_spanner::do_measure (Grob*me, Link_array<Grob> cols)
     }
   mean_shortest /= n;
 
-
   for (int i= 0; i < cols.size () - 1; i++)
     {
       Item * l = dynamic_cast<Item*> (cols[i]);
@@ -266,12 +273,28 @@ Spacing_spanner::note_spacing (Grob*me, Grob *lc, Grob *rc,
   Real dist = get_duration_space (me, shortest_playing_len, shortest);
   dist *= (double) (delta_t / shortest_playing_len);
 
+
+
   /*
     UGH: KLUDGE!
   */
   
   if (delta_t > Moment (1,32))
     dist += stem_dir_correction (me, lc,rc);
+
+
+  Moment *lm = unsmob_moment (lc->get_grob_property ("when"));
+  Moment *rm = unsmob_moment (rc->get_grob_property ("when"));
+
+  if (lm && rm)
+    {
+      if (lm->grace_mom_ && rm->grace_mom_)
+       dist *= 0.5;
+      else if (!rm->grace_mom_ && lm->grace_mom_)
+       dist *= 0.7;
+    }
+
+  
   return dist;
 }
 
index a4e19592d0a468007f8db55ac7cf50c422a29aa5..9d110e8a6312fd3886713caa202ffe521b219a27 100644 (file)
@@ -59,8 +59,6 @@ Span_bar_engraver::acknowledge_grob (Grob_info i)
        {
          spanbar_p_ = new Item (get_property ("SpanBar"));
          Span_bar::set_interface (spanbar_p_);
-               
-         spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
          spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
 
          announce_grob (spanbar_p_,0);
index fddeb470fe339f9d0f1cf980bfc3cf9273acd1e2..b564cf17909326ff82ea1184eb4e505485db374b 100644 (file)
@@ -25,6 +25,73 @@ Span_bar::add_bar (Grob*me, Grob*b)
   me->add_dependency (b);
 }
 
+MAKE_SCHEME_CALLBACK (Span_bar,brew_molecule,1);
+
+/**
+ * Limitations/Bugs:
+ *
+ * (1) Elements from 'me->get_grob_property ("elements")' must be
+ * ordered according to their y coordinates relative to their common
+ * axis group parent.  Otherwise, the computation goes mad.  (TODO:
+ * apply a sort algorithm that ensures this precondition.)  However,
+ * until now, I have seen no case where lily has not fulfilled this
+ * precondition.
+ *
+ * (2) This method depends on bar_engraver not being removed from
+ * staff context.  If bar_engraver is removed, the size of the staff
+ * lines is evaluated as 0, which results in a solid span bar line
+ * with faulty y coordinate.
+ */
+
+/*
+  This routine was originally by Juergen Reuter, but it was a on the
+  bulky side. Rewritten by Han-Wen. 
+ */
+SCM
+Span_bar::brew_molecule (SCM smobbed_me) 
+{
+  Grob *me = unsmob_grob (smobbed_me);
+  SCM first_elt = me->get_grob_property ("elements");
+
+  // compute common refpoint of elements
+  Grob *refp = me;
+  for (SCM elts = first_elt; gh_pair_p (elts); elts = gh_cdr (elts))
+    {
+      SCM smobbed_staff_bar = gh_car (elts);
+      Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
+      refp = staff_bar->common_refpoint (refp, Y_AXIS);
+    }
+
+  // evaluate glyph
+  Span_bar::evaluate_glyph(me);
+  SCM glyph = me->get_grob_property (ly_symbol2scm ("glyph"));
+  String glyph_str = ly_scm2string (glyph);
+
+  // compose span_bar_mol
+  Molecule span_bar_mol;
+  Grob *prev_staff_bar = 0;
+  for (SCM elts = first_elt; gh_pair_p (elts); elts = gh_cdr (elts))
+    {
+      SCM smobbed_staff_bar = gh_car (elts);
+      Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
+      if (prev_staff_bar)
+       {
+         Interval l(prev_staff_bar->extent (refp, Y_AXIS)[UP],
+                    staff_bar->extent (refp, Y_AXIS)[DOWN]);
+
+         Molecule interbar
+           = Bar::compound_barline (staff_bar, glyph_str, l.length());
+         interbar.translate_axis (l.center (), Y_AXIS);
+         span_bar_mol.add_molecule (interbar);
+       }
+      prev_staff_bar = staff_bar;
+    }
+
+  span_bar_mol.translate_axis (- me->relative_coordinate (refp, Y_AXIS), Y_AXIS);
+  
+  return span_bar_mol.smobbed_copy ();
+}
+
 MAKE_SCHEME_CALLBACK (Span_bar,width_callback,2);
 SCM
 Span_bar::width_callback (SCM element_smob, SCM scm_axis)
@@ -36,7 +103,7 @@ Span_bar::width_callback (SCM element_smob, SCM scm_axis)
 
   /*
     urg.
-   */
+  */
   Molecule m = Bar::compound_barline (se, gl, 40 PT);
   
   return ly_interval2scm (m.extent (X_AXIS));
@@ -52,7 +119,7 @@ Span_bar::before_line_breaking (SCM smob)
   /*
     no need to call   Bar::before_line_breaking (), because the info
     in ELEMENTS already has been procced by Bar::before_line_breaking ().
-   */
+  */
   return SCM_UNSPECIFIED;
 }
 
@@ -144,7 +211,7 @@ Span_bar::get_bar_size (SCM smob)
     {
       /*
        This happens if the bars are hara-kiried from under us.
-       */
+      */
       me->suicide ();
       return gh_double2scm (-1);
     }
index 476007d1228bff4bce2aa2de3a2c99ffeb51080d..93ef33f59ef0327cfe0a2e687d80b6bd12c6b992 100644 (file)
@@ -10,7 +10,7 @@
 #include "spring.hh"
 #include "debug.hh"
 #include "item.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
 #include "paper-column.hh"
 
 Spring::Spring ()
index 7eac4dfe63b9a5912f059ab9ed0ce7c9505e1a5f..aca140aaf755545963d80bdf519985a22db24e29 100644 (file)
@@ -511,6 +511,7 @@ Stem::brew_molecule (SCM smob)
   Interval stem_y (y1,y2);
   stem_y.unite (Interval (y2,y1));
 
+  // dy?
   Real dy = Staff_symbol_referencer::staff_space (me)/2.0;
     
   if (Grob *hed = support_head (me))
@@ -524,7 +525,10 @@ Stem::brew_molecule (SCM smob)
   
   if (!invisible_b (me))
     {
-      Real stem_width = gh_scm2double (me->get_grob_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness");
+      Real stem_width = gh_scm2double (me->get_grob_property ("thickness"))
+       // URG
+       * me->paper_l ()->get_var ("stafflinethickness");
+      
       Molecule ss =Lookup::filledbox (Box (Interval (-stem_width/2, stem_width/2),
                                           Interval (stem_y[DOWN]*dy, stem_y[UP]*dy)));
       mol.add_molecule (ss);
index ca954b5e080ded5f1a27f8c05fcd254f1bc4231f..061650bbffd65a102061c95a8f7ec5023f969d55 100644 (file)
@@ -310,5 +310,5 @@ int
 CHead_melodic_tuple::time_compare (CHead_melodic_tuple const&h1,
                                   CHead_melodic_tuple const &h2)
 {
-  return (h1.end_ - h2.end_).sign ();
+  return Moment::compare(h1.end_,  h2.end_);
 }
index ab1ef29966fef3eaa77880f00e3d18c4ed824b44..e25e6cb4b2af62735e2019d6c6eb2f1a6b7a7882 100644 (file)
@@ -231,5 +231,5 @@ int
 CNote_melodic_tuple::time_compare (CNote_melodic_tuple const&h1,
                                   CNote_melodic_tuple const &h2)
 {
-  return (h1.end_ - h2.end_).sign ();
+  return (h1.end_ - h2.end_).main_part_.sign ();
 }
index ee8074c6bc0497b676df5e8d6dde3f181070bd9d..b666f766bd929659016df64acd405407b211ad30 100644 (file)
@@ -18,11 +18,11 @@ Time_scaled_music_iterator::process (Moment m)
 {
   if (!m)
     {
-      Music_iterator *yeah = try_music (music_l_);
+      Music_iterator *yeah = try_music (music_l ());
       if (yeah)
        set_translator (yeah->report_to_l ());
       else
-       music_l_->origin ()->warning (_ ("no one to print a tuplet start bracket"));
+       music_l ()->origin ()->warning (_ ("no one to print a tuplet start bracket"));
     }
 
   Music_wrapper_iterator::process (m);
index ba462c16739e30e746a78f6dda43df3052db7d43..fb021095830bcb4f58a7005fa4bfdc8014dec803 100644 (file)
   Do time bookkeeping
  */
 class Timing_engraver : public Timing_translator, public Engraver
-{   
+{
 protected:
+  /*
+    Needed to know whether we're advancing in grace notes, or not.
+   */
+  Moment last_moment_;
+  
   virtual void start_translation_timestep ();
   virtual void stop_translation_timestep ();
   virtual void process_music ();
+
 public:
+  Timing_engraver ();
   VIRTUAL_COPY_CONS (Translator);
 };
 
+
+Timing_engraver::Timing_engraver ()
+{
+  last_moment_.main_part_ = Rational (-1);
+}
+
 ADD_THIS_TRANSLATOR (Timing_engraver);
 
 void
@@ -33,20 +46,27 @@ Timing_engraver::start_translation_timestep ()
   Timing_translator::start_translation_timestep ();
 
   SCM nonauto = get_property ("barNonAuto");
-
+  Moment now = now_mom ();
   SCM which = get_property ("whichBar");
+
+  /*
+    Set the first bar of the score? 
+   */
   if (!gh_string_p (which))
-    which = now_mom ()
+    which
+      = (now.main_part_ || now.main_part_ == last_moment_.main_part_)
       ? SCM_EOL : ly_str02scm ("|");
   
   if (!gh_string_p (which) && !to_boolean (nonauto))
     {
       SCM always = get_property ("barAlways");
-      if (!measure_position ()
-         || (to_boolean (always)))
+      Moment mp = measure_position ();
+      if ( (last_moment_.main_part_ != now.main_part_
+           && !mp.main_part_)
+          || (to_boolean (always)))
        {
          /* should this work, or be junked?  See input/bugs/no-bars.ly */
-         which=get_property ("defaultBarType");
+         which = get_property ("defaultBarType");
        }
     }
 
@@ -57,7 +77,8 @@ void
 Timing_engraver::stop_translation_timestep ()
 {
   Timing_translator::stop_translation_timestep ();
-  daddy_trans_l_->set_property ("whichBar", SCM_EOL);  
+  daddy_trans_l_->set_property ("whichBar", SCM_EOL);
+  last_moment_ = now_mom ();
 }
 
 
index aa4882853075520b62e236629e93fe3c5c039e8e..dbe365e11c2c81f3001d09150464c6df75b57ca5 100644 (file)
@@ -18,7 +18,6 @@
   TODO: change the rest of lily, so communication with
   Timing_translator is only done through properties.  This means the
   class declaration can go here.  */
-
 bool
 Timing_translator::try_music (Music*r)
 {
@@ -33,7 +32,7 @@ Timing_translator::try_music (Music*r)
 void
 Timing_translator::process_music ()
 {
-  if (check_ && measure_position ())
+  if (check_ && measure_position ().main_part_)
     {
       check_->origin ()->warning (_f ("barcheck failed at: %s", 
                                      measure_position ().str ()));
@@ -44,7 +43,6 @@ Timing_translator::process_music ()
     }
 }
 
-
 void
 Timing_translator::stop_translation_timestep ()
 {
@@ -92,25 +90,21 @@ Timing_translator::initialize ()
   daddy_trans_l_->set_property ("beatLength", Moment (1,4).smobbed_copy ());
 }
 
-Moment
+Rational
 Timing_translator::measure_length () const
 {
   SCM l = get_property ("measureLength");
   if (unsmob_moment (l))
-    return *unsmob_moment (l);
+    return unsmob_moment (l)->main_part_;
   else
-    return Moment (1);
+    return Rational (1);
 }
 
-
-
 Timing_translator::Timing_translator ()
 {
 
-
 }
 
-
 Moment
 Timing_translator::measure_position () const
 {
@@ -120,8 +114,8 @@ Timing_translator::measure_position () const
   if (unsmob_moment (sm))
     {
       m = *unsmob_moment (sm);
-      while (m < Moment (0))
-       m += measure_length ();
+      while (m.main_part_ < Rational (0))
+       m.main_part_ += measure_length ();
     }
   
   return m;
@@ -130,7 +124,7 @@ Timing_translator::measure_position () const
 void
 Timing_translator::start_translation_timestep ()
 {
-       check_ =00;
+  check_ = 0;
   Translator *t = this;
   Global_translator *global_l =0;
   do
@@ -174,10 +168,10 @@ Timing_translator::start_translation_timestep ()
   SCM cad = get_property ("timing");
   bool c= to_boolean (cad);
 
-  Moment len = measure_length ();
-  while (c && measposp >= len)
+  Rational len = measure_length ();
+  while (c && measposp.main_part_ >= len)
     {
-      measposp -= len;
+      measposp.main_part_ -= len;
       b ++;
     }
 
index 33fa92d9cd1b93ea70fcc3829a99b16be220dffd..2643670a0acfb661d02c4b2ed04737361087f2bb 100644 (file)
@@ -12,7 +12,6 @@
 #include "debug.hh"
 #include "moment.hh"
 #include "scm-hash.hh"
-#include "killing-cons.tcc"
 #include "translator-def.hh"
 
 Translator_group::Translator_group (Translator_group const&s)
index 93bc97d5f3042fcbec3ec69fe1d01e3e6d401a6b..56c6195aed0864c6da2c0528019674d6f0232ee5 100644 (file)
@@ -120,7 +120,7 @@ the  alternative just set.
 void
 Unfolded_repeat_iterator::next_element (bool side_effect) 
 {
-  Repeated_music * repmus =dynamic_cast<Repeated_music *> (music_l_);
+  Repeated_music * repmus =dynamic_cast<Repeated_music *> (music_l ());
   delete current_iter_p_;
   current_iter_p_ =0;
 
@@ -256,7 +256,7 @@ Unfolded_repeat_iterator::pending_moment () const
 void
 Unfolded_repeat_iterator::construct_children ()
 {
-  Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l_);
+  Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l ());
   
   alternative_cons_ = (mus->alternatives ())
     ? mus->alternatives ()->music_list ()
diff --git a/ly/a4-init.ly b/ly/a4-init.ly
new file mode 100644 (file)
index 0000000..8c729c5
--- /dev/null
@@ -0,0 +1,5 @@
+\version "1.3.146"
+% a4.ly
+
+hsize = 210.0 \mm
+vsize = 296.9 \mm
diff --git a/ly/a4.ly b/ly/a4.ly
deleted file mode 100644 (file)
index 8c729c5..0000000
--- a/ly/a4.ly
+++ /dev/null
@@ -1,5 +0,0 @@
-\version "1.3.146"
-% a4.ly
-
-hsize = 210.0 \mm
-vsize = 296.9 \mm
diff --git a/ly/accordion-defs-init.ly b/ly/accordion-defs-init.ly
new file mode 100644 (file)
index 0000000..f363efc
--- /dev/null
@@ -0,0 +1,56 @@
+\version "1.3.146"
+% Symbols needed to print accordion music
+% 
+%  2' = T
+%  4' = F
+%  8' = E
+% 16' = S
+%
+
+accDiscant = \script "accDiscant"
+accDiscantF = \script "accDiscantF"
+accDiscantE = \script "accDiscantE"
+accDiscantEh = \script "accDiscantEh"
+accDiscantFE = \script "accDiscantFE"
+accDiscantFEh = \script "accDiscantFEh"
+accDiscantEE = \script "accDiscantEE"
+accDiscantFEE = \script "accDiscantFEE"
+accDiscantEEE = \script "accDiscantEEE"
+accDiscantFEEE = \script "accDiscantFEEE"
+accDiscantS = \script "accDiscantS"
+accDiscantFS = \script "accDiscantFS"
+accDiscantES = \script "accDiscantES"
+accDiscantEhS = \script "accDiscantEhS"
+accDiscantFES = \script "accDiscantFES"
+accDiscantFEhS = \script "accDiscantFEhS"
+accDiscantEES = \script "accDiscantEES"
+accDiscantFEES = \script "accDiscantFEES"
+accDiscantEEES = \script "accDiscantEEES"
+accDiscantFEEES = \script "accDiscantFEEES"
+accDiscantSS = \script "accDiscantSS"
+accDiscantESS = \script "accDiscantESS"
+accDiscantEESS = \script "accDiscantEESS"
+accDiscantEEESS = \script "accDiscantEEESS"
+
+accFreebase = \script "accFreebase"
+accFreebaseF = \script "accFreebaseF"
+accFreebaseE = \script "accFreebaseE"
+accFreebaseFE = \script "accFreebaseFE"
+
+accBayanbase = \script "accBayanbase"
+accBayanbaseT = \script "accBayanbaseT"
+accBayanbaseE = \script "accBayanbaseE"
+accBayanbaseTE = \script "accBayanbaseTE"
+accBayanbaseEE = \script "accBayanbaseEE"
+accBayanbaseTEE = \script "accBayanbaseTEE"
+
+accStdbase = \script "accStdbase"
+accStdbaseFE = \script "accStdbaseFE"
+accStdbaseTFE = \script "accStdbaseTFE"
+accStdbaseMES = \script "accStdbaseMES"
+accStdbaseTFMES = \script "accStdbaseTFMES"
+
+accSB = \script "accSB"
+accBB = \script "accBB"
+accOldEE = \script "accOldEE"
+accOldEES = \script "accOldEES"
diff --git a/ly/accordion-defs.ly b/ly/accordion-defs.ly
deleted file mode 100644 (file)
index f363efc..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\version "1.3.146"
-% Symbols needed to print accordion music
-% 
-%  2' = T
-%  4' = F
-%  8' = E
-% 16' = S
-%
-
-accDiscant = \script "accDiscant"
-accDiscantF = \script "accDiscantF"
-accDiscantE = \script "accDiscantE"
-accDiscantEh = \script "accDiscantEh"
-accDiscantFE = \script "accDiscantFE"
-accDiscantFEh = \script "accDiscantFEh"
-accDiscantEE = \script "accDiscantEE"
-accDiscantFEE = \script "accDiscantFEE"
-accDiscantEEE = \script "accDiscantEEE"
-accDiscantFEEE = \script "accDiscantFEEE"
-accDiscantS = \script "accDiscantS"
-accDiscantFS = \script "accDiscantFS"
-accDiscantES = \script "accDiscantES"
-accDiscantEhS = \script "accDiscantEhS"
-accDiscantFES = \script "accDiscantFES"
-accDiscantFEhS = \script "accDiscantFEhS"
-accDiscantEES = \script "accDiscantEES"
-accDiscantFEES = \script "accDiscantFEES"
-accDiscantEEES = \script "accDiscantEEES"
-accDiscantFEEES = \script "accDiscantFEEES"
-accDiscantSS = \script "accDiscantSS"
-accDiscantESS = \script "accDiscantESS"
-accDiscantEESS = \script "accDiscantEESS"
-accDiscantEEESS = \script "accDiscantEEESS"
-
-accFreebase = \script "accFreebase"
-accFreebaseF = \script "accFreebaseF"
-accFreebaseE = \script "accFreebaseE"
-accFreebaseFE = \script "accFreebaseFE"
-
-accBayanbase = \script "accBayanbase"
-accBayanbaseT = \script "accBayanbaseT"
-accBayanbaseE = \script "accBayanbaseE"
-accBayanbaseTE = \script "accBayanbaseTE"
-accBayanbaseEE = \script "accBayanbaseEE"
-accBayanbaseTEE = \script "accBayanbaseTEE"
-
-accStdbase = \script "accStdbase"
-accStdbaseFE = \script "accStdbaseFE"
-accStdbaseTFE = \script "accStdbaseTFE"
-accStdbaseMES = \script "accStdbaseMES"
-accStdbaseTFMES = \script "accStdbaseTFMES"
-
-accSB = \script "accSB"
-accBB = \script "accBB"
-accOldEE = \script "accOldEE"
-accOldEES = \script "accOldEES"
diff --git a/ly/book-init-init.ly b/ly/book-init-init.ly
new file mode 100644 (file)
index 0000000..f12fc86
--- /dev/null
@@ -0,0 +1,14 @@
+% Toplevel initialisation file. 
+       
+\version "1.3.146"
+
+
+\include "declarations-init.ly"
+\include "paper16-init.ly"
+
+ \paper{
+       \paperSixteen
+}
+
+
+\maininput
diff --git a/ly/book-init.ly b/ly/book-init.ly
deleted file mode 100644 (file)
index f6c8651..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "1.3.146"
-
-
-\include "declarations.ly"
-\include "paper16.ly"
-
- \paper{
-       \paperSixteen
-}
-
-
-\maininput
diff --git a/ly/center-init.ly b/ly/center-init.ly
new file mode 100644 (file)
index 0000000..72ecace
--- /dev/null
@@ -0,0 +1,15 @@
+% Toplevel initialisation file. 
+       
+\version "1.3.146"
+
+
+\include "declarations-init.ly"
+\include "paper16-init.ly"
+
+ \paper { 
+  \paperSixteen
+%  linewidth = 7.\cm
+  linewidth = 11.\cm
+}
+
+\maininput
diff --git a/ly/center.ly b/ly/center.ly
deleted file mode 100644 (file)
index c3730fb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "1.3.146"
-
-
-\include "declarations.ly"
-\include "paper16.ly"
-
- \paper { 
-  \paperSixteen
-%  linewidth = 7.\cm
-  linewidth = 11.\cm
-}
-
-\maininput
diff --git a/ly/chord-modifiers-init.ly b/ly/chord-modifiers-init.ly
new file mode 100644 (file)
index 0000000..dd82fdb
--- /dev/null
@@ -0,0 +1,17 @@
+\version "1.3.146"
+
+% urg!
+%
+\chordmodifiers #`(
+       (m . ,(make-pitch 0 2 -1 ))
+       (min . ,(make-pitch 0 2 -1 ))
+       (aug . ,(make-pitch 0 4 1 ))
+       ;; (dim . ,(make-pitch -100 4 -1 ))     
+       (dim . ,(make-pitch -100 2 -1 ))
+       ;; urg, not actually a chord-modifier, but it works
+       ;;  c7 -> <c bes>, c 7+ -> c b
+       (maj . ,(make-pitch 0 6 1 ))
+       ;; sus4 should delete 2 too...
+       (sus . ,(make-pitch 0 3 0 ))
+)
+
diff --git a/ly/chord-modifiers.ly b/ly/chord-modifiers.ly
deleted file mode 100644 (file)
index dd82fdb..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "1.3.146"
-
-% urg!
-%
-\chordmodifiers #`(
-       (m . ,(make-pitch 0 2 -1 ))
-       (min . ,(make-pitch 0 2 -1 ))
-       (aug . ,(make-pitch 0 4 1 ))
-       ;; (dim . ,(make-pitch -100 4 -1 ))     
-       (dim . ,(make-pitch -100 2 -1 ))
-       ;; urg, not actually a chord-modifier, but it works
-       ;;  c7 -> <c bes>, c 7+ -> c b
-       (maj . ,(make-pitch 0 6 1 ))
-       ;; sus4 should delete 2 too...
-       (sus . ,(make-pitch 0 3 0 ))
-)
-
diff --git a/ly/declarations-init.ly b/ly/declarations-init.ly
new file mode 100644 (file)
index 0000000..c200465
--- /dev/null
@@ -0,0 +1,56 @@
+
+\version "1.3.146"
+breve = \duration #(make-duration -1 0)
+longa = \duration #(make-duration -2 0 )
+maxima = \duration #(make-duration -3 0)
+
+\include "nederlands.ly"               % dutch
+\include "chord-modifiers-init.ly"
+\include "script-init.ly"
+
+% declarations for standard directions
+left = -1
+right = 1
+up = 1
+down = -1
+start = -1
+stop = 1
+smaller = -1
+bigger = 1
+center=0
+
+break =  \penalty  #-10000
+noBreak =  \penalty #10000
+\include "scale-definitions-init.ly"
+
+melisma = \property Staff.melismaBusy = ##t
+melismaEnd = \property Staff.melismaBusy = ##f
+
+
+\include "engraver-init.ly"
+\include "grace-init.ly"
+
+singleLine = \paper { linewidth = 1. }
+
+% ugh
+\include "midi-init.ly"
+
+papersize = "a4"
+paperfile = \papersize + "-init.ly"
+
+\include "generic-paper-init.ly"
+\include "paper20-init.ly"
+
+
+\include "dynamic-scripts-init.ly"
+\include "spanners-init.ly"
+
+\include "property-init.ly"
+
+
+
+% reset default duration
+unusedEntry = \notes { c4 }    
+
+% music = "\melodic\relative c"
+
diff --git a/ly/declarations.ly b/ly/declarations.ly
deleted file mode 100644 (file)
index 0bb5e95..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-
-\version "1.3.146"
-breve = \duration #(make-duration -1 0)
-longa = \duration #(make-duration -2 0 )
-maxima = \duration #(make-duration -3 0)
-
-\include "nederlands.ly"               % dutch
-\include "chord-modifiers.ly"
-\include "script.ly"
-
-% declarations for standard directions
-left = -1
-right = 1
-up = 1
-down = -1
-start = -1
-stop = 1
-smaller = -1
-bigger = 1
-center=0
-
-break =  \penalty  #-10000
-noBreak =  \penalty #10000
-\include "scale-definitions.ly"
-
-melisma = \property Staff.melismaBusy = ##t
-melismaEnd = \property Staff.melismaBusy = ##f
-
-
-\include "engraver.ly"
-
-singleLine = \paper { linewidth = 1. }
-
-% ugh
-\include "midi.ly"
-
-papersize = "a4"
-paperfile = \papersize + ".ly"
-
-\include "generic-paper.ly"
-\include "paper20.ly"
-
-
-\include "dynamic-scripts.ly"
-\include "spanners.ly"
-
-\include "property.ly"
-
-
-
-% reset default duration
-unusedEntry = \notes { c4 }    
-
-% music = "\melodic\relative c"
-
diff --git a/ly/drumpitch-init.ly b/ly/drumpitch-init.ly
new file mode 100644 (file)
index 0000000..b55e8bb
--- /dev/null
@@ -0,0 +1,160 @@
+% GM drum pitches.
+% I use different accidentals to distinguish drums at the same GM pitch.
+% Always accidental 0 (white keys) or 1 (black keys) to get the "correct" gm name.
+% i.e. fis, for closed highat  ges, for highat.
+
+% 2001/03/25 Rune Zedeler <rune@zedeler.dk>
+
+
+%% TODO: don't pollute global namespace in this way . 
+
+
+#(define drum-pitch-names `(
+       (acousticbassdrum bda   ,(make-pitch -3 6 0 ))
+       (bassdrum         bd    ,(make-pitch -2 0 0 ))
+       (hisidestick      ssh   ,(make-pitch -3 6 2))
+       (sidestick        ss    ,(make-pitch -2 0 1))
+       (losidestick      ssl   ,(make-pitch -2 1 -1))
+       (acousticsnare    sna   ,(make-pitch -2 1 0))
+       (snare            sn    ,(make-pitch -2 2 -2))
+       (handclap         hc    ,(make-pitch -2 1 1))
+       (electricsnare    sne   ,(make-pitch -2 2 0))
+       (lowfloortom      tomfl ,(make-pitch -2 3 0))
+       (closedhihat      hhc   ,(make-pitch -2 3 1))
+       (hihat            hh    ,(make-pitch -2 4 -1))
+       (highfloortom     tomfh ,(make-pitch -2 4 0))
+       (pedalhihat       hhp   ,(make-pitch -2 4 1))
+       (lowtom           toml  ,(make-pitch -2 5 0))
+       (openhihat        hho   ,(make-pitch -2 5 1))
+       (halfopenhihat    hhho  ,(make-pitch -2 5 1))
+       (lowmidtom        tomml ,(make-pitch -2 6 0))
+       (himidtom         tommh ,(make-pitch -1 0 0))
+       (crashcymbala     cymca ,(make-pitch -1 0 1))
+       (crashcymbal      cymc  ,(make-pitch -1 1 -1))
+       (hightom          tomh  ,(make-pitch -1 1 0))
+       (ridecymbala      cymra ,(make-pitch -1 1 1))
+       (ridecymbal       cymr  ,(make-pitch -1 2 -1))
+       (chinesecymbal    cymch ,(make-pitch -1 2 0))
+       (ridebell         rb    ,(make-pitch -1 3 0))
+       (tambourine       tamb  ,(make-pitch -1 3 1))
+       (splashcymbal     cyms  ,(make-pitch -1 4 0))
+       (cowbell          cb    ,(make-pitch -1 4 1))
+       (crashcymbalb     cymcb ,(make-pitch -1 5 0))
+       (vibraslap        vibs  ,(make-pitch -1 5 1))
+       (ridecymbalb      cymrb ,(make-pitch -1 6 0))
+       (hibongo          boh   ,(make-pitch 0 0 0))
+       (lobongo          bol   ,(make-pitch 0 0 1))
+       (mutehiconga      cghm  ,(make-pitch 0 1 0))
+       (openhiconga      cgho  ,(make-pitch 0 1 1))
+       (hiconga          cgh   ,(make-pitch 0 2 -1))
+ (openloconga      cglo  ,(make-pitch 0 1 2))
+       (loconga          cgl   ,(make-pitch 0 2 0))
+       (hitimbale        timh  ,(make-pitch 0 3 0))
+       (lotimbale        timl  ,(make-pitch 0 3 1))
+       (hiagogo          agh   ,(make-pitch 0 4 0))
+       (loagogo          agl   ,(make-pitch 0 4 1))
+       (cabasa           cab   ,(make-pitch 0 5 0))
+       (maracas          mar   ,(make-pitch 0 5 1))
+       (shortwhistle     whs   ,(make-pitch 0 6 0))
+       (longwhistle      whl   ,(make-pitch 1 0 0))
+       (shortguiro       guis  ,(make-pitch 1 0 1))
+       (longguiro        guil  ,(make-pitch 1 1 0))
+       (guiro            gui   ,(make-pitch 1 0 2))
+       (claves           cl    ,(make-pitch 1 1 1))
+       (hiwoodblock      wbh   ,(make-pitch 1 2 0))
+       (lowoodblock      wbl   ,(make-pitch 1 3 0))
+       (mutecuica        cuim  ,(make-pitch 1 3 1))
+       (opencuica        cuio  ,(make-pitch 1 4 0))
+       (mutetriangle     trim  ,(make-pitch 1 4 1))
+       (triangle         tri   ,(make-pitch 1 4 2))
+       (opentriangle     trio  ,(make-pitch 1 5 0))
+       ;; "transposing" pitches:
+       (oneup            ua    ,(make-pitch 0 1 0))
+       (twoup            ub    ,(make-pitch 0 2 0))
+       (threeup          uc    ,(make-pitch 0 3 0))
+       (fourup           ud    ,(make-pitch 0 4 0))
+       (fiveup           ue    ,(make-pitch 0 5 0))
+       (onedown          da    ,(make-pitch -1 6 0))
+       (twodown          db    ,(make-pitch -1 5 0))
+       (threedown        dc    ,(make-pitch -1 4 0))
+       (fourdown         dd    ,(make-pitch -1 3 0))
+       (fivedown         de    ,(make-pitch -1 2 0))
+))
+
+#(define drums `(
+       (acousticbassdrum default       ,#f       ,(make-pitch -1 4 0))
+       (bassdrum         default       ,#f       ,(make-pitch -1 4 0))
+       (sidestick        cross         ,#f       ,(make-pitch 0 1 0))
+       (acousticsnare    default       ,#f       ,(make-pitch 0 1 0))
+       (snare            default       ,#f       ,(make-pitch 0 1 0))
+       (handclap         triangle      ,#f       ,(make-pitch 0 1 0))
+       (electricsnare    default       ,#f       ,(make-pitch 0 1 0))
+       (lowfloortom      default       ,#f       ,(make-pitch -1 3 0))
+       (closedhihat      cross         "stopped" ,(make-pitch 0 3 0))
+       (hihat            cross         ,#f       ,(make-pitch 0 3 0))
+       (highfloortom     default       ,#f       ,(make-pitch -1 5 0))
+       (pedalhihat       cross         ,#f       ,(make-pitch -1 2 0))
+       (lowtom           default       ,#f       ,(make-pitch 0 0 0))
+       (openhihat        cross         "open"    ,(make-pitch 0 3 0))
+       (halfopenhihat    xcircle       ,#f       ,(make-pitch 0 3 0))
+       (lowmidtom        default       ,#f       ,(make-pitch 0 1 0))
+       (himidtom         default       ,#f       ,(make-pitch 0 2 0))
+       (crashcymbala     xcircle       ,#f       ,(make-pitch 0 5 0))
+       (crashcymbal      xcircle       ,#f       ,(make-pitch 0 5 0))
+       (hightom          default       ,#f       ,(make-pitch 0 4 0))
+       (ridecymbala      cross         ,#f       ,(make-pitch 0 5 0))
+       (ridecymbal       cross         ,#f       ,(make-pitch 0 5 0))
+       (chinesecymbal    mensural      ,#f       ,(make-pitch 0 5 0))
+       (ridebell         default       ,#f       ,(make-pitch 0 5 0))
+       (splashcymbal     diamond       ,#f       ,(make-pitch 0 5 0))
+       (cowbell          triangle      ,#f       ,(make-pitch 0 5 0))
+       (crashcymbalb     cross         ,#f       ,(make-pitch 0 5 0))
+       (vibraslap        diamond       ,#f       ,(make-pitch 0 4 0))
+       (ridecymbalb      cross         ,#f       ,(make-pitch 0 5 0))
+ ))
+
+#(define timbales `(
+       (losidestick      cross         ,#f       ,(make-pitch -1 6 0))
+       (lotimbale        default       ,#f       ,(make-pitch -1 6 0))
+       (cowbell          triangle      ,#f       ,(make-pitch 0 0 0))
+       (hisidestick      cross         ,#f       ,(make-pitch 0 1 0))
+       (hitimbale        default       ,#f       ,(make-pitch 0 1 0))
+ ))
+
+#(define congas `(
+       (losidestick      cross         ,#f       ,(make-pitch -1 6 0))
+       (loconga          default       ,#f       ,(make-pitch -1 6 0))
+       (openloconga      default       ,"open"   ,(make-pitch -1 6 0))
+       (hisidestick      cross         ,#f       ,(make-pitch 0 1 0))
+       (hiconga          default       ,#f       ,(make-pitch 0 1 0))
+       (openhiconga      default       "open"    ,(make-pitch 0 1 0))
+        (mutehiconga      default       "stopped" ,(make-pitch 0 1 0))
+  
+ ))
+
+#(define bongos `(
+       (lobongo          default       ,#f       ,(make-pitch -1 6 0))
+       (hibongo          default       ,#f       ,(make-pitch 0 1 0))
+ ))
+
+#(define guiro `(
+       (shortguiro       default       "staccato",(make-pitch 0 0 0))
+       (longguiro        default       "tenuto"  ,(make-pitch 0 0 0))
+       (guiro            default       ,#f       ,(make-pitch 0 0 0))
+ ))
+
+#(define triangle `(
+       (opentriangle     cross         "open"    ,(make-pitch 0 0 0))
+       (mutetriangle     cross         "stopped" ,(make-pitch 0 0 0))
+       (triangle         cross         ,#f       ,(make-pitch 0 0 0))
+ ))
+
+
+
+\pitchnames
+#(append (map (lambda (x) (cons (car x) (caddr x))) drum-pitch-names)
+        (map (lambda (x) (cons (cadr x) (caddr x))) drum-pitch-names)
+ )
+
+
+\version "1.3.146"
diff --git a/ly/drumpitch.ly b/ly/drumpitch.ly
deleted file mode 100644 (file)
index b55e8bb..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-% GM drum pitches.
-% I use different accidentals to distinguish drums at the same GM pitch.
-% Always accidental 0 (white keys) or 1 (black keys) to get the "correct" gm name.
-% i.e. fis, for closed highat  ges, for highat.
-
-% 2001/03/25 Rune Zedeler <rune@zedeler.dk>
-
-
-%% TODO: don't pollute global namespace in this way . 
-
-
-#(define drum-pitch-names `(
-       (acousticbassdrum bda   ,(make-pitch -3 6 0 ))
-       (bassdrum         bd    ,(make-pitch -2 0 0 ))
-       (hisidestick      ssh   ,(make-pitch -3 6 2))
-       (sidestick        ss    ,(make-pitch -2 0 1))
-       (losidestick      ssl   ,(make-pitch -2 1 -1))
-       (acousticsnare    sna   ,(make-pitch -2 1 0))
-       (snare            sn    ,(make-pitch -2 2 -2))
-       (handclap         hc    ,(make-pitch -2 1 1))
-       (electricsnare    sne   ,(make-pitch -2 2 0))
-       (lowfloortom      tomfl ,(make-pitch -2 3 0))
-       (closedhihat      hhc   ,(make-pitch -2 3 1))
-       (hihat            hh    ,(make-pitch -2 4 -1))
-       (highfloortom     tomfh ,(make-pitch -2 4 0))
-       (pedalhihat       hhp   ,(make-pitch -2 4 1))
-       (lowtom           toml  ,(make-pitch -2 5 0))
-       (openhihat        hho   ,(make-pitch -2 5 1))
-       (halfopenhihat    hhho  ,(make-pitch -2 5 1))
-       (lowmidtom        tomml ,(make-pitch -2 6 0))
-       (himidtom         tommh ,(make-pitch -1 0 0))
-       (crashcymbala     cymca ,(make-pitch -1 0 1))
-       (crashcymbal      cymc  ,(make-pitch -1 1 -1))
-       (hightom          tomh  ,(make-pitch -1 1 0))
-       (ridecymbala      cymra ,(make-pitch -1 1 1))
-       (ridecymbal       cymr  ,(make-pitch -1 2 -1))
-       (chinesecymbal    cymch ,(make-pitch -1 2 0))
-       (ridebell         rb    ,(make-pitch -1 3 0))
-       (tambourine       tamb  ,(make-pitch -1 3 1))
-       (splashcymbal     cyms  ,(make-pitch -1 4 0))
-       (cowbell          cb    ,(make-pitch -1 4 1))
-       (crashcymbalb     cymcb ,(make-pitch -1 5 0))
-       (vibraslap        vibs  ,(make-pitch -1 5 1))
-       (ridecymbalb      cymrb ,(make-pitch -1 6 0))
-       (hibongo          boh   ,(make-pitch 0 0 0))
-       (lobongo          bol   ,(make-pitch 0 0 1))
-       (mutehiconga      cghm  ,(make-pitch 0 1 0))
-       (openhiconga      cgho  ,(make-pitch 0 1 1))
-       (hiconga          cgh   ,(make-pitch 0 2 -1))
- (openloconga      cglo  ,(make-pitch 0 1 2))
-       (loconga          cgl   ,(make-pitch 0 2 0))
-       (hitimbale        timh  ,(make-pitch 0 3 0))
-       (lotimbale        timl  ,(make-pitch 0 3 1))
-       (hiagogo          agh   ,(make-pitch 0 4 0))
-       (loagogo          agl   ,(make-pitch 0 4 1))
-       (cabasa           cab   ,(make-pitch 0 5 0))
-       (maracas          mar   ,(make-pitch 0 5 1))
-       (shortwhistle     whs   ,(make-pitch 0 6 0))
-       (longwhistle      whl   ,(make-pitch 1 0 0))
-       (shortguiro       guis  ,(make-pitch 1 0 1))
-       (longguiro        guil  ,(make-pitch 1 1 0))
-       (guiro            gui   ,(make-pitch 1 0 2))
-       (claves           cl    ,(make-pitch 1 1 1))
-       (hiwoodblock      wbh   ,(make-pitch 1 2 0))
-       (lowoodblock      wbl   ,(make-pitch 1 3 0))
-       (mutecuica        cuim  ,(make-pitch 1 3 1))
-       (opencuica        cuio  ,(make-pitch 1 4 0))
-       (mutetriangle     trim  ,(make-pitch 1 4 1))
-       (triangle         tri   ,(make-pitch 1 4 2))
-       (opentriangle     trio  ,(make-pitch 1 5 0))
-       ;; "transposing" pitches:
-       (oneup            ua    ,(make-pitch 0 1 0))
-       (twoup            ub    ,(make-pitch 0 2 0))
-       (threeup          uc    ,(make-pitch 0 3 0))
-       (fourup           ud    ,(make-pitch 0 4 0))
-       (fiveup           ue    ,(make-pitch 0 5 0))
-       (onedown          da    ,(make-pitch -1 6 0))
-       (twodown          db    ,(make-pitch -1 5 0))
-       (threedown        dc    ,(make-pitch -1 4 0))
-       (fourdown         dd    ,(make-pitch -1 3 0))
-       (fivedown         de    ,(make-pitch -1 2 0))
-))
-
-#(define drums `(
-       (acousticbassdrum default       ,#f       ,(make-pitch -1 4 0))
-       (bassdrum         default       ,#f       ,(make-pitch -1 4 0))
-       (sidestick        cross         ,#f       ,(make-pitch 0 1 0))
-       (acousticsnare    default       ,#f       ,(make-pitch 0 1 0))
-       (snare            default       ,#f       ,(make-pitch 0 1 0))
-       (handclap         triangle      ,#f       ,(make-pitch 0 1 0))
-       (electricsnare    default       ,#f       ,(make-pitch 0 1 0))
-       (lowfloortom      default       ,#f       ,(make-pitch -1 3 0))
-       (closedhihat      cross         "stopped" ,(make-pitch 0 3 0))
-       (hihat            cross         ,#f       ,(make-pitch 0 3 0))
-       (highfloortom     default       ,#f       ,(make-pitch -1 5 0))
-       (pedalhihat       cross         ,#f       ,(make-pitch -1 2 0))
-       (lowtom           default       ,#f       ,(make-pitch 0 0 0))
-       (openhihat        cross         "open"    ,(make-pitch 0 3 0))
-       (halfopenhihat    xcircle       ,#f       ,(make-pitch 0 3 0))
-       (lowmidtom        default       ,#f       ,(make-pitch 0 1 0))
-       (himidtom         default       ,#f       ,(make-pitch 0 2 0))
-       (crashcymbala     xcircle       ,#f       ,(make-pitch 0 5 0))
-       (crashcymbal      xcircle       ,#f       ,(make-pitch 0 5 0))
-       (hightom          default       ,#f       ,(make-pitch 0 4 0))
-       (ridecymbala      cross         ,#f       ,(make-pitch 0 5 0))
-       (ridecymbal       cross         ,#f       ,(make-pitch 0 5 0))
-       (chinesecymbal    mensural      ,#f       ,(make-pitch 0 5 0))
-       (ridebell         default       ,#f       ,(make-pitch 0 5 0))
-       (splashcymbal     diamond       ,#f       ,(make-pitch 0 5 0))
-       (cowbell          triangle      ,#f       ,(make-pitch 0 5 0))
-       (crashcymbalb     cross         ,#f       ,(make-pitch 0 5 0))
-       (vibraslap        diamond       ,#f       ,(make-pitch 0 4 0))
-       (ridecymbalb      cross         ,#f       ,(make-pitch 0 5 0))
- ))
-
-#(define timbales `(
-       (losidestick      cross         ,#f       ,(make-pitch -1 6 0))
-       (lotimbale        default       ,#f       ,(make-pitch -1 6 0))
-       (cowbell          triangle      ,#f       ,(make-pitch 0 0 0))
-       (hisidestick      cross         ,#f       ,(make-pitch 0 1 0))
-       (hitimbale        default       ,#f       ,(make-pitch 0 1 0))
- ))
-
-#(define congas `(
-       (losidestick      cross         ,#f       ,(make-pitch -1 6 0))
-       (loconga          default       ,#f       ,(make-pitch -1 6 0))
-       (openloconga      default       ,"open"   ,(make-pitch -1 6 0))
-       (hisidestick      cross         ,#f       ,(make-pitch 0 1 0))
-       (hiconga          default       ,#f       ,(make-pitch 0 1 0))
-       (openhiconga      default       "open"    ,(make-pitch 0 1 0))
-        (mutehiconga      default       "stopped" ,(make-pitch 0 1 0))
-  
- ))
-
-#(define bongos `(
-       (lobongo          default       ,#f       ,(make-pitch -1 6 0))
-       (hibongo          default       ,#f       ,(make-pitch 0 1 0))
- ))
-
-#(define guiro `(
-       (shortguiro       default       "staccato",(make-pitch 0 0 0))
-       (longguiro        default       "tenuto"  ,(make-pitch 0 0 0))
-       (guiro            default       ,#f       ,(make-pitch 0 0 0))
- ))
-
-#(define triangle `(
-       (opentriangle     cross         "open"    ,(make-pitch 0 0 0))
-       (mutetriangle     cross         "stopped" ,(make-pitch 0 0 0))
-       (triangle         cross         ,#f       ,(make-pitch 0 0 0))
- ))
-
-
-
-\pitchnames
-#(append (map (lambda (x) (cons (car x) (caddr x))) drum-pitch-names)
-        (map (lambda (x) (cons (cadr x) (caddr x))) drum-pitch-names)
- )
-
-
-\version "1.3.146"
diff --git a/ly/dynamic-scripts-init.ly b/ly/dynamic-scripts-init.ly
new file mode 100644 (file)
index 0000000..0f2f3e6
--- /dev/null
@@ -0,0 +1,27 @@
+\version "1.3.146"
+
+%
+% declare the standard dynamic identifiers.
+%
+ppppp = \dynamicscript #"ppppp"
+pppp = \dynamicscript #"pppp"
+ppp = \dynamicscript #"ppp"
+pp = \dynamicscript #"pp"
+p = \dynamicscript #"p"
+mp = \dynamicscript #"mp"
+mf = \dynamicscript #"mf"
+f = \dynamicscript #"e"                        % see feta-din layout
+ff = \dynamicscript #"ff"
+fff = \dynamicscript #"fff"
+ffff = \dynamicscript #"ffff"
+fp = \dynamicscript #"fp"
+
+sf = \dynamicscript #"sf"
+sfp = \dynamicscript #"sfp"
+sff = \dynamicscript #"sff"
+sfz = \dynamicscript #"sfz"
+fz = \dynamicscript #"fz"
+sp = \dynamicscript #"sp"
+spp = \dynamicscript #"spp"
+rfz = \dynamicscript #"rfz"
+
diff --git a/ly/dynamic-scripts.ly b/ly/dynamic-scripts.ly
deleted file mode 100644 (file)
index 0f2f3e6..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-\version "1.3.146"
-
-%
-% declare the standard dynamic identifiers.
-%
-ppppp = \dynamicscript #"ppppp"
-pppp = \dynamicscript #"pppp"
-ppp = \dynamicscript #"ppp"
-pp = \dynamicscript #"pp"
-p = \dynamicscript #"p"
-mp = \dynamicscript #"mp"
-mf = \dynamicscript #"mf"
-f = \dynamicscript #"e"                        % see feta-din layout
-ff = \dynamicscript #"ff"
-fff = \dynamicscript #"fff"
-ffff = \dynamicscript #"ffff"
-fp = \dynamicscript #"fp"
-
-sf = \dynamicscript #"sf"
-sfp = \dynamicscript #"sfp"
-sff = \dynamicscript #"sff"
-sfz = \dynamicscript #"sfz"
-fz = \dynamicscript #"fz"
-sp = \dynamicscript #"sp"
-spp = \dynamicscript #"spp"
-rfz = \dynamicscript #"rfz"
-
diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly
new file mode 100644 (file)
index 0000000..968fd4b
--- /dev/null
@@ -0,0 +1,413 @@
+\version "1.3.146"
+
+%
+% setup for Request->Element conversion. Guru-only
+%
+
+StaffContext=\translator {
+       \type "Engraver_group_engraver"
+       \name Staff 
+       \consists "Output_property_engraver"    
+       Generic_property_list = #generic-staff-properties
+       
+       \consists "Bar_engraver"
+ % Bar_engraver must be first so default bars aren't overwritten
+% with empty ones.
+       \consists "Font_size_engraver"
+
+%      \consists "Repeat_engraver"
+       \consists "Volta_engraver"
+       \consists "Separating_line_group_engraver"      
+
+
+
+       \consists "Clef_engraver"
+       \consists "Key_engraver"
+       \consists "Time_signature_engraver"
+       \consists "Staff_symbol_engraver"
+       \consists "Collision_engraver"
+       \consists "Rest_collision_engraver"
+       \consists "Local_key_engraver"
+       \consists "Piano_pedal_engraver"
+       \consists "Instrument_name_engraver"
+
+       \consistsend "Axis_group_engraver"
+       
+       MinimumVerticalExtent = #'(-4 . 4)
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+
+       % explicitly set instrument, so we don't get 
+       % weird effects when doing instrument names for
+       % piano staffs
+
+       instrument = ##f
+       instr = ##f
+         
+       \accepts "Voice"
+}
+
+
+StaffContainerContext = \translator {
+       \type Engraver_group_engraver
+       \consists "Axis_group_engraver"
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+       
+       \accepts Staff
+       \name StaffContainer
+}
+
+InnerChoirStaffContext = \translator {
+       \type "Engraver_group_engraver"
+       \name InnerChoirStaff
+       alignmentReference = #0
+       \consists "System_start_delimiter_engraver"
+       SystemStartDelimiter \override #'glyph = #'bracket
+
+       \accepts "Staff"
+       \accepts "RhythmicStaff"
+       \accepts "GrandStaff"
+       \accepts "PianoStaff"
+       \accepts "Lyrics"
+       \accepts "ChordNames"
+}
+ChoirStaffContext = \translator {
+       \InnerChoirStaffContext
+       \name ChoirStaff
+       \accepts "InnerChoirStaff"
+       \accepts "InnerStaffGroup"
+}
+
+
+RhythmicStaffContext=\translator{
+       \type "Engraver_group_engraver"
+       
+       \consists "Output_property_engraver"    
+
+       Generic_property_list = #generic-staff-properties
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+
+       \consists "Pitch_squash_engraver"
+       \consists "Separating_line_group_engraver"      
+       \name RhythmicStaff
+       \alias "Staff"
+       
+       Bar \override #'bar-size = #4
+       VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
+       VoltaBracket \override #'padding =  #5  % urg, in \pt
+       StaffSymbol \override #'line-count = #1 
+
+%      \consists "Repeat_engraver"
+       \consists "Volta_engraver"
+       \consists "Bar_engraver"
+       \consists "Time_signature_engraver"
+       \consists "Staff_symbol_engraver"
+       \consistsend "Axis_group_engraver"
+       \accepts "Voice"
+}
+
+
+VoiceContext = \translator {
+       \type "Engraver_group_engraver"
+       \name Voice
+
+       Generic_property_list = #generic-voice-properties
+       \consists "Font_size_engraver"
+       
+       % must come before all
+       \consists "Voice_devnull_engraver"
+       \consists "Output_property_engraver"    
+       \consists "Arpeggio_engraver"
+       \consists "Multi_measure_rest_engraver"
+       \consists "Text_spanner_engraver"
+       
+       \consists "Breathing_sign_engraver"
+       % \consists "Rest_engraver"
+       \consists "Dot_column_engraver"
+       \consists "Stem_engraver"
+       \consists "Beam_engraver"
+       \consists "Auto_beam_engraver"
+
+       \consists "Chord_tremolo_engraver"
+       \consists "Percent_repeat_engraver"
+       \consists "Melisma_engraver"
+
+%{
+ Must come before text_engraver, but after note_column engraver.
+
+%}
+       \consists "Dynamic_engraver"
+       \consists "Text_engraver"
+
+       \consists "Script_engraver"
+       \consists "Script_column_engraver"
+       \consists "Rhythmic_column_engraver"
+       \consists "Phrasing_slur_engraver"
+       \consists "Slur_engraver"
+       \consists "Tie_engraver"
+       \consists "Tuplet_engraver"
+       \consists "A2_engraver"
+
+       \consists "Skip_req_swallow_translator"
+       \accepts Thread % bug if you leave out this!
+}
+
+ThreadContext = \translator{
+       \type Engraver_group_engraver
+       \name Thread
+
+       \consists "Font_size_engraver"  
+       \consists "Thread_devnull_engraver"
+       \consists "Note_heads_engraver"
+       \consists "Rest_engraver"
+       \consists "Note_head_line_engraver"
+       \consists "Output_property_engraver"    
+       Generic_property_list = #generic-thread-properties
+}
+
+GrandStaffContext=\translator{
+       \type "Engraver_group_engraver"
+       \name GrandStaff
+       \consists "Span_bar_engraver"
+       \consists "Span_arpeggio_engraver"
+       \consists "System_start_delimiter_engraver"
+       SystemStartDelimiter \override #'glyph = #'brace
+       
+       Generic_property_list = #generic-grand-staff-properties
+       \accepts "Staff"
+}
+
+PianoStaffContext = \translator{
+       \GrandStaffContext
+       \name "PianoStaff"
+
+       \consists "Vertical_align_engraver"
+       \consists "Instrument_name_engraver"
+       
+       instrument = ##f
+       instr = ##f
+       
+       verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
+       VerticalAlignment \override #'forced-distance = #12
+       VerticalAlignment \override #'self-alignment-Y = #0
+%      \consistsend "Axis_group_engraver"
+}
+
+InnerStaffGroupContext= \translator {
+       \type "Engraver_group_engraver"
+       \name InnerStaffGroup
+
+       \consists "Span_bar_engraver"
+       \consists "Span_arpeggio_engraver"
+       \consists "Output_property_engraver"    
+       SystemStartDelimiter \override #'glyph = #'bracket
+
+       \consists "System_start_delimiter_engraver"
+       \accepts "Staff"
+       \accepts "RhythmicStaff"
+       \accepts "GrandStaff"
+       \accepts "PianoStaff"
+       
+       \accepts "Lyrics"
+       \accepts "ChordNames"
+}
+StaffGroupContext = \translator {
+       \InnerStaffGroupContext
+       \name StaffGroup
+       \accepts "InnerChoirStaff"
+       \accepts "ChoirStaff"
+       \accepts "InnerStaffGroup"
+}
+
+
+% UGH! JUNKME
+LyricsVoiceContext= \translator{
+       \type "Engraver_group_engraver"
+       \consistsend "Axis_group_engraver"
+       MinimumVerticalExtent = #(cons -1.2 1.2)
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+       \name LyricsVoice 
+       \consists "Separating_line_group_engraver"
+       \consists "Lyric_engraver"
+       \consists "Extender_engraver"
+       \consists "Hyphen_engraver"
+       \consists "Stanza_number_engraver"
+       phrasingPunctuation = #".,:!?\""
+       
+}
+NoteNamesContext = \translator {
+       \type "Engraver_group_engraver"
+       \name NoteNames
+       \consistsend "Axis_group_engraver"
+
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+
+       
+       \consists "Note_name_engraver"
+       \consists "Separating_line_group_engraver"
+}
+
+LyricsContext = \translator {
+       \type "Engraver_group_engraver"
+       \name Lyrics
+       \consists Vertical_align_engraver %need this for getting folded repeats right.
+       Generic_property_list = #generic-lyrics-properties
+
+       \consistsend "Axis_group_engraver"
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+       
+       \accepts "LyricsVoice"
+}
+
+
+ChordNamesContext = \translator {
+       \type "Engraver_group_engraver"
+       \name ChordNames
+
+       Generic_property_list = #generic-chord-staff-properties
+
+
+       \consists "Output_property_engraver"    
+       \consists "Separating_line_group_engraver"
+       \consists "Chord_name_engraver"
+       \consists "Skip_req_swallow_translator"
+       \consistsend "Axis_group_engraver"
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+
+       VerticalAxisGroup \override #'invisible-staff = ##t
+       }
+
+
+
+StupidScore = \translator {
+       \type "Score_engraver"
+       \name Score
+       \consists "Note_heads_engraver"
+}
+
+
+
+
+HaraKiriStaffContext = \translator {
+       \StaffContext
+       \remove "Axis_group_engraver"
+       \consistsend "Hara_kiri_engraver"
+       \consists "Instrument_name_engraver"
+       \accepts "Voice"
+}
+%{
+  The HaraKiriStaffContexts doesn't override \name,
+  so it is still named `Staff'.
+
+  %\translator { \HaraKiriStaffContext }
+%}
+
+
+
+
+ScoreContext = \translator {
+       \type Score_engraver
+       \name Score
+       
+
+       \consists "Repeat_acknowledge_engraver"
+       \consists "Timing_engraver"
+       \consists "Output_property_engraver"
+       \consists "System_start_delimiter_engraver"
+       \consists "Mark_engraver"       
+       \consists "Break_align_engraver"
+       \consists "Spacing_engraver"
+       \consists "Vertical_align_engraver"
+
+       \consists "Lyric_phrasing_engraver"
+       \consists "Bar_number_engraver"
+       \consists "Span_arpeggio_engraver"
+
+       \accepts "Staff"
+       \accepts "StaffContainer"
+       \accepts "StaffGroup"
+       \accepts "RhythmicStaff"        
+       \accepts "Lyrics"
+       \accepts "ChordNames"
+       \accepts "GrandStaff"
+       \accepts "ChoirStaff"
+       \accepts "PianoStaff"
+       \accepts "NoteNames"
+
+       soloText = #"Solo"
+       soloIIText = #"Solo II"
+       aDueText = #"a2"
+       soloADue = ##t
+       splitInterval = #'(0 . 1)
+       changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
+
+       barAuto = ##t
+       voltaVisibility = ##t
+       %  name, glyph id, clef position 
+       % where is c0 in this clef?
+
+       clefGlyph = #"clefs-G"
+       clefPosition = #-2
+       centralCPosition = #-6
+       
+        automaticPhrasing = ##t
+       alignmentReference = #-1   % \down
+       defaultBarType = #"|"
+
+       explicitClefVisibility = #all-visible
+       explicitKeySignatureVisibility = #all-visible
+       
+       scriptDefinitions = #default-script-alist
+
+       verticalAlignmentChildCallback = #Align_interface::alignment_callback
+
+       pedalSustainStrings = #'("Ped." "*Ped." "*")
+       pedalUnaCordaStrings = #'("una corda" "" "tre corde")
+       pedalSostenutoStrings = #'()  % FIXME
+
+       tupletNumberFormatFunction = #denominator-tuplet-formatter
+       
+       keyAccidentalOrder = #'(
+         (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
+        (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
+       )
+       breakAlignOrder = #'(
+         Instrument_name
+         Left_edge_item
+         Span_bar
+         Breathing_sign
+         Clef_item
+         Key_item
+         Staff_bar
+         Time_signature
+         Custos
+       )
+
+
+       \elementdescriptions #all-grob-descriptions
+}
+
+OrchestralScoreContext= \translator {
+       \ScoreContext
+}
+EasyNotation =  \translator {
+       \ScoreContext
+       NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
+       easyPlay = ##t
+}
+
+% retain for compatibility reasons.
+GraceContext = \translator {
+       \type "Engraver_group_engraver"
+}
diff --git a/ly/engraver.ly b/ly/engraver.ly
deleted file mode 100644 (file)
index b8fa852..0000000
+++ /dev/null
@@ -1,461 +0,0 @@
-\version "1.3.146"
-
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-StaffContext=\translator {
-       \type "Engraver_group_engraver"
-       \name Staff 
-       \consists "Output_property_engraver"    
-       Generic_property_list = #generic-staff-properties
-       \consists "Property_engraver"
-       
-       \consists "Bar_engraver"
- % Bar_engraver must be first so default bars aren't overwritten
-% with empty ones.
-
-
-%      \consists "Repeat_engraver"
-       \consists "Volta_engraver"
-       \consists "Separating_line_group_engraver"      
-
-
-
-       \consists "Clef_engraver"
-       \consists "Key_engraver"
-       \consists "Time_signature_engraver"
-       \consists "Staff_symbol_engraver"
-       \consists "Collision_engraver"
-       \consists "Rest_collision_engraver"
-       \consists "Local_key_engraver"
-       \consists "Piano_pedal_engraver"
-       \consists "Instrument_name_engraver"
-
-       \consistsend "Axis_group_engraver"
-       
-       MinimumVerticalExtent = #'(-4 . 4)
-       ExtraVerticalExtent = ##f
-       VerticalExtent = ##f 
-
-       % explicitly set instrument, so we don't get 
-       % weird effects when doing instrument names for
-       % piano staffs
-
-       instrument = ##f
-       instr = ##f
-         
-       \accepts "Voice"
-}
-
-
-StaffContainerContext = \translator {
-       \type Engraver_group_engraver
-       \consists "Axis_group_engraver"
-       MinimumVerticalExtent = ##f
-       ExtraVerticalExtent = ##f
-       VerticalExtent = ##f 
-       
-       \accepts Staff
-       \name StaffContainer
-}
-
-InnerChoirStaffContext = \translator {
-       \type "Engraver_group_engraver"
-       \name InnerChoirStaff
-       alignmentReference = #0
-       \consists "System_start_delimiter_engraver"
-       SystemStartDelimiter \override #'glyph = #'bracket
-
-       \accepts "Staff"
-       \accepts "RhythmicStaff"
-       \accepts "GrandStaff"
-       \accepts "PianoStaff"
-       \accepts "Lyrics"
-       \accepts "ChordNames"
-}
-ChoirStaffContext = \translator {
-       \InnerChoirStaffContext
-       \name ChoirStaff
-       \accepts "InnerChoirStaff"
-       \accepts "InnerStaffGroup"
-}
-
-
-RhythmicStaffContext=\translator{
-       \type "Engraver_group_engraver"
-       
-       \consists "Property_engraver"
-       \consists "Output_property_engraver"    
-
-       Generic_property_list = #generic-staff-properties
-       MinimumVerticalExtent = ##f
-       ExtraVerticalExtent = ##f
-       VerticalExtent = ##f 
-
-       \consists "Pitch_squash_engraver"
-       \consists "Separating_line_group_engraver"      
-       \name RhythmicStaff
-       \alias "Staff"
-       
-       Bar \override #'bar-size = #4
-       VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
-       VoltaBracket \override #'padding =  #5  % urg, in \pt
-       StaffSymbol \override #'line-count = #1 
-
-%      \consists "Repeat_engraver"
-       \consists "Volta_engraver"
-       \consists "Bar_engraver"
-       \consists "Time_signature_engraver"
-       \consists "Staff_symbol_engraver"
-       \consistsend "Axis_group_engraver"
-       \accepts "Voice"
-}
-
-
-VoiceContext = \translator {
-       \type "Engraver_group_engraver"
-       \name Voice
-
-       Generic_property_list = #generic-voice-properties
-
-       % must come before all
-       \consists "Voice_devnull_engraver"
-       \consists "Output_property_engraver"    
-       \consists "Arpeggio_engraver"
-       \consists "Multi_measure_rest_engraver"
-       \consists "Text_spanner_engraver"
-       \consists "Property_engraver"
-       
-       \consists "Breathing_sign_engraver"
-       % \consists "Rest_engraver"
-       \consists "Dot_column_engraver"
-       \consists "Stem_engraver"
-       \consists "Beam_engraver"
-       \consists "Auto_beam_engraver"
-
-       \consists "Chord_tremolo_engraver"
-       \consists "Percent_repeat_engraver"
-       \consists "Melisma_engraver"
-
-%{
- Must come before text_engraver, but after note_column engraver.
-
-%}
-       \consists "Dynamic_engraver"
-       \consists "Text_engraver"
-
-       \consists "Script_engraver"
-       \consists "Script_column_engraver"
-       \consists "Rhythmic_column_engraver"
-       \consists "Phrasing_slur_engraver"
-       \consists "Slur_engraver"
-       \consists "Tie_engraver"
-       \consists "Tuplet_engraver"
-       \consists "Grace_position_engraver"
-       \consists "A2_engraver"
-
-       \consists "Skip_req_swallow_translator"
-       \accepts Thread % bug if you leave out this!
-       \accepts Grace
-}
-
-GraceContext=\translator {
-       \type "Grace_engraver_group"
-       \name "Grace"
-       \consists "Output_property_engraver"    
-
-       Generic_property_list = #generic-grace-properties
-       
-       \consists "Note_heads_engraver"
-       \consists "Local_key_engraver"
-       \consists "Stem_engraver"
-       \consists "Beam_engraver"
-       \consists "Slur_engraver"
-
-       \consists "Auto_beam_engraver"
-       \consists "Align_note_column_engraver"
-
-       \consists "Rhythmic_column_engraver"
-
-       \consists "Dynamic_engraver"% in Grace ???
-       \consists "Text_engraver" % in Grace ???
-
-       \consists "Property_engraver"
-
-       Stem \override  #'flag-style = #"grace"
-       Stem \override  #'stem-length = #6.0
-       Stem \override  #'direction = #1
-
-       NoteHead \override #'font-relative-size = #-1
-       Stem \override #'font-relative-size = #-1
-       Stem \override #'stem-shorten = #'(0)
-       Beam \override #'font-relative-size = #-1
-       TextScript \override #'font-relative-size = #-1
-       Slur \override #'font-relative-size = #-1
-       Accidentals \override #'font-relative-size = #-1
-       Beam \override #'thickness = #0.3
-       Beam \override #'space-function = #(lambda (x) 0.5)
-
-       Stem \override #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
-       Stem \override #'beamed-lengths =
-               #'(0.0 2.5 2.0 1.5)
-       Stem \override #'beamed-minimum-lengths
-                = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
-
-       weAreGraceContext = ##t   
-       graceAccidentalSpace= #1.5  % in staff space
-}
-
-ThreadContext = \translator{
-       \type Engraver_group_engraver
-       \name Thread
-       
-       \consists "Thread_devnull_engraver"
-       \consists "Note_heads_engraver"
-       \consists "Rest_engraver"
-       \consists "Note_head_line_engraver"
-       \consists "Output_property_engraver"    
-       Generic_property_list = #generic-thread-properties
-       \consists "Property_engraver"
-}
-
-GrandStaffContext=\translator{
-       \type "Engraver_group_engraver"
-       \name GrandStaff
-       \consists "Span_bar_engraver"
-       \consists "Span_arpeggio_engraver"
-       \consists "System_start_delimiter_engraver"
-       SystemStartDelimiter \override #'glyph = #'brace
-       
-       \consists "Property_engraver"   
-       Generic_property_list = #generic-grand-staff-properties
-       \accepts "Staff"
-}
-
-PianoStaffContext = \translator{
-       \GrandStaffContext
-       \name "PianoStaff"
-
-       \consists "Vertical_align_engraver"
-       \consists "Instrument_name_engraver"
-       
-       instrument = ##f
-       instr = ##f
-       
-       verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
-       VerticalAlignment \override #'forced-distance = #12
-       VerticalAlignment \override #'self-alignment-Y = #0
-%      \consistsend "Axis_group_engraver"
-}
-
-InnerStaffGroupContext= \translator {
-       \type "Engraver_group_engraver"
-       \name InnerStaffGroup
-
-       \consists "Span_bar_engraver"
-       \consists "Span_arpeggio_engraver"
-       \consists "Output_property_engraver"    
-       SystemStartDelimiter \override #'glyph = #'bracket
-
-       \consists "System_start_delimiter_engraver"
-       \accepts "Staff"
-       \accepts "RhythmicStaff"
-       \accepts "GrandStaff"
-       \accepts "PianoStaff"
-       
-       \accepts "Lyrics"
-       \accepts "ChordNames"
-}
-StaffGroupContext = \translator {
-       \InnerStaffGroupContext
-       \name StaffGroup
-       \accepts "InnerChoirStaff"
-       \accepts "ChoirStaff"
-       \accepts "InnerStaffGroup"
-}
-
-
-% UGH! JUNKME
-LyricsVoiceContext= \translator{
-       \type "Engraver_group_engraver"
-       \consistsend "Axis_group_engraver"
-       MinimumVerticalExtent = #(cons -1.2 1.2)
-       ExtraVerticalExtent = ##f
-       VerticalExtent = ##f 
-       \name LyricsVoice 
-       \consists "Separating_line_group_engraver"
-       \consists "Lyric_engraver"
-       \consists "Extender_engraver"
-       \consists "Hyphen_engraver"
-       \consists "Stanza_number_engraver"
-       phrasingPunctuation = #".,:!?\""
-       
-}
-NoteNamesContext = \translator {
-       \type "Engraver_group_engraver"
-       \name NoteNames
-       \consistsend "Axis_group_engraver"
-
-       MinimumVerticalExtent = ##f
-       ExtraVerticalExtent = ##f
-       VerticalExtent = ##f 
-
-       
-       \consists "Note_name_engraver"
-       \consists "Separating_line_group_engraver"
-}
-
-LyricsContext = \translator {
-       \type "Engraver_group_engraver"
-       \name Lyrics
-       \consists Vertical_align_engraver %need this for getting folded repeats right.
-       Generic_property_list = #generic-lyrics-properties
-       \consists "Property_engraver"
-       \consistsend "Axis_group_engraver"
-       MinimumVerticalExtent = ##f
-       ExtraVerticalExtent = ##f
-       VerticalExtent = ##f 
-       
-       \accepts "LyricsVoice"
-}
-
-
-ChordNamesContext = \translator {
-       \type "Engraver_group_engraver"
-       \name ChordNames
-
-       Generic_property_list = #generic-chord-staff-properties
-
-       \consists "Property_engraver"   
-       \consists "Output_property_engraver"    
-       \consists "Separating_line_group_engraver"
-       \consists "Chord_name_engraver"
-       \consists "Skip_req_swallow_translator"
-       \consistsend "Axis_group_engraver"
-       MinimumVerticalExtent = ##f
-       ExtraVerticalExtent = ##f
-       VerticalExtent = ##f 
-
-       VerticalAxisGroup \override #'invisible-staff = ##t
-       }
-
-
-
-StupidScore = \translator {
-       \type "Score_engraver"
-       \name Score
-       \consists "Note_heads_engraver"
-}
-
-
-
-
-HaraKiriStaffContext = \translator {
-       \StaffContext
-       \remove "Axis_group_engraver"
-       \consistsend "Hara_kiri_engraver"
-       \consists "Instrument_name_engraver"
-       \accepts "Voice"
-}
-%{
-  The HaraKiriStaffContexts doesn't override \name,
-  so it is still named `Staff'.
-
-  %\translator { \HaraKiriStaffContext }
-%}
-
-
-
-
-ScoreContext = \translator {
-       \type Score_engraver
-       \name Score
-       
-
-       \consists "Repeat_acknowledge_engraver"
-       \consists "Timing_engraver"
-       \consists "Output_property_engraver"
-       \consists "System_start_delimiter_engraver"
-       \consists "Mark_engraver"       
-       \consists "Break_align_engraver"
-       \consists "Spacing_engraver"
-       \consists "Vertical_align_engraver"
-
-       \consists "Lyric_phrasing_engraver"
-       \consists "Bar_number_engraver"
-       \consists "Span_arpeggio_engraver"
-
-       \accepts "Staff"
-       \accepts "StaffContainer"
-       \accepts "StaffGroup"
-       \accepts "RhythmicStaff"        
-       \accepts "Lyrics"
-       \accepts "ChordNames"
-       \accepts "GrandStaff"
-       \accepts "ChoirStaff"
-       \accepts "PianoStaff"
-       \accepts "NoteNames"
-
-       soloText = #"Solo"
-       soloIIText = #"Solo II"
-       aDueText = #"a2"
-       soloADue = ##t
-       splitInterval = #'(0 . 1)
-       changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
-
-       barAuto = ##t
-       voltaVisibility = ##t
-       %  name, glyph id, clef position 
-       % where is c0 in this clef?
-
-       clefGlyph = #"clefs-G"
-       clefPosition = #-2
-       centralCPosition = #-6
-       
-        automaticPhrasing = ##t
-       alignmentReference = #-1   % \down
-       defaultBarType = #"|"
-
-       explicitClefVisibility = #all-visible
-       explicitKeySignatureVisibility = #all-visible
-       
-       scriptDefinitions = #default-script-alist
-
-       verticalAlignmentChildCallback = #Align_interface::alignment_callback
-
-       pedalSustainStrings = #'("Ped." "*Ped." "*")
-       pedalUnaCordaStrings = #'("una corda" "" "tre corde")
-       pedalSostenutoStrings = #'()  % FIXME
-
-       tupletNumberFormatFunction = #denominator-tuplet-formatter
-       
-       keyAccidentalOrder = #'(
-         (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
-        (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
-       )
-       breakAlignOrder = #'(
-         Instrument_name
-         Left_edge_item
-         Span_bar
-         Breathing_sign
-         Clef_item
-         Key_item
-         Staff_bar
-         Time_signature
-         Custos
-       )
-
-
-       \elementdescriptions #all-grob-descriptions
-}
-
-OrchestralScoreContext= \translator {
-       \ScoreContext
-}
-EasyNotation =  \translator {
-       \ScoreContext
-       NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
-       easyPlay = ##t
-}
-
diff --git a/ly/generate-interface-doc-init.ly b/ly/generate-interface-doc-init.ly
new file mode 100644 (file)
index 0000000..a50eeaf
--- /dev/null
@@ -0,0 +1,5 @@
+
+%
+% Running LilyPond on this file generates the short interface doc
+%
+#(eval-string (ly-gulp-file "generate-interface-doc.scm"))
diff --git a/ly/generate-interface-doc.ly b/ly/generate-interface-doc.ly
deleted file mode 100644 (file)
index a50eeaf..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-%
-% Running LilyPond on this file generates the short interface doc
-%
-#(eval-string (ly-gulp-file "generate-interface-doc.scm"))
diff --git a/ly/generic-paper-init.ly b/ly/generic-paper-init.ly
new file mode 100644 (file)
index 0000000..df96f2a
--- /dev/null
@@ -0,0 +1,8 @@
+\version "1.3.146"
+
+\paper {
+       texsetting = ""
+       pssetting = ""
+       scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"% UGH. 
+
+}
diff --git a/ly/generic-paper.ly b/ly/generic-paper.ly
deleted file mode 100644 (file)
index df96f2a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-\version "1.3.146"
-
-\paper {
-       texsetting = ""
-       pssetting = ""
-       scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"% UGH. 
-
-}
diff --git a/ly/german-chords-init.ly b/ly/german-chords-init.ly
new file mode 100644 (file)
index 0000000..cb741eb
--- /dev/null
@@ -0,0 +1,41 @@
+\version "1.3.148"
+
+%  german-chords.ly:
+% german/norwegian/danish?
+
+% To get Bb instead of B, use
+% \include "german-chords.ly"
+% #(set! german-Bb #t)
+
+#(define german-Bb #f)
+
+#(define (pitch->chord-name-text-banter pitch steps)
+   (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
+                     (list 7 (+ (if german-Bb 0 1) (caddr pitch)))
+                     (cdr pitch)
+                )))
+     (cons
+       (list-ref '("C" "D" "E" "F" "G" "A" "H" "B") (car dopitch))
+       (accidental->text-super (cadr dopitch))
+     )
+   )
+ )
+
+
+
+#(define (pitch->note-name-text-banter pitch)
+   (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
+                    (list 7 (+ 1 (caddr pitch)))
+                    (cdr pitch)
+                )))
+     (list
+       (string-append
+         (list-ref '("c" "d" "e" "f" "g" "a" "h" "b") (car dopitch))
+         (if (or (equal? (car dopitch) 2) (equal? (car dopitch) 5))
+           (list-ref '( "ses"  "s" "" "is" "isis") (+ 2 (cadr dopitch)))
+           (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cadr dopitch)))
+         )
+       )
+     )
+   )
+ )
diff --git a/ly/german-chords.ly b/ly/german-chords.ly
deleted file mode 100644 (file)
index cb741eb..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-\version "1.3.148"
-
-%  german-chords.ly:
-% german/norwegian/danish?
-
-% To get Bb instead of B, use
-% \include "german-chords.ly"
-% #(set! german-Bb #t)
-
-#(define german-Bb #f)
-
-#(define (pitch->chord-name-text-banter pitch steps)
-   (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
-                     (list 7 (+ (if german-Bb 0 1) (caddr pitch)))
-                     (cdr pitch)
-                )))
-     (cons
-       (list-ref '("C" "D" "E" "F" "G" "A" "H" "B") (car dopitch))
-       (accidental->text-super (cadr dopitch))
-     )
-   )
- )
-
-
-
-#(define (pitch->note-name-text-banter pitch)
-   (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
-                    (list 7 (+ 1 (caddr pitch)))
-                    (cdr pitch)
-                )))
-     (list
-       (string-append
-         (list-ref '("c" "d" "e" "f" "g" "a" "h" "b") (car dopitch))
-         (if (or (equal? (car dopitch) 2) (equal? (car dopitch) 5))
-           (list-ref '( "ses"  "s" "" "is" "isis") (+ 2 (cadr dopitch)))
-           (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cadr dopitch)))
-         )
-       )
-     )
-   )
- )
diff --git a/ly/grace-init.ly b/ly/grace-init.ly
new file mode 100644 (file)
index 0000000..54211cb
--- /dev/null
@@ -0,0 +1,58 @@
+
+
+ #(define (grace-beam-space-function multiplicity)
+         (* (if (<= multiplicity 3) 0.816 0.844) 0.8))
+
+
+ #(define (make-text-checker text)
+  (lambda (elt) (equal? text (ly-get-grob-property elt 'text))))
+
+
+startGraceMusic = {
+
+%{
+from GraceContext
+       Stem \override  #'flag-style = #"grace"
+       Stem \override  #'stem-length = #6.0
+       Stem \override  #'direction = #1
+
+       NoteHead \override #'font-relative-size = #-1
+       Stem \override #'font-relative-size = #-1
+       Stem \override #'stem-shorten = #'(0)
+       Beam \override #'font-relative-size = #-1
+       TextScript \override #'font-relative-size = #-1
+       Slur \override #'font-relative-size = #-1
+       Accidentals \override #'font-relative-size = #-1
+       Beam \override #'thickness = #0.3
+       Beam \override #'space-function = #(lambda (x) 0.5)
+
+       Stem \override #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
+       Stem \override #'beamed-lengths =
+               #'(0.0 2.5 2.0 1.5)
+       Stem \override #'beamed-minimum-lengths
+                = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
+%}
+
+
+    \property Voice.NoteHead \override #'font-relative-size = #-1
+    \property Voice.Stem \override #'length = #6
+    \property Voice.Stem \override #'beamed-lengths =
+        #(map (lambda (x) (* 1.25 x)) '(0.0 2.5 2.0 1.5))
+    \property Voice.Stem \override #'beamed-minimum-lengths =
+        #(map (lambda (x) (* 1.25 x)) '(0.0 1.5 1.25 1.0))
+    \property Voice.Beam \override #'space-function = #grace-beam-space-function
+    \property Voice.fontSize = #-2
+    \property Voice.Stem \override #'no-stem-extend = ##t
+
+%    \property Voice.Stem \override #'flag-style  = #"grace"
+}
+
+stopGraceMusic = {
+% \property Voice.Stem \revert #'flag-style
+    \property Voice.Stem \override #'no-stem-extend = ##f 
+    \property Voice.Stem \revert #'length
+    \property Voice.Stem \revert #'beamed-lengths
+    \property Voice.Stem \revert #'beamed-minimum-lengths
+    \property Voice.Beam \revert #'space-function
+    \property Voice.fontSize \unset
+}
diff --git a/ly/init.fly b/ly/init.fly
deleted file mode 100644 (file)
index 640f136..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "1.3.146"
-
-
-\include "declarations.ly"
-
-\score { 
-  \context Voice \notes\relative c {
-    \maininput
-  }
-  \paper { }  
-  \midi { }
-}
index fea720a03c8be81be7a7ba09eadd0bc42bd329e0..0ddb2db3a94027b055262cea6959e87f9be81661 100644 (file)
@@ -3,6 +3,6 @@
 
 \version "1.3.146"
 
-\include "declarations.ly"
+\include "declarations-init.ly"
 
 \maininput
diff --git a/ly/init.sly b/ly/init.sly
deleted file mode 100644 (file)
index 497dfd8..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "1.3.146"
-
-
-\include "declarations.ly"
-
-\score { 
-  \context Voice \notes\relative c {
-    \maininput
-  }
-  \paper {
-
-       % indent = 0.0
-  }  
-  \midi{ }
-}
diff --git a/ly/ledger-init.ly b/ly/ledger-init.ly
new file mode 100644 (file)
index 0000000..e1b774d
--- /dev/null
@@ -0,0 +1,8 @@
+\version "1.3.146"
+
+% ledger.ly
+
+hsize = 11.0 \in
+vsize = 17.0 \in
+
+
diff --git a/ly/ledger.ly b/ly/ledger.ly
deleted file mode 100644 (file)
index e1b774d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-\version "1.3.146"
-
-% ledger.ly
-
-hsize = 11.0 \in
-vsize = 17.0 \in
-
-
diff --git a/ly/legal-init.ly b/ly/legal-init.ly
new file mode 100644 (file)
index 0000000..47f413c
--- /dev/null
@@ -0,0 +1,5 @@
+\version "1.3.146"
+% legal-init.ly
+
+hsize = 8.5 \in
+vsize = 14.0 \in
diff --git a/ly/legal.ly b/ly/legal.ly
deleted file mode 100644 (file)
index 4291b81..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-\version "1.3.146"
-% legal.ly
-
-hsize = 8.5 \in
-vsize = 14.0 \in
diff --git a/ly/letter-init.ly b/ly/letter-init.ly
new file mode 100644 (file)
index 0000000..1ae8c49
--- /dev/null
@@ -0,0 +1,7 @@
+\version "1.3.146"
+% letter-init.ly
+
+hsize = 8.5 \in
+vsize = 11.0 \in
+
+
diff --git a/ly/letter.ly b/ly/letter.ly
deleted file mode 100644 (file)
index c9be659..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-\version "1.3.146"
-% letter.ly
-
-hsize = 8.5 \in
-vsize = 11.0 \in
-
-
diff --git a/ly/midi-init.ly b/ly/midi-init.ly
new file mode 100644 (file)
index 0000000..730d92a
--- /dev/null
@@ -0,0 +1,7 @@
+\version "1.3.146"
+\midi {
+        \tempo 4=60
+       \include "performer-init.ly"
+%      unfold_all = "1"
+}
+
diff --git a/ly/midi.ly b/ly/midi.ly
deleted file mode 100644 (file)
index a4283f4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-\version "1.3.146"
-\midi {
-        \tempo 4=60
-       \include "performer.ly"
-%      unfold_all = "1"
-}
-
diff --git a/ly/paper-as5-init.ly b/ly/paper-as5-init.ly
new file mode 100644 (file)
index 0000000..f7f58a3
--- /dev/null
@@ -0,0 +1,17 @@
+% paper-as5-init.ly
+
+\version "1.3.146"
+
+paperAsFive = \paper {
+       staffheight = 5.\char
+
+       \stylesheet #(as-make-style-sheet 'as5)
+       
+       \translator { \StaffContext barSize = #5 }
+
+       % no beam-slope
+       %\translator { \VoiceContext beamHeight = #0 }
+       \include "params-as-init.ly"
+}
+
+\paper { \paperAsFive }
diff --git a/ly/paper-as5.ly b/ly/paper-as5.ly
deleted file mode 100644 (file)
index d325b9b..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-% paper-as5.ly
-
-\version "1.3.146"
-
-paperAsFive = \paper {
-       staffheight = 5.\char
-
-       \stylesheet #(as-make-style-sheet 'as5)
-       
-       \translator { \StaffContext barSize = #5 }
-
-       % no beam-slope
-       %\translator { \VoiceContext beamHeight = #0 }
-       \include "params-as.ly"
-}
-
-\paper { \paperAsFive }
diff --git a/ly/paper-as9-init.ly b/ly/paper-as9-init.ly
new file mode 100644 (file)
index 0000000..86866b0
--- /dev/null
@@ -0,0 +1,16 @@
+% paper-as9-init.ly
+
+\version "1.3.146"
+
+paperAsNine = \paper {
+       staffheight = 9.\char
+
+       %\translator { \StaffContext barSize = \staffheight }
+
+       \stylesheet #(as-make-style-sheet 'as9)
+
+       \include "params-as-init.ly"
+       
+}
+
+\paper { \paperAsNine }
diff --git a/ly/paper-as9.ly b/ly/paper-as9.ly
deleted file mode 100644 (file)
index d35590f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-% paper-as9.ly
-
-\version "1.3.146"
-
-paperAsNine = \paper {
-       staffheight = 9.\char
-
-       %\translator { \StaffContext barSize = \staffheight }
-
-       \stylesheet #(as-make-style-sheet 'as9)
-
-       \include "params-as.ly"
-       
-}
-
-\paper { \paperAsNine }
diff --git a/ly/paper-init.ly b/ly/paper-init.ly
new file mode 100644 (file)
index 0000000..f6ac488
--- /dev/null
@@ -0,0 +1,15 @@
+\version "1.3.146"
+% paper-init.ly
+
+%% Why som complicated?  /MB
+%linewidth20 = \hsize - 2.5 * \staffheight
+%textheight20 = \vsize - 5.0 * \staffheight
+%linewidth = \staffheight/20.0 * \linewidth20
+%textheight = \staffheight/20.0 * \textheight20
+
+linewidth = \hsize - 2.\cm
+% Leave the textheight calculation to the geometry package. /MB
+%textheight = \vsize - 4.\cm
+
+indent = \linewidth / 14.0
+
diff --git a/ly/paper.ly b/ly/paper.ly
deleted file mode 100644 (file)
index fb9aea7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-\version "1.3.146"
-% paper.ly
-
-%% Why som complicated?  /MB
-%linewidth20 = \hsize - 2.5 * \staffheight
-%textheight20 = \vsize - 5.0 * \staffheight
-%linewidth = \staffheight/20.0 * \linewidth20
-%textheight = \staffheight/20.0 * \textheight20
-
-linewidth = \hsize - 2.\cm
-% Leave the textheight calculation to the geometry package. /MB
-%textheight = \vsize - 4.\cm
-
-indent = \linewidth / 14.0
-
diff --git a/ly/paper11-init.ly b/ly/paper11-init.ly
new file mode 100644 (file)
index 0000000..2cc3913
--- /dev/null
@@ -0,0 +1,12 @@
+% paper11-init.ly
+
+\version "1.3.146"
+
+paperEleven = \paper {
+       staffheight = 11.0\pt
+       \stylesheet #(make-style-sheet 'paper11)
+
+       \include "params-init.ly"
+}
+
+\paper { \paperEleven }
diff --git a/ly/paper11.ly b/ly/paper11.ly
deleted file mode 100644 (file)
index 61dbaf5..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-% paper11.ly
-
-\version "1.3.146"
-
-paperEleven = \paper {
-       staffheight = 11.0\pt
-       \stylesheet #(make-style-sheet 'paper11)
-
-       \include "params.ly"
-}
-
-\paper { \paperEleven }
diff --git a/ly/paper13-init.ly b/ly/paper13-init.ly
new file mode 100644 (file)
index 0000000..cdccec4
--- /dev/null
@@ -0,0 +1,13 @@
+% paper13-init.ly
+
+\version "1.3.146"
+
+paperThirteen = \paper {
+       staffheight = 13.0\pt
+
+       \stylesheet #(make-style-sheet 'paper13)
+       
+       \include "params-init.ly"
+}
+
+\paper { \paperThirteen }
diff --git a/ly/paper13.ly b/ly/paper13.ly
deleted file mode 100644 (file)
index 445c37e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-% paper13.ly
-
-\version "1.3.146"
-
-paperThirteen = \paper {
-       staffheight = 13.0\pt
-
-       \stylesheet #(make-style-sheet 'paper13)
-       
-       \include "params.ly"
-}
-
-\paper { \paperThirteen }
diff --git a/ly/paper16-init.ly b/ly/paper16-init.ly
new file mode 100644 (file)
index 0000000..c747eac
--- /dev/null
@@ -0,0 +1,12 @@
+% paper16-init.ly
+
+\version "1.3.146"
+
+paperSixteen = \paper {
+       staffheight = 16.0\pt
+       \stylesheet #(make-style-sheet 'paper16)
+
+       \include "params-init.ly"
+}
+
+\paper {\paperSixteen }
index a03bfdd3e72926f2bc2bf950f78ab6dae93fd085..2621cae3e64d80a8b7b58ddc17dcafb1407dd1fa 100644 (file)
@@ -1,12 +1,2 @@
-% paper16.ly
 
-\version "1.3.146"
-
-paperSixteen = \paper {
-       staffheight = 16.0\pt
-       \stylesheet #(make-style-sheet 'paper16)
-
-       \include "params.ly"
-}
-
-\paper {\paperSixteen }
+\include "paper16-init.ly"
diff --git a/ly/paper20-init.ly b/ly/paper20-init.ly
new file mode 100644 (file)
index 0000000..13a67f0
--- /dev/null
@@ -0,0 +1,13 @@
+% paper20-init.ly
+
+
+\version "1.3.146"
+
+paperTwenty = \paper {
+       staffheight = 20.0\pt
+       \stylesheet #(make-style-sheet 'paper20)
+       
+       \include "params-init.ly"
+}
+
+\paper { \paperTwenty }
diff --git a/ly/paper20.ly b/ly/paper20.ly
deleted file mode 100644 (file)
index b213bbc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-% paper20.ly
-
-
-\version "1.3.146"
-
-paperTwenty = \paper {
-       staffheight = 20.0\pt
-       \stylesheet #(make-style-sheet 'paper20)
-       
-       \include "params.ly"
-}
-
-\paper { \paperTwenty }
diff --git a/ly/paper23-init.ly b/ly/paper23-init.ly
new file mode 100644 (file)
index 0000000..bbb5510
--- /dev/null
@@ -0,0 +1,12 @@
+% paper23-init.ly
+
+
+\version "1.3.146"
+
+paperTwentythree = \paper {
+       staffheight = 23.0\pt
+       \stylesheet #(make-style-sheet 'paper23)
+       \include "params-init.ly"
+}
+
+\paper { \paperTwentythree }
diff --git a/ly/paper23.ly b/ly/paper23.ly
deleted file mode 100644 (file)
index aa08a5e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-% paper23.ly
-
-
-\version "1.3.146"
-
-paperTwentythree = \paper {
-       staffheight = 23.0\pt
-       \stylesheet #(make-style-sheet 'paper23)
-       \include "params.ly"
-}
-
-\paper { \paperTwentythree }
diff --git a/ly/paper26-init.ly b/ly/paper26-init.ly
new file mode 100644 (file)
index 0000000..e64eba6
--- /dev/null
@@ -0,0 +1,12 @@
+% paper26-init.ly
+
+\version "1.3.146"
+
+paperTwentysix = \paper {
+       staffheight = 26.0\pt
+       \stylesheet #(make-style-sheet 'paper26)        
+
+       \include "params-init.ly"
+}
+
+\paper { \paperTwentysix }
index 5ff9ece986f761dd4a7f00c6c815d939cc11837f..c874b34f2594d059fb37f5305c85f5dd1dbc3d4f 100644 (file)
@@ -1,12 +1,2 @@
-% paper26.ly
 
-\version "1.3.146"
-
-paperTwentysix = \paper {
-       staffheight = 26.0\pt
-       \stylesheet #(make-style-sheet 'paper26)        
-
-       \include "params.ly"
-}
-
-\paper { \paperTwentysix }
+\include "paper26-init.ly"
diff --git a/ly/params-as-init.ly b/ly/params-as-init.ly
new file mode 100644 (file)
index 0000000..b9928df
--- /dev/null
@@ -0,0 +1,30 @@
+\version "1.3.146"
+% params-as-init.ly
+% generic paper parameters
+
+outputscale = \staffheight / 4.0
+
+linewidth = 60.0 \char
+textheight = 60.0 \char
+indent = 8.0\char
+
+staffspace = (\staffheight - 1.0 ) / 4.0
+stafflinethickness = \staffspace / 2.0
+
+\translator { \NoteNamesContext }
+\translator { \ScoreContext }
+\translator { \ChoirStaffContext }
+\translator { \GraceContext }
+\translator { \RhythmicStaffContext}
+\translator { \StaffContext }
+\translator { \VoiceContext }
+\translator { \StaffGroupContext }
+\translator { \ChordNamesContext }
+\translator { \GrandStaffContext }
+\translator { \LyricsContext }
+\translator { \ThreadContext }
+\translator { \PianoStaffContext }
+\translator { \LyricsVoiceContext }
+\translator { \StaffContainerContext }
+
+
diff --git a/ly/params-as.ly b/ly/params-as.ly
deleted file mode 100644 (file)
index fafb495..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-\version "1.3.146"
-% params-as.ly
-% generic paper parameters
-
-outputscale = \staffheight / 4.0
-
-linewidth = 60.0 \char
-textheight = 60.0 \char
-indent = 8.0\char
-
-staffspace = (\staffheight - 1.0 ) / 4.0
-stafflinethickness = \staffspace / 2.0
-
-\translator { \NoteNamesContext }
-\translator { \ScoreContext }
-\translator { \ChoirStaffContext }
-\translator { \GraceContext }
-\translator { \RhythmicStaffContext}
-\translator { \StaffContext }
-\translator { \VoiceContext }
-\translator { \StaffGroupContext }
-\translator { \ChordNamesContext }
-\translator { \GrandStaffContext }
-\translator { \LyricsContext }
-\translator { \ThreadContext }
-\translator { \PianoStaffContext }
-\translator { \LyricsVoiceContext }
-\translator { \StaffContainerContext }
-
-
diff --git a/ly/params-init.ly b/ly/params-init.ly
new file mode 100644 (file)
index 0000000..64fe88d
--- /dev/null
@@ -0,0 +1,46 @@
+\version "1.3.146"
+% JUNKME.
+
+%% deprecated
+papersizename = \papersize 
+
+% ly2dvi now uses `papersize' internally (and on cmd line)
+papersize = \papersize
+
+% FIXME
+% direct PostScript line height for single line staffs
+lineheight = 14
+
+paperfile = \papersize + "-init.ly"
+
+% paperfile = "a4-init.ly"
+
+\include \paperfile
+\include "paper-init.ly"
+
+staffspace = \staffheight / 4.0
+stafflinethickness = \staffspace / 10.0
+outputscale = \staffheight / 4.0
+
+\translator { \NoteNamesContext }
+\translator { \ScoreContext }
+\translator { \ChoirStaffContext}
+\translator { \InnerChoirStaffContext}
+
+\translator { \RhythmicStaffContext}
+\translator { \StaffContext }
+\translator { \VoiceContext}
+\translator { \StaffGroupContext }
+\translator { \InnerStaffGroupContext }
+\translator { \ChordNamesContext }
+\translator { \GrandStaffContext}
+\translator { \LyricsContext }
+\translator { \ThreadContext}
+\translator { \PianoStaffContext}
+\translator { \LyricsVoiceContext }
+\translator { \StaffContainerContext }
+
+
+
+
+
diff --git a/ly/params.ly b/ly/params.ly
deleted file mode 100644 (file)
index 13bab53..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-\version "1.3.146"
-% JUNKME.
-
-%% deprecated
-papersizename = \papersize 
-
-% ly2dvi now uses `papersize' internally (and on cmd line)
-papersize = \papersize
-
-% FIXME
-% direct PostScript line height for single line staffs
-lineheight = 14
-
-paperfile = \papersize + ".ly"
-
-% paperfile = "a4.ly"
-
-\include \paperfile
-\include "paper.ly"
-
-staffspace = \staffheight / 4.0
-stafflinethickness = \staffspace / 10.0
-outputscale = \staffheight / 4.0
-
-\translator { \NoteNamesContext }
-\translator { \ScoreContext }
-\translator { \ChoirStaffContext}
-\translator { \InnerChoirStaffContext}
-\translator { \GraceContext}
-\translator { \RhythmicStaffContext}
-\translator { \StaffContext }
-\translator { \VoiceContext}
-\translator { \StaffGroupContext }
-\translator { \InnerStaffGroupContext }
-\translator { \ChordNamesContext }
-\translator { \GrandStaffContext}
-\translator { \LyricsContext }
-\translator { \ThreadContext}
-\translator { \PianoStaffContext}
-\translator { \LyricsVoiceContext }
-\translator { \StaffContainerContext }
-
-
-
-
-
diff --git a/ly/part-paper-init.ly b/ly/part-paper-init.ly
new file mode 100644 (file)
index 0000000..4e8fea4
--- /dev/null
@@ -0,0 +1,10 @@
+\version "1.3.146"
+
+% JUNKME
+%part-paper-init.ly
+
+\paper {
+       \translator { \OrchestralPartStaffContext }
+       \translator { \ScoreContext skipBars = ##t }
+}
+
diff --git a/ly/part-paper.ly b/ly/part-paper.ly
deleted file mode 100644 (file)
index 5c2c17f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "1.3.146"
-
-% JUNKME
-%part-paper.ly
-
-\paper {
-       \translator { \OrchestralPartStaffContext }
-       \translator { \ScoreContext skipBars = ##t }
-}
-
diff --git a/ly/performer-init.ly b/ly/performer-init.ly
new file mode 100644 (file)
index 0000000..8cfa820
--- /dev/null
@@ -0,0 +1,131 @@
+\version "1.3.146"
+%
+% setup for Request->Element conversion. Guru-only
+%
+StaffContext = \translator {
+       \type "Staff_performer"
+       \name Staff
+       \accepts Voice
+
+       \consists "Key_performer"
+       \consists "Tempo_performer"
+       \consists "Time_signature_performer"
+       dynamicStyle = #"dynamic"
+}
+\translator { \StaffContext }
+\translator { \StaffContext
+  \name RhythmicStaff
+}
+
+
+VoiceContext = \translator {
+       \type "Performer_group_performer"
+       \name Voice
+% All notes fall to Grace if you leave Thread out (huh?)
+       \consists "Dynamic_performer"
+       \consists "Span_dynamic_performer"
+       \consists "Piano_pedal_performer"
+       \consists "Grace_position_performer"
+       \accepts Thread
+       \accepts Grace
+}
+\translator { \VoiceContext }
+
+ThreadContext = \translator {
+       \type "Performer_group_performer"
+       \name Thread
+       \consists "Note_performer"
+       \consists "Tie_performer"
+}
+\translator { \ThreadContext }
+
+\translator {
+       \type "Grace_performer_group"
+       \name Grace
+       \consists "Note_performer"
+       \consists "Tie_performer"
+        \consists "Swallow_performer"
+
+        weAreGraceContext = #t
+}
+
+\translator
+{
+       \type "Performer_group_performer"
+       \name VoiceTwo\consists "Note_performer"
+
+}
+
+GrandStaffContext = \translator {
+       \type "Performer_group_performer"
+       \name GrandStaff
+       \accepts RhythmicStaff
+       \accepts Staff
+}
+\translator { \GrandStaffContext }
+
+PianoStaffContext = \translator {
+        \type "Performer_group_performer"
+       \name "PianoStaff"
+       \accepts Staff
+}
+\translator { \PianoStaffContext }
+
+\translator {
+       \type "Performer_group_performer"
+       \consists "Lyric_performer"
+       \name LyricsVoice
+}
+
+\translator{
+       \type "Performer_group_performer"
+       \name ChoirStaff
+       \accepts Staff
+}
+\translator { 
+       \type "Staff_performer"
+       \accepts LyricsVoice
+       \name Lyrics
+       \consists "Time_signature_performer"
+       \consists "Tempo_performer"
+}
+
+\translator {
+       \type "Staff_performer"
+       \accepts ChordNameVoice
+       \name ChordNames
+}
+
+\translator {
+       \type Performer_group_performer
+       \consists Note_performer
+       \name ChordNameVoice    
+}
+
+\translator {
+       \type Performer_group_performer
+
+       \name StaffGroup
+       \accepts Staff
+}
+
+ScoreContext = \translator {
+       \type "Score_performer"
+
+       \name Score
+       instrument = #"bright acoustic"
+       \accepts Staff
+       \accepts GrandStaff
+       \accepts PianoStaff
+       \accepts Lyrics 
+       \accepts StaffGroup
+       \accepts ChoirStaff
+       \accepts RhythmicStaff
+       \accepts ChordNames
+       \consists "Swallow_performer"
+
+       dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
+       instrumentEqualizer = #default-instrument-equalizer
+}
+\translator { \ScoreContext }
+
diff --git a/ly/performer.ly b/ly/performer.ly
deleted file mode 100644 (file)
index 8cfa820..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-\version "1.3.146"
-%
-% setup for Request->Element conversion. Guru-only
-%
-StaffContext = \translator {
-       \type "Staff_performer"
-       \name Staff
-       \accepts Voice
-
-       \consists "Key_performer"
-       \consists "Tempo_performer"
-       \consists "Time_signature_performer"
-       dynamicStyle = #"dynamic"
-}
-\translator { \StaffContext }
-\translator { \StaffContext
-  \name RhythmicStaff
-}
-
-
-VoiceContext = \translator {
-       \type "Performer_group_performer"
-       \name Voice
-% All notes fall to Grace if you leave Thread out (huh?)
-       \consists "Dynamic_performer"
-       \consists "Span_dynamic_performer"
-       \consists "Piano_pedal_performer"
-       \consists "Grace_position_performer"
-       \accepts Thread
-       \accepts Grace
-}
-\translator { \VoiceContext }
-
-ThreadContext = \translator {
-       \type "Performer_group_performer"
-       \name Thread
-       \consists "Note_performer"
-       \consists "Tie_performer"
-}
-\translator { \ThreadContext }
-
-\translator {
-       \type "Grace_performer_group"
-       \name Grace
-       \consists "Note_performer"
-       \consists "Tie_performer"
-        \consists "Swallow_performer"
-
-        weAreGraceContext = #t
-}
-
-\translator
-{
-       \type "Performer_group_performer"
-       \name VoiceTwo\consists "Note_performer"
-
-}
-
-GrandStaffContext = \translator {
-       \type "Performer_group_performer"
-       \name GrandStaff
-       \accepts RhythmicStaff
-       \accepts Staff
-}
-\translator { \GrandStaffContext }
-
-PianoStaffContext = \translator {
-        \type "Performer_group_performer"
-       \name "PianoStaff"
-       \accepts Staff
-}
-\translator { \PianoStaffContext }
-
-\translator {
-       \type "Performer_group_performer"
-       \consists "Lyric_performer"
-       \name LyricsVoice
-}
-
-\translator{
-       \type "Performer_group_performer"
-       \name ChoirStaff
-       \accepts Staff
-}
-\translator { 
-       \type "Staff_performer"
-       \accepts LyricsVoice
-       \name Lyrics
-       \consists "Time_signature_performer"
-       \consists "Tempo_performer"
-}
-
-\translator {
-       \type "Staff_performer"
-       \accepts ChordNameVoice
-       \name ChordNames
-}
-
-\translator {
-       \type Performer_group_performer
-       \consists Note_performer
-       \name ChordNameVoice    
-}
-
-\translator {
-       \type Performer_group_performer
-
-       \name StaffGroup
-       \accepts Staff
-}
-
-ScoreContext = \translator {
-       \type "Score_performer"
-
-       \name Score
-       instrument = #"bright acoustic"
-       \accepts Staff
-       \accepts GrandStaff
-       \accepts PianoStaff
-       \accepts Lyrics 
-       \accepts StaffGroup
-       \accepts ChoirStaff
-       \accepts RhythmicStaff
-       \accepts ChordNames
-       \consists "Swallow_performer"
-
-       dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
-       instrumentEqualizer = #default-instrument-equalizer
-}
-\translator { \ScoreContext }
-
diff --git a/ly/property-init.ly b/ly/property-init.ly
new file mode 100644 (file)
index 0000000..84c8d2d
--- /dev/null
@@ -0,0 +1,157 @@
+% property-init.ly
+
+\version "1.3.146"
+
+stemUp = \property Voice.Stem \set #'direction = #1
+stemDown = \property Voice.Stem \set #'direction = #-1 
+stemBoth= \property Voice.Stem \revert #'direction
+
+slurUp   = \property Voice.Slur \override #'direction = #1
+slurDown = \property Voice.Slur \override #'direction = #-1
+slurBoth = \property Voice.Slur \revert #'direction 
+shiftOn  = \property Voice.NoteColumn \override #'horizontal-shift = #1
+shiftOnn  = \property Voice.NoteColumn \override #'horizontal-shift = #2
+shiftOnnn  = \property Voice.NoteColumn \override #'horizontal-shift = #3
+shiftOff  = \property Voice.NoteColumn \revert #'horizontal-shift 
+
+tieUp = \property Voice.Tie \override #'direction = #1
+tieDown = \property Voice.Tie \override #'direction = #-1
+tieBoth = \property Voice.Tie \revert #'direction 
+
+dynamicUp  = {
+  \property Voice.DynamicText \override #'direction = #1
+  \property Voice.DynamicLineSpanner \override #'direction = #1
+}
+dynamicDown = {
+  \property Voice.DynamicText \override #'direction = #-1
+  \property Voice.DynamicLineSpanner \override #'direction = #-1
+}
+dynamicBoth = {
+  \property Voice.DynamicText \revert #'direction
+  \property Voice.DynamicLineSpanner \revert #'direction
+}
+
+scriptUp  = {
+  \property Voice.TextScript \override #'direction = #1
+  \property Voice.Script \override #'direction = #1
+}
+scriptDown = {
+  \property Voice.TextScript \override #'direction = #-1
+  \property Voice.Script \override #'direction = #-1
+}
+scriptBoth = {
+  \property Voice.TextScript \revert #'direction
+  \property Voice.Script \revert #'direction
+}
+
+tupletUp  = {
+  \property Voice.TupletBracket \override #'direction = #1
+  \property Voice.TupletBracket \override #'direction = #1
+}
+tupletDown = {
+  \property Voice.TupletBracket \override #'direction = #-1
+  \property Voice.TupletBracket \override #'direction = #-1
+}
+tupletBoth = {
+  \property Voice.TupletBracket \revert #'direction
+  \property Voice.TupletBracket \revert #'direction
+}
+
+
+
+cadenzaOn = \property Score.timing = ##f
+cadenzaOff = {
+  \property Score.timing = ##t
+  \property Score.measurePosition = #(make-moment 0 1)
+}
+
+newpage = {
+  \break
+  % urg, only works for TeX output
+  \context Score \outputproperty #(make-type-checker 'paper-column-interface)
+    #'between-system-string = #"\\newpage"
+}
+
+% dynamic dir?  text script, articulation script dir?  
+oneVoice = {   
+  \stemBoth
+  \slurBoth
+  \tieBoth
+  \shiftOff
+}
+
+voiceOne = {
+  \stemUp
+  \slurUp
+  \tieUp
+}
+
+voiceTwo = {
+  \stemDown
+  \slurDown
+  \tieDown
+}
+   
+voiceThree = {
+  \stemUp
+  \slurUp
+  \tieUp
+  \shiftOn
+}
+
+voiceFour = {
+  \stemDown
+  \slurDown
+  \tieDown
+  \shiftOn
+}
+
+% There's also dash, but setting dash period/length should be fixed.
+slurDotted = \property Voice.Slur \override #'dashed = #1
+slurSolid = \property Voice.Slur \revert #'dashed
+tieDotted = \property Voice.Tie \override #'dashed = #1
+tieSolid = \property Voice.Tie \revert #'dashed
+
+       
+tiny  = 
+       \property Voice.fontSize= -2
+
+
+small  = 
+       \property Voice.fontSize= -1
+
+
+normalsize = {
+       \property Voice.fontSize= 0
+}
+
+normalkey = {
+       \property Staff.keyOctaviation = ##f
+}
+
+specialkey = {
+       \property Staff.keyOctaviation = ##t
+}
+
+% End the incipit and print a ``normal line start''.
+endincipit = \notes{
+    \partial 16 s16  % Hack to handle e.g. \bar ".|" \endincipit
+    \context Staff \outputproperty #(make-type-checker 'clef-interface) #'full-size-change = ##t
+    \context Staff \outputproperty #(make-type-checker 'clef-interface) #'non-default = ##t
+    \bar ""
+}
+
+autoBeamOff = \property Voice.noAutoBeaming = ##t
+autoBeamOn = \property Voice.noAutoBeaming = ##f
+
+emptyText = \property Voice.textNonEmpty = ##f
+fatText = \property Voice.textNonEmpty = ##t
+
+showStaffSwitch = \property PianoStaff.followVoice = ##t
+hideStaffSwitch = \property PianoStaff.followVoice = ##f
+
+
+% To remove a Volta bracet or some other graphical object,
+% set it to turnOff. Example: \property Staff.VoltaBracket = \turnOff
+
+turnOff = #'((meta .  ((interfaces . ()))))
diff --git a/ly/property.ly b/ly/property.ly
deleted file mode 100644 (file)
index 1ebe98c..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-% property.ly
-
-\version "1.3.146"
-
-stemUp = \property Voice.Stem \set #'direction = #1
-stemDown = \property Voice.Stem \set #'direction = #-1 
-stemBoth= \property Voice.Stem \revert #'direction
-
-slurUp   = \property Voice.Slur \override #'direction = #1
-slurDown = \property Voice.Slur \override #'direction = #-1
-slurBoth = \property Voice.Slur \revert #'direction 
-shiftOn  = \property Voice.NoteColumn \override #'horizontal-shift = #1
-shiftOnn  = \property Voice.NoteColumn \override #'horizontal-shift = #2
-shiftOnnn  = \property Voice.NoteColumn \override #'horizontal-shift = #3
-shiftOff  = \property Voice.NoteColumn \revert #'horizontal-shift 
-
-tieUp = \property Voice.Tie \override #'direction = #1
-tieDown = \property Voice.Tie \override #'direction = #-1
-tieBoth = \property Voice.Tie \revert #'direction 
-
-dynamicUp  = {
-  \property Voice.DynamicText \override #'direction = #1
-  \property Voice.DynamicLineSpanner \override #'direction = #1
-}
-dynamicDown = {
-  \property Voice.DynamicText \override #'direction = #-1
-  \property Voice.DynamicLineSpanner \override #'direction = #-1
-}
-dynamicBoth = {
-  \property Voice.DynamicText \revert #'direction
-  \property Voice.DynamicLineSpanner \revert #'direction
-}
-
-scriptUp  = {
-  \property Voice.TextScript \override #'direction = #1
-  \property Voice.Script \override #'direction = #1
-}
-scriptDown = {
-  \property Voice.TextScript \override #'direction = #-1
-  \property Voice.Script \override #'direction = #-1
-}
-scriptBoth = {
-  \property Voice.TextScript \revert #'direction
-  \property Voice.Script \revert #'direction
-}
-
-tupletUp  = {
-  \property Voice.TupletBracket \override #'direction = #1
-  \property Voice.TupletBracket \override #'direction = #1
-}
-tupletDown = {
-  \property Voice.TupletBracket \override #'direction = #-1
-  \property Voice.TupletBracket \override #'direction = #-1
-}
-tupletBoth = {
-  \property Voice.TupletBracket \revert #'direction
-  \property Voice.TupletBracket \revert #'direction
-}
-
-
-
-cadenzaOn = \property Score.timing = ##f
-cadenzaOff = {
-  \property Score.timing = ##t
-  \property Score.measurePosition = #(make-moment 0 1)
-}
-
-newpage = {
-  \break
-  % urg, only works for TeX output
-  \context Score \outputproperty #(make-type-checker 'paper-column-interface)
-    #'between-system-string = #"\\newpage"
-}
-
-% dynamic dir?  text script, articulation script dir?  
-oneVoice = {   
-  \stemBoth
-  \slurBoth
-  \tieBoth
-  \shiftOff
-}
-
-voiceOne = {
-  \stemUp
-  \slurUp
-  \tieUp
-}
-
-voiceTwo = {
-  \stemDown
-  \slurDown
-  \tieDown
-}
-   
-voiceThree = {
-  \stemUp
-  \slurUp
-  \tieUp
-  \shiftOn
-}
-
-voiceFour = {
-  \stemDown
-  \slurDown
-  \tieDown
-  \shiftOn
-}
-
-% There's also dash, but setting dash period/length should be fixed.
-slurDotted = \property Voice.Slur \override #'dashed = #1
-slurSolid = \property Voice.Slur \revert #'dashed
-tieDotted = \property Voice.Tie \override #'dashed = #1
-tieSolid = \property Voice.Tie \revert #'dashed
-
-       
-tiny  = 
-       \property Voice.fontSize= -2
-
-
-small  = 
-       \property Voice.fontSize= -1
-
-
-normalsize = {
-       \property Voice.fontSize= 0
-}
-
-normalkey = {
-       \property Staff.keyOctaviation = ##f
-}
-
-specialkey = {
-       \property Staff.keyOctaviation = ##t
-}
-
-% End the incipit and print a ``normal line start''.
-endincipit = \notes{
-    \partial 16 s16  % Hack to handle e.g. \bar ".|" \endincipit
-    \context Staff \outputproperty #(make-type-checker 'clef-interface) #'full-size-change = ##t
-    \context Staff \outputproperty #(make-type-checker 'clef-interface) #'non-default = ##t
-    \bar ""
-}
-
-autoBeamOff = \property Voice.noAutoBeaming = ##t
-autoBeamOn = \property Voice.noAutoBeaming = ##f
-
-emptyText = \property Voice.textNonEmpty = ##f
-fatText = \property Voice.textNonEmpty = ##t
-
-showStaffSwitch = \property PianoStaff.followVoice = ##t
-hideStaffSwitch = \property PianoStaff.followVoice = ##f
-
-
-% To remove a Volta bracet or some other graphical object,
-% set it to turnOff. Example: \property Staff.VoltaBracket = \turnOff
-
-turnOff = #'((meta .  ((interfaces . ()))))
diff --git a/ly/scale-definitions-init.ly b/ly/scale-definitions-init.ly
new file mode 100644 (file)
index 0000000..b3268ff
--- /dev/null
@@ -0,0 +1,100 @@
+\version "1.3.146"
+
+
+major = #'(
+    (0 . 0)
+    (1 . 0)
+    (2 . 0)
+    (3 . 0)
+    (4 . 0)
+    (5 . 0)
+    (6 . 0)
+  )
+
+minor = #'(
+    (0 . 0)
+    (1 . 0)
+    (2 . -1)
+    (3 . 0)
+    (4 . 0)
+    (5 . -1)
+    (6 . -1)
+    )
+
+
+ionian = #'(
+    (0 . 0)
+    (1 . 0)
+    (2 . 0)
+    (3 . 0)
+    (4 . 0)
+    (5 . 0)
+    (6 . 0)
+  )  
+
+
+locrian = #'(
+    (0 . 0)
+    (1 . -1)
+    (2 . -1)
+    (3 . 0)
+    (4 . -1)
+    (5 . -1)
+    (6 . -1)
+  )  
+
+
+aeolian = #'(
+    (0 . 0)
+    (1 . 0)
+    (2 . -1)
+    (3 . 0)
+    (4 . 0)
+    (5 . -1)
+    (6 . -1)
+    )
+
+
+mixolydian = #'(
+    (0 . 0)
+    (1 . 0)
+    (2 . 0)
+    (3 . 0)
+    (4 . 0)
+    (5 . 0)
+    (6 . -1)
+  )  
+
+
+lydian = #'(
+    (0 . 0)
+    (1 . 0)
+    (2 . 0)
+    (3 . 1)
+    (4 . 0)
+    (5 . 0)
+    (6 . 0)
+  )  
+
+
+phrygian = #'(
+    (0 . 0)
+    (1 . -1)
+    (2 . -1)
+    (3 . 0)
+    (4 . 0)
+    (5 . -1)
+    (6 . -1)
+)  
+
+
+dorian = #'(
+    (0 . 0)
+    (1 . 0)
+    (2 . -1)
+    (3 . 0)
+    (4 . 0)
+    (5 . 0)
+    (6 . -1)
+  )
+
diff --git a/ly/scale-definitions.ly b/ly/scale-definitions.ly
deleted file mode 100644 (file)
index b3268ff..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-\version "1.3.146"
-
-
-major = #'(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . 0)
-  )
-
-minor = #'(
-    (0 . 0)
-    (1 . 0)
-    (2 . -1)
-    (3 . 0)
-    (4 . 0)
-    (5 . -1)
-    (6 . -1)
-    )
-
-
-ionian = #'(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . 0)
-  )  
-
-
-locrian = #'(
-    (0 . 0)
-    (1 . -1)
-    (2 . -1)
-    (3 . 0)
-    (4 . -1)
-    (5 . -1)
-    (6 . -1)
-  )  
-
-
-aeolian = #'(
-    (0 . 0)
-    (1 . 0)
-    (2 . -1)
-    (3 . 0)
-    (4 . 0)
-    (5 . -1)
-    (6 . -1)
-    )
-
-
-mixolydian = #'(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . -1)
-  )  
-
-
-lydian = #'(
-    (0 . 0)
-    (1 . 0)
-    (2 . 0)
-    (3 . 1)
-    (4 . 0)
-    (5 . 0)
-    (6 . 0)
-  )  
-
-
-phrygian = #'(
-    (0 . 0)
-    (1 . -1)
-    (2 . -1)
-    (3 . 0)
-    (4 . 0)
-    (5 . -1)
-    (6 . -1)
-)  
-
-
-dorian = #'(
-    (0 . 0)
-    (1 . 0)
-    (2 . -1)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
-    (6 . -1)
-  )
-
diff --git a/ly/script-init.ly b/ly/script-init.ly
new file mode 100644 (file)
index 0000000..b0fcedd
--- /dev/null
@@ -0,0 +1,47 @@
+\version "1.3.146"
+
+
+dashHat= "marcato"
+dashPlus= "stopped"
+dashDash= "tenuto"
+dashBar= "staccatissimo"
+dashLarger= "accent"
+dashDot= "staccato"
+
+
+thumb = \script "thumb"
+accent = \script "accent"
+marcato = \script "marcato"
+staccatissimo = \script "staccatissimo"
+
+% portato is indicated
+% either by
+%   *  slurred & dotted notes. 
+%or by
+%  * slur and dash notes.
+% Neither are  really supported, but c4-.-- should work.
+% portato = \script "portato"
+
+fermata = \script "fermata"
+stopped = \script "stopped"
+staccato = \script "staccato"
+tenuto = \script "tenuto"
+upbow = \script "upbow"
+downbow = \script "downbow"
+lheel = \script "lheel"
+rheel = \script "rheel"
+ltoe = \script "ltoe"
+rtoe = \script "rtoe"
+turn = \script "turn"
+open = \script "open"
+flageolet = \script "flageolet"
+reverseturn = \script "reverseturn"
+trill = \script "trill"
+prall = \script "prall"
+mordent = \script "mordent"
+prallprall = \script "prallprall"
+prallmordent = \script "prallmordent"
+upprall = \script "upprall"
+downprall = \script "downprall"
+segno = \script "segno"
+coda = \script "coda"
diff --git a/ly/script.ly b/ly/script.ly
deleted file mode 100644 (file)
index b0fcedd..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-\version "1.3.146"
-
-
-dashHat= "marcato"
-dashPlus= "stopped"
-dashDash= "tenuto"
-dashBar= "staccatissimo"
-dashLarger= "accent"
-dashDot= "staccato"
-
-
-thumb = \script "thumb"
-accent = \script "accent"
-marcato = \script "marcato"
-staccatissimo = \script "staccatissimo"
-
-% portato is indicated
-% either by
-%   *  slurred & dotted notes. 
-%or by
-%  * slur and dash notes.
-% Neither are  really supported, but c4-.-- should work.
-% portato = \script "portato"
-
-fermata = \script "fermata"
-stopped = \script "stopped"
-staccato = \script "staccato"
-tenuto = \script "tenuto"
-upbow = \script "upbow"
-downbow = \script "downbow"
-lheel = \script "lheel"
-rheel = \script "rheel"
-ltoe = \script "ltoe"
-rtoe = \script "rtoe"
-turn = \script "turn"
-open = \script "open"
-flageolet = \script "flageolet"
-reverseturn = \script "reverseturn"
-trill = \script "trill"
-prall = \script "prall"
-mordent = \script "mordent"
-prallprall = \script "prallprall"
-prallmordent = \script "prallmordent"
-upprall = \script "upprall"
-downprall = \script "downprall"
-segno = \script "segno"
-coda = \script "coda"
diff --git a/ly/spanners-init.ly b/ly/spanners-init.ly
new file mode 100644 (file)
index 0000000..3fdf1b7
--- /dev/null
@@ -0,0 +1,53 @@
+\version "1.3.146"
+
+cr = \spanrequest \start "crescendo"
+decr = \spanrequest  \start "decrescendo"
+rc = \spanrequest   \stop "crescendo"
+rced = \spanrequest \stop "decrescendo"
+
+cresc = \notes {
+  \commandspanrequest \start "crescendo" 
+  \property Voice.crescendoText = #"cresc."
+  \property Voice.crescendoSpanner = #'dashed-line
+}
+
+% ah, this is handy: maybe drop resetting of properties in
+% dynamic-engraver ?
+endcresc = \notes {
+  \commandspanrequest \stop "crescendo" 
+  \property Voice.crescendoText \unset
+  \property Voice.crescendoSpanner \unset
+}
+
+dim = \notes {
+  \commandspanrequest \start "decrescendo" 
+  \property Voice.decrescendoText = #"dim."
+  \property Voice.decrescendoSpanner = #'dashed-line
+}
+
+enddim = \notes {
+  \commandspanrequest \stop "decrescendo" 
+   \property Voice.decrescendoText \unset
+ \property Voice.decrescendoSpanner \unset
+}
+
+%{
+
+cresc = \spanrequest \start "crescendo"
+endcresc = \spanrequest \stop "crescendo"
+
+%}
+
+% better name sustainstart/stop? 
+sustainDown = \spanrequest \start "Sustain"
+sustainUp = \spanrequest \stop "Sustain"
+
+unaCorda = \spanrequest \start "UnaCorda"
+treCorde = \spanrequest \stop "UnaCorda"
+
+sostenutoDown = \spanrequest \start "Sostenuto"
+sostenutoUp = \spanrequest \stop "Sostenuto"
+
+%crescpoco = \property Voice.crescendoText = "cresc. poco a poco"
+%decresc = \property Voice.crescendoText = "decr."
+%dim = \property Voice.crescendoText = "dim."
diff --git a/ly/spanners.ly b/ly/spanners.ly
deleted file mode 100644 (file)
index 3fdf1b7..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-\version "1.3.146"
-
-cr = \spanrequest \start "crescendo"
-decr = \spanrequest  \start "decrescendo"
-rc = \spanrequest   \stop "crescendo"
-rced = \spanrequest \stop "decrescendo"
-
-cresc = \notes {
-  \commandspanrequest \start "crescendo" 
-  \property Voice.crescendoText = #"cresc."
-  \property Voice.crescendoSpanner = #'dashed-line
-}
-
-% ah, this is handy: maybe drop resetting of properties in
-% dynamic-engraver ?
-endcresc = \notes {
-  \commandspanrequest \stop "crescendo" 
-  \property Voice.crescendoText \unset
-  \property Voice.crescendoSpanner \unset
-}
-
-dim = \notes {
-  \commandspanrequest \start "decrescendo" 
-  \property Voice.decrescendoText = #"dim."
-  \property Voice.decrescendoSpanner = #'dashed-line
-}
-
-enddim = \notes {
-  \commandspanrequest \stop "decrescendo" 
-   \property Voice.decrescendoText \unset
- \property Voice.decrescendoSpanner \unset
-}
-
-%{
-
-cresc = \spanrequest \start "crescendo"
-endcresc = \spanrequest \stop "crescendo"
-
-%}
-
-% better name sustainstart/stop? 
-sustainDown = \spanrequest \start "Sustain"
-sustainUp = \spanrequest \stop "Sustain"
-
-unaCorda = \spanrequest \start "UnaCorda"
-treCorde = \spanrequest \stop "UnaCorda"
-
-sostenutoDown = \spanrequest \start "Sostenuto"
-sostenutoUp = \spanrequest \stop "Sostenuto"
-
-%crescpoco = \property Voice.crescendoText = "cresc. poco a poco"
-%decresc = \property Voice.crescendoText = "decr."
-%dim = \property Voice.crescendoText = "dim."
index 223d9c39f043ee81770dd8858e0df6b824496220..406f128e38e12de118f29c88c5d4001e16e872ad 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.4.4
-Entered-date: 27JUN01
+Version: 1.5.0
+Entered-date: 29JUN01
 Description: @BLURB@
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.4.4.tar.gz 
+       1000k lilypond-1.5.0.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.4.4.tar.gz 
+       1000k lilypond-1.5.0.tar.gz 
 Copying-policy: GPL
 End
index d9044e4aabd69d3750d495f7746eb68d47f3b0ef..e79cb62513a10aa86a89fbd614e67177b8b34050 100644 (file)
@@ -1,11 +1,11 @@
 %define info yes
 
 Name: lilypond
-Version: 1.4.4
+Version: 1.5.0
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.4.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.0.tar.gz
 Summary: Create and print music notation 
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 BuildRoot: /tmp/lilypond-install
index 864cd17a9438ee7fd49fbccd713b6e4b3a2cf0b6..ba89252f43d29cb66dabca25e4b612b01f5618e5 100644 (file)
 
 Distribution: SuSE Linux 7.0 (i386)
 Name: lilypond
-Version: 1.4.4
+Version: 1.5.0
 Release: 2
 Copyright:    GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.4.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.0.tar.gz
 # music notation software for.. ?
 Summary: A program for printing sheet music.
 URL: http://www.lilypond.org/
index 5289273358ad4d5feafaaa756cd1898c63cf10e7..6e1e9b54ae9daeee477a40fbb2891582e3455508 100644 (file)
@@ -44,8 +44,8 @@ Duration::duration_type_b (int t)
 void
 Duration::compress (Rational m)
 {
-  plet_.iso_i_ *= m.num_i ();
-  plet_.type_i_ *= m.den_i (); 
+  plet_.iso_i_ *= m.num ();
+  plet_.type_i_ *= m.den (); 
 }
 
 Rational
index 53fed1bb2c3ccf16b092d12f6526a7aa5de347e6..114d0beaaaf563a75a88edbe542eff58e348dc01 100644 (file)
        grestore
 } bind def
 
-%
-% FIXME.  translate to middle of box.
-%
-
-/draw-box % breapth width depth height
-{
-       /h exch def
-       /d exch def
-       /w exch def
-       /b exch def
-       gsave
-
-       0 setlinewidth
-       b neg d neg rmoveto
-       b w add 0 rlineto
-       0 d h add rlineto
-       b w add neg 0 rlineto
-       closepath % 0 d h add neg rlineto
-       fill
-
-       grestore
-} bind def
-
 /start-line % height
 {
        dup base-line-skip gt {
index 2ed8afd58351e8f2b2acb63d05c263fc69d1ebfd..86b39dff6b754c49f764d3bfe3d2e3285fea34c0 100644 (file)
@@ -1,7 +1,9 @@
-%!PS-Adobe-1.0: lily.ps 
+%!PS-Adobe-1.0: music-drawing-routines.ps
 %
 % Functions for direct and embedded PostScript
 
+
+% FIXME: set with individual symbols
 % round cappings 
 1 setlinecap
 
        1 copy mul exch 1 copy mul add sqrt 
 } bind def 
 
-/draw_beam % width slope thick 
-{ 
-        2 div /beam_thick exch def 
-        /beam_slope exch def 
-        /beam_wd exch def 
-        beam_slope beam_wd mul /beam_ht exch def 
-        0 beam_thick neg moveto  
-        beam_wd beam_ht rlineto  
-        0 beam_thick 2 mul rlineto 
-        0 beam_thick lineto 
-        closepath fill 
+% FIXME.  translate to middle of box.
+% Nice rectangle with rounded corners
+% FIXME: linewidth hardcoded.  check: too round?
+/draw_box % breapth width depth height
+{
+       %% FIXME: hardcoded
+       currentdict /testing known {
+               %% real thin lines for testing
+               /l 0.005 def
+       }{
+               /l 0.05 def
+       } ifelse
+
+       0 setlinecap
+       l setlinewidth
+       1 setlinejoin
+
+       l 2 div sub /h exch def
+       l 2 div sub /d exch def
+
+       %% UGH huh?
+       %% Where does this correction come from?
+       %% Why don't we need this in x direction?
+       h l 2 div sub /h exch def
+       d l 2 div sub /d exch def
+
+       l 2 div sub /w exch def
+       l 2 div sub /b exch def
+
+       b neg d neg moveto
+       b w add 0 rlineto
+       0 d h add rlineto
+       b w add neg 0 rlineto
+       0 d h add neg rlineto
+
+       currentdict /testing known {
+               %% outline only, for testing:
+               stroke
+       }{
+               closepath gsave stroke grestore fill
+       } ifelse
+} bind def
+
+% Nice beam with rounded corners
+% FIXME: linewidth hardcoded.  check: too round?
+/draw_beam % slope width thick 
+{
+       %% FIXME: hardcoded
+       currentdict /testing known {
+               %% real thin lines for testing
+               /l 0.01 def
+       }{
+               /l 0.1 def
+       } ifelse
+       l 2 div setlinewidth
+
+       0 setlinecap
+       1 setlinejoin
+
+       l sub /t exch def
+       l sub /w exch def
+       w mul /h exch def
+
+       l 2 div t 2 div neg moveto
+       w h rlineto
+       0 t rlineto
+       w neg h neg rlineto
+       0 t neg rlineto
+
+       currentdict /testing known {
+               %% outline only, for testing:
+               stroke
+       }{
+               closepath gsave stroke grestore fill
+       } ifelse
 } bind def 
 
 /draw_repeat_slash % width slope thick
index 9d19e537d0023c0cff1927bc06a8a1cee314e72b..4ee94ca8516230b3d64f939cc5b50d999a224d79 100644 (file)
        (SpanBar . (
                (break-align-symbol . Staff_bar)
                (bar-size-procedure . ,Span_bar::get_bar_size) 
-               (molecule-callback . ,Bar::brew_molecule)
+               (molecule-callback . ,Span_bar::brew_molecule)
                (visibility-lambda . ,begin-of-line-invisible)
                (X-extent-callback . ,Span_bar::width_callback)
-               (Y-offset-callbacks . (,Span_bar::center_on_spanned_callback))
-               
                (breakable . #t)
                (glyph . "|")
                (before-line-breaking-callback . ,Span_bar::before_line_breaking)
index 2b9d42b5cb4356064617e365d1c546d53699a495..a0bfc1dec21bc0188e950e0ab7b5e4657c34790c 100644 (file)
@@ -5,7 +5,7 @@
 ;;;; (c) 1998--2001 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
-;;; Library funtions
+;;; Library functions
 
 (use-modules (ice-9 regex))
 
index 95280791262b3daee6651d936e1cd37c2a8ec9fc..8e4dc95ecf0c0ca408d9755387887914f23dc98d 100644 (file)
        "lilypondpaperoutputscale div scalefont setfont } bind def "
        "\n"))
 
-
   (define (beam width slope thick)
     (string-append
-     (numbers->string (list width slope thick)) " draw_beam" ))
+     (numbers->string (list slope width thick)) " draw_beam" ))
 
   (define (comment s)
     (string-append "% " s))
   
   (define (filledbox breapth width depth height) 
     (string-append (numbers->string (list breapth width depth height))
-                  " draw-box" ))
+                  " draw_box" ))
 
   ;; obsolete?
   (define (font-def i s)
      " {exch pop //systemdict /run get exec} "
      (ly-gulp-file "music-drawing-routines.ps")
      "{ exch pop //systemdict /run get exec } "
+     (if (defined? 'ps-testing) "\n /testing true def" "")
     ))
   
   (define (lily-def key val)
@@ -171,7 +171,7 @@ lilypondpaperoutputscale lilypondpaperoutputscale scale
   
   (define (stem breapth width depth height) 
     (string-append (numbers->string (list breapth width depth height))
-                  " draw-box" ))
+                  " draw_box" ))
 
   (define (stop-line)
       "}\nstop-line\n")
index 4c8904415daed98e2311622b200b4c3fea45d084..c002a22b3f3dea5eb4445d47818e04e3a851167f 100644 (file)
   (define (header-end)
     (string-append
      "\\special{\\string! "
-
+     
      ;; URG: ly-gulp-file: now we can't use scm output without Lily
      (if use-regex
         ;; fixed in 1.3.4 for powerpc -- broken on Windows
         (regexp-substitute/global #f "\n"
                                   (ly-gulp-file "music-drawing-routines.ps") 'pre " %\n" 'post)
         (ly-gulp-file "music-drawing-routines.ps"))
+     (if (defined? 'ps-testing) "/testing true def%\n" "")
      "}"
      "\\input lilyponddefs\\newdimen\\outputscale \\outputscale=\\lilypondpaperoutputscale pt\\turnOnPostScript"))
 
     "}\\vss}\\interscoreline\n")
   (define (stop-last-line)
     "}\\vss}")
-  (define (filledbox breapth width depth height) 
+  (define (xfilledbox breapth width depth height) 
     (string-append 
      "\\kern" (number->dim (- breapth))
      "\\vrule width " (number->dim (+ breapth width))
      "depth " (number->dim depth)
      "height " (number->dim height) " "))
 
+  (define (filledbox breapth width depth height) 
+    (embedded-ps
+     (string-append (numbers->string (list breapth width depth height))
+                  " draw_box" )))
+
   (define (text s)
     (string-append "\\hbox{" (output-tex-string s) "}"))
   
index 5900032c1b5ddef1f702180a7ba829b4e06febcf..f5aacffd24a95b90309d69f886554f541dda8a48 100644 (file)
@@ -179,6 +179,10 @@ procedure? "visibility-lambda function for explicit Key changes;
 
 (translator-property-description 'followVoice boolean?
                                 "if set, note heads are tracked  across staff switches by a thin line")
+(translator-property-description 'fontSize integer?
+                                "Used to set the relative size of all grobs
+in a context. This is done using the @code{Font_size_engraver}.")
+
 (translator-property-description 'forceClef boolean? "Show clef symbol, even if it hasn't changed. Only active for the first clef after the property is set, not for the full staff.")
 (translator-property-description 'forgetAccidentals boolean? "do
 not set localKeySignature when a note alterated differently from